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 JOIN、LEFT JOIN、GROUP BY 以及 COUNT/SUM/AVG/MIN/MAX。
它会把这些编译成原生的 Query 和 Scan 调用,然后在你的机器上完成连接与聚合。DynamoDB 自始至终看到的仍然只有单表读取。
什么时候合适
DynamoDB 是为 OLTP 工作负载打造的:高吞吐、已知的点读与范围读写。重分析该放在一个由导出喂数据的独立列式存储里。
深入了解
参见什么时候该用 DynamoDB,以及如何在如何在 DynamoDB 中建模数据里塑造数据。下载 DynoTable,浏览你的 NoSQL 表,并在 DynamoDB 的访问模式规则之内对它们运行 SQL。
这些限制很重要,因为您无法在查询时加入摆脱这些限制。您预先围绕它们进行建模 - 稀疏索引、非规范化属性和单表键 - 然后按分区读取。 Query Builder 将过滤器转换为 Query 或 Scan 请求 DynamoDB 将实际执行。
在DynoTable中:当关系问题合法时,SQLWorkbench将JOIN和GROUP BY编译为机器上的本机Query和Scan调用 - DynamoDB仍然会看到单表读取。有关支持的语法和诚实限制,请参阅SQL Workbench。
深入了解
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Core components of Amazon DynamoDB — Amazon DynamoDB Developer Guide
- PartiQL select statements for DynamoDB — Amazon DynamoDB Developer Guide
- Fast NoSQL Key-Value Database — Amazon DynamoDB — AWS
最后核实于 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 是原样的引擎输出。
深入了解
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Core components of Amazon DynamoDB — Amazon DynamoDB Developer Guide
- PartiQL select statements for DynamoDB — Amazon DynamoDB Developer Guide
- Fast NoSQL Key-Value Database — Amazon DynamoDB — AWS
根据上面链接的官方 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是逐字引擎输出。