基于 LSM Tree 的数据库在更新 MemTable 时如何处理并发
How do LSM Tree based DBs deal with concurency when updating the MemTable
在几个博客中阅读有关 LSM 树的文章,我想知道在接收到多个同时插入值的请求时,实际实现如何处理并发性,这会修改 MemTable 的内存结构。
- 向 MemTable 插入一个值时(最像是一棵树)
- 如何处理同时多个插入请求?
- 它如何处理 read/write 比赛?
- 它使用简单的 R/W 锁定机制吗?
在 Cassandra 中,具有最新时间戳的突变会获胜,因此它可以处理数千个并发插入,并且没有要处理的竞争,也不需要锁。
SSTables 是不变的table——它们一旦写入磁盘就永远不会改变。但是数据可以通过压缩线程重写,压缩线程将 SSTables 合并到新的 SSTables 中,具体取决于 table 上定义的压缩策略。干杯!
在几个博客中阅读有关 LSM 树的文章,我想知道在接收到多个同时插入值的请求时,实际实现如何处理并发性,这会修改 MemTable 的内存结构。
- 向 MemTable 插入一个值时(最像是一棵树)
- 如何处理同时多个插入请求?
- 它如何处理 read/write 比赛?
- 它使用简单的 R/W 锁定机制吗?
在 Cassandra 中,具有最新时间戳的突变会获胜,因此它可以处理数千个并发插入,并且没有要处理的竞争,也不需要锁。
SSTables 是不变的table——它们一旦写入磁盘就永远不会改变。但是数据可以通过压缩线程重写,压缩线程将 SSTables 合并到新的 SSTables 中,具体取决于 table 上定义的压缩策略。干杯!