跳到主要内容

删除历史数据

法规约束

数据删除是高敏感操作, 多数行业法规 (GMP / FDA / ISO) 要求"永不删除"或"删除必须留审计". 服务端实现可能加额外保护.

DeleteRange

删除时间区间内全部数据点.

public StatusCode History.DeleteRange(
string nodeId,
DateTime startTime,
DateTime endTime,
bool isDeleteModified = false);
参数说明
isDeleteModifiedtrue = 同时删修改记录; 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 卡死

下一步