8

我需要选择一个数据库来远程存储来自大量(数千到数万)传感器的数据,这些传感器每分钟大约会生成一个条目。

所述数据需要通过多种方式进行查询,从统计具有一定特征的数据到简单的输出作图。

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

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

谢谢。

4

3 回答 3

9

通常没有“最佳”数据库,因为它们都涉及一种或另一种权衡。您的问题也很模糊,因为除了每分钟的插入次数(每次插入多少数据?)以及您需要“可扩展性”之外,您没有说任何关于您的性能需求的内容。

这看起来也像是过早优化的情况,因为您说您“感觉[MySQL] 缺乏该项目所需的可伸缩性”,但听起来您并没有运行任何测试来确认这是否是一个真正的问题。获取真实数据总是比基于“感觉”做出重要的架构决策要好。

这里有一个建议:

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

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

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

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

于 2012-06-29T18:53:51.867 回答
2

在谷歌搜索“传感器数据数据库”时发现了这个问题 非常有用的搜索结果之一(连同这个 SO 问题)是这个博客

实际上我已经开始了一个类似的项目(http://reatha.de),但我意识到为时已晚,我使用的不是最好的技术。我的方法类似于 MySQL + PHP。最后我意识到这是不可扩展的并停止了该项目。

此外,一个很好的起点是查看Heroku 中的数据库列表:如果他们使用一个,那么它应该不是最差的一个。

我希望这有帮助。

于 2014-01-31T13:37:57.517 回答
-3

你可以尝试使用 Redis noSQL 数据库

于 2012-06-29T09:24:11.013 回答