自动增量和 UUID 样式之间的真正区别是什么?
我认为 auto inc 与 uuid 相比很容易破解
在有很多记录的查询中,Uuid 比自动增量慢,但它有很大的不同吗?
自动增量和 UUID 样式之间的真正区别是什么?
我认为 auto inc 与 uuid 相比很容易破解
在有很多记录的查询中,Uuid 比自动增量慢,但它有很大的不同吗?
从关系模型的角度来看,主键非常重要
PK越小越好。这就是为什么数字PK是最好的。
如果您担心它很容易“破解”,您可以添加一个额外的 UUID 作为自然键
这就是我在几个项目中看到的,它就像一个魅力。
增量 ID 本身并不“容易破解”,它只是提供在您使用大随机 ID 时被隐藏(但并非完全隐藏)的入口点。仍然需要糟糕的实施和可利用的软件才能存在真正的危险。正如您在地址栏中的 URL 中看到的那样,该站点使用增量 ID 没有问题。
但是,除了安全考虑之外,当您不希望用户轻易猜测其他(尽管是公开的)内容的 URL 时,随机唯一 ID 有时会很有帮助。例如,在一个房地产网站上,您可能不想提供在 ID 中“上下”查看竞争对手的条目的可能性,即使他们可以通过搜索找到它们。有点阻碍可能是一件好事。
为什么不两者都用?用于加快索引和关系的数字自动增量键;用于外部访问的随机 UID。
一些想法:
注意 PK 列的长度... UUID 和 GUID 非常长... 字符串。一个 INT 甚至 BIGINT 自增列可以在更小的空间内确保唯一性。
请注意,autoincement 列在表管理方面有一些自己的问题。如果您截断/删除创建表,那么自动增量将难以维护。此外,在 MySQL 中,单个表只允许使用 1 个自增列。
如果您的数据允许,请使用从数据中派生的某种 HASH 用于索引和性能。