MongoDB作为静态文件提供者?

时间:2011-02-20 16:05:41

标签: mongodb amazon-s3 gridfs

MongoDB是将静态文件(文件,视频)作为cdn提供服务的理想选择。我搜索一个可靠的方法来存储大量数据(> + To),重新调整S3并管理缓存功能。 经验。

感谢。

2 个答案:

答案 0 :(得分:11)

我认为这个问题的答案是没有,因为当您使用CDN存储静态文件时,您可以使服务器免受静态数据请求的影响。但是当您在文件系统和mongodb之间进行选择时,我认为mongodb会更快,因为如果服务器上有足够的ram,mongo会将所有数据加载到内存中。

我也找到了一些可以帮助您做出选择的链接:www.markus-gattol.namegroups.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所做的事情有很多,你必须重新实现它自己解决所有问题可能没有意义,但这确实是另一个问题。