Cassandra 更新过程澄清
Posted
技术标签:
【中文标题】Cassandra 更新过程澄清【英文标题】:Cassandra update process clarify 【发布时间】:2020-07-12 10:49:23 【问题描述】:当我们执行读取查询时,如果它为真,它将从 SStable 中检索数据。 那么,如果我在压缩发生之前检索最后更新的数据会发生什么? 换句话说,Cassandra 做了什么来检索 memtable 中而不是 SStable 中的数据?
【问题讨论】:
【参考方案1】:这是 Cassandra 读取路径的示意图。
有些进程会同时检查 RAM 和磁盘上的请求数据。当从多个路径中找到数据时,会对其进行协调(以确保最新的时间戳)并返回。
所以回答你的问题,当请求的数据不存在于 SSTable 中时,可以返回 memtable 的结果。
【讨论】:
为什么 Cassandra 检查这两个表?一旦在 memtable 中找到数据,这是最新的时间戳。那么为什么它也检查 sstable 呢?如果在 memtable 中没有找到数据,它将检查 sstable 是否合理。 时间戳可以在查询中显式设置,或者旧数据可能会迟到,因此 memtable 中的数据可能比磁盘上的数据“旧”。以上是关于Cassandra 更新过程澄清的主要内容,如果未能解决你的问题,请参考以下文章