Cassandra数据建模和设计聚类

时间:2015-01-19 16:14:19

标签: cassandra primary-key data-modeling clustering-key

我很困惑为Cassandra设计数据模型,来自SQL背景!我已多次浏览Datastax文档,了解Cassandra的许多内容!这似乎是一个问题,不知道如何克服这个和我应该选择的数据模型类型!

Primary Key along with Clustering这里真的很好解释了! 文档说,主键(分区键,聚类键)是数据模型中最重要的事情。

我的用例非常简单:

ITEM_ID    CREATED_ON     MOVED_FROM     MOVED_TO   COMMENT

ITEM_ID将是唯一的(partition_key),每个项目可能有10-20个移动记录! I wanted to get the movement records of an item sorted by time it's created on.所以我决定使用CREATED_ON作为群集密钥。

根据文档,clustering_key位于二级索引之下,与分区键不同,它应尽可能多的可重复值。我的数据模型完全失败了! How do I preserve order using clustering to achieve the same?

显然我无法在Application中创建一些ID生成登录,因为它在许多实例上运行,如果我必须继续使用某些逻辑,最终Cassandra的目的就是在这里进行折腾。

1 个答案:

答案 0 :(得分:3)

您实际上不需要此特定示例的辅助索引,并且默认情况下不会创建辅助索引。您的群集密钥本身将允许您执行看起来像

的查询
SELECT * from TABLE where ITEM_ID = SOMETHING; 

它会自动为您提供按群集密钥CREATED_ON排序的结果。

原因是你的密钥基本上会在内部创建看起来像

的分区
ITEM_ID => [Row with first Created_ON], [Row with second Created_ON] ...