图片storing/tagging解决方案

Image storing/tagging solution

我们正在创建一个网站,用户可以上传可分类和可搜索的图像。

我的问题是围绕着它的图像存储,什么是可靠的可维护解决方案?

我看过 S3 - 它看起来很有前途。

如果 S3 是一个不错的选择,我应该在哪里存储对对象的引用(连同 metadata/tags)?

谢谢:)

如果我要构建这样一个系统,我肯定会在某种程度上寻找实际存储图像和缩略图以及元数据的可扩展性和持久性方面的 S3。

S3 元数据存储限制为 2KB(所有键和所有值的总字节数),仅限于 US-ASCII,并且没有索引——您必须获取特定对象的元数据。对于许多应用程序来说,这已经足够了,但在您的情况下这非常值得怀疑。

http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-metadata

所以,问题 "is S3 a good option" 很容易回答:如果你的意思是在 AWS 服务中,答案是肯定的,很难说它是最合适的。

您也可以考虑 CloudFront —— 不是代替 S3,而是作为 S3 的补充。它可以通过将您的 "popular" 内容缓存到更靠近用户所在的位置等方式来缩短加载时间。


在哪里存储对对象的引用进入了 "opinion based," 的领域,我们在 Stack Overflow 上没有这样做。答案当然是 "in a database,",但 AWS 在这里有选项。

我是一名关系数据库 DBA,所以当然,我的倾向是一切都应该有一个关系数据库(例如 RDS)作为其权威数据存储,而其他人可能会说 DynamoDB NoSQL 数据库产品将是有用的数据存储。

从那里(无论 "there" 在哪里),CloudSearch 可以填充元数据、关键字等,以处理实际的搜索操作,使用它构建的索引更可能更适合搜索-密集型操作比适当的数据库。但是,我不会尝试将 CloudSearch 用作所有有价值元数据的权威存储。搜索索引应该被视为一次性的、可重建的资产……尽管我担心即使是这种说法也会让一些人认为是基于意见的。

有一件事不是意见问题,所有这些不同的云服务都允许您以低到难以想象的成本启动大量的概念验证基础设施几年前......所以你可以尝试它们,和它们一起玩,如果它们不符合你的预期,就把它们扔掉。您不必在尝试之前购买。