我正在构建一个数据库,该数据库将存储有关一系列对象(例如科学论文、标本、DNA 序列等)的信息,这些对象都在线存在并且可以通过 URL 或诸如DOI之类的标识符来识别. 使用这些 GUID 作为对象的主键似乎是一个合理的想法,并且我在使用 GUID 的 md5 哈希时遵循了美味和Connotea 。如果您将鼠标悬停在美味或 Connotea 书签中的编辑或删除按钮上,您将在浏览器状态栏中看到 md5 哈希。例如,http://stackoverflow/的书签是
http://delicious.com/url/e4a42d992025b928a586b8bdc36ad38d
其中 e4a42d992025b928a586b8bdc36ad38d a 是http://stackoverflow/的 md5 哈希值。
有人对这种方法的优缺点有看法吗?
对我来说,这种方法的一个优点(与使用由数据库本身生成的自动递增主键相反)是我必须在对象之间做很多链接,并且通过使用 md5 哈希,我可以将这些链接外部存储在一个文件中(例如,作为数据挖掘/抓取的结果),然后将它们批量导入数据库。同样,如果必须从头开始重建数据库,则指向对象的 URL 不会更改,因为它们使用 md5 哈希。
我欢迎任何关于这听起来是否合理的想法,或者是否有其他(更好的?)方法来做到这一点。