【问题标题】:Cassandra update process clarifyCassandra 更新过程澄清
【发布时间】:2020-07-12 10:49:23
【问题描述】:

当我们执行读取查询时,如果它为真,它将从 SStable 中检索数据。 那么,如果我在压缩发生之前检索最后更新的数据会发生什么? 换句话说,Cassandra 做了什么来检索 memtable 中而不是 SStable 中的数据?

【问题讨论】:

    标签: cassandra nosql datastax


    【解决方案1】:

    这是 Cassandra 读取路径的示意图。

    有些进程会同时检查 RAM 和磁盘上的请求数据。当从多个路径中找到数据时,会对其进行协调(以确保最新的时间戳)并返回。

    所以回答你的问题,当请求的数据不存在于 SSTable 中时,可以返回 memtable 的结果。

    【讨论】:

    • 为什么 Cassandra 检查这两个表?一旦在 memtable 中找到数据,这是最新的时间戳。那么为什么它也检查 sstable 呢?如果在 memtable 中没有找到数据,它将检查 sstable 是否合理。
    • 时间戳可以在查询中显式设置,或者旧数据可能会迟到,因此 memtable 中的数据可能比磁盘上的数据“旧”。
    猜你喜欢
    • 2013-05-03
    • 2015-05-02
    • 2017-01-26
    • 2017-05-24
    • 2019-11-09
    • 2015-04-25
    • 2017-04-12
    • 2015-12-22
    • 1970-01-01
    相关资源
    最近更新 更多