为Cassandra表选择一个分区键——多少是过多分区?

为Cassandra表选择一个分区键——多少是过多分区?,cassandra,data-modeling,Cassandra,Data Modeling,我有一个应用程序,其中Cassandra表的“自然”分区键似乎是“customer”。这是我们查询数据的主要方式,我们将获得良好的数据分布,等等 但是,如果有超过100万的客户,会不会有太多不同的分区 我应该选择一个分区键来减少分区键的数量吗 我已经看了很多关于这个话题的相关问题,但似乎并没有一个能解决这个问题 但是,如果有超过100万的客户,会不会有太多不同的分区 不可以。3分区程序可以处理类似2^64(-2^63到+2^63)的分区。Cassandra被设计成非常擅长存储大量数据和通过分区键

我有一个应用程序,其中Cassandra表的“自然”分区键似乎是“customer”。这是我们查询数据的主要方式,我们将获得良好的数据分布,等等

但是,如果有超过100万的客户,会不会有太多不同的分区

我应该选择一个分区键来减少分区键的数量吗

我已经看了很多关于这个话题的相关问题,但似乎并没有一个能解决这个问题

但是,如果有超过100万的客户,会不会有太多不同的分区

不可以。3分区程序可以处理类似2^64(-2^63到+2^63)的分区。Cassandra被设计成非常擅长存储大量数据和通过分区键进行检索。一个分区内的列数(20亿)有限制,但对于分区总数,我认为您可以使用现有的

我应该选择一个分区键来减少分区键的数量吗

绝对不是。这可能会导致分区变得太大,和/或在集群中形成“热点”


挑选一个好的分区键背后的主要任务是找到一个(两者)在集群中提供良好数据分布并与您的查询模式相匹配的分区键。从我读到的内容来看,听起来你确实做到了这一点。

我认为你误解了分区键的使用方式。推荐的分区程序获取分区键值,然后从中计算128位散列。散列称为记录的标记,正是该标记值决定了记录的存储位置。每个Cassandra节点都有一组与其关联的令牌范围。如果记录的标记与节点的范围一致,则记录存储在该节点上。分区的数量不是由您选择的分区键决定的:它是集群中令牌范围的数量。这大致等于配置数据存储节点时选择的VNode总数。

您可以使用当前分区密钥。无需使用复合分区键来驱动更多分区。你是否在做任何时间序列数据建模,每秒增加更多列之类的事情。如果没有,那么您当前的分区密钥可以用于数百万客户