如何高效低成本将DynamoDB数据导出至新建S3存储桶?
大体积DynamoDB表(目标S3桶容量700TB)导出方案优化探讨
我需要将DynamoDB表导出至容量约700TB的新S3存储桶,已梳理出以下三种基础方案,现寻求更高效、速度更快且成本更低的替代方案:
方案一:DynamoDB原生导出至S3
利用DynamoDB内置的S3数据导出功能,支持全量及增量数据导出,导出过程不消耗读容量单元(RCUs),不会影响源表性能与可用性。
估算数据:
某177.2MB的DynamoDB表导出至S3后仅占用33.2MB存储,据此推算:导出1MB DynamoDB数据约需0.1873MB S3存储,导出1TB DynamoDB数据约需187.3GB S3存储。
方案二:Glue爬虫+Glue表+Glue Job组合方案
通过Glue组件完成数据编目与导出:
- Glue爬虫:爬取DynamoDB表,自动识别数据结构并将元数据写入Glue数据目录
- Glue表:基于爬虫识别的结构创建,定义数据的结构、类型等属性信息
- Glue Job:从Glue数据目录读取元数据,连接DynamoDB源与S3目标,执行数据读取(可选转换)并写入S3,支持按需或定时执行
方案三:AWS Glue DynamoDB导出连接器
基于DynamoDB备份/导出机制构建的全新Glue连接器,后台实际调用DynamoDB原生导出至S3的能力,无需扫描源表。
更优替代方案推荐
针对700TB级的超大规模导出需求,推荐以下优化方向:
DynamoDB原生导出+S3分段并行处理
- 直接使用方案一的原生导出功能,同时开启并行导出分片:在导出配置中指定多个分片数,让DynamoDB同时处理多段数据导出,大幅提升速度
- 导出后的S3数据采用S3智能分层存储:将导出的冷数据自动归档到更低成本的归档类存储,降低长期存储成本;若需频繁访问,可保留在低频访问存储层
批量全量导出+增量实时同步结合
- 先用原生导出完成全量数据的一次性导出,后续通过DynamoDB Streams结合Lambda或轻量Glue Job实现增量数据的实时同步,避免重复全量导出的资源开销
- 增量同步时使用DynamoDB Streams的批量读取功能,减少API调用次数,进一步压缩成本
跨区域导出优化(若适用)
- 若源表已启用全局表,可在业务低峰的区域节点执行导出操作,分散资源占用
- 直接将数据导出至目标区域的S3桶,减少跨区域数据传输的额外费用
内容的提问来源于stack exchange,提问作者user14262621
相关产品推荐
相关产品推荐

