2

我过去一直使用 auto_generated 或 Sequences 作为主键。使用我正在开发的当前系统,有可能最终必须对过去从未要求过的数据进行分区。知道我将来可能需要对数据进行分区,使用 UUID 进行 PK 而不是数据库的内置序列有什么好处?如果是这样,是否有一种设计模式可以安全地生成相对较短的键(比如 6 个字符而不是通常的长键 e6709870-5cbc-11df-a08a-0800200c9a66)?每个表 36^6 个键对于我能想象到的任何表来说都绰绰有余。

我将在 URL 中使用键,因此简洁很重要。

4

2 回答 2

0

没有将 128 位 UUID 减少到 6 个字符的模式,因为信息会丢失。几乎所有数据库都实现了一种称为增量键的代理键策略。Postgres 和 Informix 有序列,MySql auto_increment,Oracle 提供序列生成器。在您的情况下,我认为使用整数 ID 是安全的。

请参阅这篇文章:选择主键:自然键还是代理键?讨论可用技术

于 2010-05-11T06:20:07.910 回答
0

我不确定您计划使用哪种类型的分区(这个?),但我不明白为什么要更改主键设计?即使旧的分区表是“活动的”(即,您可以在任何分区表中插入行),在多个表之间共享序列也没有问题。

于 2010-05-11T12:31:01.763 回答