出于性能考虑,我们正在将数据库从 MySQL 迁移到 MongoDB,并考虑如何使用 MongoDB 文档的 ID。我们正在讨论是使用 ObjectID (MongoDB 默认值) ,还是使用 UUID (这是我们到目前为止在 MySQL 中一直使用的方法)。到目前为止,我们支持这些选择的理由如下:
目标 ID: ObjectIDs are the MongoDB default and I assume (although I'm not sure) that this is for a reason, meaning that I expect that MongoDB can handle them more efficiently than UUIDs or has another reason for preferring them. I also found 这个堆栈溢出的答案 that mentions that usage of ObjectIDs makes indexing more efficient, it would be nice however to have some metrics on how much this "more efficient" is.
UUID: 我们支持使用 UUID 的基本论点(这是一个非常重要的论点)是,它们受到几乎任何数据库的支持。这意味着,如果我们决定从 MongoDB 切换到其他服务,而且我们已经有了一个基于 ID 从 DB 检索文档的 API,那么这个 API 的客户端不会有任何变化,因为 ID 可以保持完全相同。如果我们要使用 ObjectID,我不确定我们将如何将它们迁移到另一个数据库。
是否有人对这些选择中的一个是否比另一个更好,以及为什么有任何见解?您曾经在 MongoDB 中使用过 UUID 而不是 ObjectID 吗? 如果有,您遇到的优点/问题是什么?