MD5哈希作为人工密钥

时间:2010-11-16 12:52:26

标签: database-design md5 relational-database surrogate-key

我看到很多应用程序使用哈希作为代理键而不是普通整数。我看不出这种设计有什么好的理由。

鉴于大多数UUID实现只是哈希时间戳,为什么有这么多数据库设计者为应用程序范围的代理键选择它们呢?

3 个答案:

答案 0 :(得分:4)

哈希允许在潜在的大数据值之间进行更有效的比较 - 例如在连接中。即HASH(LargeObjectA)= HASH(LargeObjectB)的比较。例如,如果散列值是文档管理系统表中的文档,则比较散列比文档更有效。

大多数DBMS都对密钥的存储大小有限制,因此散列可能是实现更大密钥的一种替代解决方法。

通过将数据拆分为均匀分布在数据集中的逻辑分区,还可以使用哈希来优化存储。

答案 1 :(得分:2)

如果应用程序的数据后端由多个分布式数据库组成,则使用递增的整数ID可能会导致重复的值。 UUID不仅在应用程序内部而且在其外部也是唯一的(在加入外部数据时可能会有所帮助)。

确实,为系统中的不同数据库使用不同的id种子可以解决整数的唯一性问题,但是管理这种方法会更加困难。

答案 2 :(得分:1)

跨服务器的唯一性?在这种情况下,使用普通整数不会很好。