我需要选择一个数据库,用于从大量(数千到数万)传感器远程存储数据,每个传感器每分钟产生一个条目。
需要以各种方式查询所述数据,从统计具有某些统计特征的数据到简单的绘图输出。
我正在寻找合适的工具,我从MySQL开始,但我觉得它缺乏这个项目所需的可扩展性,这使我得到了我不太了解的无数据库数据库。
哪个数据库,无论是否是关系数据库都是不错的选择?
感谢。
答案 0 :(得分:9)
通常没有“最佳”数据库,因为它们都涉及这种或那种权衡。您的问题也很模糊,因为除了每分钟插入的数量(每个插入的数据量?)以及您需要“可扩展性”之外,您没有说出您的性能需求。
它看起来也像是一个过早优化的情况,因为你说“感觉就像[MySQL]缺乏这个项目所需的可扩展性”,但它听起来并不像你运行任何测试以确认这是否是一个真正的问题。获取真实数据总是更好,而不是基于“感受”的重要架构决策。
这是一个建议:
您至少在这里测试两件事:数据库是否可以每分钟处理10,000次插入,以及一旦您拥有大量数据,您的查询是否会运行得足够快。对于大型数据集,这些将成为竞争优先级,因为您需要快速查询的索引,但索引将开始减慢插入的速度。在某些时候,您还需要考虑数据存档(或清除,如果不需要历史数据),无论是出于性能还是出于实际原因(有限的存储空间)。
无论您选择哪种数据库,都会受到关注。从您告诉我们的关于您的检索需求(“计算具有某些特征的数据”和“简单输出绘图”)来看,它听起来像任何类型的数据库都可以。可能其他问题更重要,例如易于开发(您使用的是哪种语言和工具?),部署,管理,代码可维护性等。
由于这是我们正在讨论的传感器数据,您可能还需要查看循环数据库(RRD),例如RRDTool,以了解该方法是否更符合您的需求。
答案 1 :(得分:0)
在谷歌搜索“传感器数据数据库”时发现此问题 其中一个非常有用的搜索结果(以及此SO问题)是blog:
实际上我已经开始了一个类似的项目(http://reatha.de),但实现得太晚了,我使用的不是最好的技术。我的方法类似于MySQL + PHP。最后我意识到这不可扩展并且停止了项目。
此外,一个好的起点是list of data-bases in Heroku: 如果他们使用一个,那么它应该不是最差的。
我希望这会有所帮助。
答案 2 :(得分:-3)
您可以尝试使用Redis noSQL数据库