删除历史数据
法规约束
数据删除是高敏感操作, 多数行业法规 (GMP / FDA / ISO) 要求"永不删除"或"删除必须留审计". 服务端实现可能加额外保护.
DeleteRange
删除时间区间内全部数据点.
public StatusCode History.DeleteRange(
string nodeId,
DateTime startTime,
DateTime endTime,
bool isDeleteModified = false);
| 参数 | 说明 |
|---|---|
isDeleteModified | true = 同时删修改记录; false = 只删原始, 保留修改记录 |
ua.History.DeleteRange("ns=2;s=Temperature",
startTime: now.AddDays(-30),
endTime: now.AddDays(-7));
DeleteAtTime
删除指定时间点的数据.
public IReadOnlyList<StatusCode> History.DeleteAtTime(
string nodeId,
IReadOnlyList<DateTime> times);
ua.History.DeleteAtTime("ns=2;s=Temperature", new[] { ts1, ts2, ts3 });
DeleteEvents
按 EventId 列表删事件.
public IReadOnlyList<StatusCode> History.DeleteEvents(
string eventNotifierNodeId,
IReadOnlyList<byte[]> eventIds);
法规约束
- 永不删除 (只允许标记 obsolete)
- 删除必须留审计 (谁删的, 何时, 原因)
服务端实现可能加额外保护. 客户端可能拿到 BadUserAccessDenied.
性能
- 大区间 Delete 服务端可能阻塞数秒到数分钟 (重建索引)
- 长时间操作建议异步, 避免 UI 卡死