Memss中的数据存储和Cassandra中的SStables

问题描述 投票:0回答:1

我有KeyspaceRF=2。现在,在刷新数据之前,它在memtables中,并且在Cassandra中每个表/列族只有一个memtable

因为,cassandra中每个列族只有一个memtable,我假设RF = 2。这是否意味着memtable每行有2个副本?

另外,如果我做nodetool flush确实创建的sstable还有两个每个记录的副本?

cassandra nosql cassandra-3.0
1个回答
0
投票

复制因子为2意味着数据将存储在2个节点上。

写路径如下:

  1. 客户端向一个节点发送请求,该节点将成为该写入的协调者
  2. 协调器节点同时向所有副本节点发送写请求。副本节点的数量由复制因子指定。
  3. 每个副本节点都接收写请求并执行以下操作:写入提交日志,写入memtable,使行缓存无效并向协调器节点发送确认。
  4. 协调器将等待写请求的一致性级别指定的适当数量的ack。
  5. 协调员将ack发送给客户。

因此,在写入路径期间的某个时间点,您的数据将在memtable中,但由于您的rf = 2,这意味着数据将位于不同的memtable中,因为每个memtable都在不同的节点上。

nodetool flush也是如此。由于每个sstable位于不同的节点上,因此数据将被刷新到不同的sstables。

© www.soinside.com 2019 - 2024. All rights reserved.