一种适用于截面访问模式的电网海量时序数据存取方法

文档序号:6631219阅读:220来源:国知局
一种适用于截面访问模式的电网海量时序数据存取方法
【专利摘要】本发明公开了一种适用于截面访问模式的电网海量时序数据存取方法,以实现在不影响写入性能的情况下同时兼顾时间序列查询及时间截面查询场景下的查询效率。本发明在系统中建立三张表,分别为Uid表、Time-series时间序列数据表、Time-point时间截面数据表,将电网时序数据分别存入时间序列数据表以及时间截面数据表中,使得相同时间段的电网数据在物理磁盘位置相邻,另外,同一时间点不同电网设备的电网数据在磁盘位置也相邻,这样可以保证按照时间序列以及按照时间截面这两种方式查询的效率。
【专利说明】-种适用于截面访问模式的电网海量时序数据存取方法

【技术领域】
[0001] 本发明涉及一种数据存取方法,属于海量数据处理、新型数据库【技术领域】,特别适 用于智能电网领域中海量时序数据实时处理的场景。

【背景技术】
[0002] 随着智能电网的不断发展,数据处理规模日益海量,已经出现了数千万乃至上亿 数据采集规模的应用需求。W电力系统为例,一方面是测点规模越来越大,预计将达到千万 级甚至亿级W上;另一方面是历史时序数据量规模越来越大,预计将达到PB字节W上。海 量信息存储的方法很多,化acle和EMC提供了存储系统及硬件,比较经典的是RAC (Real Application Cluster), RAC已经在工业和信息界得到广泛应用。然而该些数据库都是基 于关系和对象模型的,对复杂数据存储有较好的表现,但是存储代价W及系统消耗比较大。 电网时序数据类型单一,是按时间分布的单列数据,而分布式列式数据库技术在处理电网 时序数据该种单列类型数据上比关系数据库有更好的效率,能够处理大量的并发数据操作 的同时满足电网时序数据实时性要求。因此引入分布式列式数据库技术是当前解决电网海 量时序数据实时处理的有效方法。
[0003] 构建电网时序数据的分布式列式数据库系统的设计关键在于模式设计,模式设计 的好坏直接影响该系统的插入与查询性能。模式设计的出发点是访问模式,根据电网时序 数据特征,对其访问模式可归纳为按时间序列方式查询与按时间截面方式查询两种。合理 的模式设计应该做到不影响写入性能的同时兼顾时间序列方式与时间截面方式该两种查 询性能。对于电网时序数据信息存储,通常设计上仅仅考虑到时间序列数据在物理磁盘上 位置相邻,该样虽然保证了按时间序列方式查询的效率,但是并不能解决时间截面查询场 景性能问题。经初步检索,暂未发现有解决上述问题的相关专利。


【发明内容】

