使用NoSQL数据库作为文件存储的建议及优点缺点

本文关键字:优点缺点 存储 文件 NoSQL 数据库 使用 | 更新日期: 2023-09-27 17:49:25

我们正在评估静态文件存储(托管在多个地理位置)的替代方案。

  • 我们在用微软。. NET平台(c#, ASP;. Net, web api, SQL server)
  • 我们想存储数字资产,主要是二进制(AI, PSD, JPG, PNG, PDF, XLS, DOC…)文件在任何NoSQL数据库。
  • 对于图像文件,它可以包含缩略图(小尺寸)到原始艺术品(大文件:范围从300 MB到超过1 GB)。
  • 缩略图将出现在网页上,但原件将作为附件提供编辑选项(用户可以下载原件并使用各自的程序编辑和更新版本)。
  • 每个缩略图和原始图需要存储多个版本。
  • 我们不会在第三方平台(如Amazon S3, Azure)和CDN上托管这些数字资产。
  • 根据用户系统配置,该数字资产可以托管在不同的地理环境中。(美国的用户可以存储美国,欧洲或亚洲的服务器/db)。
  • 需要复制每个存储

我们正在研究MongoDB。有谁能给点建议吗?基于上述假设或任何其他替代方案的缺点?

MongoDB的一些研究显示…

  • 磁盘空间消耗是原始数据大小的3倍
  • 可以通过-oplogSize参数减少空间消耗
  • 如果我们尝试读取块和流到浏览器的速度可能比从静态文件存储中读取慢6倍。
  • 复制不是双向的,它作为主和从工作。

我已经原型从静态文件系统读取数字资产,并将其存储到MongoDB GridFS在默认块。将缩略图和原件存储到MongoDB的更好方法是什么?由于缩略图总是小于16MB,但原始可以/不超过16MB,所以默认情况下我应该将所有图像资产存储在GridFS上吗?

我可以设想根据内容类型创建不同的数据库,例如:一个用于PDF, Excel, Word,另一个用于图像。

    我们如何在不同的服务器之间进行复制?
  • 我们如何在不同地区的不同MongoDB实例中存储它?

如果有任何建议,我将非常感谢。

谢谢。

使用NoSQL数据库作为文件存储的建议及优点缺点

MongoDB的一些研究显示…

磁盘空间消耗是原始数据容量的3倍减少空间消耗-oplogSize参数如果我们试图读取块和流到浏览器的速度可能比慢6倍从静态文件存储中读取它。复制不是双向的和它的工作作为主和从。

您是否尝试存储数据或只是在某处找到一些信息?如果使用数据库(无论是哪种数据库),总是会比使用普通文件存储有开销。为什么?你有索引和元信息。

mongodb是一个无共享的强一致性数据库。你把数据写入一个节点,然后它被复制。但是你可以使用WriteConcerns (http://docs.mongodb.org/manual/core/write-operations/#write-concern)来等待,这样就可以确保你的数据被写入复制集中的多个节点。通过复制,您可以在不停机的情况下进行滚动升级,并且使用分片也非常容易进行扩展。并使用碎片标签将文档"固定"到特定的碎片上。详见:http://www.kchodorow.com/blog/2012/07/25/controlling-collection-distribution/