Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB性能-有多少数据库、集合?_Mongodb - Fatal编程技术网

MongoDB性能-有多少数据库、集合?

MongoDB性能-有多少数据库、集合?,mongodb,Mongodb,我希望使用MongoDB来存储时间序列数据。为了便于讨论,假设我部署了有限数量的传感器(例如10-100-1000个传感器)。每个传感器都有十几个“指标”(如温度、湿度等),每分钟收集一次,然后存储。 有一个前端,然后显示每个传感器的图表或选定时间间隔的集合 从性能角度来看,存储此数据的最佳方法是什么?具体而言: 就性能而言,使用单个或多个数据库是否重要?我可以创建一个 每个传感器的分贝,或者只使用一个巨大的分贝 就性能而言,是否按每个分区对数据进行分区很重要 传感器还是度量 就性能而言,我是

我希望使用MongoDB来存储时间序列数据。为了便于讨论,假设我部署了有限数量的传感器(例如10-100-1000个传感器)。每个传感器都有十几个“指标”(如温度、湿度等),每分钟收集一次,然后存储。 有一个前端,然后显示每个传感器的图表或选定时间间隔的集合

从性能角度来看,存储此数据的最佳方法是什么?具体而言:

  • 就性能而言,使用单个或多个数据库是否重要?我可以创建一个 每个传感器的分贝,或者只使用一个巨大的分贝
  • 就性能而言,是否按每个分区对数据进行分区很重要 传感器还是度量
  • 就性能而言,我是否应该只收集传感器 信息,然后收集数据,或者将两者合并到同一个目录中 收藏
非常感谢方法1(a):为所有内容创建一个数据库。(单个系列)

优点:

  • 减少维护:备份、创建数据库用户、恢复等
缺点:

  • 您可能会看到如何在大型数据库上创建索引
  • 要对特定的传感器数据执行操作,需要添加额外的索引以仅获取特定于传感器的集合
  • 您必须在一个集合中使用。虽然听起来很糟糕的索引策略
方法1(B):为所有内容创建一个数据库。(每个传感器有一个收集)

优点:

  • 减少维护:备份、创建数据库用户、恢复等
  • 尽可能减少创建索引的需要,以从整个单片采集中识别特定于传感器的数据
  • 每个传感器特定的查询将仅针对特定的集合。与单个大型集合相比,不需要将大型工作集拉入内存
  • 相对于单个数据库中的大集合,在相对较小的集合上建立索引更为可行
缺点:

  • 最终可能会创建太多索引。(所有集合上的索引总数的总和)
  • 大量索引需要更多的维护
  • WiredTiger在内部为集合创建1个文件,为索引创建1个文件。如果您的用例随着大量传感器而增长。您可能最终使用64K打开文件限制
从性能角度看,我是按每个传感器还是按指标对数据进行分区重要吗?

  • 这取决于您的分析应用程序预期的访问模式
就性能而言,我应该只收集传感器信息,然后收集数据,还是将两者合并到同一个收集中?

  • 可能需要创建传感器元数据和传感器数据的集合。它将最大限度地减少在每个收集的传感器数据中复制传感器元数据

  • 您可能想在这里阅读有关设计此图案的内容


一如既往,最好设计一个示例模式,并在测试环境中测试查询。

您能添加一些数据模式的示例吗?我认为最终问题将归结为“哪种模式通过读取或写入数据所需的操作量最少而实现了最佳灵活性”。