其实看了上个文章这个流程就基本能猜到了哈。
数据更新流程
- 更新数据写入Commitlog。
- 更新数据写入Memtable。
- 更新数据写入SSTable。
集群数据跟新策略
为了保证高可用性,写入操作不必等待所有的服务器都相应写入成功,提供六种一致性写入策略:
- ANY:有一个成功响应就通知客户端成功(包括HINT消息)。
- ONE:和ANY不同的是不包括HINT消息。
- QUORUM:成功的服务器数目不小于“ReplicationFactor/2+1”(不包括HINT消息)。
- LOCAL_QUORUM:与3不同的是写入成功的节点中有一台与接受写入操作的服务器处于同一个数据中心时返回更新成功。
- EACH_QUORUM:与4刚好相反,即不在同一数据中心。
- ALL:写入数目等于ReplicationFactor。
二级索引
如果没有二级索引,读取数据只能根据Key,而无法直接获取到那些Column满足某一条件的值(数据量大的时候靠客户端来解决不怎么好吧)。Cassandra具体怎么实现就有空再看。。。
欢迎拍砖。