postgresql中的未来证明主键设计

时间:2010-05-11 05:26:08

标签: postgresql primary-key partitioning

我以前总是使用auto_generated或Sequences作为我的主键。对于我正在研究的当前系统,有可能必须最终对数据进行分区,这在过去从未被要求过。知道我将来可能需要对数据进行分区,使用UUID代替数据库的内置序列是否有任何优势?如果是这样,是否有一种设计模式可以安全地生成相对较短的密钥(比如6个字符而不是通常的长密钥)e6709870-5cbc-11df-a08a-0800200c9a66?每桌36 ^ 6个键对于我能想象的任何表都足够了。

我将使用网址中的密钥,因此简洁非常重要。

2 个答案:

答案 0 :(得分:0)

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

有关可用技术的讨论,请参阅此文章:Choosing a Primary Key: Natural or Surrogate?

答案 1 :(得分:0)

我不确定您计划的是什么类型的分区(this?),但我不明白为什么要更改主键设计?即使旧的分区表是“活动的”(即,您可以在任何分区表中插入行),在sharing the sequence中的几个表中也没有问题。