AWS DynamoDB



一、DynamoDB 核心特性

  1. 全托管 NoSQL 数据库
  2. 完全由 AWS 管理,无需维护或打补丁,高可用(多可用区复制)。
  3. 支持事务操作,与 IAM 深度集成保障安全性。
  4. 高性能与可扩展性
  5. 毫秒级延迟,支持每秒数百万请求、万亿行数据、PB 级存储。
  6. 灵活的存储类型
  7. 提供标准表(Standard)和低频访问表(IA),优化成本。

二、容量模式(Capacity Modes)

模式 适用场景 特点
预配置模式(Provisioned) 流量稳定可预测的应用程序 需预先设置读写容量单位(RCU/WCU),按配置付费,支持手动调整吞吐量。
按需模式(On-Demand) 流量波动大或不可预测的应用程序 自动根据实际流量扩展吞吐量,按实际使用量付费,无需预配置。

三、高级功能

  1. 全球表(Global Tables)
  2. 多主区域架构:支持跨多个 AWS 区域部署,每个区域均可读写。
  3. 自动数据同步:数据变更秒级复制到其他区域,实现低延迟全球访问。
  4. 备份与恢复
  5. 全托管备份:自动定期备份数据,保留策略可配置。
  6. 时间点恢复(PITR):可将表恢复到特定时间点(精确到秒级)。
  7. 与 S3 集成
  8. 数据导出到 S3:用于长期存储、数据分析或备份。
  9. 流处理 + Lambda:通过 DynamoDB Streams 捕获数据变更,触发 Lambda 函数实现实时处理(如 ETL、通知)。

四、流处理(Stream Processing)

  • DynamoDB Streams
  • 实时捕获数据变更(插入/更新/删除),触发 Lambda 函数。
  • 典型场景:实时分析、跨表同步、事件驱动架构(如新用户欢迎邮件)、数据审计。
  • 对比 Kinesis Data Streams
    | 特性 | DynamoDB Streams | Kinesis Data Streams | |------------------|----------------------------|--------------------------------| | 数据保留期 | 24 小时(固定) | 可配置(最长 365 天) | | 消费者数量 | 有限(通常与 Lambda 绑定) | 支持多消费者(KCL/KPL) | | 数据来源 | 仅 DynamoDB 表变更 | 任意数据源(日志、设备等) |

五、缓存加速(DynamoDB Accelerator, DAX)

  • 核心作用:为 DynamoDB 提供毫秒级读缓存,降低数据库负载。
  • 优势
  • 完全托管,无缝集成 DynamoDB,无需修改应用代码。
  • 支持最终一致性数据缓存,自动管理缓存失效。
  • 对比 ElastiCache
    | 场景 | DAX | ElastiCache(Redis/Memcached) | |------------------------|------------------------------------|----------------------------------------| | 适用数据库 | 仅 DynamoDB | 任意数据库(RDS、自定义等) | | 缓存内容 | DynamoDB 查询结果 | 任意数据(查询结果、会话状态等) | | 读写支持 | 仅加速读操作,写操作直通 DynamoDB | 支持读写 |

六、典型应用场景

  1. 实时应用
  2. Web/移动应用后端、游戏、IoT 设备数据处理。
  3. 无服务器架构
  4. 搭配 Lambda 实现事件驱动(如实时通知、ETL)。
  5. 全球化业务
  6. 通过 Global Tables 支持多地低延迟访问。
  7. 大数据分析
  8. 导出数据到 S3,使用 Athena/Redshift 进行分析。

总结

DynamoDB 是 AWS 为高并发、低延迟、全球扩展场景设计的托管 NoSQL 数据库。其核心优势在于: - 自动化运维:托管服务减轻运维负担。 - 弹性伸缩:按需模式应对流量波动。 - 生态集成:深度结合 Lambda、S3、Global Tables 等服务,支持实时流处理、全球部署和多级缓存(DAX)。 - 成本灵活:通过容量模式和存储类型(标准/IA)优化成本。