Cassandra 数据建模和聚类设计
Cassandra Data Modelling and designing the Clustering
我对为 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?
显然我不能在应用程序中创建一些 ID 生成登录,因为它在许多实例上运行,如果我必须依赖某些逻辑,最终 Cassandra 的目的就在这里折腾。
对于这个特定示例,您实际上不需要二级索引,默认情况下不会创建二级索引。您的集群键本身将允许您执行看起来像
的查询
SELECT * from TABLE where ITEM_ID = SOMETHING;
这将自动返回按您的集群键 CREATED_ON
排序的结果。
这是因为您的密钥基本上会在内部创建看起来像
的分区
ITEM_ID => [Row with first Created_ON], [Row with second Created_ON] ...
我对为 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?
显然我不能在应用程序中创建一些 ID 生成登录,因为它在许多实例上运行,如果我必须依赖某些逻辑,最终 Cassandra 的目的就在这里折腾。
对于这个特定示例,您实际上不需要二级索引,默认情况下不会创建二级索引。您的集群键本身将允许您执行看起来像
的查询SELECT * from TABLE where ITEM_ID = SOMETHING;
这将自动返回按您的集群键 CREATED_ON
排序的结果。
这是因为您的密钥基本上会在内部创建看起来像
的分区ITEM_ID => [Row with first Created_ON], [Row with second Created_ON] ...