我有以下数据结构:
{
ClientId: string,
ItemId: string,
Item : string
}
我想将这些数据存储在Cassandra集群中 . 我知道有些客户端的项目比其他客户端多得多,但我想将数据均匀地存储在我的集群的每个节点上,因为ClientId和Item id只有一个查询 .
据我所知,我需要指定分区键,以便均匀分布数据,所以在CQL中它看起来像:
CREATE TABLE IF NOT EXISTS mykeyspace.mytable
(
ClientId text,
ItemId text,
Item text,
PRIMARY KEY((ClientId, Id))
);
我是否需要将任何内容指定为行键? ClientId ItemId唯一标识任何行,所以我应该在第一次关闭“)之后放任何东西吗?”
2 回答
一种方法是对分区键进行哈希处理,然后使用哈希作为分区键 .
您还可以在那里添加上次购买的时间 ((ClientId, ItemId, lastPurchaseTime))
您的示例架构将完全按照您的要求运行并且运行良好 . 无需在主键上添加任何其他内容 .
(如果向主键添加了更多列,它们将用作群集列,它控制单个分区的磁盘行的排序 . )