MongoDB UUID Standard而不是Legacy的任何性能优势?

Cam*_*art 4 mongodb mongodb-.net-driver

切换到新标准UUID BinData子类型4有什么性能优势吗?我们的大部分藏品被设置为使用GuidRepresenation.CSharpLegacy这是默认为C#的驱动程序.如果我设定Mongo.Bson.BsonDefaults.GuidPresenation = Mongo.Bson.GuidRepresentation.Standard,它会有利于性能吗?还假设我们将所有现有数据转换为使用标准子类型.

Ste*_*nie 6

精简版

不同的UUID BinData子类型是关于兼容性,而不是性能..所以没有明显的性能优势.

长版

从历史上(以及我的意思,几年前),ObjectIDs只是预期是唯一的,并使用类似的公式生成.一些驱动程序在序列化UUID方面存在分歧(例如,字节顺序或字节顺序不同).因此,类型3 UUID最终具有Python,Java和C#子类型.

如果您只使用单个驱动程序,则此变体不是问题,但如果在同一数据库上使用不同的驱动程序(例如C#vs Java vs Python),则可能会出现问题.生成ObjectID的方式的差异可能会影响驱动程序对子值的排序或解释的假设(例如,如果要提取timestampObjectID 的组件).

如果您想深入了解格式的不同之处,请查看mongo-csharp-driver存储库中的uuidhelpers.js.此脚本包含一些辅助函数,用于在mongoshell中处理不同的UUID格式.