【问题标题】:MongoDB as static files provider?MongoDB作为静态文件提供者?
【发布时间】:2011-06-30 19:12:06
【问题描述】:

MongoDB 非常适合将静态文件(文件、视频)作为 cdn 提供服务。我正在寻找一种可靠的方式来存储大量数据(>+To)来替代 S3 和管理缓存功能。 经验。

谢谢。

【问题讨论】:

  • 为什么文件系统不能提供文件服务?

标签: mongodb amazon-s3 gridfs


【解决方案1】:

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

我还找到了一些可以帮助您做出选择的链接:www.markus-gattol.namegroups.google.com

来自文档:

何时使用 GridFS

很多文件。 GridFS 倾向于处理大量数据(数千个) 文件比许多文件好 系统。

用户上传的文件。当用户上传文件时,您往往会有很多 文件,并希望它们被复制并 支持。 GridFS 是一个完美的地方 存储这些,然后你可以管理 他们就像你管理你的 数据。也可以按用户查询, 上传日期等...直接在 文件存储,没有一层 间接

经常更改的文件。如果您的某些文件发生了很大变化 - 将它们存储在 GridFS 中是有意义的 所以你可以在一个地方修改它们 所有客户端都将获得更新。 也可以比存放在 源树,所以你不必 部署应用程序以更新文件。

何时不使用 GridFS

几个小的静态文件。如果你只有几个小文件 网站(js,css,图像)它可能 更容易使用文件系统。

请注意,如果您需要以原子方式更新二进制对象,并且 对象小于文档大小 您的 MongoDB 版本的限制 (1.8 为 16MB),那么您可能 考虑手动存储对象 在单个文档中。这可以是 使用 BSON bindata 完成 类型。检查您的驱动程序文档 有关使用此类型的详细信息。

【讨论】:

  • 这几乎是操作系统对磁盘文件的任何“缓存”所做的事情。您将从 apache/lighthttp/random-webserver 获得相同的行为。
【解决方案2】:

通常答案是肯定的,您可以使用 mongodb 来执行此操作,但 mongodb 没有像 apache/random-webserver 那样提供文件的 http 接口。如果您需要添加其他功能,例如对这些文件进行应用程序身份验证,那么它可能更有意义,例如。

您可以围绕 mongodb 创建一个基础架构,在其中复制更改并编写一个 http 前端来提供文件(如 nginx-gridfs 或任何其他 gridfs http 组件)。但是您需要构建/集成这些、测试和部署它们。使用带有标准 Web 服务器的文件系统来提供文件经过了很好的测试和记录;许多系统使用 rsync 有效地将文件复制到许多节点。

cdn 做了很多事情,您必须重新实现它可能没有意义自己解决所有这些问题,但这确实是另一个问题。

【讨论】:

    猜你喜欢
    • 2012-12-09
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2016-01-28
    相关资源
    最近更新 更多