我工作的项目,需要存储大量的每秒的图像。 而我是一个有点困惑,如果我要保存我的S3或DynamoDB图像。 我的困惑是因为它似乎S3不支持批量请求,我必须能够,让所有的图像在一个批处理如果需要的话; 在另一方面,我不知道这是否是一个好主意店所有这些图像在dynamoDB表。 什么是最好的办法?
Answer 1:
简短的回答:使用S3。
龙回答:DynamoDB限制个人纪录为64 KB,所以你可能无法使用DynamoDB,除非你的图片是微小的反正。
你提到希望在批处理请求读您的图像,但是DynamoDB批量请求最多返回100条记录或1 MB - 以较少者为准 - 所以它不喜欢你可以一次反正检索所有的图像。 你可以通过在时间,这意味着大量的请求了一个又一个阅读页面转储一切从DynamoDB。 并不快。
DynamoDB比S3更低的延迟,并支持可配置的吞吐量。 然而,S3,只要你想开箱即用支持尽可能多的并发性。 想一次上传1000张? 去吧! 如果每个对象时间为400ms写,因为你可以发送你想同时尽可能多没关系。 同样,您可以通过获取桶中所有项的列表,然后检索平行的每一个对象转储一切从S3。
其他原因使用S3:
- HTTP的兼容性,这样你就可以直接指向其他人或应用程序桶
- 巨大的存储成本较低
- 每个请求支付,而不是为置备吞吐量(640 KB的在DynamoDB写入容量/ s的成本$ 460 /月,与在S3平坦0.01每1000个上传$)
我能想象,其中DynamoDB可能使存储图像感的唯一情况是,如果你的图片是小的,经常变化的, 而你读延迟非常敏感。 除此之外,使用S3。
Answer 2:
存储在S3图像。 该DynamoDB的限制已被willglynn描述。 然而,你可能希望将URL添加到图像和其他元数据存储在您的DynamoDB。
警告有关DynamoDB的一点,它可以是非常昂贵的。 从自由层往上走可以很容易地花费数百元一打多的吞吐量单位。 如果你用它来存放大件物品(接近64KB如图片),这需要更大的容量,它很可能你会为此付出几千美元。 对于存储元数据与AWS,您可能要检查的SimpleDB。
文章来源: Storing a lot of images S3 vs DynamoDB [closed]