MongoDB 使用 ObjectId 类型作为 _id。
如果我将 _id 设置为递增整数会不会很糟糕?
(With this https://github.com/goncalossilva/mongoid-sequence宝石,如果你有兴趣)
不,它一点也不坏,事实上内置的ObjectId
在索引中相当大,因此如果您相信自己有更好的东西,那么非常欢迎您更改索引的默认值_id
领域到任何。
但是,这是一个大but,在决定放弃默认制定时需要考虑一些因素ObjectId
,特别是当使用自动递增 _ids 时,如下所示:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field
多线程并不是一个大问题,因为findAndModify
原子锁实际上可以解决这个问题,但随后您就遇到了第一个问题。findAndModify
不是最快的功能,也不是最轻的功能,定期使用它时会发现性能显着下降。
无论如何,你还必须考虑自己执行此操作的开销,即使没有findAndModify
。对于每个插入,您都需要一个额外的查询。想象一下,有一个唯一的 id,每次要插入时都必须查询其唯一性。最终你的插入率会下降到极点,你的锁定时间也会增加。
当然ObjectId
非常擅长保持唯一性,而无需在插入之前通过接触数据库来检查或制定其自己的唯一性,因此它没有这种开销。
如果您仍然认为整数 _id 适合您的场景,那么就使用它,但请记住上述开销。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)