Cassandra数据分区
当启动Cassandra集群时,需要选择数据如何在集群中划分,这个由partitioner来完成。
Cluster中管理的所有数据被表示成环(ring).环被划分为和节点数量等同的范围(range). 每个节点加入集群时候,都要发放一个令牌(token),它决定了节点在环中的位置以及负责的数据的range.
Column Family(也就是对应关系数据库的表)就是按照分区来的。
配置partitioner,则需要指定分区策略:
RandomPartitioner(随机分区):这是Cassandra集群中默认的分区策略,它使用了一致性hash的算法。这个算法说明详细见:
这种策略优点是:一旦你token被分配了,那么column family的数据会被平均的分配到多个集群节点中,并且简化了负载均衡。对于column family数据的读写也是平均的。
OrderedPartitioner(排序的分区):这个Cassandra集群并不推荐。
这必须保证所有的key已经排序了。
我们查看下我们系统的分区策略选择: