【发布时间】:2019-06-02 05:58:18
【问题描述】:
我在 cassandra 中有这张桌子:
CREATE TABLE adress (
adress_id uuid,
adress_name text,
key1 text,
key2 text,
key3 text,
key4 text,
effective_date timestamp,
value text,
active boolean,
PRIMARY KEY ((adress_id, adress_name), key1, key2, key3, key4, effective_date)
)
据我所知,cassandra 将根据分区键 (adress_id, adress_name) 分配表地址的数据。
当我尝试在共享相同 (adress_id,adress_name) 的位置插入太多数据时存在风险..
我想在插入数据之前检查一下,检查是这样的:
- 我已经在 cassandra 中拥有这对夫妇(adress_id、adress_name)的多少数据,假设它是 5MO。
- 我需要检查我尝试插入的数据大小是否不超过 每个分区键的 Cassandra 限制减去 cassandra 中的现有数据。
我的问题是如何查询 cassandra 以获取 数据大小 与这对夫妇 (adress_id, adress_name)。 之后,Cassandra 中的分区键的大小限制是多少。
【问题讨论】:
-
您可能有非常大的分区(我见过一些损坏的设置,其中一个分区是 60Gb),但最好不要超过 100Mb。但一切都取决于您用于访问数据的查询。
-
@AlexOtt 谢谢你的回答!任何想法如何计算现有分区的大小?
-
主要是通过读取数据并将所有内容汇总在一起+元数据的开销......但我建议只花更多时间在数据模型上。
nodetool tablehistograms将为您提供当前分区大小的分布 -
分区大小越小,性能越好。如果您的分区太大,Cassandra 必须扫描整个分区才能获取结果。
标签: java database cassandra cloud scylla