部署 DynamoDB
AWS NoSQL 数据库,单位数 ms 延迟、自动扩缩和全球表。
平台进阶
为什么
DynamoDB 全托管 NoSQL,任意规模单位数 ms 延迟、自动扩缩和全球表多区域。按请求或预置容量付费。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
AWS 上键值和文档工作负载用 DynamoDB,尤其 serverless。复杂查询(无 JOIN)避免。
如何做
1. 创建 — aws dynamodb create-table 配 key schema
2. 索引 — GSI 用于替代访问模式
3. 容量 — 按需(按请求付费)或预置
4. 认证 — IAM 角色访问,无密码
5. 全球 — 全球表多区域复制
6. 流 — DynamoDB Streams 变更事件
7. 查询 — aws dynamodb query 或 SDK
示例
# 创建表
aws dynamodb create-table --table-name users --attribute-definitions AttributeName=id,AttributeType=S --key-schema AttributeName=id,KeyType=HASH --billing-mode PAY_PER_REQUEST
# SDK
import { DynamoDBClient, PutItemCommand } from "@aws-sdk/client-dynamodb";
const client = new DynamoDBClient({});
await client.send(new PutItemCommand({
TableName: "users",
Item: { id: { S: "123" }, name: { S: "Alice" } },
}));
# 全球表(多区域)
aws dynamodb create-global-table --global-table-name users --replication-group RegionName=us-east-1 RegionName=eu-west-1
常见问题
- ⚠热分区 — key 分布不均,用随机后缀分散
- ⚠限流 — 预置容量过低,切按需
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓不可预测工作负载用按需 — 无需容量规划
- ✓先设计访问模式 — DynamoDB 是 NoSQL,schema 跟查询
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求