UUID 或 Integer 是分区键的好选择吗?
Is UUID or Integer a good choice as partition key?
两个简单的问题:
- UUID 是分区键的好选择吗?这会在集群中的所有节点之间均匀分布数据吗?
- (唯一的)整数是一个不错的选择吗?
这些选项中的任何一个都会创建 "hot" 个分区吗?
谢谢!
UUID 是分区键的不错选择 - 它应该很好地分布在集群节点之间。 "Unique" 整数比较棘手 - 一些节点需要是生成这个数字的权威,这在分布式环境中很难做到。
关于热分区 - 这将取决于您的数据模型。如果除了分区键之外还有其他主键组件,是的 - 您可能会遇到这个问题。例如,您为传感器生成一个随机 UUID 并开始向其中写入大量数据。
出于两个简单的原因,我通常会告诉人们不要使用 UUID 作为分区键。
- UUID 被设计为唯一的,因此具有很高的潜在基数。
- 虽然这确实取决于您的数据模型,但请考虑每个 UUID 下将有多少行,然后问问自己是否真的需要为每个查询提供完整的 UUID。
同样,这都是关于数据模型的。从 DBA 的角度来看,它们会很好地分发。但从开发人员的角度来看,它确实可以限制您的潜在查询模式。
最终,您希望您的主要关键组件允许您的模型 A) 分布良好并且 B) 匹配您的查询模式。如果 UUID 上的分区给了你,那就太好了!
两个简单的问题:
- UUID 是分区键的好选择吗?这会在集群中的所有节点之间均匀分布数据吗?
- (唯一的)整数是一个不错的选择吗?
这些选项中的任何一个都会创建 "hot" 个分区吗?
谢谢!
UUID 是分区键的不错选择 - 它应该很好地分布在集群节点之间。 "Unique" 整数比较棘手 - 一些节点需要是生成这个数字的权威,这在分布式环境中很难做到。
关于热分区 - 这将取决于您的数据模型。如果除了分区键之外还有其他主键组件,是的 - 您可能会遇到这个问题。例如,您为传感器生成一个随机 UUID 并开始向其中写入大量数据。
出于两个简单的原因,我通常会告诉人们不要使用 UUID 作为分区键。
- UUID 被设计为唯一的,因此具有很高的潜在基数。
- 虽然这确实取决于您的数据模型,但请考虑每个 UUID 下将有多少行,然后问问自己是否真的需要为每个查询提供完整的 UUID。
同样,这都是关于数据模型的。从 DBA 的角度来看,它们会很好地分发。但从开发人员的角度来看,它确实可以限制您的潜在查询模式。
最终,您希望您的主要关键组件允许您的模型 A) 分布良好并且 B) 匹配您的查询模式。如果 UUID 上的分区给了你,那就太好了!