给出一个表
CREATE TABLE sensors_by_id (
id uuid,
time timeuuid,
some_text text,
PRIMARY KEY (id, time)
)
当有大量条目时,这会扩大吗?我不确定,如果一个UUID字段足以作为一个好的分区键,还是需要创建一些像week_first_day或类似的人工密钥?
答案 0 :(得分:1)
这实际上取决于你将如何插入数据 - 如果你为每个插入真的随机生成UUID,那么重复is very low的可能性,你会得到所谓的“瘦行”(a很多分区里面有1行)。即使你开始获得重复项,每行也不会有这么多......
答案 1 :(得分:0)
分区大小可能是一个问题,因为cassandra限制了每个分区的磁盘大小。
好的经验法则是将最大行数保持在 100,000个项目以下,并且将磁盘大小控制在100 MB以下。
很容易计算分区大小您可以阅读有关数据建模here的更多信息。
因此,在当前情况下, 1 000 000 行的计数每个分区, some_text的平均大小为 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 超出了限制。因此,您需要优化分区键。
我使用开放源代码项目cql-calculator对它进行了计算。