如果我想在许多列上查询,我应该创建单独的列族吗?还是使用复合PK?

时间:2013-11-19 21:12:43

标签: cassandra cql cql3

我有一个像

这样的列族
  

对象       (       obect_id,       公司-ID,       GROUP_ID,       family_id,       描述,       ..       );

我想根据对象ID,公司ID,组ID以及它们的任意组合来查询。

我的问题是 我应该制作复合主键

  

(对象ID,公司ID,组ID)

或创建单独的列familis?

只有对象ID在CF中是唯一的,公司ID可以在多行中重复,但组id在多行中不重复

1 个答案:

答案 0 :(得分:1)

您可能希望根据查询模式在多个CF中复制数据。这是很常见的做法。

如果常见查询是“通过company_id获取所有对象”,那么您可能希望将所有对象存储在CF中,并仅通过company_id作为行键进行分区。如果您还需要进行单独的对象查找,则将存储的数据存储在另一个CF中 - 每个对象由object_id分区。如果组始终是特定公司的子集,那么您可能希望按公司排序密钥,然后按组逐行排列。

您应该根据运行所需的查询来设计Cassandra架构,而不是需要进入的数据。