DynamoDB vs Cassandra

Amazon DynamoDB 與 Apache Cassandra 都是依鍵分區並水平擴充的分散式 NoSQL 資料庫,兩者也都源自 Amazon 2007 年的 Dynamo 論文這個共同祖先。但它們位於營運光譜的兩端:DynamoDB 是全受管、無伺服器的 AWS 服務,而 Cassandra 是你自行部署與運行的開源軟體,以無主的點對點環形式呈現。

DynamoDB 還是 Cassandra 才是正確選擇?

兩者都是依鍵分區、可水平擴充的 NoSQL 儲存。若你想要一個位於 AWS 上的全受管、無伺服器資料庫,沒有叢集要維運,並採用按使用量計費,就選 DynamoDB。若你想要一個開源、自管、無主的環 — 運行於你自己的硬體或跨雲之間 — 並可依查詢調整一致性、沒有廠商鎖定,就選 Cassandra

DynamoDB vs Cassandra 一覽

特性DynamoDBApache 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;兩者皆圍繞單分區存取模式設計。

相關內容

Last verified 2026-07-12. Apache Cassandra is a trademark of the Apache Software Foundation; referenced here for identification only.

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

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