【问题标题】:Storing a lot of images S3 vs DynamoDB [closed]存储大量图像 S3 vs DynamoDB [关闭]
【发布时间】:2013-11-07 03:28:09
【问题描述】:

我正在处理需要每秒存储大量图像的项目。如果我应该将图像存储在 S3 或 DynamoDB 中,我有点困惑。我的困惑是因为 S3 似乎不支持批量请求,如果需要,我必须能够批量获取所有图像;另一方面,我不确定将所有这些图像存储在 dynamoDB 的表中是否是个好主意。最好的方法是什么?

【问题讨论】:

    标签: amazon-s3 amazon-web-services amazon-dynamodb


    【解决方案1】:

    简答:使用 S3。

    长答案:DynamoDB 将单个记录限制为 64 KB,因此您可能不能使用 DynamoDB,除非您的图像很小。

    您提到希望在批处理请求中读取您的图像,但 DynamoDB 批处理请求最多返回 100 条记录或 1 MB(以较少者为准),因此无论如何您都不能一次检索所有图像。您可以通过一次读取一个页面来转储 DynamoDB 中的所有内容,这意味着大量请求一个接一个。不快。

    DynamoDB 的延迟低于 S3,并且支持可配置的吞吐量。但是,S3 开箱即用支持尽可能多的并发。想一次上传 1000 张图片吗?去吧!每个对象的写入时间是否为 400 毫秒都没有关系,因为您可以同时传输任意数量的对象。同样,您可以从 S3 中转储所有内容,方法是获取存储桶中所有内容的列表,然后并行检索每个对象。

    使用 S3 的其他原因:

    • HTTP 兼容性,因此您可以将其他人或应用程序直接指向存储桶
    • 大大降低存储成本
    • 按请求付费,而不是按预置吞吐量付费(DynamoDB 中 640 KB/s 的写入容量每月花费 460 美元,而 S3 中每 1000 次上传的固定费用为 0.01 美元)

    我可以想象 DynamoDB 对图像存储可能有意义的唯一情况是,如果您的图像很小、经常更改,并且您对读取延迟非常敏感。除此之外,请使用 S3。

    【讨论】:

    • 对于图像,S3 是正确的答案。 :)
    • 64 KB 限制不再适用于 DynamoDB。他们将每条记录的限制提高到 400 KB。 See AWS Docs
    【解决方案2】:

    将图像存储在 S3 中。 willglynn 已经描述了 DynamoDB 的限制。但是,您可能希望将 URL 存储到 DynamoDB 中的图像和其他元数据。

    关于 DynamoDB 的一点警告,它可能非常昂贵。从免费层升级可能很容易花费几百美元来购买十几个吞吐量单位。如果您将其用于存储需要更大容量的大型项目(接近 64KB,例如图像),您很可能最终会支付数千美元。要使用 AWS 存储元数据,您可能需要检查 SimpleDB。

    【讨论】:

    • 为什么?亚马逊的网站说,每个读取单元是 9 美分,每个写入单元是 47 美分。每个多打一打,每月花费大约 7 美元。有什么我们缺少的吗?它确实说低至 0.47 美元,但我没有看到任何其他价格。
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多