MongoDB是将静态文件(文件,视频)作为cdn提供服务的理想选择。我搜索一个可靠的方法来存储大量数据(> + To),重新调整S3并管理缓存功能。 经验。
感谢。
答案 0 :(得分:11)
我认为这个问题的答案是没有,因为当您使用CDN存储静态文件时,您可以使服务器免受静态数据请求的影响。但是当您在文件系统和mongodb之间进行选择时,我认为mongodb会更快,因为如果服务器上有足够的ram,mongo会将所有数据加载到内存中。
我也找到了一些可以帮助您做出选择的链接:www.markus-gattol.name,groups.google.com
来自文档:
何时使用GridFS
很多文件。 GridFS倾向于处理大数(数千) 文件比许多文件好 系统
用户上传的文件。当用户上传文件时,您往往会有很多 文件,并希望它们被复制和 备份。 GridFS是一个完美的地方 存储这些,然后你可以管理 他们就像你管理你一样 数据。您也可以按用户查询, 上传日期等...直接在 文件存储,没有一层 间接
经常变化的文件。如果您的某些文件发生了很大变化 - 将它们存储在GridFS中是有意义的 所以你可以在一个地方修改它们 并且所有客户都将获得更新。 也可以比存储更好 源树,所以你不必 部署应用程序以更新文件。
何时不使用GridFS
很少有小的静态文件。如果你只有几个小文件 它可能是网站(js,css,images) 更容易使用文件系统。
注意,如果需要原子更新二进制对象,那么 对象是文档大小 您的MongoDB版本的限制 (1.8分为16MB),那么你可能会 考虑手动存储对象 在一个文件中。这可以 使用BSON bindata完成 类型。检查您的驱动程序的文档 有关使用此类型的详细信息。
答案 1 :(得分:2)
通常答案是肯定的,您可以使用mongodb来执行此操作,但mongodb没有http接口来提供apache / random-webserver等文件。如果您需要添加其他功能,例如对这些文件进行应用程序身份验证,那么它可能更有意义,例如。
您可以围绕mongodb创建一个基础架构,您可以在其中复制更改并编写一个http前端来提供文件(例如nginx-gridfs或任何其他gridfs http组件)。但是你需要构建/集成这些,测试并部署它们。使用带有标准Web服务器的文件系统来提供文件已经过很好的测试和记录;许多系统使用rsync有效地将文件复制到许多节点。
cdn所做的事情有很多,你必须重新实现它自己解决所有问题可能没有意义,但这确实是另一个问题。