Database 如何在XDB中编辑度量值(=带时间戳的一组值)?

Database 如何在XDB中编辑度量值(=带时间戳的一组值)?,database,influxdb,influxql,Database,Influxdb,Influxql,我正在运行一个Influx数据库实例,它从各种来源收集数据。有时,这些数据根本不正确,需要更正,否则以后的分析将失败和/或产生不正确的结果。然而,XDB类似SQL的方言没有更新功能,只有使用另一个插入用相同的时间戳替换数据点,才能“更新”单个数据点 为此,我正在寻找一种方法,在测量中批量编辑选定的数据点,而不中断数据收集过程,在编辑过程中可能会插入新的数据点。以下是我尝试过的: 我可以使用HTTP API查询测量的子集以进行编辑,例如,使用HTTP API从测量中选择*时间>…,我得到一个JS

我正在运行一个Influx数据库实例,它从各种来源收集数据。有时,这些数据根本不正确,需要更正,否则以后的分析将失败和/或产生不正确的结果。然而,XDB类似SQL的方言没有更新功能,只有使用另一个插入用相同的时间戳替换数据点,才能“更新”单个数据点

为此,我正在寻找一种方法,在测量中批量编辑选定的数据点,而不中断数据收集过程,在编辑过程中可能会插入新的数据点。以下是我尝试过的:

  • 我可以使用HTTP API查询测量的子集以进行编辑,例如,使用HTTP API从测量中选择*时间>…,我得到一个JSON文件,但没有(明显的)方法重新插入此JSON(编辑后)并替换更正的测量
  • 我可以使用
    influx\u inspect
    导出整个数据库并重新导入,但这太慢了。通过这种方式,200MB的原始数据被放大到大于1GB的线路协议数据,这对于纠正2-3个数据点来说是一种过分的手段

还有其他想法吗?我对在文本编辑器中编写脚本和编辑内容很在行,但对手动为每个需要更正的数据点创建一个插入项并不在行。

由于似乎没有真正的解决方案,我已经编写了一个脚本来完成这项工作。 注意,它真的很快“脏”,除了我自己的硬件之外,没有经过任何测试,并且包含很多假设(例如本地主机上的数据库、可用的Perl等等)


如果这是您需要经常做的事情,您可以查看QuestDB(或在Github上)。它是一个超快速的时间序列数据库,但支持传统的SQL CRUD操作。

InfluxDB通常不设计为“更新量大”,但在插入操作方面确实非常出色。我通常认为,在实际将数据插入数据库之前,最好先“更正”数据。为什么这是不可能的呢?有些数据源是由摄像头提供的OCR引擎。这个引擎偶尔会出错,OCR并不完美。这些情况很少见,但一旦发生,就会打乱所有的统计和推断。看这里的一个例子:看起来不错。它支持Grafana可视化、IOBroker等吗?因此,我们现在有了一个Grafana插件——只是等待它们合并它——但是在新的5.0.3版本中,我们的postgres wire协议支持非常好,您可以使用postgres插件。