IndexedDB の W3C 仕様では、キー ジェネレーターを次のように定義しています。
キー ジェネレーターは、キーが必要になるたびに、単調に増加する数値 [原文のまま] を生成します。
現在、(私には)IndexedDB(または、さらに言えば、HTML5クライアント側ストレージオプションのいずれか:WebSQL、localStorageなど)の一般的な使用例は、オフラインで動作するように設計されたアプリです(HTML5と組み合わせて) ApplicationCache)。
このシナリオでは、切断されたWeb アプリケーションがそのローカル データ ストアに新しいオブジェクト/レコードを生成し、後でサーバーへの接続が利用可能になったときに集中型データベースに同期される可能性があります。
さらに、複数のクライアントが同じ中央データベースに同期するアプリケーションには、通常、ID の衝突を防ぐメカニズムが必要です。
UUID (または GUID) は、中央の調整なしで一意のキーを生成できるため、適切な選択です。対照的に、「単調に増加する数値」は貧弱な解決策です (各クライアントが他のユーザーと衝突する可能性が低い開始値で「シード」されていない限り)。
IndexedDB の仕様が、UUID ジェネレーターなどの代替キー ジェネレーターを指定していない (または将来のサポートを許可していない) ことは驚くべきことです。答えとしては、IndexedDB の組み込みキー ジェネレーターをまったく使用せず、代わりにアプリケーションで独自のキーを生成することを提案する人もいるかもしれません。
ただし、利用可能な Javascript ベースの UUID ジェネレーターはたくさんありますが、それらの多くはランダム性に関して既知の制限があるMath.random () に基づいているようです。保証します。
IndexedDB の実装者が提供するネイティブの UUID ジェネレーターは、(おそらく) アプリケーションによって実装/インポートされたスクリプトよりも堅牢で、より優れたパフォーマンスを発揮します。と思うでしょう。
ここで何かを見逃しているのでしょうか、それとも W3C IndexedDB ワーキング グループが機会を逃したのでしょうか?