今日、MongoDB ドキュメントの 1 つに奇妙な点があることに気付きました。
_id
Mongo が ObjectID 内で単語を綴るのは正常ですか? それとも、フィールドを生成するランダム化に問題があることを示していますか?
私はこれを監視するつもりですが、これが関係するかどうかについて誰かが情報を持っている場合は、事前に助けてくれてありがとう.
今日、MongoDB ドキュメントの 1 つに奇妙な点があることに気付きました。
_id
Mongo が ObjectID 内で単語を綴るのは正常ですか? それとも、フィールドを生成するランダム化に問題があることを示していますか?
私はこれを監視するつもりですが、これが関係するかどうかについて誰かが情報を持っている場合は、事前に助けてくれてありがとう.
まあ、それは真面目な意図のないただの面白いイースターエッグに他なりません。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 の「ランダム性」と実際に「一意」の属性を決定するのは識別子の「残り」です。
ここにはエラーや弱点はありません。その日の面白いポイントです。