UUID用于外键。

7 浏览
0 Comments

UUID用于外键。

为什么要使用UUID作为主键?它们需要大量的内存来存储。据我了解,它们被用作主键是因为每个生成的值都是唯一的,这在合并两个数据库时非常有帮助,因为不会发生冲突。

如果UUID用于保护API端点的猜测隐私,为什么不使用ID、数据库编号,然后对它们进行哈希运算作为主键呢?然后ID可以用于关系,这很方便。ID和数据库编号的哈希值可以用作主键,使用ID进行数据条目搜索也比UUID更快。

0
0 Comments

UUID for foreign keys这个问题的出现的原因是为了在各个系统中生成标识符,而无需与中央机构进行协调,并且用于在系统之间共享数据记录,如联合数据库,而不会发生冲突的风险。

UUID实际上是一个128位的值,不要将其与通常用于人类显示的36个字符的十六进制字符串混淆。

对于支持UUID作为数据类型的数据库(如Postgres),使用UUID数据类型的键将使用64位整数序列号的两倍的内存和存储空间,或者是32位整数(40亿范围)的四倍,这是通常用作替代键的其他选择。对于每个数据库设计师来说,这是否“很多”是一个判断性的问题。考虑到现代计算硬件中内存和存储空间的廉价和易得性,我通常认为使用UUID的好处是值得额外的内存/存储空间的。

如果您需要一个全局唯一标识符,请使用Universally Unique ID (UUID),没有必要自己发明。

解决方法是使用UUID作为外键的数据类型,确保在不同系统之间生成的标识符是唯一的,并且不会发生冲突。

0