web-dev-qa-db-ja.com

MongoDBのコレクションIDの長さ

私はmongodbとスタックオーバーフローに不慣れです。

MongodbコレクションIDが24の16進文字である理由を知りたいですか?その重要性は何ですか?

14
ashish bandiwar

デフォルトの_idが24文字の16進文字列であるのはなぜですか?

MongoDBドキュメントの主キー(_id)として生成されるデフォルトの一意の識別子は ObjectId です。これは12バイトのバイナリ値であり、多くの場合24文字の16進文字列として表され、MongoDBでサポートされている標準のフィールドタイプの1つです BSON仕様

ObjectIdの12バイトは、以下を使用して構築されます。

  • unixエポックからの秒数を表す4バイトの値
  • 3バイトのマシン識別子
  • 2バイトのプロセスID
  • 3バイトのカウンター(ランダムな値で始まる)

ObjectIdの重要性は何ですか?

ObjectId(または [〜#〜] guid [〜#〜] 式に従って生成された同様の識別子)を使用すると、分散システムで一意の識別子を個別に生成できます。

複数のアプリケーションサーバー(または シャードクラスター 内の複数のデータベースノード)にスケールアップする場合、一意のIDを個別に生成する機能が非常に重要になります。シーケンスカウンターのような中央調整のボトルネックは必要ありません(たとえば、自動インクリメントの主キーの場合のように)。また、新しい識別子が次のようになるリスクなしに、新しいドキュメントを挿入する必要があります。重複。

ObjectIdは通常、MongoDB クライアントドライバー によって生成されますが、クライアントドライバーまたはアプリケーションコードが存在する場合、または_idフィールドがまだ追加されていない場合は、MongoDBサーバー上で生成することもできます。

デフォルトのObjectIdを使用する必要がありますか?

いいえ。使用するのに適した一意の識別子がある場合は、いつでも_idに独自の値を指定できます。これは、単一の値または複数のフィールドを使用する複合値のいずれかです。

_id値の主な制約は、コレクションに対して一意である必要があり、既存のドキュメントの_idを更新または削除できないことです。

16
Stennie