我需要存储每隔几分钟从超过 10000 个节点(可能会增加)生成的遥测数据,每个节点都通过 Internet 将数据提供给服务器进行日志记录。我还需要从 Web 应用程序中查询这些数据。
我在决定什么是最好的存储解决方案时遇到了一些麻烦。
每个节点都有一个唯一的ID,每个变量包都会有一个时间戳。(可能需要由服务器生成)。
遥测数据在同一个数据包中包含所有变量,因此从概念上讲,它可以很容易地存储在单个数据库表中,每个变量有一列。序列号 + 时间戳足以作为密钥。每个遥测数据包的大小为 64 字节,包括设备 ID 和时间戳。所以每年大约 100Gb+。
我希望能够查询数据以获取跨时间范围的变量,并存储这些数据的汇总报告,以便我可以绘制图表。
现在,如何最好地处理这个问题?我对使用 MySQL 非常熟悉,所以我倾向于这个。如果我要使用 MySQL,为每个设备 ID 设置一个单独的表是否有意义?- 这会使查询更快还是拥有 10000 个表会成为问题?
我认为不需要一次性从所有设备中查询变量,但可能需要。或者如果它变得非常大,我应该把它全部放在一个表中并使用 MySQL 集群吗?
还是有更好的解决方案?我一直在寻找一些非关系数据库,但看不到任何完全符合要求或看起来非常成熟的东西。例如,MongoDB 每行会有相当多的大小开销,与 MySQL 相比,我不知道在大时间范围内查询单个变量的值的效率如何。MySQL也已经存在了一段时间并且很健壮。
我还希望它能够轻松复制数据并进行备份。
任何想法或如果有人做过类似的事情,您将不胜感激!