DynamoDB

⚡ NoSQL 数据库设计完全指南

AWS DynamoDB 数据库设计与查询优化指南,覆盖单表设计、索引策略、分页与事务模式,帮助开发者避开 NoSQL 常见陷阱。

收藏
4.8k
安装
1.2k
版本
1.0.0
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

DynamoDB 技能是一套面向 AWS 无服务器数据库的完整设计指南,涵盖从表结构规划到高级查询模式的全部关键环节。

关键设计原则

  • 分区键策略:高基数键值实现负载均衡,热点分区通过复合键或随机后缀缓解
  • 单表设计模式:前缀标识实体类型(USER#123ORDER#456),排序键重载支持多维度查询
  • 访问优先建模:严格围绕查询模式设计,而非关系范式

查询机制

| 操作 | 性能特征 | 使用场景 |
|:---|:---|:---|
| **Query** | O(分区项目数),高效 | 已知分区键的精确/范围查询 |
| **Scan** | 全表扫描,昂贵 | 几乎不应直接使用 |
| **GSI** | 最终一致,独立容量 | 替代访问路径 |

高级特性

  • 全局二级索引(GSI):支持稀疏索引技巧,仅含特定属性的项目进入索引
  • 分页机制:1MB 返回上限,LastEvaluatedKey 驱动循环获取
  • 一致性选项:默认最终一致,ConsistentRead 实现强一致(2 倍容量消耗)
  • 乐观锁与事务ConditionExpression 防止竞态条件,TransactWriteItems 提供原子多项目操作

容量与成本管理

  • On-Demand:自动扩缩,适合不可预测负载
  • Provisioned:预设容量更经济,需配合自动扩缩策略
  • GSI 独立计费:每个索引需单独配置或支付请求费用

显著优点

  • 模式实用主义:强调从访问模式出发,而非教条式单表设计
  • 反模式警示:明确标记 Scan、FilterExpression 误用等常见陷阱
  • 生产级细节:覆盖 BatchWriteItem 非原子性、TTL 延迟删除等边缘行为
  • 成本意识:对比 On-Demand 与 Provisioned,提示 GSI 容量独立消耗

局限性与注意事项

  • ⚠️ AWS 专属:全部特性绑定 DynamoDB 实现,不适用于其他 NoSQL 数据库
  • ⚠️ 概念密集:单表设计、排序键重载等模式对 SQL 背景开发者学习曲线陡峭
  • ⚠️ 容量规划复杂:Provisioned 模式需理解分区吞吐量限制(3000 RCU / 1000 WCU 每分区)
  • ⚠️ 最终一致性限制:GSI 无强一致选项,写后读场景需显式处理

适合人群

  • 后端工程师:构建高吞吐、低延迟的无服务器应用
  • 系统架构师:评估 NoSQL 方案,设计多租户数据隔离策略
  • 云迁移团队:从关系型数据库向 DynamoDB 迁移的建模转换

常规风险

  • 热点分区:设计不当导致单一分区键过载,引发限流
  • 容量耗尽:Provisioned 模式下 ProvisionedThroughputExceededException 需退避重试
  • GSI 成本失控:未预见的查询模式导致索引数量与费用膨胀
  • Item 大小超限:400KB 限制需配合 S3 存储大对象,引入额外一致性考量

DynamoDB 内容

手动下载zip · 3.2 kB
skill-card.mdtext/markdown
请选择文件