MySQL将增量数据合并为完整数据集
我正在为家庭自动化系统开发数据记录器。当某事物的状态发生变化时,它会以key=>value格式定期从HA控制器接收数据。我想将其转储到MySQL数据库中 当HA控制器发送此数据时,它并不包括对象的每个属性。示例如下所示: 初始回报MySQL将增量数据合并为完整数据集,mysql,Mysql,我正在为家庭自动化系统开发数据记录器。当某事物的状态发生变化时,它会以key=>value格式定期从HA控制器接收数据。我想将其转储到MySQL数据库中 当HA控制器发送此数据时,它并不包括对象的每个属性。示例如下所示: 初始回报 stdClass Object ( [name] => Washing Machine [altid] => 10 [id] => 31 [category] => 3 [subcategory] => 0 [room] =&
stdClass Object
(
[name] => Washing Machine
[altid] => 10
[id] => 31
[category] => 3
[subcategory] => 0
[room] => 2
[parent] => 1
[status] => 1
[light] => 30
[kwh] => 30.2700
[state] => -1
[comment] =>
[watts] => 108.5
)
增量更新
stdClass Object
(
[altid] => 10
[id] => 31
[subcategory] => 0
[room] => 2
[parent] => 1
[status] => 1
[light] => 30
[kwh] => 30.2700
[state] => -1
[comment] =>
[watts] => 96.7
)
如您所见,稍后的更新不包括对象的名称或类别。对于其他对象类,可能会缺少其他属性
我的问题是,记录这些数据的最佳方式是什么,这样我就可以运行查询来检索每个属性在单个时间点的状态?可能是为了创建一个视图而进行的一些有意义的查询
感谢您的帮助,因为它总是为您提供ID(希望如此),您可以在事件发生时查找缺少的属性,并在保存之前用缺少的信息填充您的记录。您需要从以前的事件中进行选择,或者在一些类别和名称的主表中已经创建了设备的定义 另一种方法是不关心缺少的度量,而是在UI/绘图/报告阶段处理这些度量。您可以构建一个UI,该UI知道ID31是洗衣机,并且可以随后绘制随时间变化的所有属性。通过查看以前的值或选择在0处绘制图表,UI可以继续绘制任何不存在的值 这样做的话,构建一个能够在任何时间点识别任何值的单一查询将非常棘手,因为它必须一直向后扫描,直到找到一个值为止。但是,再一次,在图形的意义上,它真的没有那么重要,因为您希望有一个足够大的日期范围来容纳缺少的值
将数据保存到时间序列数据库(如influx db)而不是关系数据库中也可能会使您受益。因为它总是为您提供ID(希望如此),您可以在事件发生时查找缺失的属性,并在保存前用缺失的信息填充记录。您需要从以前的事件中进行选择,或者在一些类别和名称的主表中已经创建了设备的定义 另一种方法是不关心缺少的度量,而是在UI/绘图/报告阶段处理这些度量。您可以构建一个UI,该UI知道ID31是洗衣机,并且可以随后绘制随时间变化的所有属性。通过查看以前的值或选择在0处绘制图表,UI可以继续绘制任何不存在的值 这样做的话,构建一个能够在任何时间点识别任何值的单一查询将非常棘手,因为它必须一直向后扫描,直到找到一个值为止。但是,再一次,在图形的意义上,它真的没有那么重要,因为您希望有一个足够大的日期范围来容纳缺少的值
将数据保存到时间序列数据库(如Inflox db)而不是关系数据库中也可能会使您受益。我最终在另一篇SO文章中找到了解决方案:
smdrager给出的最重要的答案是我使用的。表中只有几行与数千行之间的速度似乎没有差别。我最终在另一篇SO帖子中找到了解决方案: smdrager给出的最重要的答案是我使用的。表中只有几行和数千行的速度似乎没有差别