gpt4 book ai didi

postgresql - 主键的 UUID 或 SEQUENCE?

转载 作者:IT王子 更新时间:2023-10-29 00:30:54 25 4
gpt4 key购买 nike

我来自 MySQL,在 MySQL 中您可以使用 AUTOINCREMENT 作为行的唯一 id 作为主键。

我发现 Postgresql 中没有 AUTOINCREMENT,只有 SEQUENCE 或 UUID。我在某处读到我们可以使用 UUID 作为表的主键。这具有屏蔽其他用户 ID 的额外优势(因为我想构建将 ID 作为参数的 API)。我应该为 Postgresql 使用哪个?

最佳答案

PostgreSQL 中的 sequence 与 MySQL 中的 AUTOINCREMENT 完全相同。 sequenceuuid 更有效,因为它是 8 个字节而不是 uuid 的 16 个字节。您可以使用 uuid 作为主键,就像大多数其他数据类型一样。

但是,我看不出这与屏蔽用户 ID 有什么关系。如果您想对其他用户隐藏某个用户的 ID,您应该仔细管理表权限和/或使用 - 例如 - md5() 散列 ID。

如果您想保护包含用户数据的表免受试图猜测其他 ID 的窥探黑客的攻击,那么 uuid 类型是一个很好的选择。包 uuid-ossp 有几种风格。版本 4 是最佳选择,因为它有 122 个随机位(其他 6 个用于识别版本)。您可以像这样创建一个主键:

id uuid PRIMARY KEY DEFAULT uuid_generate_v4()

然后你就再也不用担心了。


PostgreSQL 13+

您现在可以使用内置函数 gen_random_uuid()获取第 4 版随机 UUID。

关于postgresql - 主键的 UUID 或 SEQUENCE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33274291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com