Cassandra UUID分区密钥和分区大小
给一张桌子Cassandra UUID分区密钥和分区大小,cassandra,primary-key,partition,Cassandra,Primary Key,Partition,给一张桌子 CREATE TABLE sensors_by_id ( id uuid, time timeuuid, some_text text, PRIMARY KEY (id, time) ) 当有很多条目时,这个比例会变大吗?我不确定,如果一个UUID字段足以作为一个好的分区键,或者是否需要创建一些人工键,如week_first_day或类似的东西?这实际上取决于您将如何插入数据-如果您为每次插入都随机生成UUID,那么重复的机会就会增加,并且您会得到
CREATE TABLE sensors_by_id (
id uuid,
time timeuuid,
some_text text,
PRIMARY KEY (id, time)
)
当有很多条目时,这个比例会变大吗?我不确定,如果一个UUID字段足以作为一个好的分区键,或者是否需要创建一些人工键,如week_first_day或类似的东西?这实际上取决于您将如何插入数据-如果您为每次插入都随机生成UUID,那么重复的机会就会增加,并且您会得到所谓的“瘦行”(许多内部有一行的分区)。即使您开始获取副本,每行也不会有那么多…分区大小可能有问题,因为cassandra对每个分区的磁盘大小有限制 好的经验法则是将最大行数保持在100000项以下,磁盘大小保持在100MB以下 使用这个公式很容易计算分区大小 您可以阅读有关数据建模的更多信息 因此,在当前模式下,1000每个分区行数,平均大小100字节的部分文本列将为:
Number of Values: (1000000 * (3 - 2 - 0) + 0) = 1000000
Partition Size on Disk: (16 + 0 + (1000000 * 116) + (8 * 1000000))
= 124000016 bytes (118.26 Mb)
因此,您可以看到,每个分区的118.26 Mb超出了限制。所以你需要优化你的分区键
我是用我的开源项目计算出来的-。谢谢。在这一点上,我并不太担心复制品。瘦行似乎在集群中分布得很好,所以这是一个“开始”?是的,这是一个开始。