在REST应用程序中,我需要将UUID
字符串表示形式(在json
中收到)转换为UUID Object
,以将其存储在MongoDB的_id
字段中。我这样做是因为我听说在使用UUID
vs String
时,查找/插入时间会有性能提升。
在MongoDB上使用UUID
作为_id
而不是字符串表示时,是否真的有性能提升? (即使是小的性能提升也会对我产生很大的影响)
PS:我看到this post表示ObjectID
的效果更好(不完全相同,不确定是否适用于UUID
),但唯一的原因似乎是潜力ObjectID
与String
的较小尺寸。
答案 0 :(得分:3)
我正在使用PyMongo
将UUID
编码为BSON::Binary
。
我们可以从MongoDB doc看到:
为了更有效地存储集合中的UUID值 在_id索引中,将UUID存储为BSON BinData类型的值。 BinData类型的索引键可以更有效地存储 索引if:二进制子类型值在0-7或0的范围内 128-135,字节数组的长度为:0,1,2,3,4,5,6,7, 8,10,12,14,16,20,24或32。
我的UUID
在此范围内,因此性能会比String
表示增加。