1分区器决定了数据如何在集群内被分发。简单来说,一个分区器就是一个用来计算partition key哈希值的一个哈希函数。每一行数据,由partition key的值唯一标识,并且根据partition key的哈希值决定如何在集群内被分发。
一个集群,有一个全局唯一的分区器的配置。Cassandra的默认的分区器是Murmur3Partitioner,它一般能满足绝大多数情况的需要。
Cassandra提供了以下这些分区器:
Murmur3Partitioner和RandomPartitioner都使用哈希值来平均分配一个column family的数据到集群上的所有节点。
2ByteOrderedPartitioner用于基于partition key的bytes进行有序分区。它允许按照partition key进行条件范围查询。也就是说,可以像关系型数据库的主键那样,通过游标,有序遍历所有的partition key。例如,如果使用用户名作为partition key,可以范围查询所有名字在Jake和Jeo之间的用户。这样的条件范围查询,在使用随机分区器时,是不允许的。
尽管范围查询听上去很有吸引力,并不推荐使用有序的分区器,因为: