4

我正在使用 Sinatra 和 Redis在 Facebook 上重建 Lovers 。我喜欢 Redis,因为它没有长(12 字节)的BSON ObjectIds,而且我为每个用户存储 Facebook user_ids 集。这些集合是 requests_sent、requests_received 和关系,它们都包含 Facebook 用户 ID。

我正在考虑切换到 MongoDB,因为我想使用它的地理空间索引。如果我这样做,我想使用 FB 用户 ID 作为 _id 字段,因为我希望集合很小并且我希望 JSON 响应很小。但是,BSON ObjectId 是否比仅使用整数(fb user_id)更好(对 MongoDB 更有效)?

4

1 回答 1

2

据我所知,除了在某些情况下(例如按日期排序)(因为 ObjectId 中包含日期时间等)外,没有主要的效率差异。

例如,您将失去按_id简单排序的能力,您也将失去分片和分布的好处。除此之外,虽然我仍然会亲自使用 ObjectId ......只要int是 unquie (当然)......你应该没问题。

由于_id总是在查询中“回来”,我想你会节省一点时间和数据传输(一点点。)

如果你愿意,你甚至可以让你的_id成为一个数组,它会很好地索引看到这个答案(不是我大部分时间都建议这样做。)

另请参阅:优化对象 ID

于 2011-01-09T01:06:06.030 回答