首页 文章

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

提问于
浏览
1

我有以下数据结构:

{
   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

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

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

  • 0

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

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

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

相关问题