我正在重建脸书上的恋人 http://www.facebook.com/loversapp与 Sinatra 和 Redis 一起。我喜欢 Redis,因为它没有很长的(12 字节)BSON 对象 ID http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-TheBSONObjectIdDatatype我正在为每个用户存储 Facebook user_ids 集。这些集合是 requests_sent、requests_received 和关系,它们都包含 Facebook 用户 ID。
我正在考虑切换到 MongoDB,因为我想使用它的地理空间索引。如果这样做,我想使用 FB 用户 id 作为 _id 字段,因为我希望集合较小,并且希望 JSON 响应较小。但是,BSON ObjectId 是否比整数(fb user_id)更好用(对于 MongoDB 更有效)?
据我所知,没有重大的效率差异except在某些情况下,例如按日期排序(因为 ObjectId 中包含日期时间等)
例如,您将无法简单地按_id您也会失去以下福利分片和分配 http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-SequenceNumbers。除此之外,虽然我个人仍然会使用 ObjectId...只要int是独一无二的(当然)......你应该没问题。
自从_id总是在查询中“返回”我想你会节省一点时间和数据传输(一点点。)
你甚至可以让你的_id如果你想要的话,可以是一个数组,它的所有索引都会很好地看到这一点answer https://stackoverflow.com/questions/4591397/effect-mongodb-id-generation-on-indexing/4591619#4591619(并不是说大多数时候我一定会推荐这样做。)
另请参阅:优化对象 ID http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)