4

Sinatra と Redis を使用して Facebook の Lovers を再構築しています。Redis には長い (12 バイト) BSON ObjectIdがなく、ユーザーごとに Facebook の user_id のセットを保存しているため、Redis が気に入っています。セットは 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 に答える