cassandra - Cassandra 中 Memtables 和 SStables 中的数据存储
问题描述
我有一个Keyspace
. RF=2
现在在数据被刷新之前,它就在 Cassandra 中,每个表/列族memtables
只有一个。memtable
因为,cassandra 中每个列族只有一个内存表,我假设 RF=2。这是否意味着 memtable 每行有 2 个副本?
另外,如果我这样nodetool flush
做,创建的 sstable 是否也有每条记录的两个副本?
解决方案
复制因子为 2 意味着数据将存储在 2 个节点上。
写入路径如下:
- 客户端向一个节点发送请求,该节点将成为该写入的协调器
- 协调节点同时向所有副本节点发送写请求。副本节点的数量由复制因子指定。
- 每个副本节点接收写入请求并执行以下操作:写入提交日志、写入内存表、使行缓存无效并向协调节点发送确认。
- 协调器将等待写请求的一致性级别指定的适当数量的 ack。
- 协调器将向客户端发送 ack。
因此,在写入路径期间的某个时间点,您的数据将位于内存表中,但由于您的 rf = 2,这意味着数据将位于不同的内存表中,因为每个内存表位于不同的节点上。
这同样适用于 nodetool 刷新。由于每个 sstable 位于不同的节点上,因此数据将被刷新到不同的 sstables。
推荐阅读
- python - 如何更新窗口并同时运行后台进程?
- webhooks - Event Grid + CloudEvents + Webhooks 如何支持更新 access_token?
- python - 浏览器显示 Python 代码而不是执行它
- php - PHP 致命错误:未捕获的错误:找不到类“Elliptic\EC”
- generics - 具有约束的泛型函数与在 Kotlin 中传递超类型参数
- office365 - 日历访问期间的 MailboxNotHostedInExchangeOnline 错误
- c - 非常昏昏欲睡的分析器将单纯的变量混淆为函数,以及其他问题
- typescript - 出现错误:错误:执行“protractor ./conf.ts --suite homepage”时找不到模块'src/core/configurations/configFunctions
- reactjs - 在按钮上打开相机点击反应原生博览会
- ios - 如果他们不是服务工作者,pwa 是否使用浏览器缓存