远程传感器数据记录的最佳数据库

Mik*_*ike 7 database rdbms sensor nosql

我需要选择一个数据库,用于从大量(数千到数万)传感器远程存储数据,每个传感器每分钟产生一个条目.

需要以各种方式查询所述数据,从具有用于统计的特定数据到用于绘图的简单输出的数据计数.

我正在寻找合适的工具,我从MySQL开始,但我觉得它缺乏这个项目所需的可扩展性,这导致我没有SQL数据库,我不太了解.

无论是关系型还是非关系型数据库都是不错的选择?

谢谢.

Joh*_*ahl 9

通常没有"最佳"数据库,因为它们都涉及这种或那种的权衡.您的问题也非常模糊,因为除了每分钟插入的数量(每个插入的数据量?)以及您需要"可伸缩性"之外,您没有说出您的性能需求.

它看起来像是一个过早优化的情况,因为你说你" 觉得 [MySQL]缺乏这个项目所需的可扩展性",但听起来你并没有运行任何测试来确认这是否是一个真正的问题.获取真实数据总是更好,而不是基于"感受"的重要架构决策.

这是一个建议:

  1. 编写一个简单的测试程序,每分钟插入10,000行样本数据
  2. 运行程序一段相当长的时间(几天或更长时间)以生成大量的测试数据
  3. 运行您的查询以查看它们是否满足您的性能需求(您尚未指定 - 它们需要多快?它们运行的​​频率如何?它们有多复杂?)

你在这里测试至少两件事:你的数据库是否每分钟可以处理10,000次插入,以及一旦你有大量数据,你的查询是否会运行得足够快.对于大型数据集,这些将成为竞争优先级,因为您需要快速查询的索引,但索引将开始减慢插入的速度.在某些时候,您还需要考虑数据存档(或清除,如果不需要历史数据),无论是出于性能还是出于实际原因(有限存储空间).

无论您选择哪种数据库,都会出现这些问题.从您告诉我们的关于您的检索需求("计算具有某些特征的数据"和"简单输出绘图")来看,它听起来像任何类型的数据库都可以.可能其他问题更重要,例如易于开发(您使用的是哪种语言和工具?),部署,管理,代码可维护性等.

由于这是我们正在谈论的传感器数据,您可能还需要查看循环数据库(RRD),例如RRDTool,以查看该方法是否更好地满足您的需求.