UUID或Integer是分区键的好选择吗?

时间:2018-08-03 06:06:45

标签: cassandra data-modeling cql

两个简单的问题:

  • UUID是分区键的好选择吗?这样是否可以在集群中的所有节点之间平均分配数据?
  • (唯一)整数是一个好选择吗?

这些选项中的任何一个都会创建“热”分区吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

UUID是分区键的不错选择-应该很好地在群集节点之间分布。 “唯一”整数更为棘手-某些节点需要具有生成此数字的权限,而在分布式环境中很难做到这一点。

关于热分区-这将取决于您的数据模型。如果您除了分区键之外还有其他主键组件,可以-您可能会遇到此问题。例如,您为传感器生成一个随机UUID,并开始向其中写入大量数据。

答案 1 :(得分:0)

出于两个简单的原因,我通常告诉人们不要将UUID用作分区键。

    UliID被设计为唯一,因此具有很高的潜在基数。
  1. 虽然它确实取决于您的数据模型,但请考虑每个UUID下将要包含多少行,然后问自己是否真的要在每个查询中都提供完整的UUID。
  2. li>

同样,这全都与数据模型有关。从DBA的角度来看,它们会很好地分布。但是从开发人员的角度来看,它确实可以限制您潜在的查询模式。

最终,您希望您的主键组件允许您的模型A)分配良好,B)匹配您的查询模式。如果在UUID上进行分区可以为您带来好处,那就太好了!