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 一覽

特性DynamoDBAzure Cosmos DB
資料模型NoSQL 鍵值與文件;資料表中項目最大 400 KB多模型;NoSQL 的原生 API 儲存 JSON 文件,另有相容於 MongoDB、Cassandra、Gremlin(圖)與 Table 的線路相容 API
查詢語言 / API原生 API(GetItemQueryScan)加上 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 中建模資料

相關內容

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.

不必透過主控台就能操作 DynamoDB

DynoTable 是一款快速的 DynamoDB 桌面用戶端 — 瀏覽表格、執行 SQL 風格的查詢,並在本機編輯項目。