数据库模型
本文档整理了网关将数据存储在哪里以及以何种形态存储。当需要调整保留期、处理磁盘已满或进行直接查询时,请参考此文档。
网关内包含一个 Cassandra
Edge 将其自身数据存储在本地 Cassandra(127.0.0.1:9042,键空间 PE)中。这与上层平台的 Cassandra(pp)是不同的——它是网关在网络中断时也能独立继续采集数据的自主存储库。
表仅有11个,分为两大类。
| 前缀 | 含义 |
|---|---|
APP_ | 配置 — 采集什么数据 |
TM_ | 时序·运行记录 — 已采集的数据及其处理过程 |
APP_ — 采集配置
在界面(连接 · 标签)中创建的内容会原样存储在这里。
| 表 | 存储内容 |
|---|---|
APP_OPC | 连接定义 — OPC_ID · 名称 · 协议(OPC_TYPE) · 目标 IP/端口 · 采集周期(TIMECYCLE) · 是否自动采集 |
APP_TAG | 标签定义 — 待读取的地址和数据类型 |
如果这两项消失,采集将停止
时序数据可以重新采集,但配置是人工创建的,无法恢复。备份时请务必包含这两张表 → 备份与恢复。
TM_ — 采集值及运行记录
| 表 | 存储内容 |
|---|---|
TM_TAG_POINT | 原始采集值 — 本存储库的主体 |
TM_TAG_POINT_ARCHIVE | 归档存储副本 |
TM_TAG_ERROR | 按标签的采集错误 |
TM_TAG_STAT | 按标签的统计 |
TM_TAG_WRITE | 写入(控制)历史 |
TM_OPC_STAT | 按连接的统计 |
TM_PLC_PING | 目标设备响应确认历史 |
TM_MONITOR | 网关资源与状态 |
TM_API_LOG | REST API 调用记录 |
TM_TAG_POINT 的结构
PRIMARY KEY (TAG_ID, TIMESTAMP)
WITH CLUSTERING ORDER BY (TIMESTAMP DESC)
| 属性 | 值 |
|---|---|
| 分区键 | TAG_ID — 一个标签对应一个分区 |
| 聚类键 | TIMESTAMP 降序 — 从最新开始读取 |
| 列 | VALUE · QUALITY · ERROR_CODE · TYPE · ATTRIBUTE(映射) |
| Compaction | TimeWindowCompactionStrategy,10分钟窗口 |
为什么使用 TimeWindow
网关的实际操作仅为「写入、短暂读取、通过 TTL 丢弃」。如果按时间窗口将 SSTable 分组,则可以整体丢弃已过期的窗口,从而几乎不产生压缩成本。
保留期 — 数字存在于两处
模式中的30天并非实际值
scheme.cql 中的 default_time_to_live 是30天(2592000秒),但启动时,会用 app.properties 的 edge.ttl 值将表 TTL 覆盖为 ALTER TABLE。
出厂默认值为 edge.ttl = 60(天),因此实际保留期为60天。
请勿仅凭模式文件就判断为30天。
如需修改,请编辑 edge.ttl 并重启。
cd /opt/kopens/plantpulse-edge/bin
./config.sh --get edge.ttl
./config.sh --set edge.ttl 90
./config.sh --restart # 기동 시 ALTER TABLE 로 반영된다
缩短后数据将立即消失
如果缩短 TTL,比该时间更早的数据将在下一次 compaction 中被回收。此操作不可逆。 如果因磁盘紧张而缩短保留期,请务必在缩短前确认所需数据区间已上传至上层平台。
磁盘已满时
容量由 标签数 × 采集周期 × 保留天数 决定。必须三项中减少一项。
| 可调整项 | 方法 |
|---|---|
| 保留天数 | 减少 edge.ttl (参考上文) |
| 采集周期 | 增加连接的 TIMECYCLE — 仅保留真正需要以秒为单位采集的标签 |
| 标签数 | 关闭未使用标签的自动采集 |
诊断请参考 诊断与巡检。
相关文档
- 备份与恢复 — 需要备份哪些内容
- app.properties 参考 — 包括
edge.ttl在内的配置键 - 监控
- 点位检索 — 在界面中查询时序数据