-2

今日、MongoDB ドキュメントの 1 つに奇妙な点があることに気付きました。

フクロウは見た目とは違う

_idMongo が ObjectID 内で単語を綴るのは正常ですか? それとも、フィールドを生成するランダム化に問題があることを示していますか?

私はこれを監視するつもりですが、これが関係するかどうかについて誰かが情報を持っている場合は、事前に助けてくれてありがとう.

4

1 に答える 1

4

まあ、それは真面目な意図のないただの面白いイースターエッグに他なりません。8月25日にようこそ。

ここでの純粋な可能性は、「53facade」がたまたま次のエポック時間に対応していることです。

「2014 年 8 月 25 日月曜日 05:34:22 GMT」。

これの全体を見ると:

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

  • Unix エポックからの秒数を表す 4 バイトの値、
  • 3 バイトのマシン ID、
  • 2 バイトのプロセス ID、および
  • ランダムな値で始まる 3 バイトのカウンター。

そのため、開始時の 4 ビット表現 (すべての文字で有効な 16 進数) は、作成時の現在のタイムスタンプ値から導出されます1408944862。たまたま、これが発生したときです。

単なる偶然であり、完全に有効です。ご覧のとおり、この時点で作成されたすべての ObjectId 値は 1000 ミリ秒の間隔で同じであるため、ObjectId の「ランダム性」と実際に「一意」の属性を決定するのは識別子の「残り」です。

ここにはエラーや弱点はありません。その日の面白いポイントです。

于 2014-08-25T07:48:06.207 に答える