Cassandra:分区和行键的最佳用法

时间:2014-04-24 18:31:17

标签: cassandra

我有以下数据结构:

{
   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 个答案:

答案 0 :(得分:0)

一种方法是对分区键进行哈希处理,然后使用哈希作为分区键。

您还可以在其中添加上次购买的时间((ClientId,ItemId,lastPurchaseTime))

答案 1 :(得分:0)

  

我是否需要将任何内容指定为行键? ClientId + ItemId唯一标识任何行,所以我应该在第一次关闭后放置任何内容“)”?

您的示例架构将完全按照您的要求运行并且运行良好。无需在主键上添加任何其他内容。

(如果您向主键添加了更多列,它们将用作群集列,它控制单个分区的磁盘行的排序。)