将图像直接存储在MongoDB而不是serveride文件夹中的优点是什么

Pav*_*l L 2 mongodb

我想在DB(我的情况下是MongoDB)之外存储图像(或任何二进制数据 - pdf,电影等)并将它们放在公共服务器文件夹中至少可以更快(没有编码,解码和其他东西).

但是由于MondoDB中有这样的选项,我想知道在推荐这种方法时使用它和用例的优点.

Mar*_*erg 5

  1. 复制:设置高可用性副本集非常容易.因此,即使一台机器发生故障,文件仍然可用.虽然这可以通过各种方式实现简单的文件系统,但这可能会消除性能优势(如果有的话:MongoDB有相当复杂的内部缓存).此外,设置DRBD并确保一致性和可用性需要比MongoDB更多的知识和管理工作.此外,您还需要提供高级数据库.
  2. 可伸缩性:当您的文件超过单个节点的存储容量时,它会变得非常复杂和/或成本高昂.虽然从理论上讲你可以垂直缩放,但是有一个点可以让你获得降压并且水平缩放更有意义.但是,使用文件系统方法,您必须管理哪个文件位于哪个节点,如何以及何时进行平衡以及诸如此类.MongoDB在分片环境中的GridFS可以自动执行此操作,而且 - 更重要的是 - 透明地执行此操作.你既不需要重新发明轮子也不必保持它.
  3. 按元数据查询:理论上,您可以通过数据库方法和文件系统链接来实现这一点,而GridFS则提供了插入任意元数据和查询的方法.再次,这可以节省您重新发明轮子.一个有趣的例子是使用GridFS很容易找到重复项:在GridFS中为每个文件自动计算哈希值.通过相当简单的聚合,您可以找到欺骗,然后相应地处理它们.