MongoDB:可以将不同的数据库放在不同的驱动器上吗?

Cur*_*urt 9 database memory mongodb

我正在开发一个应用程序,其中"热"数据和其他数据之间的使用模式存在巨大差异.我们已选择MongoDB作为我们的数据存储库,并且在大多数情况下,它似乎是我们正在构建的应用程序类型的绝佳匹配.

这是问题所在.将有一个中央文档存储库,必须经常搜索和访问:它的大小现在大约为2 GB,并且在接下来的几年内将增长到4GB.为了提高性能,我们将把DB放在服务器级镜像SSD阵列上,并且考虑到数据的总大小,不要想象内存会成为问题.

系统还将保留记录版本,审计跟踪,客户交互,通知记录等.这将很少被引用,并且可能会变得非常大.我们希望将其置于更传统的旋转磁盘上,因为它很少被访问(我们猜测每年可能会访问一次典型记录四到五次,并且仅需要满足研究和客户服务查询) ,并且可能会变得非常大.

我没有找到任何参考资料,表明MongoDB是否允许我们在不同的磁盘上放置不同的数据库(在Windows下运行mongod,但在我们投入生产时不一定如此).

对此处的所有详细信息感到抱歉,但这些是我们计划部署时必须考虑的主要因素.鉴于蒙戈的倾向抓住所有可用内存,并且它会,在24GB内存马克塞斯一台机器上运行,我们正在努力制定出最佳的生产配置为我们的数据库(一个或多个).

所以我们的选择似乎是:

  • 有多个数据库蒙戈的单个实例 这似乎有简单的优点,但我仍然没有找到如何数据库不同的物理驱动器的机器上拆任何明确的答案.

  • 两个Mongo实例,一个用于"热"数据,另一个用于存档.我不确定Mongo将如何处理mongod竞争资源的两个实例,但我们认为,由于32位版本的服务器限制为2GB的内存,我们可以将它用于存档的东西,而无需它压倒了机器的资源.对于"热"数据,我们可以轻松配置数据库引擎的64位实例以使用SSD阵列,并且考虑到我们的数据相对较小,整个数据库和索引可以直接进行内存映射而不会出现页面错误.

  • 在两个独立的虚拟机中有两个Mongo实例 可以使用VMWare或类似的东西创建两个可以单独托管Mongo的Linux机器.虽然它可能会增加管理负担,但在我看来,这似乎提供了对系统资源使用情况的最精细控制,同时仍然保留了Windows Server主机足够的内存来运行IIS及其自己的进程.

但所有这些都是猜测,因为我们之前没有人曾经做过重大的MongoDB部署,所以我们没有很好的经验基础可供借鉴.

我的实际问题是,是否有选项可以让同一个mongod服务器实例中的两个数据库使用完全独立的驱动器.但是,我们也欢迎任何有关我们三个已确定的部署选项的优缺点的见解.

Mar*_*erg 5

在使用 Linux 时,这实际上是一件非常容易的事情:

  1. 激活directoryPerDB配置选项
  2. 创建您需要的数据库。
  3. 关闭实例。
  4. 将数据从各个数据库目录复制到不同的块设备(磁盘、RAID 阵列、逻辑卷、iSCSI 目标等)。
  5. 将相应的块设备挂载到dbpath目录之外的相应位置(不要忘记将相应的行添加到/etc/fstab!)
  6. 重新启动mongod。

编辑:作为旁注,我想补充一点,您不应将 Windows 用作生产 MongoDB 的操作系统。与 ext4 或 XFS 相比,可用的文件系统 NTFS 和 ReFS 的性能非常糟糕(后者是建议用于生产的文件系统,有关详细信息,请参阅MongoDB 生产说明)。仅出于这个原因,我建议使用 Linux。另一个原因是 Windows 的不必要的子系统(如 GUI)使用的 RAM。