我已经了解了差异b / w Cassandra分区键,复合键,聚类键 . 但是没有找到足够的信息来理解cassandra中如何处理分区 .在cassandra中,分区键的范围存储在类似分区/分片的节点上 . 我的理解是否正确..?每个分区键在DB中是否有不同的文件(在系统级别)?如果是这样,读取会不会更慢..?如果每个分区键在DB中没有不同的文件 . 怎么处理..?
数据以称为分区的宽行存储在Cassandra中 . 每行都有一个用于标识该分区的分区键 . 为了在集群中分发数据,Cassandra正在使用分区器,这些分区器基本上是分区键的计算哈希值,并且数据基于这些值在集群中分布 . Cassandra中的默认分区程序是Murmur3Partitioner .
在OS级别,数据存储在sstables文件中 . 分区可以分布在许多sstables上 . 这就是为什么你还需要压缩,这是整合那些sstables的过程,所以你的分区不会分散在很多sstables中 . 减少分区分布的sstables数量也会缩短读取时间 . 值得注意的是,sstables是不可改变的 .
我建议阅读this,特别是"How Cassandra reads and writes data" .
1 回答
数据以称为分区的宽行存储在Cassandra中 . 每行都有一个用于标识该分区的分区键 . 为了在集群中分发数据,Cassandra正在使用分区器,这些分区器基本上是分区键的计算哈希值,并且数据基于这些值在集群中分布 . Cassandra中的默认分区程序是Murmur3Partitioner .
在OS级别,数据存储在sstables文件中 . 分区可以分布在许多sstables上 . 这就是为什么你还需要压缩,这是整合那些sstables的过程,所以你的分区不会分散在很多sstables中 . 减少分区分布的sstables数量也会缩短读取时间 . 值得注意的是,sstables是不可改变的 .
我建议阅读this,特别是"How Cassandra reads and writes data" .