我正在尝试使用 S3 创建一个数据湖,其中数据来自 Aurora,最终来自其他来源;但是,我在创建具有成本效益的解决方案时遇到了麻烦。
我一直在研究使用数据迁移服务 (DMS) 将数据从 Aurora流式传输到 S3。因为数据以csv格式
到达 S3 :
(1)初始加载:(column1,column2,column3,...)
(2)数据变化:(D/U/I,column1,column2,column3, ...) [D: delete, U: update: I: insert]
我一直在尝试转换数据,以使 S3 存储桶仅包含没有前缀 D/U/I 的数据。
为了执行这种转换,我想到了使用以下模型:
Aurora -> Dirty S3 Bucket -> Curated S3 Bucket -> Athena 从Curated S3 Bucket查询
Dirty S3 Bucket 包含(column1, column2, column3, ...)和(D/U/I, column1, column2, column3, ...)格式的数据。当新数据到达此存储桶时,会发送一条 SNS 消息,并且 lambda 函数应读取新到达的文件,转换数据,并将其放入Curated S3 Bucket中,其中Curated S3 Bucket仅包含格式为(第 1 列,第 2 列,第 3 列,...)。
假设来自 Aurora 的所有数据都有created_at和updated_at列,我想到了:
- 根据 /year/month/day/hour 对 S3 中的数据进行分区(使用created_at):
- 但是,如果数据是根据/年/月/日/小时划分的,那么我认为成本会太高。
- 这是基于以下假设:
- 每天 40000 个请求(插入/更新/删除)
- 0.05 GB 平均文件大小
- 每 GB 0.01 USD(针对 S3 返回的数据)
- 每 1,000 个请求(PUT、COPY 或 POST 请求)0.01 USD
- 每 1000 个请求 0.001 USD(GET、SELECT 和所有其他请求)
- 每天检索数据的成本 = 40000 rpd * 0.05 GB * 每 GB 0.01 USD = 20
- 每天请求数据的成本 = 0.001 USD * (40000 rpd/1000) = .04
- 总成本 = 每天 20.04
- 这是基于以下假设:
- 但是,如果数据是根据/年/月/日/小时划分的,那么我认为成本会太高。
需要注意的是,这个计算只针对一个表;将有 5 个以上的表具有相似的费率。
因此,每月的费用将大于3,000 美元。
是否有一种更具成本效益的方式将数据从 aurora 流式传输到 s3?
还是我必须求助于获取 Aurora DB 的每日快照以降低成本?