MongoDb では、ObjectId は 12 バイトの BSON タイプです。
objectID のサイズを小さくする方法はありますか?
MongoDb では、ObjectId は 12 バイトの BSON タイプです。
objectID のサイズを小さくする方法はありますか?
いいえ、BSON データ型です。それは、32 ビット整数に自分自身を縮小するように要求するようなものです。すべてのオブジェクトには_idプロパティが必要ですが、これに限定されませんObjectId
。
MongoDB コレクション内のすべてのドキュメントは一意である必要_id
がありますが、値はObjectId
. したがって、コレクション内のドキュメントのサイズを縮小する場合は、次の 2 つの選択肢があります。
ドキュメントの固有のプロパティの 1 つを選択し、それを_id
フィールドとして使用します。たとえば、外部から提供されたアカウント ID がデータ モデルの一部であるアカウント コレクションがある場合、アカウント ID を_id
フィールドに格納できます。
コレクションの主キーを自分で管理します。多くのドライバーは、カスタムの主キー ファクトリをサポートしています。@assylias が示唆するように、int を使用するとスペースを大幅に節約できますが、モデル内のフィールドの 1 つを として使用できる場合よりも多くのスペースを使用します_id
。
ところで、_id
フィールドの値は複合にすることができます。オブジェクト/ハッシュ/マップ/辞書を使用できます。たとえば、この SO questionを参照してください。
Mongo の上である種のオブジェクト/モデル フレームワークを使用している場合は、(1) に注意する必要があります。一部のフレームワークでは、開発者が ID 生成をオーバーライドするのに苦労しています。たとえば、私は Ruby の Mongoid で悪い経験をしました。その場合、生成はドライバー層で行われるため、(2) の方が安全な方法かもしれません。