DynamoDB 是 NoSQL 資料庫嗎?

是。DynamoDB 是一個 NoSQL 資料庫——一個非關係型、全託管的鍵值與文件儲存。它存放的是無模式的項目,而不是固定模式表裡的行,並且用 SQL 連線和即席查詢換來了可預測的個位數毫秒級效能,以及橫向擴充套件到幾乎任意規模的能力。

是哪一種 NoSQL

DynamoDB 同時支援鍵值和文件兩種資料模型。每個項目都由一個主索引鍵定址,而屬性可以以對映和列表的形式巢狀最多 32 層——這就是模型的文件那一面。

它和 SQL 有什麼不同

  • 沒有固定模式——只有主索引鍵需要事先定義;其他屬性可以逐項目而異。
  • 沒有連線——你改用非正規化,並圍繞訪問模式來建模。
  • 可預測的效能——讀取直接命中一個分割區索引鍵,所以延遲不會隨資料增長而變化。

引擎拿到一條 JOIN 會怎麼做

PartiQL 讓 DynamoDB 看起來像 SQL,所以這條邊界很容易被忽略。AWS 文件化的 SELECT 語法就是全部的語法,而它沒有 JOIN 子句:

SELECT {{expression}}  [, ...]
FROM {{table}}[.{{index}}]
[ WHERE {{condition}} ] [ [ORDER BY {{key}} [DESC|ASC] , ...]

硬發一條過去,解析器會在第二張表那裡停下:

await client.send(
  new ExecuteStatementCommand({
    Statement: `SELECT o.pk FROM "orders" o JOIN "customers" c ON o.pk = c.pk`
  })
);

真實輸出:

ValidationException: Only select from a single table or index is supported.
HTTP 400

這個拒絕發生在解析階段,任何資料被讀取之前,所以再怎麼設計索引也換不來一次連線。在 NoSQL 儲存裡,連線是你應用的活兒。

這也劃定了任何用戶端能誠實提供什麼的邊界。DynoTable 的 SQL Workbench 接受 INNER JOINLEFT JOINGROUP BY 以及 COUNT/SUM/AVG/MIN/MAX

它會把這些編譯成原生的 QueryScan 呼叫,然後在你的機器上完成連線與聚合。DynamoDB 自始至終看到的仍然只有單表讀取。

什麼時候合適

DynamoDB 是為 OLTP 工作負載打造的:高吞吐、已知的點讀與範圍讀寫。重分析該放在一個由匯出喂資料的獨立列式儲存裡。

深入瞭解

參見什麼時候該用 DynamoDB,以及如何在如何在 DynamoDB 中建模資料裡塑造資料。下載 DynoTable,瀏覽你的 NoSQL 表,並在 DynamoDB 的訪問模式規則之內對它們執行 SQL。

這些限制很重要,因為您無法在查詢時加入擺脫這些限制。您預先圍繞它們進行建模 - 稀疏索引、非正規化屬性和單表鍵 - 然後按分割區讀取。 Query Builder 將過濾器轉換為 QueryScan 請求 DynamoDB 將實際執行。

在DynoTable中:當關系問題合法時,SQLWorkbench將JOINGROUP BY編譯為機器上的本機QueryScan呼叫 - DynamoDB仍然會看到單表讀取。有關支援的語法和誠實限制,請參閱SQL Workbench

深入了解

最後核實於 2026-07-13,依據上方連結的 AWS 官方文件;PartiQL 的 SELECT 語法已於 2026-07-28 重新核對。

2026-07-28 針對 DynamoDB Local 3.3.0,經由 @aws-sdk/client-dynamodb 3.1095.0、Node v24.18.0 復現。上方的 ValidationException 是原樣的引擎輸出。

深入了解

根據上面連結的官方 AWS 文件最後一次驗證時間為 2026 年 7 月 13 日; PartiQLSELECT語法已重新檢查2026-07-28.

於 2026 年 7 月 28 日在 Node v24.18.0 上透過 @aws-sdk/client-dynamodb 3.1095.0 針對 DynamoDB Local 3.3.0 進行復制。上面的ValidationException是逐字引擎輸出。

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

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。