数据库
首页 > 数据库> > mysql – 存储10000个节点的遥测数据

mysql – 存储10000个节点的遥测数据

作者:互联网

我需要存储每隔几分钟从超过10000个节点(可能会增加)生成的遥测数据,每个节点通过互联网将数据提供给服务器进行记录.我还需要从Web应用程序查询此数据.

我在确定什么是最好的存储解决方案时遇到了一些麻烦.

每个节点都有一个唯一的ID,每个变量包都有一个时间戳. (可能需要由服务器生成).

遥测数据具有相同数据包中的所有变量,因此从概念上讲,它可以轻松地存储在单个数据库表中,每个变量有一列.序列号时间戳就足够了.
每个遥测数据包的大小为64字节,包括设备ID和时间戳.所以每年大约100Gb.

我希望能够查询数据以获取跨时间范围的变量,并且还存储此数据的汇总报告,以便我可以绘制图形.

现在,如何最好地处理这个?我对使用MySQL非常熟悉,所以我倾向于这个.如果我要使用MySQL,那么为每个设备ID设置一个单独的表是否合理? – 这会使查询更快,还是会有10000个表成为问题?

我认为不需要一次性查询所有设备中的变量,但可能会这样.或者我应该把它全部放在一个表中并使用MySQL集群,如果它真的很大?

或者有更好的解决方案吗?我一直在寻找一些非关系型数据库,但看不到任何完全适合该法案或看起来非常成熟的东西.例如,MongoDB每行会有相当多的大小开销,我不知道与MySQL相比,在大的时间范围内查询单个变量的值会有多高效. MySQL已经存在了一段时间并且非常强大.

我也希望能够轻松复制数据并进行备份.

任何想法或如果有人做了类似的任何你输入将非常感谢!

解决方法:

你看过time-series databases吗?它们是针对您描述的用例而设计的,并且由于内置数据折叠和压缩,实际上可能最终在空间要求方面更有效.

我建议使用HBase或Cassandra查看实现原始存储,因为它为您提供经过验证的异步复制功能和吞吐量.

HBase时间序列数据库:

> OpenTSDB
> KairosDB
> Axibase Time-Series Database – 我的隶属关系

标签:mysql,database,web-services,telemetry
来源: https://codeday.me/bug/20190626/1290577.html