Amazon S3 存储数百万个文件
Amazon S3 Store Millions of Files
我正在努力寻找最具成本效益的方法,将不胜感激任何帮助:
- 我有上百万个文件。每个文件都在 1MB 以下(通常为 100KB 左右)
- 截至目前,总共超过 5 TB 的数据,而且每周都会增长
- 我无法 merge/concatenate 将这些文件放在一起。文件必须按原样存储
- 查询下载要求基本。每月约有 100 万个文件可供选择和下载
- 我不担心 S3 存储或数据检索或数据扫描的成本。
我的问题是,当我上传数百万个文件时,这是否算作每个文件一个 PUT 请求(即每个对象一个)?如果是这样,仅上传数据的成本将是巨大的。如果我上传一个包含一百万个文件的目录,那是一个 PUT 请求吗?
如果我在 prem 上压缩 1 亿个文件,然后上传 zip,并使用 lambda 解压缩,会怎样?这算作一个 PUT 请求吗?
有什么建议吗?
你说你有“数以百万计的文件”,所以我假设你有 4 亿个对象,40TB 的存储空间。请相应调整。我已经展示了我的计算,以便人们可以帮助找出我的错误。
初次上传
Amazon S3 中的 PUT 请求按 [=10=].005 per 1,000 requests
收费。因此,4 亿个 PUT 将花费 2000 美元。 (.005*400m/1000
)
如果您希望将它们全部创建为单独的对象,则无法避免此成本。
未来上传的费用相同,为 每百万 5 美元。
存储空间
标准存储 成本 [=12=].023 per GB
,因此存储 4 亿个 100KB 对象的成本为 920 美元/月。 (.023*400m*100/1m
)
可以通过使用成本较低的 存储来降低存储成本 类。
访问
GET 请求是 [=14=].0004 per 1,000 requests
,因此每月下载 100 万个对象将花费 40c/月。 (.0004*1m/1000
)
如果将数据传输到 Internet,将收取 [=16=].09 per GB
的数据传输费用。下载 100 万个 100KB 对象的数据传输成本为 9 美元/月。 (.09*1m*100/1m
)
分析
您似乎最害怕上传数以百万计 对象的初始成本,每百万个对象的成本为 5 美元。
但是,存储也会很高,每百万个对象每月 2.30 美元(4 亿个对象每月 920 美元)。持续的成本可能会使初始上传的成本相形见绌。
一些备选方案将是:
- 在本地存储数据(磁盘存储为 100 美元/4TB,因此 400m 文件需要 1000 美元的磁盘,但您需要额外的驱动器以实现冗余),或
- 将数据存储在数据库中:没有'PUT'数据库费用,但您需要为运行数据库付费。这 可能会 降低成本。 或
- 合并 文件中的数据(你说你不想这样做),但可以很容易地分开。例如,通过标识符标记记录以便于提取。 或
- 使用不同的存储服务,例如Digital Ocean,他们似乎没有'PUT'成本。
我正在努力寻找最具成本效益的方法,将不胜感激任何帮助:
- 我有上百万个文件。每个文件都在 1MB 以下(通常为 100KB 左右)
- 截至目前,总共超过 5 TB 的数据,而且每周都会增长
- 我无法 merge/concatenate 将这些文件放在一起。文件必须按原样存储
- 查询下载要求基本。每月约有 100 万个文件可供选择和下载
- 我不担心 S3 存储或数据检索或数据扫描的成本。
我的问题是,当我上传数百万个文件时,这是否算作每个文件一个 PUT 请求(即每个对象一个)?如果是这样,仅上传数据的成本将是巨大的。如果我上传一个包含一百万个文件的目录,那是一个 PUT 请求吗?
如果我在 prem 上压缩 1 亿个文件,然后上传 zip,并使用 lambda 解压缩,会怎样?这算作一个 PUT 请求吗?
有什么建议吗?
你说你有“数以百万计的文件”,所以我假设你有 4 亿个对象,40TB 的存储空间。请相应调整。我已经展示了我的计算,以便人们可以帮助找出我的错误。
初次上传
Amazon S3 中的 PUT 请求按 [=10=].005 per 1,000 requests
收费。因此,4 亿个 PUT 将花费 2000 美元。 (.005*400m/1000
)
如果您希望将它们全部创建为单独的对象,则无法避免此成本。
未来上传的费用相同,为 每百万 5 美元。
存储空间
标准存储 成本 [=12=].023 per GB
,因此存储 4 亿个 100KB 对象的成本为 920 美元/月。 (.023*400m*100/1m
)
可以通过使用成本较低的 存储来降低存储成本 类。
访问
GET 请求是 [=14=].0004 per 1,000 requests
,因此每月下载 100 万个对象将花费 40c/月。 (.0004*1m/1000
)
如果将数据传输到 Internet,将收取 [=16=].09 per GB
的数据传输费用。下载 100 万个 100KB 对象的数据传输成本为 9 美元/月。 (.09*1m*100/1m
)
分析
您似乎最害怕上传数以百万计 对象的初始成本,每百万个对象的成本为 5 美元。
但是,存储也会很高,每百万个对象每月 2.30 美元(4 亿个对象每月 920 美元)。持续的成本可能会使初始上传的成本相形见绌。
一些备选方案将是:
- 在本地存储数据(磁盘存储为 100 美元/4TB,因此 400m 文件需要 1000 美元的磁盘,但您需要额外的驱动器以实现冗余),或
- 将数据存储在数据库中:没有'PUT'数据库费用,但您需要为运行数据库付费。这 可能会 降低成本。 或
- 合并 文件中的数据(你说你不想这样做),但可以很容易地分开。例如,通过标识符标记记录以便于提取。 或
- 使用不同的存储服务,例如Digital Ocean,他们似乎没有'PUT'成本。