私は MongoDB と Stack Overflow を初めて使用します。
MongoDB コレクション ID が 24 桁の 16 進文字である理由を知りたいです。その重要性は何ですか?
ベストアンサー1
デフォルトが_id
24 文字の 16 進文字列なのはなぜですか?
_id
MongoDBドキュメントの主キー( )として生成されるデフォルトの一意の識別子は、オブジェクトIDこれは12バイトのバイナリ値で、通常は24文字の16進文字列として表され、MongoDBでサポートされている標準フィールドタイプの1つです。BSON仕様。
ObjectId の 12 バイトは以下を使用して構築されます。
- Unixエポックからの秒数を表す4バイトの値
- 3バイトのマシン識別子
- 2バイトのプロセスID
- 3バイトのカウンター(ランダムな値から始まる)
ObjectId の重要性は何ですか?
ObjectId(または、ガイド式を使用すると、分散システム内で一意の識別子を独立して生成できます。
複数のアプリケーションサーバー(または複数のデータベースノード)にスケールアップする場合、一意のIDを独立して生成する機能は非常に重要になります。シャードクラスタ)。シーケンス カウンターのような中央調整のボトルネック (たとえば、自動増分主キーの場合など) は発生したくないでしょうし、新しい識別子が重複するリスクなしに新しいドキュメントを挿入したいでしょう。
ObjectIdは通常MongoDBによって生成されますクライアントドライバーただし、クライアント ドライバーまたはアプリケーション コードにまだフィールドが追加されていない場合は、MongoDB サーバー上で生成することもできます_id
。
デフォルトの ObjectId を使用する必要がありますか?
いいえ。より適切な一意の識別子がある場合は、いつでも に独自の値を指定できます_id
。これは、単一の値でも、複数のフィールドを使用した複合値でもかまいません。
値に関する主な制約は、_id
コレクション内で値が一意である必要があり、_id
既存のドキュメントの値を更新または削除できないことです。