[0004] 为了解决上述问题,实现在不影响写入性能的情况下同时兼顾时间序列查询及时 间截面查询场景下的查询效率,本发明提供了一种适用于截面访问模式的电网海量时序数 据存取方法,采用如下技术方案:
[0005] 根据电网时序数据特征,将一条时序数据记录格式表示为: <metric><timestamp><valueXtagkl = tagvl[tagk2 = tagv2*** tagkN = tagvN]>
[0006] 其中各项代表的含义:
[0007] Metric (量测项,比如温度,电压等);
[0008] Timestamp (时间戳,比如UNIX时间戳);
[0009] Value (量测值,比如64位整数或双精度浮点值);
[0010] Tags(-组标签,用于标识该个数据记录的一组标记,每个标签分别由标签 键(tagk)与标签值(tagv)组成,对于每一个电网时序数据记录,都会有一个标签键为 device,该标签键用来表示电网设备名称,比如device = myammeter,表示该电网设备为某 电流表)。
[0011] 据此,在系统中建立H张表,分别为化d表、Time-series时间序列数据表、 Time-point时间截面数据表,其模式设计(包括行键、列族W及列限定符设计)如下:
[0012] 化 d 表
[0013] 该表是time-series与time-point表的辅助表,任一量测项metric W及标签tag 在该表中有自己唯一的ID,即UID。Uid表用于管理UID,使用固定4个字节宽,作为时间序 列数据表W及截面数据表的外键联系使用。
[0014] 注册一个新UID会在该表里添加两行,一行是从Name映射到UID,另一行从UID映 射到Name。该里的Name可W是某量测项(metric)名称,也可W是某标签键(tagk)或者是 某标签值(tagv)。
[0015] 该表的意义在于将字符串类型的测量项名称W及标签键值名称都统一映射成固 定的4个字节数组中,该样一定程度上可W节省存储空间,另一方面便于对查询数据进行 解析。
[0016] Time-series时间序列数据表
[0017] 该表存储时间序列数据,用来支持按时间序列方式查询请求,比如:按照日期范 围和标签进行过滤的数据查询。其行键布局包含4字节的量测项UID、4字节的高序时 间戳和各4字节的标签名ID和标签值ID, row k巧格式为;<metric_uid〉<timestamp_ hi曲Xta址l_uidXtagvl_uid〉[…<tagkN_uidXtagvN_ui d>],列族名设为 t,列限定符由 时间戳低序位和掩码组成,掩码用于表示量测值数据类型及其存储占用字节个数。
[0018] 该表的意义在于将连续的时间段的时序数据在磁盘存储位置相邻,W便读写操作 时节省硬盘寻道时间,从而保证时间序列访问模式的效率。此外在写入过程中将该表中相 同rowkey下的多个列进行合并处理可W节省存储空间的同时进一步提高时间序列访问效 率。
[0019] Time-point时间截面数据表
[0020] 该表存储截面数据,用来支持按时间截面方式查询请求,比如按照时间点和 标签进行过滤的数据查询。其行键布局包含4字节的量测项UID、4字节的时间戳、 设备分组编号、各4字节标签名ID和标签值ID,row k巧格式可描述为;<metric_ uid><timestamp><groupID><tagkl_uid><tagvl_uid> [--? <tagkN_uid><tag vN_uid>],列 族名设为u,列限定符由某电网设备对应的UID和掩码组成,掩码用于表示量测值的数据类 型及其存储占用字节个数。其中groupID是对电网设备进行分组,该里W电网设备对应的 UID的前两位字节为分组编号,避免出现一行存在过多列情形。
[0021] 该表的意义在于将同一时间点来自不同电网设备的截面数据在底层物理磁盘上 位置相邻,W便读写操作时节省硬盘寻道时间,从而保证时间截面访问模式的效率,此外在 写入过程中将该表中相同rowkey下的多个列进行合并处理可W节省存储空间的同时进一 步提高截面访问模式效率。
[0022] 应用本发明方法的系统的架构如下:
[0023] 该系统将数据采集、数据存储和时序数据服务进程分开,其中数据存储基于分布 式列式数据库实现,时序数据服务进程用于处理与分布式列式数据库读写交互,并W简单 的HTTP接口对外提供查询服务;数据采集负责收集外部设备各种量测值,并传递数据给时 序数据服务进程,最终时序数据服务进程将数据存储到分布式列式数据库中。
[0024] 本发明方法的读写运行流程为:
[0025] 查询模式分为按时间序列查询与按时间截面查询两种,分别对时间序列数据表和 时间截面数据表进行查询操作,该个操作关键在于从分布式列式数据库中读取满足用户查 询条件的数据,所W首先需要确定行键范围,然后构造过滤器,最后执行扫描请求。
[0026] 写入一条电网时序数据记录需要分别写入时间序列数据表和时间截面数据表中, 该个操作的关键在于按照表的模式设计构造记录写入分布式列式数据库中。所W首先构造 行键,然后确定列族和列限定符W及存储单元的内容,将同属于相同rowkey的多个列进行 合并成一个列,最后执行写入请求。其中合并处理方法为:将若干个列中的列限定符字节数 组合并一个新列限定符字节数组,新的列限定符字节数组长度等于原先若干个列限定符数 组长度之和,存储单元合并方法与列限定符合并方法相同。
[0027] 本发明方法将电网时序数据分别存入时间序列数据表W及时间截面数据表中,使 得相同时间段的电网数据在物理磁盘位置相邻,另外,同一时间点不同电网设备的电网数 据在磁盘位置也相邻,该样可W保证按照时间序列W及按照时间截面该两种方式查询的效 率。

