DynamoDB vs Amazon RDS

DynamoDB 與 Amazon RDS 都是受管的 AWS 資料庫,但它們代表兩個不同的世界。DynamoDB 是無伺服器的 NoSQL 鍵值與文件資料庫,圍繞著已知存取模式與水平規模設計。Amazon RDS 是用於執行以執行個體為基礎的關聯式引擎(MySQL、PostgreSQL、MariaDB、SQL Server、Oracle 與 Db2)的受管服務,具備完整 SQL、joins 與強制 schema。

你該用 DynamoDB 還是 RDS?

若是高規模的營運工作負載、存取可預測且基於鍵,並且你想要無伺服器擴充、無執行個體需管理,選 DynamoDB。當你需要完整 SQL — 跨正規化表格的 joins、臨機查詢、交易 — 在熟悉的關聯式引擎上,且你的資料適合可透過唯讀複本垂直擴充的執行個體時,選 Amazon RDS。查詢彈性對比免動手的規模,是核心取捨。

DynamoDB vs Amazon RDS 一覽

特性DynamoDBAmazon RDS
資料模型NoSQL 鍵值與文件;彈性的每項目 schema,項目最大 400 KB關聯式 — 在你所選的引擎上,具強制 schema 的表格、列與欄
查詢語言原生 API(GetItemQueryScan)外加 PartiQL,一種 SQL 相容語言底層引擎的完整 SQL(MySQL、PostgreSQL、MariaDB、SQL Server、Oracle、Db2)
Joins 與關係沒有 JOIN 運算子;AWS 建議圍繞存取模式反正規化跨表格的完整關聯式 joins、外鍵與約束
索引於替代鍵上的 global 與 local secondary index引擎的索引類型(B-tree、hash 與引擎特定),以及部分引擎上的 partial/expression 索引
一致性預設最終一致;可依請求使用強一致讀取;ACID 交易預設強一致;完整的多語句 ACID 交易
擴充模型水平 — 自動分割;無伺服器隨需可上下擴充(至零)垂直 — 你調整佈建的執行個體,外加唯讀複本以進行讀取擴充
佈建 / 維運無伺服器;無執行個體需調整大小或修補以執行個體為基礎;你選擇類別與儲存,AWS 管理修補、備份與容錯移轉(可選 Multi-AZ)
定價模型按請求付費(隨需)或佈建容量外加儲存;閒置時縮至零DB 類別的執行個體時數外加儲存(部分選項還有 I/O),在執行個體運行期間計費
最適合工作負載具已知鍵存取的高規模營運應用(購物車、工作階段、事件、排行榜)需要 joins、臨機查詢與強資料完整性的關聯式與分析工作負載

何時 DynamoDB 是較佳選擇

  • 你的存取模式已知且基於鍵。 圍繞讀取設計鍵能帶來一致的個位數毫秒延遲,無論你有數百還是數億使用者。
  • 你想要無伺服器且無執行個體。 隨需容量沒有東西需要調整大小或修補,並在閒置時縮至零 — 沒有全天候運行的執行個體。
  • 你需要水平擴充寫入。 DynamoDB 會自動分割;你不必像擴充單一關聯式主庫那樣加上分片工具。
  • 你的工作負載以項目為導向(個人檔案、工作階段、購物車、事件),而非一張由 joined 表格構成的網。

何時 Amazon RDS 是較佳選擇

  • 你需要完整 SQL 與 joins。 RDS 執行真正的關聯式引擎,具備跨正規化表格的 joins、彙總、外鍵與臨機查詢。
  • 你的存取模式持續演變。 具彈性查詢的關聯式 schema 能適應新問題,無需重新設計鍵。
  • 你想要熟悉的引擎。 MySQL、PostgreSQL、MariaDB、SQL Server、Oracle 與 Db2 讓團隊得以沿用既有技能、工具與 SQL。
  • 你的資料集適合垂直擴充的執行個體,搭配唯讀複本,且穩定的查詢密集流量適合常開的執行個體。

使用 DynamoDB

若 DynamoDB 是這道抉擇中適合的一側,DynoTable 是它在 macOS、Windows 與 Linux 上的原生桌面用戶端。它讀取你標準的 AWS 憑證鏈,因此你的資料留在 DynamoDB,無需遷移任何東西。對於從 RDS 轉來的團隊尤其關鍵:它的 SQL Workbench 能在 DynamoDB 的存取模式規則內表達關聯式形狀的查詢 — joins、GROUP BY、彙總 — 做法是將它們編譯成 DynamoDB 自己的 Query/Scan 操作,而它的 AI 助理則在你自己的 AWS Bedrock 憑證上運行。

若你想念寫 SQL,DynamoDB 的 SQLPartiQL vs SQL 指南說明哪些概念可以對應、哪些不行,而 DynamoDB JOIN 指南 涵蓋在沒有原生 join 的情況下建模關係。免費的 DynamoDB Expression Builder 以 SDK、CLI 與 PartiQL 形式產生正確的 key condition、filter 與 update expression。DynoTable 是一款閉源商業應用程式;本頁描述它做什麼,而非如何建構。

FAQ

DynamoDB 能取代 Amazon RDS 嗎?

對某些工作負載,可以。若你的存取模式可預測且基於鍵,DynamoDB 能取代一個 RDS 執行個體,並免去大部分擴充與修補工作。當你依賴 joins、臨機關聯式查詢或不斷變化的查詢面時,它並不適合 — 那正是 RDS 的強項。許多團隊兩者並用:RDS 用於關聯式工作,DynamoDB 用於高輸送量的鍵存取。

DynamoDB 像 RDS 那樣支援 SQL 與 joins 嗎?

DynamoDB 支援 PartiQL — 一種用於 SELECT、INSERT、UPDATE 與 DELETE 的 SQL 相容語言 — 但它沒有 JOIN 運算子;AWS 建議改為反正規化。RDS 背後的引擎支援完整 SQL,包含跨表格的 joins。關於如何在沒有 join 的情況下建模關係,參見 DynamoDB 中的 Joins

DynamoDB 比 RDS 便宜嗎?

視工作負載而定,所以兩者都要建模。DynamoDB 按請求(或佈建容量)外加儲存計費,並在閒置時縮至零,適合尖峰或低基線的流量。RDS 按運行類別的執行個體時數外加儲存計費,對於穩定、查詢密集的工作負載可能更具成本效益。決定之前,先對照你真實的存取模式估算。

相關

最後驗證於 2026-07-12,對照官方 AWS DynamoDB 與 Amazon RDS 文件。Amazon RDS 與 DynamoDB 為 Amazon Web Services 的服務;此處引用僅供識別之用。

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

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