DynamoDB 常见问题

DynamoDB FAQ — 常见问题解答

开发者最常问的 DynamoDB 问题——每个都配有清晰、坦诚的解答和后续阅读指引。

DynamoDB 特性与能力

DynamoDB 是键值存储吗?
是——同时也是文档存储。每个项目都通过主键寻址,而属性可以按映射和列表嵌套最多 32 层。
DynamoDB 是关系型数据库吗?
不是——DynamoDB 是一个 NoSQL 键值与文档数据库,没有固定模式、没有外键、也没有连接。取而代之的是围绕访问模式做反范式化。
DynamoDB 符合 ACID 吗?
符合——DynamoDB 通过 TransactWriteItems 和 TransactGetItems 提供 ACID 事务,在每个区域内把最多 100 个动作合成一次全有或全无的操作。
DynamoDB 加密吗?
加密——所有 DynamoDB 数据默认都用 AWS KMS 密钥静态加密,而且无法关闭。传输中的数据由 HTTPS/TLS 保护。
DynamoDB 是最终一致性的吗?
默认是——DynamoDB 的读取是最终一致性的。你可以在表和 LSI 上选择强一致性读取;GSI 则始终是最终一致性的。
DynamoDB 免费吗?
部分免费——DynamoDB 有一个永久免费套餐:每月 25 GB 存储外加 25 个写入容量单元和 25 个读取容量单元。超出部分按请求和按 GB 计费。
DynamoDB 是内存数据库吗?
不是——DynamoDB 会把每一次写入持久化到跨三个可用区的持久存储上。DAX 则额外提供一层可选的内存缓存,带来微秒级读取。
DynamoDB 是 NoSQL 数据库吗?
是——DynamoDB 是一个全托管的 NoSQL 键值与文档存储,存放无模式的项目、横向扩展,而它的 PartiQL 解析器会拒绝 JOIN。
DynamoDB 是开源的吗?
不是——DynamoDB 是一项专有的、全托管的 AWS 服务。DynamoDB Local 是供开发使用的免费模拟器,但生产引擎无法自托管。
DynamoDB 是无模式的吗?
是——DynamoDB 是无模式的。只有主键在建表时定义;其他每个属性都是可选的,可以逐条自由变化。
DynamoDB 是无服务器的吗?
是——DynamoDB 是一个全托管的无服务器 NoSQL 数据库。没有服务器要预置或打补丁;容量自动伸缩,按使用付费。

DynamoDB 能存储什么

DynamoDB 集成与访问

DynamoDB 操作与查询

DynamoDB 能自动扩缩吗?
能——DynamoDB 自动扩缩会把预置容量维持在 20–90% 的目标利用率,但当平均使用率低于 28.9% 时,按需模式更便宜。
可以在本地运行 DynamoDB 吗?
可以——DynamoDB Local 是一个免费的可下载版 DynamoDB,通过 Docker、Java 归档包或 Maven 在你的机器上运行,离线暴露同样的 API。
DynamoDB 有备份吗?
有——按需备份用于长期快照,时间点恢复(PITR)提供连续备份,可恢复到过去 35 天内的任意一秒。
DynamoDB 支持全文搜索吗?
不,原生不支持——DynamoDB 没有相关性排序、词干还原或模糊匹配。零 ETL 的 OpenSearch 集成才是 AWS 原生的答案。
DynamoDB 支持地理空间查询吗?
并非原生支持——DynamoDB 没有地理数据类型,也没有距离运算符。地理空间查找是用 geohash/S2 单元键按范围查询建模出来的。
DynamoDB 支持 JOIN 吗?
不支持——DynamoDB 没有 JOIN,PartiQL 更是直接拒绝两张表的 SELECT,所以你要做反范式化。DynoTable 的 SQL Workbench 在客户端跑真正的连接。
DynamoDB 支持 SQL 吗?
部分支持——PartiQL 覆盖 SELECT、INSERT、UPDATE 和 DELETE,但拒绝 JOIN、GROUP BY 和 COUNT。DynoTable 的 SQL Workbench 能在你的表上运行这些。
DynamoDB 支持事务吗?
支持——DynamoDB 事务把最多 100 个跨表动作合成一次全有或全无的操作,代价是普通写入两倍的容量单元。
DynamoDB 支持 TTL 吗?
支持——DynamoDB 支持 Time to Live。设置一个存放 Unix 纪元过期时间(秒)的 Number 属性,DynamoDB 就会自动删除过期项,且不收费。
DynamoDB 有多快?
很快——DynamoDB 在任意规模下都提供稳定的个位数毫秒延迟。内存缓存 DAX 能把最终一致性读取压到微秒级。
DynamoDB 里能有多少张表?
默认每个区域 2,500 张 DynamoDB 表,申请后可提到 10,000 张。表本身没有大小上限,但每张预置容量的表即使闲置每月也要 0.57 美元。
在 DynamoDB 里怎么统计项目数量?
在 Query 或 Scan 上用 Select: COUNT,再用 LastEvaluatedKey 翻页并把 Count 累加。计数消耗的读取容量和把项目返回一样多。

DynamoDB 架构与内部原理

更多 DynamoDB 资源

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。