【发布时间】:2018-08-07 21:51:24
【问题描述】:
问题
对于特定的保留策略,是否可以使用时间范围删除测量数据?
DELETE
FROM "SensorData"."Quarantine"./.*/
WHERE "time" >= '2018-02-28T02:26:08.0000000Z'
AND "time" <= '2018-02-28T02:27:08.0000000Z'
我们当前的查询尝试是删除某个时间段之间的所有数据,但是 Delete 似乎并不乐意列出数据库或保留策略。
可能的 XY 问题
原因(我怀疑这是一个未解决的 XY 问题)(请参阅github://influxdata/influxdb#8088)(这是下面的第 3 步)
我们有一个名为 SensorData 的数据库,它的主缓冲区默认保留策略为 30 天,因此我们不会用完磁盘空间。
但是,如果传感器记录了“超出”,我们有一个要求,要求我们保留该数据,每边 + 一个小时,以作为证据。我们称之为隔离区。
到目前为止,我们已将此作为保留政策实施,称为隔离。
所以我们有 Primary 和 Quarantine,并且可能在未来,某种高频保留策略可能会被下采样到 Primary。
XY 问题是,“您如何在 Influx 中以事务方式复制/移动/更改某些记录数据的保留策略?”
我们的解决方案(在找不到之后)
曾经,
例如
-
创建一个临时数据库,命名为唯一标识正在进行的隔离操作。
create "TempDB"+"_Quarantine_"+startUnixTime+"_"+"endUnixTime" -
将数据从 Primary 复制到 tempdb
Copy Primary -> TempDB
3.删除主要数据
`Delete Primary`
-
将数据复制到隔离区
Copy TempDB -> Quarantine -
删除临时数据库
Drop TempDB
这将允许对失败的操作进行回滚,或在崩溃的情况下回滚/恢复。
【问题讨论】:
-
如果我误解了您的问题,请原谅我,但是您为什么要尝试删除保留策略的数据,如果它会在指定的持续时间持续后删除它呢?您的“主要”RP 将在 30 天内删除所有数据,如果您需要保留一些数据,您只需将其复制到“隔离区”即可。
-
我们需要能够随意更改给定数据范围的保留策略。另一位开发人员的一些初步调查是在重新插入之前先删除数据,但复制或覆盖可能会更好。我认为这可能与希望操作具有事务性有关。
标签: influxdb