DynamoDB vs Azure Cosmos DB
DynamoDB 與 Azure Cosmos DB 分別是 AWS 與 Azure 的旗艦受管 NoSQL 資料庫。兩者都全受管、可無伺服器運行、依鍵分區並可水平擴充。實務上最大的差別在於雲平台對齊、Cosmos DB 的多模型 API 與五種可調一致性層級,以及各自如何為輸送量計費。
你該用 DynamoDB 還是 Cosmos DB?
若你在 AWS 上,想要一個無伺服器的鍵值與文件儲存,採按請求計費並與 AWS 深度整合,就選 DynamoDB。若你在 Azure 上,想要多模型 API(文件、Cassandra、Gremlin 圖、Table)、五種明確的一致性層級,或開箱即用的多區域寫入,就選 Azure Cosmos DB。通常是雲平台對齊在功能之前就先決定了選擇。
DynamoDB vs Cosmos DB 一覽
| 特性 | DynamoDB | Azure Cosmos DB |
|---|---|---|
| 資料模型 | NoSQL 鍵值與文件;資料表中項目最大 400 KB | 多模型;NoSQL 的原生 API 儲存 JSON 文件,另有相容於 MongoDB、Cassandra、Gremlin(圖)與 Table 的線路相容 API |
| 查詢語言 / API | 原生 API(GetItem、Query、Scan)加上 PartiQL(一種 SQL 相容語言) | NoSQL API 中在 JSON 上的類 SQL 查詢語言,加上各相容 API 自己的查詢語言 |
| 分區 / 鍵 | 分區鍵加可選排序鍵組成複合主鍵 | 每個 container 一個分區鍵;項目歸入邏輯分區 |
| 一致性 | 預設最終一致;可依請求選用強一致讀取 | 五種層級 — strong、bounded staleness、session、consistent prefix、eventual — 於帳戶或請求層級選擇 |
| 多區域寫入 | Global Tables 提供多區域、主動-主動複製 | 開箱即用的全域分布;可啟用多區域寫入(這會排除 strong 一致性層級) |
| 擴充模式 | 自動分區;無伺服器隨需或佈建容量 | 佈建輸送量(RU/s)、自動擴充或無伺服器;容量以 Request Units 衡量 |
| 交易 | 區域內跨多個項目的 ACID 交易 | 邏輯分區內的 ACID 交易(如 transactional batch / stored procedures) |
| 定價模式 | 按請求付費(隨需)或佈建 RCU/WCU,加儲存;僅限 AWS | 每秒 Request Units(佈建、自動擴充或無伺服器)加儲存,於每個已啟用的區域計費 |
| 最適合的工作負載 | 具可預測鍵存取、想要零維運無伺服器 NoSQL 的 AWS 應用 | 想要多模型 API、明確一致性調校或全域多寫分布的 Azure 應用 |
DynamoDB 較佳的情況
- 你在 AWS 上。 DynamoDB 與 IAM、Lambda、Streams 及更廣的 AWS 生態系原生整合,省去你原本要寫的膠合程式碼。
- 你想要簡單的按請求計費。 隨需容量按每次讀寫計費,沒有輸送量要佈建,也沒有閒置成本。
- 你的存取模式已知且以鍵為基礎。 當你圍繞查詢設計鍵時,DynamoDB 的分區/排序鍵模型能提供一致的低延遲 — 見 單表設計。
- 你想要 AWS 上的主動-主動多區域複製。 Global Tables 以設定的方式提供它。
Cosmos DB 較佳的情況
- 你在 Azure 上。 Cosmos DB 與 Azure 身分、Functions 及周邊平台整合的方式,就如同 DynamoDB 之於 AWS。
- 你需要多模型 API。 單一服務即公開文件、Cassandra、Gremlin 圖與 Table API,能減輕從那些生態系遷移的難度。
- 你想要明確、可調的一致性。 Cosmos DB 在 strong 與 eventual 之間提供五種具名一致性層級 — 含 bounded staleness 與 session — 可依帳戶或請求選擇。
- 你需要開箱即用的多區域寫入。 Cosmos DB 可透過開箱即用的全域分布在多個區域接受寫入(代價是失去最強的一致性層級)。
使用 DynamoDB
如果你落腳在 DynamoDB,DynoTable 是一款適用於 macOS、Windows 與 Linux 的原生桌面用戶端。它讀取你標準的 AWS 憑證鏈,因此你的資料留在 DynamoDB,沒有東西要遷移。除了瀏覽與內嵌編輯項目外,它的 SQL Workbench 透過將查詢編譯成 Query/Scan,在遵守 DynamoDB 存取模式規則下表達關聯式形態的查詢 — join、GROUP BY、彙總 — 而它的 AI 助手則以你自己的 AWS Bedrock 憑證運行。
免費的 DynamoDB Expression Builder 能以 SDK、CLI 與 PartiQL 形式產生鍵條件、filter 與更新運算式,並正確處理保留字與屬性名稱。DynoTable 是一款閉源商業應用;本頁描述它做什麼,而非它如何建構。
FAQ
Cosmos DB 與 DynamoDB 是同一個嗎?
不是。它們是 Microsoft 與 AWS 各自的產品。兩者都是受管、可無伺服器運行、依鍵分區的 NoSQL 資料庫,但 Cosmos DB 是多模型、具備多個線路相容 API 與五種一致性層級,而 DynamoDB 是原生於 AWS 的鍵值與文件儲存,具有兩層(最終或強)的讀取模型與 PartiQL。
DynamoDB 像 Cosmos DB 一樣有一致性層級嗎?
DynamoDB 提供兩種讀取模式,而非五種具名層級:最終一致讀取(預設)與可在區域內依請求選擇的強一致讀取。Cosmos DB 則公開一整個光譜 — strong、bounded staleness、session、consistent prefix 與 eventual — 於帳戶或請求層級設定。
我能從 Cosmos DB 遷移到 DynamoDB 嗎?
可以,但要預期是重新建模,而非直接搬遷。兩者都是依鍵分區的 NoSQL,因此概念可轉移,但你要重新對應分區/排序鍵並改寫查詢成 DynamoDB 的 API 或 PartiQL,而任何 Cosmos DB 的 Gremlin 或 Cassandra API 用法在 DynamoDB 上都需要不同的資料模型。從你的存取模式開始 — 見 如何在 DynamoDB 中建模資料。
相關內容
- 了解 DynamoDB 一致性 與多區域的 Global Tables。
- 用 單表設計 與 如何在 DynamoDB 中建模資料 為存取模式建模。
- 用免費的 DynamoDB Expression Builder 建構運算式。
- 下載 DynoTable 來操作你的 DynamoDB 資料表。
Last verified 2026-07-12 against the official AWS DynamoDB Developer Guide and Microsoft Azure Cosmos DB documentation. Azure Cosmos DB is a trademark of Microsoft; referenced here for identification only.