Database 用于遥感器数据记录的最佳数据库

Database 用于遥感器数据记录的最佳数据库,database,nosql,rdbms,sensors,Database,Nosql,Rdbms,Sensors,我需要选择一个数据库来远程存储从数千到数万个传感器的数据,每个传感器每分钟大约生成一个条目 所述数据需要以多种方式查询,从统计具有特定特征的数据计数到绘图的简单输出 我正在寻找合适的工具,我从MySQL开始,但我觉得它缺乏这个项目所需的可伸缩性,这让我想到了我不太了解的noSQL数据库 哪个数据库(关系数据库或非关系数据库)将是一个不错的选择 谢谢。您可以尝试使用Redis noSQL数据库通常没有最好的数据库,因为它们都涉及到一种或另一种权衡。您的问题也很模糊,因为除了每分钟插入的次数外,您没

我需要选择一个数据库来远程存储从数千到数万个传感器的数据,每个传感器每分钟大约生成一个条目

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

我正在寻找合适的工具,我从MySQL开始,但我觉得它缺乏这个项目所需的可伸缩性,这让我想到了我不太了解的noSQL数据库

哪个数据库(关系数据库或非关系数据库)将是一个不错的选择


谢谢。

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

通常没有最好的数据库,因为它们都涉及到一种或另一种权衡。您的问题也很模糊,因为除了每分钟插入的次数外,您没有说明任何性能需求,每次插入多少数据?而且您需要可伸缩性

这看起来也是一个过早优化的例子,因为你说你觉得[MySQL]缺乏这个项目所需的可伸缩性,但听起来你没有运行任何测试来确认这是否是一个真正的问题。获得真实的数据总是比根据感觉做出重要的架构决策更好

这里有一个建议:

编写一个简单的测试程序,每分钟插入10000行样本数据 运行程序几天或更长时间,以生成相当大的测试数据块 运行查询以查看它们是否满足您尚未指定的性能需求-它们需要多快?他们多久跑一次?它们有多复杂? 在这里,您至少要测试两件事:您的数据库是否能够每分钟处理10000次插入,以及您的查询在拥有大量数据后是否能够足够快地运行。对于大型数据集,这些将成为相互竞争的优先级,因为您需要索引来进行快速查询,但随着时间的推移,索引将开始减慢插入速度。在某种程度上,如果出于性能和有限存储空间的实际原因不需要历史数据,您还需要考虑数据归档或清除

无论您选择哪个数据库,这些都是值得关注的问题。从您告诉我们的关于检索的一点信息来看,您需要计算具有特定特征的数据,并进行简单的打印输出,这听起来像是任何类型的数据库都可以做到的。可能还有其他更重要的问题,如开发的易用性、您使用的语言和工具、部署、管理、代码可维护性等


由于这是我们讨论的传感器数据,您可能还需要查看循环数据库RRD,以查看该方法是否更适合您的需要。

在搜索传感器数据数据库时发现了这个问题 一个非常有用的搜索结果和这个问题是:

事实上,我已经开始了一个类似的项目,但意识到太晚了,我使用的不是最好的技术。我的方法与MySQL+PHP类似。最后我意识到这是不可伸缩的,于是停止了这个项目

此外,一个良好的起点是: 如果他们使用一个,那么它应该不是最坏的一个


我希望这能有所帮助。

一个基于MySQL的网站平均有1万名用户持续在线,生成数据消息、点击。。。每一秒。那么,为什么这不包括每分钟生成几个字节的10K传感器呢?您想实时/接近实时地访问数据吗?或者,如果数据在第二天收集后的某个时间可以查询,比如说,是否可以?如果可能,数据应该可以实时访问,对于项目来说,一分钟的延迟是可以容忍的,但绝对不是一天。这不是一个有用的答案,因为它没有解决原始海报中任何模糊的问题,也没有给出任何理由说明为什么Redis是这项工作的正确工具。任何人都可以在谷歌上搜索nosql,发现Redis是众多选项中的一个。另一个需要考虑的问题是:数据将如何从10000多台设备传输到您的数据库?您是否计划让它们都直接连接到服务器可能是一个非常糟糕的主意,原因有很多,或者是否有一个中央收集器来执行所有插入操作?您是否考虑过使用消息队列(例如ActiveMQ、HornetQ、RabbitMQ)来管理传入的数据?非常感谢您的建议,作为一名业余爱好者,我肯定缺乏解决此问题的正确方法。我将尝试运行您建议的测试,看看它们如何运行。要回答您关于查询的问题,它们的频率要比插入的频率低得多。另外,我从未听说过消息队列,谢谢你的提示。我一定去看看。另外,对于这种类型的项目,在选择SQL或noSQL数据库时,您认为有什么相关的缺点吗?由
其中一些很吸引我,但我从来没有真正使用过。索引不会随着时间的推移减慢插入速度。将数据插入到树中是OlogN。一开始可能会很慢,但随着时间的推移不会变得更糟。