它是坏的改变_id型MongoDB中为整型?(Is it bad to change _id typ

2019-07-17 14:53发布

MongoDB使用的ObjectId类型_id。

这将是糟糕的,如果我做的_id整数递增?

(有了这个宝石,如果你有兴趣)

Answer 1:

不,它是不坏,实际上建在ObjectId因此,如果你相信你有更好的东西,那么你更受欢迎更改的默认值是索引中相当可观的_id场什么的。

但是,这是一个很大的,但是 ,决定移动从默认离开时,制定有一些注意事项ObjectId ,使用如下所示自动递增_ids尤其是当: http://docs.mongodb.org/manual/tutorial/create -an-自动递增场/#自动递增的计数器收集

多线程是没有这么大的问题,因为findAndModify和原子锁实际上可以照顾那个,但你只需点击进入你的第一个问题。 findAndModify不是最快的功能,也不是最轻的,也有过经常使用,当它注意到显著性能下降。

你也有必要考虑到反正这样做自己的开销,即使没有findAndModify 。 对于每一个插入你有你需要做一个额外的查询。 像,用它你要查询的每一个你想插入时间唯一一个唯一的ID,最终您的插入率将下降到爬行,你的锁将建立。

当然ObjectId是为无需检查或通过触摸数据库插入之前制定自己的独特独特的真的很不错,因此它不具备这方面的开销。

话虽这么说,这是不是在世界上最坏的想法,如果你认为它五星级您的情况,然后去了,但考虑到裸露的,如果您不需要自动递增ID可能是你的负担。



Answer 2:

你可以这样做,但你有责任确保该整数是唯一的。

MongoDB的不支持像大多数SQL数据库自动递增字段。 当你有一个分布式或者多线程应用程序具有多个进程和/或创建新的数据库条目的线程,你必须确保它们使用相同的计数器。 否则,它可能发生的两个线程试图存储文件与数据库相同_id。

发生这种情况时,其中一人将失败。 这意味着你必须等待数据库(通过调用GetLastError函数或通过设置写担忧承认 ),这需要的不仅仅是发送数据不再在返回成功或错误发射后不管的方式。



文章来源: Is it bad to change _id type in MongoDB to integer?