2

我对设计 Cassandra 的数据模型有点困惑,来自 SQL 背景!我已经Datastax多次阅读文档以了解有关 Cassandra 的许多事情!这似乎是个问题,不知道如何克服这个问题以及我应该选择的数据模型类型!

主键和聚类在这里得到了很好的解释!文档说,主键(分区键,集群键)是数据模型中最重要的东西。

我的用例非常简单:

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 的目的就是在这里折腾。

4

1 回答 1

3

对于这个特定的示例,您实际上不需要二级索引,并且默认情况下不会创建二级索引。您的集群键本身将允许您执行看起来像

SELECT * from TABLE where ITEM_ID = SOMETHING; 

这将自动为您返回按 clustering key 排序的结果CREATED_ON

这样做的原因是您的密钥基本上会在内部创建分区,看起来像

ITEM_ID => [Row with first Created_ON], [Row with second Created_ON] ...
于 2015-01-19T17:44:24.300 回答