【专利附图】

【附图说明】
[0028] 图1是数据查询运行示意图。
[0029] 图2是数据写入运行示意图。

【具体实施方式】
[0030] 下面结合附图和实施例对本发明作进一步详细说明。
[0031] 本实施例W智能电表监控场景中传感器数据实例来描述本发明。
[0032] 根据前面描述电网时序数据特征,假设某条传感器数据记录如下:
[0033] electric_energy. forward_direction 1292148123476 device = myammeter device_type = ammeter.
[0034] 该里时间戳1292148123是按照UNIX格式描述的,其对应时刻为2010年12月12 日10:02:03,所W该条传感器数据记录表示;在2010年12月12日10:02:03该个时刻电 流表myammeter的正向有功电能量值为476。
[00巧]为了展示【具体实施方式】,该里W皿ase分布式列式数据库为例进行说明,首 先创建H张表,分别为Uid表、时间序列数据表(Time-series) W及时间截面数据表 (time-point),接下来围绕该条传感器数据实例展示一下具体的数据写入W及查询流程。 [003引 (1)数据写入
[0037] 写入整体流程如图2所示,首先在UID表中分别记录下name到UID映射W及UID 到name映射,该里name包括metric, tagk W及tagv。最终在Uid表中记录如表1所示:
[0038]

【权利要求】
1. 一种适用于截面访问模式的电网海量时序数据存取方法,其特征在于,根据电网时 序数据特征,将一条时序数据记录格式表示为: <metric><timestamp><value><tagkl = tagvl[tagk2 = tagv2***tagkN = tagvN]> ; 据此,在系统中建立三张表,分别为Uid表、Time-series时间序列数据表、Time-point 时间截面数据表,其模式设计为: Uid表:该表是time-series与time-point表的辅助表,任一量测项metric以及标签 tag在该Uid表中有自己唯一的ID,即WD,Uid表用于管理WD ;注册一个新UID会在该 Uid表里添加两行,一行是从Name映射到MD,另一行从MD映射到Name ; Time-series时间序列数据表:该表存储时间序列数据,用来支持按时间序列方式查 询请求,其行键布局包含量测项WD、高序时间戳、标签名ID和标签值ID,row key格式为: <metric_uid><timestamp_high><tagkl_uid><tagvl_uid>[--?<tagkN_uid><tagv N_ uid>],列族名设为t,列限定符由时间戳低序位和掩码组成,掩码用于表示量测值数据类型 及其存储占用字节个数; Time-point时间截面数据表:该表存储截面数据,用来支持按时间截面方式查询请 求,其行键布局包含量测项WD、时间戳、设备分组编号、标签名ID和标签值ID,row key格 式描述为: <me tr i c_uid>< times tamp >< group IDXtagkl_uid><tagvl_uid> [--? <tagkN_ uid>〈tagvN_uid>],列族名设为u,列限定符由某电网设备对应的UID和掩码组成,掩码用 于表示量测值的数据类型及其存储占用字节个数。
2. 根据权利要求1所述的方法,其特征是,所述时间截面数据表中groupID是对设备进 行分组,这里以电网设备对应的WD的前两位字节为分组编号。
【文档编号】G06F17/30GK104331432SQ201410567859
【公开日】2015年2月4日 申请日期:2014年10月22日 优先权日:2014年10月22日
【发明者】王远, 包建国, 袁军, 刘琛, 吴善新 申请人:江苏瑞中数据股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1