使用 MongoDB 存储不可变数据?

Joh*_*han 5 immutability mongodb

我们研究了存储和读取大量不可变数据(事件)的选项,我希望得到一些关于 MongoDB 是否适合的反馈。

要求:

  1. 我们需要每秒存储大约 10 个事件(但速度会增加)。每个事件都很小,大约 1 Kb。将所有这些事件存储在同一个集合中可以吗?
  2. 一个非常重要的要求是我们需要能够按顺序重播所有事件。我在这里读到,使用游标对文档进行排序时,MongoDB 有 32 Mb 的限制。对于我们来说,按插入顺序读取所有数据(如表扫描)就可以了,因此可能不需要显式排序?游标是可行的方法吗?它们能够满足这一要求吗?

如果 MongoDB 非常适合这一点,那么是否可以调整一些配置或设置来提高不可变数据的性能或可靠性?

rbp*_*rbp 2

这与存储日志非常相似:大量写入,然后按顺序读回数据。幸运的是,Mongo 网站对此有一个秘诀:

\n

https://docs.mongodb.org/ecosystem/use-cases/storing-log-data/

\n

关于数据的不变性,这对于 MongoDB 来说不是问题。

\n

2022年2月19日编辑:

\n

替换链接:\n https://web.archive.org/web/20150917095005/docs.mongodb.org/ecosystem/use-cases/storing-log-data/

\n

页面内容片段:

\n
\n

本文档概述了使用\nMongoDB 作为服务器日志数据和\n其他机器数据的持久存储引擎的基本模式和原则。

\n

问题服务器生成大量事件(即日志记录),其中包含有关其操作的有用信息,包括错误、警告和用户行为。默认情况下,大多数服务器将这些数据\n存储在其本地文件系统上的纯文本日志文件中。

\n

虽然纯文本日志是可访问且可读的,但如果没有用于聚合和存储这些数据的整体系统,它们就很难使用、参考和分析。

\n

解决方案 下面描述的解决方案假设每个服务器\n生成事件也使用事件数据,并且每个服务器\n都可以访问 MongoDB 实例。此外,此设计假设此日志记录数据的查询率远低于具有高带宽事件流的日志记录应用程序的常见查询率。

\n

笔记

\n

除非另有说明,否则此情况假定\xe2\x80\x99对此事件数据使用标准无上限集合。请参阅有关上限集合的部分\n

\n

架构设计 在 MongoDB 中存储日志数据的架构取决于您\xe2\x80\x99 存储的事件数据的格式。对于一个简单的示例,请考虑来自 Apache HTTP Server 的组合格式的标准请求日志。这些日志中的一行可能类似于\n以下内容:

\n
\n