AWS DynamoDB NoSQL 数据库
任意规模个位数毫秒延迟键值/文档 DB,按需定价和全球表。
AWS高级
为什么
DynamoDB 任意规模 <10ms — 1000 万+ RPS — 零容量规划(按需)。全球表跨区域复制。免费:25GB + 2 亿读/月。无需连接池。
何时使用
用于会话存储、购物车、用户画像和高吞吐键查找。避免关系查询/连接(用 RDS)或临时分析(用 Athena)。
如何做
1. 创建表 — aws dynamodb create-table 带 PartitionKey(+ SortKey)
2. 容量 — 按需(按请求)或预置(RCU/WCU)
3. 查询 — Query 按分区键、SortKey 条件;Scan 全表(贵)
4. 索引 — GSI 替代访问模式,LSI 同分区
5. 单表设计 — 相关项存一起,先设计访问模式
6. 全球表 — 多区域主主,<1 秒复制
7. 流 — 捕获变更,触发 Lambda(复制、聚合)
8. DAX — 内存缓存,微秒读,DynamoDB 5 倍成本
示例
# 创建按需计费表
aws dynamodb create-table \
--table-name users \
--attribute-definitions AttributeName=pk,AttributeType=S AttributeName=sk,AttributeType=S \
--key-schema AttributeName=pk,KeyType=HASH AttributeName=sk,KeyType=RANGE \
--billing-mode PAY_PER_REQUEST
// 用 Node SDK 查询
import { DynamoDBDocumentClient, QueryCommand } from "@aws-sdk/lib-dynamodb";
const result = await docClient.send(new QueryCommand({
TableName: "users",
KeyConditionExpression: "pk = :pk AND begins_with(sk, :sk)",
ExpressionAttributeValues: { ":pk": "USER#123", ":sk": "ORDER#" },
}));
// 单表:USER#123 | PROFILE#,USER#123 | ORDER#456
// 一次查询按分区键取用户 + 所有订单
常见问题
- ⚠热分区键 — 一个热门键限流,设计均匀分散流量
- ⚠Scan 贵 — 读全表,改用 Query + GSI
- ⚠1MB 项限制 — 大文档须拆分或存 S3 加指针
最佳实践
- ✓单表设计 — 一表多访问模式,降成本和复杂度
- ✓未知流量用按需 — 仅稳态可预测负载用预置
- ✓按读模式设计 GSI — 每个 GSI = 一个查询模式,构建前规划
常见问题解答
什么是AWS DynamoDB NoSQL 数据库?它解决什么问题?
任意规模个位数毫秒延迟键值/文档 DB,按需定价和全球表。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。
如何在 5 分钟内上手AWS DynamoDB NoSQL 数据库?
两步即可跑通:① 创建表 — aws dynamodb create-table 带 PartitionKey(+ SortKey);② 容量 — 按需(按请求)或预置(RCU/WCU)。建议先用免费套餐验证流程,再接入生产环境。
AWS DynamoDB NoSQL 数据库 最容易踩的坑是什么?
最高频的问题是:热分区键 — 一个热门键限流,设计均匀分散流量。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。
AWS DynamoDB NoSQL 数据库 的最佳实践有哪些?
AWS DynamoDB NoSQL 数据库 的最佳实践包括:单表设计 — 一表多访问模式,降成本和复杂度;未知流量用按需 — 仅稳态可预测负载用预置;按读模式设计 GSI — 每个 GSI = 一个查询模式,构建前规划。其中首条「单表设计 — 一表多访问模式,降成本和复杂度」应作为团队默认规范写入 IaC 模板。
AWS DynamoDB NoSQL 数据库 如何控制成本与避免账单意外?
三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。AWS DynamoDB NoSQL 数据库 多数提供免费套餐,先在免费额度内验证再放量。