【PGCCC】在 Postgres 中构建复制安全的 LSM 树

在这里插入图片描述

在原生 Postgres 实现中,全文搜索由B 树或GIN(广义倒排索引)结构支持。这些索引针对相对快速的查找进行了优化,但受限于 B 树的写入吞吐量。

当我们构建pg_searchPostgres 搜索和分析扩展时,我们的优先级有所不同。为了成为 Elasticsearch 的有效替代方案,我们需要支持高效的实时扫描。我们选择了一种更适合密集发布列表位图和高数据采集工作负载的数据结构:日志结构化合并 ( LSM ) 树。

然而,当我们在物理复制(允许 Postgres 将数据从主节点复制到一个或多个只读副本的两种机制之一)下测试 LSM 树时,我们遇到了一些波折。最令人惊讶的是,我们发现 Postgres 基于预写日志 (WAL) 传输机制构建的开箱即用的物理复制支持不足以让LSM 树这样的高级数据结构实现复制安全。在本文中,我们将深入探讨:

  1. LSM 树的复制安全意味着什么
  2. Postgres 的 WAL 传输如何保证物理一致性
  3. 为什么原子日志对于逻辑一致性是必要的
  4. 我们如何利用鲜为人知但功能强大的 Postgres 设置hot_standby_feedback

什么是 LSM 树?

图片

日志结构合并树 (LSM 树) 是一种写优化数据结构,常用于 RocksDB 和 Cassandra 等系统。

LSM 树的核心思想是将随机写入转换为顺序写入。传入的写入首先存储在内存缓冲区(称为 memtable)中,该缓冲区更新速度很快。一旦 memtable 写满,它将被刷新到磁盘,形成一个已排序的、不可变的段文件(通常称为 SSTable)。<

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值