爲索引資料的W3C規範定義a key generator爲:爲IndexedDB鍵生成UUID?
甲密鑰發生器產生每個需要密鑰時間單調增加的號碼[原文如此]。現在
,看來(我),對IndexedDB的一個常見用例(或者,就此而言,任何HTML5客戶端存儲選項:的WebSQL,localStorage的等等),將應用程序設計工作離線(結合HTML5 ApplicationCache)。
在這種情況下,已斷開連接的 Web應用程序可能會在其本地數據存儲區中生成新的對象/記錄,稍後在與服務器的連接可用時同步到集中式數據庫。此外,多個客戶端同步到相同集中式數據庫的任何應用程序通常需要防止ID衝突的機制。
UUID(或GUID)是一個不錯的選擇,因爲它可以在沒有任何中央協調的情況下生成唯一的密鑰生成。相比之下,「單調增加數字」是一個糟糕的解決方案(除非每個客戶端的「起始值」與其他用戶不太可能發生衝突)。
我感到奇怪的是,IndexedDB規範沒有指定(或者甚至允許將來的支持)備用密鑰生成器,比如UUID生成器。有些人可能會建議答案完全不是使用IndexedDB的內置密鑰生成器,而是讓應用程序生成它自己的密鑰。但是,雖然有很多基於Javascript的UUID生成器可用,但它們中的很多似乎基於Math.random(),它具有隨機性的已知限制,因此可能不是一個好選擇如果絕對唯一的密鑰必須得到保證。
由IndexedDB實現者提供的本地UUID生成器(可能)會比應用程序實現/導入的腳本更健壯並且性能更好;人們會想。
所以我錯過了這裏的一些東西,還是W3C IndexedDB工作組錯過了一個機會?