【问题标题】:Can I configure MongoDB to be In-Memory?我可以将 MongoDB 配置为内存中吗?
【发布时间】:2014-12-21 17:27:53
【问题描述】:

我有兴趣使用能够实现高性能的数据库,并期望集群需要大规模水平扩展。

我们正在研究使用 MongoDB,有谁知道我是否可以在 InMemory 中使用它(即在 RAM 中 - 出于性能原因)?

Tnx

【问题讨论】:

  • @teoman-soygul - 不是重复的。您链接到的 Q 询问有关以自动启动等方式将 DB 嵌入应用程序的问题。此 Q 正在讨论将其嵌入 RAM 而不是基于文件的 DB,需要 In-Mem DB 性能。

标签: mongodb in-memory-database


【解决方案1】:

您可以采取的一种性能提升方法是使用 RAM 磁盘

例如:

mongod --smallfiles --noprealloc --nojournal --dbpath <ramdisk mounted localtion>

另见:

【讨论】:

  • Tnx,值得一试,我在搜索线程时考虑过它作为一个选项......
  • @SitnTheShade:当您仅使用 MongoDB 就可以实现几乎相同的效果时,添加 RAM 磁盘到底有什么意义?并且在任何受支持的平台上都以几乎相同的方式?
  • @Markus W Mahlberg - 您是指您在下面发布的解决方案(将 syncPeriodSecs 更新为 0)吗?如果是这样,我注意到在 MongoDB 网站中,他们特别声明不应触摸此参数(“控制在 MongoDB 通过 fsync 操作将数据刷新到数据文件之前可以经过多长时间。不要在生产系统上设置此值。在几乎在每种情况下,您都应该使用默认设置。”)。你知道不同吗?
【解决方案2】:

截至今天,最新版本的 MongoDB,即 v3.4 在其企业软件版本中支持内存引擎。 如果您寻求开源版本,Percona 的 MongoDB 是不错的选择。

Mongo 企业版: https://docs.mongodb.com/manual/core/inmemory/

Percona 的 MongoDB 产品: https://www.percona.com/software/mongo-database/percona-memory-engine-for-mongodb

【讨论】:

    【解决方案3】:

    使用 tmpfs

    至少在 linux 上,由于 MongoDB 使用内存映射 (mmap) 文件,您可以设置一个驻留在内存中的tmpfs 系统。

    这是一个简洁的tutorial 为 MongoDB 设置 tmpfs。

    内存映射文件

    内存映射文件在其FAQ 中有更详细的说明。它还说 MongoDB 会自动配置为使用系统上所有可用的空闲内存作为其缓存 (link)。

    结论

    基本上,没有用于纯内存数据库的模块,但通过使用内存 fs,可以模拟它。

    顺便说一句,我确实找到了MorboDB,一个“内存数据库,大部分兼容的 MongoDB 克隆”。可能对你没用,但我觉得很有趣。

    【讨论】:

      【解决方案4】:

      实际上,这样做很容易。只需将 syncPeriodSecs 设置为 0 并禁用日志。为了防止创建大多数文件,只需使用 mongod 启动

      mongod --noprealloc --nojournal 
      

      或在mongod.conf 中配置的等效选项。

      但是,无论您做什么,都会创建命名空间文件。如果您使用副本集,也会创建 oplog 文件。

      为了确保您的 mongodb 不会耗尽所有可用 RAM 并且在这些情况下插入不会引发异常,您可能需要查看 capped collections。

      【讨论】:

      • 在 MongoDB 网站中,他们明确指出不应触及此参数。该站点声明它“控制在 MongoDB 通过 fsync 操作将数据刷新到数据文件之前可以经过多长时间。不要在生产系统上设置此值。在几乎所有情况下,您都应该使用默认设置”
      • @SitnTheShade:我非常了解这些文档;)标准使用不应触及这些参数,因为摆弄它们可能会极大地影响性能(因为不必要的磁盘IO) 和/或数据持久性。在这种情况下,磁盘 IO 或数据持久性都不是问题。但总的来说,您是对的 - 摆弄这些价值观是一个非常糟糕的主意™,除非您真的知道自己在做什么。
      【解决方案5】:

      试试https://github.com/nodkz/mongodb-memory-server

      这有助于测试

      npm i mongodb-memory-server

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-11
        • 2013-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-19
        • 2020-07-05
        • 2016-12-31
        相关资源
        最近更新 更多