cassandra 如何写数据以及放置副本,cassandra副本
application发送数据到server
Note-很重要的一点
通过上面描述,发现可以根据hash value 来确定一条数据存放在哪个节点上,然后根据replication的参数设置,我们可以确定数据副本存放在哪个节点上。那么对于read 操作,我们就可以根据条件的hash value 来找到存放数据的第一个节点,然后根据数据副本来找其他replicate 数据。
上面认识是错误的
首先,考虑下如果我们添加node到cluster中,假如数据存放的第一个node hash 受到影响,数据要移除到新加入的node,这个操作很容易实现,那么按照我们上面的认识,其他的副本数据如何处理呢?
data的存放的第一个节点变化了,然后再根据replicate stragtegy,已经找不到其他副本了。
此外,cassandra 的node是无主机模式,没有主从节点,每份数据都是一样的,但是按照上面的说法,数据的存放的第一个节点重要性又高于其他节点。
综上,上述认识错误
正确的认识
cassandra 将数据成功写入后,会有一个map 表,来维护数据存放在哪些节点上
nodetool getendpoint keyspace table partitionkey
这条命令可以查询到数据存放在哪些node上面
看了下cassandra的源码,这些数据应该存放在org.apache.cassandra.db:type=StorageService中
写数据
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。