我正在努力寻找最具成本效益的方法来做到这一点,将感谢任何帮助:
- 我有上亿的文件。每个文件小于1MB(通常为100KB左右)
- 到目前为止,总共超过5tb的数据,并且每周都会增长
- 我无法合并/连接文件。文件必须按照 格式存储
- 查询和下载要求是基本的。每月约100万份文件可供选择和下载 我不担心S3存储或数据检索或数据扫描成本。
我的问题是,当我上传1亿个文件时,这是否算作每个文件的一个PUT请求(意思是每个对象一个)?如果是这样,仅仅是上传数据的成本就将是巨大的。如果我上传一个包含一百万个文件的目录,这是一个PUT请求吗?
如果我在prem上压缩1亿个文件,然后上传压缩文件,并使用lambda解压缩。这算一个PUT请求吗?
建议吗?
您说您有"数亿个文件",那么我假设您有4亿个对象,即40TB的存储空间。请作相应调整。我已经把我的计算结果展示出来,以便人们可以帮助找出我的错误。
初始上传
Amazon S3中的PUT请求在$0.005 per 1,000 requests
上收费。因此,4亿个看跌期权将花费2000美元。(.005*400m/1000
)
如果您希望将它们全部创建为单独的对象,则无法避免此成本。
未来的上传成本相同,$5/million.
<存储/strong>
标准存储成本为$0.023 per GB
,因此存储4亿个100KB对象将花费$920/月。(.023*400m*100/1m
)
存储成本可以通过使用成本更低的存储类来降低。
访问strong>
GET请求是$0.0004 per 1,000 requests
的,所以每个月下载100万个对象将花费40c/月。(.0004*1m/1000
)
如果数据传输到Internet,则应用$0.09 per GB
的数据传输成本。下载100万个100KB对象的数据传输成本为$9/月。(.09*1m*100/1m
)
你似乎最害怕的是上传几亿的初始成本每百万件物品的成本为5美元。
然而,存储也会很高,每百万对象的成本为2.3美元/月(4亿对象为920美元/月)。持续的成本可能会使初始上传的成本相形见绌。
一些是:
- 将数据存储在本地(磁盘存储是100美元/4tb,所以400m文件将需要1000美元的磁盘,但您将需要额外的驱动器冗余),或
- 将数据存储在数据库数据库没有"PUT"成本,但您需要为运行数据库付费。这个可以计算出较低的成本。或
- 结合strong>文件中的数据(您说您不希望这样做),但以一种易于拆分的方式。例如,通过标识符标记记录以方便提取。或
- 使用不同的存储服务,例如数字海洋,他们似乎没有"PUT"成本。