【问题标题】:Storing many small files (on S3)?存储许多小文件(在 S3 上)?
【发布时间】:2019-09-27 07:25:18
【问题描述】:

我每天要添加 200 万个压缩 HTML 文件 (100-150KB),我需要长期存储这些文件。 热数据(70-1.5 亿)被半定期访问,任何比这更早的数据几乎从未被访问过。

这意味着我每天要额外存储 200-300GB 的文件。

现在,标准存储成本为每 GB 0.023 美元,Glacier 为 0.004 美元。

虽然 Glacier 很便宜,但问题是它有额外的成本,所以将 200 万个文件转储到 Glacier 中是个坏主意:

PUT requests to Glacier $0.05 per 1,000 requests

Lifecycle Transition Requests into Glacier $0.05 per 1,000 requests

有没有办法将文件粘合在一起,但可以单独访问它们?

【问题讨论】:

  • 存储为单个 ZIP 文件以节省存储空间。访问时,解压缩 ZIP 并提供一个文件
  • @Justinas 这意味着这些文件将无法单独访问。
  • 它将通过代理服务
  • 无论你最终做什么,如果你创建一个大的存档文件,你最终需要把整个文件从冰川中取出,然后你可以使用字节范围请求来拉下它的一部分。此外,从冰川中检索文件需要时间,在某些情况下需要几个小时。就个人而言,我会研究标准 IA,并创建一个定制的存档格式,该格式在开头有一个带有内容的标头,因此您可以使用字节范围请求来读取标头,然后在知道数据的位置后获取数据。也许将检索的复杂性包装在 Lambda 中,这样客户就不需要知道发生了什么。
  • 如您所写,Glacier 的价格为 0.004 美元。但是您不能使用成本低 4 倍(0.00099 美元)的深度存档?

标签: amazon-web-services amazon-s3


【解决方案1】:

重要的一点是,如果您需要提供对这些文件的快速访问权限,Glacier 可以让您在最多 12 小时内访问这些文件。所以最好的办法是使用S3 Standard – Infrequent Access(每GB 0,0125 美元,毫秒访问)而不是S3 Standard。也许对于一些真正不使用数据的人Glacier。但这仍然取决于您需要这些数据的速度。

我建议如下:

  • 由于 html(文本)文件具有良好的压缩水平,您可以将历史数据压缩为大 zip 文件(每天、每周或每月),因为它们一起可以得到更好的压缩;李>
  • 制作一些索引文件或数据库以了解每个 html 文件的存储位置;
  • 仅从档案中读取所需的 html 文件无需解压整个 zip 文件。请参阅 example in python 如何实现。

【讨论】:

    【解决方案2】:

    Glacier 在文件数量方面对成本极为敏感。最好的方法是创建一个 Lambda 函数来为您处理压缩、解压缩操作。

    考虑这种方法:

    • Lambda 每小时从当天的 200 万个文件中创建 archive_date_hour.zip,这通过创建 24 个巨大的档案文件解决了“每个对象”的成本问题。
    • s3 存储桶上设置policy 以将过期对象移至1 天前的冰川。
    • 使用解压缩 Lambda 函数从 zip 文件中的 glacier 存储桶中提取和提取潜在的热门项目。
    • 保留主要的s3 存储桶用于频繁访问的热文件,作为压缩/解压缩操作的工作目录,以及每天收集新文件

    【讨论】:

      【解决方案3】:

      您的文件太小了。您可能需要将它们组合在 ETL 管道中,例如胶水。您还可以使用Range 标头(即-range bytes=1000-2000)下载S3 上的部分对象。

      如果您这样做,您将需要找出跟踪字节范围的最佳方法,例如在合并记录每个字节范围的文件之后,并将客户端更改为也使用 range

      但正确的方法取决于如何访问这些数据并找出模式。如果有人查看TinyFileA 也查看TinyFileB,您可以将它们组合在一起,然后将它们与他们可能使用的其他文件一起发送。我会找出对消费者有意义的文件的逻辑分组,并将减少他们需要的请求数量,而不会发送太多不相关的数据。

      【讨论】:

        猜你喜欢
        • 2021-12-02
        • 2018-06-23
        • 2018-01-20
        • 2021-12-07
        • 2012-10-08
        • 2017-10-11
        • 1970-01-01
        • 2013-04-21
        • 2017-09-17
        相关资源
        最近更新 更多