我有一个像
这样的列族对象 ( obect_id, 公司-ID, GROUP_ID, family_id, 描述, .. );
我想根据对象ID,公司ID,组ID以及它们的任意组合来查询。
我的问题是 我应该制作复合主键
(对象ID,公司ID,组ID)
或创建单独的列familis?
只有对象ID在CF中是唯一的,公司ID可以在多行中重复,但组id在多行中不重复
答案 0 :(得分:1)
您可能希望根据查询模式在多个CF中复制数据。这是很常见的做法。
如果常见查询是“通过company_id获取所有对象”,那么您可能希望将所有对象存储在CF中,并仅通过company_id作为行键进行分区。如果您还需要进行单独的对象查找,则将存储的数据存储在另一个CF中 - 每个对象由object_id分区。如果组始终是特定公司的子集,那么您可能希望按公司排序密钥,然后按组逐行排列。
您应该根据运行所需的查询来设计Cassandra架构,而不是需要进入的数据。