我正在考虑(在 PostgreSQL v13 上uuid_generate_v4()
)为我的高流量表使用 UUID 类型(with ),而其他表使用 Text 类型(作为主键)通过使用类似于crypt(now()::text, gen_salt('des'))
(短 UUID?)的自动生成。
使用这种类似短 UUID 的类型有什么问题?它可以被认为是一种好的做法吗?如果没有,你有什么建议?
假设有一个包含各种外键 (FK) 的表,每个 FK 都是一个 UUID 类型,然后当我们打开该表时,我们会看到一个水平拉伸的长表,或者当我们进行 API 调用时返回一个对象列表他们的身份证,这并不酷。
我正在检查 Net 上可用的一些 API 调用,它们使用一些固定长度为 10 个字符的类似短 UUID 的类型,所以我在想,他们如何在没有任何冲突的情况下获得该结果?它的性能如何?等等
无论您做什么,都不要使用文本类型来存储固定长度的二进制数据。例如,存储为文本的 UUID 占用 33 个字节,而 UUID 类型仅占用 16 个字节。您的“类似短 UUID 的类型”是 13 个字符,存储为文本时占用 14 个字节。为了节省 2 个轮空和碰撞的风险,我不会使用它。