我有以下数据结构:
{
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唯一标识任何行,所以我应该在第一次关闭后放置任何内容")"?
答案 0 :(得分:0)
一种方法是对分区键进行哈希处理,然后使用哈希作为分区键。
您还可以在其中添加上次购买的时间((ClientId,ItemId,lastPurchaseTime))
答案 1 :(得分:0)
我是否需要将任何内容指定为行键? ClientId + ItemId唯一标识任何行,所以我应该在第一次关闭后放置任何内容“)”?
您的示例架构将完全按照您的要求运行并且运行良好。无需在主键上添加任何其他内容。
(如果您向主键添加了更多列,它们将用作群集列,它控制单个分区的磁盘行的排序。)