2011-10-14 10 views
22

私はCodeigniterとMongoDBを使ってAPIを開発しています。 このシステムでは、選択したユーザー が従っているユーザーのフルネームと_IDを保存しています。_IdをMongoDBにオブジェクトまたは文字列として格納しますか?

_Idについてはどうすればよいですか?オブジェクトとして保存するか、文字列として保存しますか? 私はオブジェクトとして格納する場合、私はフォロワーをエコーアウトするときに文字列に変換する必要があります 出力が奇妙に見えます。

私の質問は本当にです。 _Idをオブジェクトではなく文字列として保存しても問題ありませんか? 文字列として格納することの欠点は何ですか?

すべての入力をいただきありがとうございます!

答えて

18

リクエスト(および更新)のパフォーマンスは、実際にはobjectidの方が優れています。さらに、objectidはかなり小さいです。公式ドキュメントから

BSONはバイト配列を格納するバイナリデータのデータ型を含みます。 を使用すると、id値と_id インデックスのそれぞれのキーが2倍小さくなります。 http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs - - http://www.mongodb.org/display/DOCS/Object+IDs

はここであなたを助けることができる2つのリンクです

2

ObjectIdを使用すると、すべてのコンピュータで一意の値として_idが生成されます。 Shardingを使用すると、あなたは_idの競合を心配する必要はありません。 ObjectIdの生成方法を参照してくださいspecification
ただし、stringを使用する場合は、注意深く生成する必要があります。

関連する問題