云数据库GeminiDB Influx接口解密第十一期:让智能电网中时序数据处理更高效
-
数据规模超大,分布密集,数据存储难
-
数据处理实时性需求高
-
数据价值挖掘困难
1、智能电网设备中的时序数据
-
DeviceID : 产生该条数据的物理设备/传感器 -
TimeStamp为记录产生的时间戳 -
Value : 为设备测点具体的值。
线路输送设备数据存储需求
-
智能电表设备数据存储需求
3、电网数据常用的查询场景
智能电网数据采集及监控系统(SCADA)作为智能电力物联网的一部分,对于时序数据处理有着多种维度查需和数据聚合需求,不仅需要实时监控,需要历史数据分析,例如历史 PDR 反演和事故分析。
因此智能电网行业应用场景对时序数据的访问方式主要有三种:
折线查询 : 获取指定设备一段时间内的相关量测值, 如查询特定用户智能电表在一段连续时间内的有功电能量。即测量对象为正向有功尖能量 (fd.shark.electricity),测量属性user= lvsejiayuan.A.unit2.603,dtype=ammeter,需查询2014.09.01 这一天的正向有功尖电能量。
对于折线查询,对象为监测的设备或关注的指标,特征集可标识为FSet = <(t1,v1), (t2,v2), ......, (tn,vn)>,其中 (t1, t2, t3, ......, tn) 为特定的时间序列,使用基于时间戳的偏移表示;(v1, v2, v3, ......, vn) 为与时间序列相对应的量测值。
-
对于断面查询,对象为关注的区域/逻辑对象 (如街道/生活区/电厂),特征集可标识为 FSet = <(d1,v1), (d2,v2), ......, (dn,vn)>,其中 (d1, d2, d3, ......, dn) 为区域/逻辑对象所包含的设备/测点,(v1, v2, v3, ......, vn) 为对应的设备/测点在指定时间戳的值。
-
数据存储孤立分离。按照实体关系模型, 一条时序数据记录被保存为单独的一行,因此连续时间段内的数据被孤立分离地存储在数据库中。 -
数据的访问速度与数据量的大小成反比。随着数据量的增加,访问速度越来越慢。同时,大多数关系型数据库为了提升查询性能,针对大量数据建立索引,由此消耗大量的系统资源。 -
无法满足时序数据的实时处理需求。对于海量时序数据,关系型数据库无法高速的加载并满足处理需求。
后来,电力系统内的普遍做法转向使用商业时序数据库软件,如 OSIsoft Pi、eDNA 等作为时序数据的存储和读取工具。利用实时数据库进行时序数据处理。
-
无法支持大规模测点管理。对于国家级或省级智能电网而言,需要支持上亿甚至上十亿的测点规模。然而,无论 PI,eDNA,均无法为大规模测点管理提供支撑。 -
扩展能力不足。实时数据库一般只支持单机部署,无法集群部署,无法支撑大规模数据应用。 -
高可用与数据安全性不足。实时数据库一般不具备高可用特性,对于所存储的数据的安全性,也完全依赖于硬件与数据库软件本身,不支持数据冗余备份,无法应对大数据分析场景。
灵活多变的数据模型 : 用户根据业务需求,通过标签组合的方式自由定义数据模型,同时也可以根据业务变化和演进进行变更。
高写入吞吐量 : 分布式时序数据库解决大规模集群的横向扩展问题,保证高性能平稳写入的需求。
在一些大规模的应用性能监控、物联网场景,海量的设备持续产生时序数据,例如省域级别的电网用电测量数据,9000万数量级的电表设备,原来每个月采集一次,后续业务升级后15分钟采集一次,每秒需要处理的时序数据点数达到数百万甚至千万数据点,需要庞大且可以横向水平扩展的集群来支撑全量的业务写入。
高效的时序数据查询与分析 : 时序数据库支持多维时间线检索、并具备流式处理、预计算等能力,满足大规模 APM、物联网,工业物联网等业务场景的典型查询需求。
在典型的监控场景,通常需要对长周期的数据进行查询分析,比如针对某些指标最近1天、3天、7天、1个月的趋势分析、报表等;而在物联网场景,有一类比较典型的断面查询需求,例如查询某个省指定时间所有电表的用电量量明细数据,查询某个品牌空调的某个时间的平均运行温度;这些查询要扫描大量的集群数据才能拿到结果,同时查询的结果集也可能非常大。
低成本的时序数据存储 : 时序数据库充分利用好时序数据量大、冷热访问特征明显,进行计算、存储资源的解耦,通过低成本存储介质、压缩编码、冷热分离、高效 TTL等技术将数据存储成本降低到极致。
在车联网场景,20000辆车每小时就产生近百 GB 的车辆指标数据。如果要保存一年的运行数据就需要PB级的数据存储规模。由于数据规模巨大,对存储的低成本要求很高,另外时序数据的冷热特征明显。
丰富的生态协同 : 时序数据库与数据可视化平台、大数据处理、流式分析系统等对接,与周边生态形成协同来创造业务价值。
在物联网、工业互联网等场景,时序数据通常有进一步做运营分析处理的需求,在很多情况下时序数据只是业务数据的一部分,需要与其他类型的数据组合来完成查询分析。
三、智能电网数据模型
下面我们具体看一下智能电网中的数据模型,从而进一步体现为什么时序数据库是智能电网场景中数据处理的最佳选择。
1、统一标准 SG-CIM
针对现在电力行业各企业业务数据模型多样化,非统一,交互困难等问题,国家电网公司通过分析整合,提出了一个新型的企业公共数据模型(SG-CIM), 形成了统一的信息视图,实现多企业多业务应用系统间的数据交互共享。SG-CIM 和时序数据库模型非常匹配。
在智能电网管理平台中,SG-CIM数据模型中的每个叶子节点称为测量对象,叶子节点标签称为测量属性,它由一个或多个键值对组成,用于进一步刻画补充测量对象的属性信息,根至叶子节点的全路径称为用户属性,作为一个特殊属性处理。
测量对象+时间戳+测量属性+测量值的组合称为一条时间序列数据记录,也称电力负荷数据测点。以某楼宇中某居民用户安装的智能电表为例,描述 SG-CIM 数据模型在海量数据管理平台中的应用.
根据 SG-CIM 数据模型,一条时间序列数据记录由如下几部分组成 :
测量对象 (obj) : 一个被定量测量对象的名称,比如电能量,吞吐量等。
时间戳 (timestamp) : 以 UNIX 时间表示(秒或毫秒),用于标识这条时间序列被记录/存储的时间。
测量属性 (tag) : 键值对,用于区分或组组织测量对象相同,但来自不同源或相关实体的相似数据点,增加灵活性。
测量值 (value) : 该测量对象在当前时刻的实际测量值,整型或浮点型.
测量对象 (obj) 以 SG-CIM 数据模型中的每个叶子节点来刻画,例如正向有功尖能量(fd.shark.electricity)。
测量属性 (tag) 以 SG-CIM 数据模型中叶子节点的属性:用户 (user) 和设备类型 (dtype) 等属性来描述,例如 user= lvsejiayuan.A.unit2.603,dtype=ammeter,user 是一个特殊的属性,用根至叶子节点的全路径刻画。
2、根据 SG-CIM 模型进行时序数据模型设计 - 多值模型和单值模型
单值模型 : 即对测点建模,以单个测点对测点定义时序采样。
按设备将每个设备的测量值属性分别定义到时序数据库中。
这种存储方式数据定义、变化值提交和历史值查询都相对简单。
缺点同样明显,存储在时序数据库中数据没有关联性,如需同时查询线路的有功和电流,则需要分两次查询,查询性能较低,同时也不利于做关联性分析。
OpenTSDB 和 Prometheus时序数据库采用的是单值模型。
多值模型 : 即对设备/数据源进行建模,例如基于智能电网设备建模。
在时序数据库中,将同一个设备采集的不同测点属性存储在一张表的不同域。这要只需要一次查询,即可得到一个设备的所有量测,查询效率和数据同步行都相对较高。
线路设别在时序数据库中的记录可定义为八元组:<oid,timestamp, i_value, i_status, p_value, p_status, q_value, q_status>。
GeminiDB Influx接口 , InfluxDB,TimeScaleDB 等时序数据库采用的是多值模型。
四、云数据库GeminiDB Influx接口
如何支撑庞大的智能电网数据
1、GeminiDB Influx接口
云原生分布式时序数据库GeminiDB Influx接口采用存储计算分离架构。
集群能力方面 : 具备非常平滑快速的弹性扩缩容能力。集群可以轻松扩展至每秒千万点写入吞吐量,PB界别的存储支持。
服务和数据高可用方面 : 数据三副本存储确保数据可用性;集群跨 AZ 可用区容灾部署,集群最大支持N - 1 节点故障,同时数据自动负载均衡避免热点。
时序数据存储方面 : 深度优化存储引擎,确保稳定的高吞吐量写入;同时时序数据的自适应压缩能力,让时序数据压缩比达到20 : 1;自动的数据冷热分层存储,进一步降低数据存储成本。
时序数据计算方面 : 集成了丰富的数据聚合,降采样,插值,预算,异常检测等算子。同时支持边云同步能力,实现数据边云一体化。
在生态和开源兼容方面 : 支持多种开源时序数据库协议,例如 Prometheus,Graphite 和 OpenTSDB,同时完全兼容InfluxDB 生态。
2、基于GeminiDB Influx接口的电网数据模型设计
GeminiDB Influx接口在生态和协议方面完美兼容 InfluxDB。InfluxDB 灵活多变的 Schema-Free 行协议可以完美匹配 SG-CIM 模型。
数据写入时候,不需要提前创建 Schema 定义,同时支持 Tags 和 Fields 字段自由扩展,未来有需要新增维度的时候,可以动态进行增加。
可以参考下面简单的例子 :
我们以智能电网中线路设备数据为例子,根据行协议如何将 SG-CIM 模型转化成GeminiDB Influx接口数据模型 :
Measurement : stbl_line,相当于关系型数据库中的表概念。
Fields : SG-CIM 模型中的多个测量对象 (Obj),即线路设备采集和上报的指标项,后期可以动态扩展。
-
Tags : SG-CIM 模型中的测量属性 (Tag),表示线路设备静态属性标签,可以根据系统需要自定义和扩展
deviceId : 设备标识 ID
deviceType : 设备类型标识
line : 线路标识 ID
Timestamp : SG-CIM 模型中时间戳项。
以上模型在数据库中存储格式如下:
stbl_line,line=XXX线路,deviceType=XXX,deviceId=E08995 i_value=X,i_status=X,p_value=X,p_status=X,q_value=X,q_status=X 1663121437010000000
五、总结
GeminiDB Influx接口是一款基于计算存储分离架构,完全兼容 InfluxDB 生态的云原生时序数据库。依托于华为云计算平台高性能,高可靠,高安全,可弹性伸缩的基础上,GeminiDB Influx接口提供时序数据高效存储、分析、展示功能,同时具有高写入性能、灵活扩容、高压缩率和高查询性能等特点。GeminiDB Influx接口可以广泛应用于各种时序数据处理场景,例如工业物联网,车联网,物联网,运维监控,银行金融等。
本文作者
华为云数据库 GeminiDB Influx接口
欢迎加入
华为云数据库GeminiDB Influx接口团队(西安、深圳)简历投递邮箱:yujiandong@huawei.com
云数据库创新Lab(成都、北京)简历投递邮箱:xiangyu9@huawei.com
- 点赞
- 收藏
- 关注作者
评论(0)