3

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

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

我们正在为此研究 MongoDB。有没有人可以根据上述假设或任何其他替代方案提出利弊?

一些 MongoDB 研究显示...

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

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

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

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

我真的很感激任何意见。

谢谢你。

4

1 回答 1

0

一些 MongoDB 研究显示...

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

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

mongodb 是一个无共享的强一致性数据库。因此,您将数据写入一个节点,然后将其复制。但是您可以使用 WriteConcerns ( http://docs.mongodb.org/manual/core/write-operations/#write-concern ) 等待,因此请确保您的数据已写入多个节点、大多数节点等一个副本集。通过复制,您可以在不停机的情况下进行滚动升级,并且使用分片也很容易扩展。并使用分片标签将文档“固定”到特定分片。见这里:http ://www.kchodorow.com/blog/2012/07/25/controlling-collection-distribution/

于 2013-02-07T03:38:20.887 回答