Deno Deploy 上的 KV
Deno Deploy 現在提供內建的無伺服器鍵值資料庫,稱為 Deno KV。
此外,Deno KV 也可在 Deno 本身中使用,並使用 SQLite 作為其後端。自 Deno v1.32 起,此功能已可透過 --unstable
標記存取。深入瞭解Deno KV。
一致性 Jump to heading
預設情況下,Deno KV 是一個強一致性資料庫。它提供最強形式的強一致性,稱為外部一致性,這表示
- 序列化性:這是交易的最高隔離等級。它確保多個交易並行執行所產生的系統狀態,會與交易依序一個接一個執行的狀態相同。換句話說,可序列化交易的最終結果等同於這些交易的某種順序。
- 線性化性:此一致性模型保證操作(例如讀取和寫入)看起來是即時且即時發生的。一旦寫入操作完成,所有後續的讀取操作都會立即傳回更新後的值。線性化性確保操作的強即時排序,使系統更可預測且更容易理解。
同時,您可以選擇透過在個別讀取操作上設定 consistency: "eventual"
選項來放寬一致性限制。此選項允許系統從全域複本和快取提供讀取,以實現最小延遲。
以下是我們頂級區域中觀察到的延遲數字
區域 | 延遲(最終一致性) | 延遲(強一致性) |
---|---|---|
北維吉尼亞 (us-east4) | 7ms | 7ms |
法蘭克福 (europe-west3) | 7ms | 94ms |
荷蘭 (europe-west4) | 13ms | 95ms |
加州 (us-west2) | 72ms | 72ms |
香港 (asia-east2) | 42ms | 194ms |
分散式佇列 Jump to heading
無伺服器分散式佇列在 Deno Deploy 上可用。請參閱Deno Deploy 上的佇列以瞭解更多詳細資訊。
從 Deno Deploy 外部連線至託管資料庫 Jump to heading
您可以從 Deno Deploy 外部的 Deno 應用程式連線至您的 Deno Deploy KV 資料庫。若要開啟託管資料庫,請將 DENO_KV_ACCESS_TOKEN
環境變數設定為 Deno Deploy 個人存取權杖,並將資料庫的 URL 提供給 Deno.openKv
const kv = await Deno.openKv(
"https://api.deno.com/databases/<database-id>/connect",
);
請查看文件,以瞭解連線至遠端 KV 資料庫的協定規格
資料分佈 Jump to heading
Deno KV 資料庫會跨至少 6 個資料中心進行複寫,涵蓋 3 個區域(美國、歐洲和亞洲)。一旦寫入操作提交,其變更會持久儲存在主要區域內至少兩個資料中心中。非同步複寫通常會在 10 秒內將這些變更傳輸到其他兩個區域。
此系統旨在容忍大多數資料中心層級的故障,而不會發生停機或資料遺失。復原點目標 (RPO) 和復原時間目標 (RTO) 有助於量化系統在各種故障模式下的復原能力。RPO 代表以時間衡量的最大可接受資料遺失量,而 RTO 則表示在故障後將系統還原至正常運作所需的最大可接受時間。
- 主要區域中一個資料中心遺失:RPO=0(無資料遺失),RTO<5 秒(系統在 5 秒內還原)
- 複本區域中任意數量的資料中心遺失:RPO=0,RTO<5 秒
- 主要區域中兩個或更多資料中心遺失:RPO<60 秒(少於 60 秒的資料遺失)