我需要将数据从一个系统A传输到系统B.系统A存储用户ID是UUID,系统B将它们存储为整数。
我正在使用MySQL select语句从系统A检索和保存数据,然后将其传输到系统B.是否有一种简单的方法可以将UUID转换为MySQL select语句中的整数?
答案 0 :(得分:3)
正如评论中所讨论的,您不能简单地将UUID转换为整数并期望它是唯一的。 UUID是128位,而INT(10)
可能是32位。这意味着您必须忽略96位,这相当于非常大量的潜在冲突(对于每个唯一的32位值,大约78个octillion不同的UUID)。
并非所有内容都丢失,因为在32位中,您可以代表最多约40亿用户,这可能就足够了。您真正需要做的就是将现有的UUID映射到一个整数,这实际上很简单。
要实现此目的,您可以创建一个存储UUID(作为主键)和唯一整数(可能是自动增量字段)的转换表。您可以使用它从系统A映射到系统B(而反之亦然)。您可以将此表放入两个数据库中的任何一个,也可以将其保持独立。就个人而言,我会把它放到系统B中,因为这是userId
整数值实际上有意义的地方。