我想知道在CouchDB中默认表示UUID的格式。虽然RFC 4122描述了像550e8400-e29b-11d4-a716-446655440000
这样的UUID,但CouchDB使用了像3069197232055d39bc5bc39348a36417
这样的连续字符。我已经在他们的wiki和他们的文档中搜索了一下这实际上是什么,但没有任何结果。
您知道这是否是一种不符合RFC的格式,省略了所有-
,或者这是128位的完全不同的表示。
背景是我正在使用RFC UUID,其格式如RFC中所述。我发现CouchDB风格可能更适合构建内部树,但我希望确保使用一致的实现。
答案 0 :(得分:12)
从技术上讲,我们并没有像你注意到的那样使用rfc标准。版本四uuids保留类似四位的东西来指定uuid的版本。我们也不会使用通常在其他实现中看到的连字符来格式化它们。
CouchDB uuids是16个随机字节,格式为十六进制。粗略地说,这是一个v4 uuid但不符合rfc。
无论具体细节如何,实际上并没有太多问题。除非您尝试进行某种带外分析,否则通常不应该尝试解释uuid。 CouchDB永远不会解释uuids,我们只依赖于其中涉及的随机性。
底线是不用担心它,只是在生成后将它们视为字符串。
答案 1 :(得分:0)
我可以在doc网站上提供一些2019年的参考资料:“无论如何最好提供自己的uuid”-https://docs.couchdb.org/en/latest/best-practices/documents.html?highlight=uuid
我之所以这么一巴掌,是因为我作为第一个程序尝试尝试的(业余)数据库,处理的是确实生成并使用兼容4122的uuid的应用程序,而我正在咀嚼我的担心担心剥离“-”位并将其放回检索状态的问题。
在让我感到震惊之前,couchdb用作文档_id的uuid是一个字符串,而不是数字。因此,我使用应用程序在创建对象_id文档时生成的uuid。没有随机重复的uuid。