DynamoDB vs Cassandra
Amazon DynamoDB 與 Apache Cassandra 都是依鍵分區並水平擴充的分散式 NoSQL 資料庫,兩者也都源自 Amazon 2007 年的 Dynamo 論文這個共同祖先。但它們位於營運光譜的兩端:DynamoDB 是全受管、無伺服器的 AWS 服務,而 Cassandra 是你自行部署與運行的開源軟體,以無主的點對點環形式呈現。
DynamoDB 還是 Cassandra 才是正確選擇?
兩者都是依鍵分區、可水平擴充的 NoSQL 儲存。若你想要一個位於 AWS 上的全受管、無伺服器資料庫,沒有叢集要維運,並採用按使用量計費,就選 DynamoDB。若你想要一個開源、自管、無主的環 — 運行於你自己的硬體或跨雲之間 — 並可依查詢調整一致性、沒有廠商鎖定,就選 Cassandra。
DynamoDB vs Cassandra 一覽
| 特性 | DynamoDB | Apache Cassandra |
|---|---|---|
| 資料模型 | 鍵值與文件;無 schema 的類 JSON 項目 | 分區的寬欄儲存;資料列聚合成分區 |
| 查詢語言 | 低階 API 操作,加上 PartiQL(一種 SQL 相容查詢語言) | CQL(Cassandra Query Language),一種類 SQL 語言 |
| 分區 / 鍵 | 分區(雜湊)鍵,可選帶排序鍵組成複合主鍵 | 主鍵 = 一個以上的分區鍵欄位加上零個以上的叢集欄位 |
| 次要索引 | 全域次要索引(GSI)與本地次要索引(LSI) | 本地次要索引(2i)與 storage-attached indexing(SAI);materialized views |
| 一致性 | 預設最終一致;可依請求選用強一致讀取 | 可依操作調整(如 ONE、QUORUM、ALL),對應每個 keyspace 的複製因子 |
| 擴充 / 營運 | 全受管且無伺服器;AWS 處理儲存、擴充、修補與修復 | 你部署於一般硬體上的自管無主環(或使用受管的 Cassandra 相容服務) |
| 多區域 | Global Tables — 多區域、主動-主動複製 | 依 keyspace 設定的多資料中心複製 |
| 定價 / 營運模式 | 按使用量計費:隨需(按請求)或佈建容量;無基礎設施要運行 | 免費開源軟體(Apache License 2.0);由你佈建、運行並支付基礎設施費用 |
| 最適合 | 位於 AWS、想要能自動擴充的零維運 NoSQL 的團隊 | 想要開源、自架、雲中立的環,並能依查詢控制一致性的團隊 |
DynamoDB 較佳的情況
- 你想要零營運負擔。 DynamoDB 全受管且無伺服器 — 沒有叢集要調整大小、修補、修復或重新平衡。AWS 在背景處理儲存與擴充。
- 你已經在 AWS 上。 它與 IAM、Lambda 及 AWS 生態系其餘部分原生整合,而 Global Tables 讓你無需自行架設資料中心即可獲得主動-主動的多區域複製。
- 你的流量尖峰或無法預測。 隨需容量按請求計費,因此你為實際用量付費,而不必佈建並運行閒置節點。
- 你想要受管的持久性與備份。 時間點還原、隨需備份與跨區域複製都是設定,而非你要運行的基礎設施。
Cassandra 較佳的情況
- 你需要開源、雲中立的資料庫。 Cassandra 採 Apache 授權,可在任何地方運行 — 地端、跨多雲或混合 — 且不會鎖定於單一供應商的受管服務。
- 你想要細緻、可依操作控制的一致性。 它的可調一致性讓每次讀寫可選擇一個層級(如 ONE、QUORUM 或 ALL),對應 keyspace 的複製因子,逐查詢在延遲與一致性之間取捨。
- 你想要無單一故障點的無主架構。 每個節點都對等,皆可服務讀寫,即使個別節點或整個資料中心離線,叢集仍保持可用。
- 你願意維運叢集(或付費給受管供應商),以換取那份控制力與可攜性。
使用 DynamoDB
選定 DynamoDB 後,DynoTable 是一款可直接操作你資料表的桌面用戶端。它讀取你標準的 AWS 憑證鏈,因此會連上你已在使用的相同區域與資料表 — 你的資料留在 DynamoDB,沒有東西要遷移。
一般視覺化用戶端只能瀏覽與 scan,而 DynoTable 加上一個 SQL Workbench,能在遵守 DynamoDB 存取模式規則的前提下,表達關聯式形態的查詢 — JOIN、GROUP BY 與彙總 — 還有一個以你自己的 AWS Bedrock 憑證運行的 AI 助手。如果你正在手寫鍵條件、filter 與更新運算式,免費的 DynamoDB Expression Builder 能為 SDK、CLI 與 PartiQL 產生正確語法,無需安裝任何東西。
DynoTable 是一款閉源商業應用;本頁描述它做什麼,而非它如何建構。
FAQ
DynamoDB 是以 Cassandra 為基礎嗎? 不是。兩者互不建立於對方之上。兩者都可追溯至 Amazon 2007 年的 Dynamo 論文 — Cassandra 由該論文的一位共同作者在 Facebook 建立,也參考了 Google 的 Bigtable — 但 DynamoDB 是獨立、全受管的 AWS 服務,而 Cassandra 是獨立的開源專案。它們共享設計淵源,而非程式碼。
Cassandra vs DynamoDB 在規模與成本上如何? 兩者都能水平擴充到非常大的工作負載。真正的差別在營運模式:DynamoDB 的成本是按使用量計費(隨需請求或佈建容量)且沒有伺服器要運行,因此它把支出從營運轉移到用量。Cassandra 的軟體免費,但你要支付並維運基礎設施 — 節點、儲存,以及運行這個環的團隊 — 因此其總成本高度取決於規模與管理方式。
Cassandra 像 DynamoDB 一樣支援 SQL 嗎? 兩者都提供類 SQL 的存取,而非完整的關聯式 SQL。Cassandra 使用 CQL(一種類 SQL 語言),而 DynamoDB 除低階 API 外還提供 PartiQL(一種 SQL 相容查詢語言)。兩者原生都不支援跨分區 JOIN;兩者皆圍繞單分區存取模式設計。
相關內容
- 了解 DynamoDB 分區鍵如何運作 與 單表設計,以 DynamoDB 的方式建模存取模式。
- 在 DynamoDB 一致性指南 比較讀取模式,並在 隨需 vs 佈建 比較計費。
- 用免費的 DynamoDB Expression Builder 快速建構查詢,然後 下載 DynoTable 原生操作你的資料表。
Last verified 2026-07-12. Apache Cassandra is a trademark of the Apache Software Foundation; referenced here for identification only.