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

Is UUID or Integer a good choice as partition key?

两个简单的问题:

这些选项中的任何一个都会创建 "hot" 个分区吗?

谢谢!

UUID 是分区键的不错选择 - 它应该很好地分布在集群节点之间。 "Unique" 整数比较棘手 - 一些节点需要是生成这个数字的权威,这在分布式环境中很难做到。

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

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

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

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

最终,您希望您的主要关键组件允许您的模型 A) 分布良好并且 B) 匹配您的查询模式。如果 UUID 上的分区给了你,那就太好了!