DynamoDB简介 #

一、什么是DynamoDB #

Amazon DynamoDB 是 AWS 提供的一种完全托管的 NoSQL 数据库服务,可提供快速、可预测的性能以及无缝的可扩展性。

1.1 发展历史 #

text
2004年  Amazon内部开始开发Dynamo系统
2012年  AWS正式发布DynamoDB服务
2014年  引入全局二级索引
2017年  支持ACID事务
2018年  发布按需容量模式
2019年  支持全局表多区域复制
2022年  增强事务支持,支持条件写入
2024年  持续优化性能和功能

1.2 核心定位 #

DynamoDB 定位为:

  • 完全托管:无需管理服务器、存储、网络
  • 无服务器:自动扩展,按使用付费
  • 高性能:个位数毫秒级延迟
  • 高可用:跨多个AZ自动复制

二、核心特点 #

2.1 完全托管 #

特性 说明
无需管理基础设施 AWS负责硬件、网络、存储管理
自动备份 支持按需备份和时间点恢复
自动扩展 自动调整容量应对流量变化
安全管理 内置加密、IAM集成

2.2 高性能 #

text
性能指标:
├── 读取延迟:个位数毫秒(通常<10ms)
├── 写入延迟:个位数毫秒
├── 吞吐量:每表可支持>10万亿请求/天
└── 数据量:单表可存储无限数据

2.3 无限扩展 #

text
扩展能力:
├── 存储容量:无限制
├── 读写吞吐量:自动扩展或手动配置
├── 并发连接:无限制
└── 表数量:默认256个/区域(可申请提高)

2.4 高可用与持久性 #

特性 说明
多AZ复制 数据自动复制到3个可用区
SLA 99.99%可用性
持久性 99.999999999%(11个9)
全球部署 支持全局表多区域复制

三、与传统数据库对比 #

3.1 与关系型数据库对比 #

特性 DynamoDB MySQL/PostgreSQL
数据模型 键值/文档 关系表
Schema 无Schema 固定Schema
扩展方式 水平扩展 垂直扩展为主
事务 支持有限事务 完整ACID
查询 主键查询为主 复杂SQL查询
JOIN 不支持 支持
管理 完全托管 需要管理

3.2 与其他NoSQL对比 #

特性 DynamoDB MongoDB Redis
部署方式 完全托管 自建/Atlas 自建/云托管
数据模型 文档/键值 文档 键值
查询能力 中等 强大 简单
扩展性 自动 手动分片 手动
一致性 最终/强一致 可配置 强一致
适用场景 大规模生产 灵活开发 缓存/会话

四、应用场景 #

4.1 适用场景 #

text
最佳实践场景:
├── 高吞吐量应用
│   ├── 游戏排行榜
│   ├── 物联网数据
│   └── 实时分析
├── 低延迟访问
│   ├── 用户会话存储
│   ├── 购物车
│   └── 实时推荐
├── 大规模数据
│   ├── 日志存储
│   ├── 事件追踪
│   └── 元数据管理
└── 无服务器架构
    ├── API后端
    ├── 移动应用
    └── 微服务

4.2 典型案例 #

电商购物车 #

json
{
  "PK": "USER#12345",
  "SK": "CART#2024-01-01",
  "items": [
    {
      "productId": "PROD001",
      "name": "iPhone 15",
      "price": 999,
      "quantity": 1
    }
  ],
  "totalPrice": 999,
  "lastUpdated": "2024-01-01T10:00:00Z"
}

游戏排行榜 #

json
{
  "PK": "GAME#BATTLE_ROYALE",
  "SK": "SCORE#99999#USER#12345",
  "userId": "12345",
  "score": 99999,
  "rank": 1,
  "timestamp": "2024-01-01T10:00:00Z"
}

物联网数据 #

json
{
  "PK": "DEVICE#SENSOR001",
  "SK": "2024-01-01T10:00:00",
  "temperature": 25.5,
  "humidity": 60,
  "battery": 85,
  "location": {
    "lat": 39.9042,
    "lng": 116.4074
  }
}

4.3 不适用场景 #

text
不建议使用场景:
├── 复杂关系查询(多表JOIN)
├── 复杂事务(跨多表事务)
├── 即席查询(Ad-hoc查询)
├── 数据量小且稳定
└── 需要SQL兼容性

五、核心优势 #

5.1 开发效率 #

text
优势:
├── 无需管理基础设施
├── 自动处理扩展
├── 内置安全功能
├── 与AWS服务深度集成
└── 灵活的数据模型

5.2 成本效益 #

模式 计费方式 适用场景
按需容量 按请求计费 流量不可预测
预置容量 按RCU/WCU计费 流量可预测
Auto Scaling 自动调整容量 流量有波动

5.3 生态系统 #

text
AWS集成:
├── Lambda:触发器处理数据变更
├── API Gateway:直接集成DynamoDB
├── CloudWatch:监控和告警
├── S3:数据导入导出
├── Kinesis:流式数据处理
└── EMR:大数据分析

六、版本演进 #

6.1 重要里程碑 #

年份 功能 说明
2012 发布 基础键值存储
2014 GSI 全局二级索引
2015 Streams 数据变更流
2016 TTL 自动过期删除
2017 事务 ACID事务支持
2018 按需模式 按请求计费
2019 全局表 多区域复制

6.2 最新特性 #

text
2024年新特性:
├── 增强的事务支持
├── 更大的项目大小限制
├── 改进的查询性能
├── 增强的备份功能
└── 更好的成本优化工具

七、学习路线建议 #

7.1 入门阶段 #

text
第1周:
├── 了解NoSQL基础概念
├── 创建AWS账户
├── 使用控制台创建表
└── 基本的CRUD操作

7.2 进阶阶段 #

text
第2-3周:
├── 理解主键设计
├── 学习Query和Scan
├── 掌握索引设计
└── 使用SDK开发

7.3 高级阶段 #

text
第4周+:
├── 事务处理
├── Streams应用
├── 全局表部署
└── 性能优化

八、总结 #

DynamoDB 是构建现代云原生应用的理想数据库选择:

优势 说明
托管服务 无需运维,专注开发
高性能 毫秒级延迟
可扩展 自动扩展,无限容量
高可用 多AZ复制,99.99%可用性
安全 内置加密,IAM集成

下一步,让我们学习如何搭建DynamoDB开发环境!

最后更新:2026-03-27