Mongodb 记忆中

Mongodb in memory

目标是优化近静态数据的读取。 我的协议数据库有几个集合,每个集合都有几千条记录。 协议数据库中的数据很少更改(比如通过 Web 界面每天一次)

问题: 我的消息传递应用程序需要读取相关的协议数据结构来处理每条消息。在示例流程中,消息类型为“abc”的消息传入,服务运行大约 10 次查询以从协议数据库中查找与消息类型“abc”相关的数据,然后执行消息处理。即使在索引和查询优化之后,搜索查询总共也需要 800 毫秒。我需要它更快。

我认为的解决方案: 我在想的是创建一个包含主要和次要 MongoDB 的副本集。主要在磁盘中,次要在内存中(--storageEngine inMemory)。我将应用程序设置为仅从辅助读取。我的假设是,由于保存在内存中,次级会快得多。与主数据库同步让我确信内存数据库中的协议数据保持最新。

你怎么看?

解决方法如下:

在这种情况下,可能使用 MongoDB Enterprise Advanced,副本集的主节点使用 in-memory 存储引擎。它还有另外两个节点,其中一个使用 in-memory 存储,另一个使用 WiredTiger 引擎。使用磁盘存储的辅助节点被配置为隐藏成员。

万一发生故障,辅助 in-memory 服务器将成为主要服务器,并仍然提供对数据的快速访问。一旦发生故障的服务器恢复正常,它将使用 WiredTiger 引擎与服务器同步,并且不会丢失任何数据。

https://www.mongodb.com/databases/in-memory-database