【发布时间】:2014-02-06 14:17:28
【问题描述】:
为什么我应该使用应用程序来生成 UUID 而不是使用数据库 ID?有优势吗?
我看到许多应用程序会生成 UUID 以防止发生冲突。那么这可能发生在 mysql 或 mongodb 等数据库 ID 中吗?
【问题讨论】:
为什么我应该使用应用程序来生成 UUID 而不是使用数据库 ID?有优势吗?
我看到许多应用程序会生成 UUID 以防止发生冲突。那么这可能发生在 mysql 或 mongodb 等数据库 ID 中吗?
【问题讨论】:
使用随机 UUID 而不是依赖数据库 ID 的一个理论上的原因是能够并行插入新记录而无需锁定和递增计数器,甚至无需查找唯一索引。
如果您有一个自动增量字段,则需要一些东西来维护这个计数器。唯一可以保证自动递增功能正常工作的方法是在递增计数器的同时锁定这个计数器,或者用它做一些其他的事务处理。如果您有随机 ID,则不必这样做。
另一个原因是能够在主-主环境中执行并行分布式插入。当不同的数据库服务器访问相同的数据时,维护两个服务器之间的共享计数器会更加昂贵,因此最好从一开始就放弃它并使用随机标识符。
但这些原因在实践中很少适用。您需要大量的 INSERT 流量才能获得回报。我猜大多数 UUID 的使用不是因为必要,而是因为“酷”或对它们真正用途的无知。
【讨论】: