MongoDBは、挿入されたすべてのオブジェクトのIDを自動的に作成します。独自のIDを作成する必要はありません。
整数IDをインクリメントする必要がある場合は、あらゆる種類の分散同期の問題が発生します。重要なケースを正しく理解するのは実際には非常に困難です。
一意のIDを生成するには、私が考える最も簡単な方法:
- 一意性制約を使用してid列にインデックスを付けます。
- 最大数のインデックスにドキュメントクエリを挿入するには、1を追加し、それをidとして使用します。
- インデックスの再試行が重複しているために挿入が失敗した場合
数回の往復が必要ですが、堅牢で、インデックスがかなり高速に配置されている必要があります。
これらを書き込む場所が1つしかない場合は、AtomicIntegerでIDをローカルにキャッシュし、衝突を検出した場合にのみ完全なラウンドトリッププロセスを実行してからAtomicIntegerを更新できます。