Mongo GridFS和Amazon S3哪个更快,用于存储图像?

14

我正在处理一个项目,其中每个用户可以发布很多图像。我们使用Node.js与Express,MongoDB作为数据库。我想知道在速度和可扩展性方面哪种方式更好:

  • 将图像存储在Mongo GridFS中

还是

  • 将图像存储在Amazon S3上,并在MongoDB中存储图像路径。然后使用路径检索图像。

欢迎分享任何想法!

谢谢,


我不知道,你试过了吗? - SomeKittens
9
多么愚蠢的关闭理由。这个问题没有一个“主要基于观点”的答案。也许太宽泛了,但是这个理由不好。什么时候 Stack Overflow 才有办法来抵制像这样毫无理由的闭锁,只留下一个答案成为无可争议的冠军?要么删除它,要么保持开放。 - B T
1个回答

21

这就像比较Go和Node.js一样,没有更好的通用解决方案。

每种解决方案都有其优缺点。MongoDB更像是DIY(自己动手做)的解决方案,而Amazon S3则是托管的解决方案。使用MongoDB时,你需要自己进行扩展。可以说S3最初会更快,并且已经被Amazon扩展过了,而且可能更便宜(S3比EBS更便宜)。如果你拥有大量内存的服务器,MongoDB肯定会更快。此外,如果MongoDB实例与您的应用程序位于同一实例中,则延迟将更低。

还可以查看以下问题:MongoDB作为静态文件提供者?

以及这个:在MongoDB作为数据库后端的产品中,使用MongoDB GridFS与Amazon S3存储资产的优势是什么?


感谢Farid分享的Quora链接!非常有帮助! - c0mrade
嗨 Farid,我不明白为什么你说“大量的RAM”?据我所知,MongoDB 在读取/创建文件时会流式传输它们,并且从 RAM 的角度来看非常轻巧。对吧? - Kasir Barati
1
@KasirBarati S3可能会从磁盘中提供文件,与直接从RAM中提供文件相比较慢。MongoDB和操作系统文件系统都会缓存数据。更多的RAM意味着更多的缓存,从而降低延迟并提高吞吐量。 - Farid Nouri Neshat
啊哈,我明白你的意思了@FaridNouriNeshat。https://www.mongodb.com/docs/manual/faq/fundamentals/#does-mongodb-handle-caching- - Kasir Barati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接