我正在编写一个脚本,该脚本应该从基于sql的db合并一些数据。每行都有一个长整数作为主键(增量)。我正在考虑对这些ID进行哈希处理,以便他们以某种方式看待'就像我的RethinkDB表中已有的其他ID一样。我试图在这里尝试实现的目的是避免在尝试再次合并相同数据的情况下重复,但将原始整数保持为ID,并将生成的数据ID直接保存到RethinkDB表中感觉很奇怪。
我能这样做吗? RethinkDB如何生成自动ID? 我正确地接近这个......?
答案 0 :(得分:3)
RethinkDB使用128位UUID的字符串编码(基本上是散列整数)。
字符串格式如下所示:“HHHHHHHH-HHHH-HHHH-HHHH-HHHHHHHHHHHH”其中每个'H'是128位整数的十六进制数字。使用字符0-9和a-f(小写)。
如果要从现有整数生成此类UUID,我建议先对整数进行哈希处理。这将使您在整个密钥空间上均匀分布(这使得分片更容易并避免热点)。 作为第二步,您必须使用上面显示的格式的字符串格式化哈希值。如果你没有足够的数字,可以将最后一个'H'保留为常数0。
如果您真的想了解UUID生成的详细信息,可以通过以下两个链接进一步阅读: 1. RFC 4122“通用唯一标识符(UUID)URN命名空间”http://tools.ietf.org/html/rfc4122 2. RethinkDB实现UUID生成和格式化https://github.com/rethinkdb/rethinkdb/blob/next/src/containers/uuid.cc