CN104331432A - 一种适用于截面访问模式的电网海量时序数据存取方法 - Google Patents
一种适用于截面访问模式的电网海量时序数据存取方法 Download PDFInfo
- Publication number
- CN104331432A CN104331432A CN201410567859.0A CN201410567859A CN104331432A CN 104331432 A CN104331432 A CN 104331432A CN 201410567859 A CN201410567859 A CN 201410567859A CN 104331432 A CN104331432 A CN 104331432A
- Authority
- CN
- China
- Prior art keywords
- uid
- time
- data
- section
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种适用于截面访问模式的电网海量时序数据存取方法,以实现在不影响写入性能的情况下同时兼顾时间序列查询及时间截面查询场景下的查询效率。本发明在***中建立三张表,分别为Uid表、Time-series时间序列数据表、Time-point时间截面数据表,将电网时序数据分别存入时间序列数据表以及时间截面数据表中,使得相同时间段的电网数据在物理磁盘位置相邻,另外,同一时间点不同电网设备的电网数据在磁盘位置也相邻,这样可以保证按照时间序列以及按照时间截面这两种方式查询的效率。
Description
技术领域
本发明涉及一种数据存取方法,属于海量数据处理、新型数据库技术领域,特别适用于智能电网领域中海量时序数据实时处理的场景。
背景技术
随着智能电网的不断发展,数据处理规模日益海量,已经出现了数千万乃至上亿数据采集规模的应用需求。以电力***为例,一方面是测点规模越来越大,预计将达到千万级甚至亿级以上;另一方面是历史时序数据量规模越来越大,预计将达到PB字节以上。海量信息存储的方法很多,Oracle和EMC提供了存储***及硬件,比较经典的是RAC(Real Application Cluster),RAC已经在工业和信息界得到广泛应用。然而这些数据库都是基于关系和对象模型的,对复杂数据存储有较好的表现,但是存储代价以及***消耗比较大。电网时序数据类型单一,是按时间分布的单列数据,而分布式列式数据库技术在处理电网时序数据这种单列类型数据上比关系数据库有更好的效率,能够处理大量的并发数据操作的同时满足电网时序数据实时性要求。因此引入分布式列式数据库技术是当前解决电网海量时序数据实时处理的有效方法。
构建电网时序数据的分布式列式数据库***的设计关键在于模式设计,模式设计的好坏直接影响该***的***与查询性能。模式设计的出发点是访问模式,根据电网时序数据特征,对其访问模式可归纳为按时间序列方式查询与按时间截面方式查询两种。合理的模式设计应该做到不影响写入性能的同时兼顾时间序列方式与时间截面方式这两种查询性能。对于电网时序数据信息存储,通常设计上仅仅考虑到时间序列数据在物理磁盘上位置相邻,这样虽然保证了按时间序列方式查询的效率,但是并不能解决时间截面查询场景性能问题。经初步检索,暂未发现有解决上述问题的相关专利。
发明内容
为了解决上述问题,实现在不影响写入性能的情况下同时兼顾时间序列查询及时间截面查询场景下的查询效率,本发明提供了一种适用于截面访问模式的电网海量时序数据存取方法,采用如下技术方案:
根据电网时序数据特征,将一条时序数据记录格式表示为:<metric><timestamp><value><tagk1=tagv1[tagk2=tagv2…tagkN=tagvN]>
其中各项代表的含义:
Metric(量测项,比如温度,电压等);
Timestamp(时间戳,比如UNIX时间戳);
Value(量测值,比如64位整数或双精度浮点值);
Tags(一组标签,用于标识这个数据记录的一组标记,每个标签分别由标签键(tagk)与标签值(tagv)组成,对于每一个电网时序数据记录,都会有一个标签键为device,该标签键用来表示电网设备名称,比如device=myammeter,表示该电网设备为某电流表)。
据此,在***中建立三张表,分别为Uid表、Time-series时间序列数据表、Time-point时间截面数据表,其模式设计(包括行键、列族以及列限定符设计)如下:
Uid表
该表是time-series与time-point表的辅助表,任一量测项metric以及标签tag在该表中有自己唯一的ID,即UID。Uid表用于管理UID,使用固定4个字节宽,作为时间序列数据表以及截面数据表的外键联系使用。
注册一个新UID会在该表里添加两行,一行是从Name映射到UID,另一行从UID映射到Name。这里的Name可以是某量测项(metric)名称,也可以是某标签键(tagk)或者是某标签值(tagv)。
该表的意义在于将字符串类型的测量项名称以及标签键值名称都统一映射成固定的4个字节数组中,这样一定程度上可以节省存储空间,另一方面便于对查询数据进行解析。
Time-series时间序列数据表
该表存储时间序列数据,用来支持按时间序列方式查询请求,比如:按照日期范围和标签进行过滤的数据查询。其行键布局包含4字节的量测项UID、4字节的高序时间戳和各4字节的标签名ID和标签值ID,row key格式为:<metric_uid><timestamp_high><tagk1_uid><tagv1_uid>[…<tagkN_uid><tagvN_uid>],列族名设为t,列限定符由时间戳低序位和掩码组成,掩码用于表示量测值数据类型及其存储占用字节个数。
该表的意义在于将连续的时间段的时序数据在磁盘存储位置相邻,以便读写操作时节省硬盘寻道时间,从而保证时间序列访问模式的效率。此外在写入过程中将该表中相同rowkey下的多个列进行合并处理可以节省存储空间的同时进一步提高时间序列访问效率。
Time-point时间截面数据表
该表存储截面数据,用来支持按时间截面方式查询请求,比如按照时间点和标签进行过滤的数据查询。其行键布局包含4字节的量测项UID、4字节的时间戳、设备分组编号、各4字节标签名ID和标签值ID,row key格式可描述为:<metric_uid><timestamp><groupID><tagk1_uid><tagv1_uid>[…<tagkN_uid><tagvN_uid>],列族名设为u,列限定符由某电网设备对应的UID和掩码组成,掩码用于表示量测值的数据类型及其存储占用字节个数。其中groupID是对电网设备进行分组,这里以电网设备对应的UID的前两位字节为分组编号,避免出现一行存在过多列情形。
该表的意义在于将同一时间点来自不同电网设备的截面数据在底层物理磁盘上位置相邻,以便读写操作时节省硬盘寻道时间,从而保证时间截面访问模式的效率,此外在写入过程中将该表中相同rowkey下的多个列进行合并处理可以节省存储空间的同时进一步提高截面访问模式效率。
应用本发明方法的***的架构如下:
该***将数据采集、数据存储和时序数据服务进程分开,其中数据存储基于分布式列式数据库实现,时序数据服务进程用于处理与分布式列式数据库读写交互,并以简单的HTTP接口对外提供查询服务;数据采集负责收集外部设备各种量测值,并传递数据给时序数据服务进程,最终时序数据服务进程将数据存储到分布式列式数据库中。
本发明方法的读写运行流程为:
查询模式分为按时间序列查询与按时间截面查询两种,分别对时间序列数据表和时间截面数据表进行查询操作,这个操作关键在于从分布式列式数据库中读取满足用户查询条件的数据,所以首先需要确定行键范围,然后构造过滤器,最后执行扫描请求。
写入一条电网时序数据记录需要分别写入时间序列数据表和时间截面数据表中,这个操作的关键在于按照表的模式设计构造记录写入分布式列式数据库中。所以首先构造行键,然后确定列族和列限定符以及存储单元的内容,将同属于相同rowkey的多个列进行合并成一个列,最后执行写入请求。其中合并处理方法为:将若干个列中的列限定符字节数组合并一个新列限定符字节数组,新的列限定符字节数组长度等于原先若干个列限定符数组长度之和,存储单元合并方法与列限定符合并方法相同。
本发明方法将电网时序数据分别存入时间序列数据表以及时间截面数据表中,使得相同时间段的电网数据在物理磁盘位置相邻,另外,同一时间点不同电网设备的电网数据在磁盘位置也相邻,这样可以保证按照时间序列以及按照时间截面这两种方式查询的效率。
附图说明
图1是数据查询运行示意图。
图2是数据写入运行示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细说明。
本实施例以智能电表监控场景中传感器数据实例来描述本发明。
根据前面描述电网时序数据特征,假设某条传感器数据记录如下:
electric_energy.forward_direction 1292148123476 device=myammeterdevice_type=ammeter.
这里时间戳1292148123是按照UNIX格式描述的,其对应时刻为2010年12月12日10:02:03,所以该条传感器数据记录表示:在2010年12月12日10:02:03这个时刻电流表myammeter的正向有功电能量值为476。
为了展示具体实施方式,这里以HBase分布式列式数据库为例进行说明,首先创建三张表,分别为Uid表、时间序列数据表(Time-series)以及时间截面数据表(time-point),接下来围绕该条传感器数据实例展示一下具体的数据写入以及查询流程。
(1)数据写入
写入整体流程如图2所示,首先在UID表中分别记录下name到UID映射以及UID到name映射,这里name包括metric,tagk以及tagv。最终在uid表中记录如表1所示:
表1某条电网传感器数据记录在Uid表中存储示意
这里UID生成方式为metric,tagk以及tagv各自从计数\x00\x00\x00\x01开始依次递增。
接下来将该条传感数据记录在时间序列数据表中,这个过程关键是构造rowkey,时间序列数据表的rowkey格式为:
<metric_uid><timestamp_high><tagk1_uid><tagv1_uid>[…<tagkN_uid><tagvN_uid>],这里metric以及tag对应的UID在前面UID表中都可以确定。这里说明一下高序时间戳timestamp_high计算方法,比如这里时间戳1292148123,将该值四舍五入到最近的小时数并且分割成1292148000和123。那么timestamp_high为1292148000,其对应4位字节数组可表示为\x4d\x04\x9d\x20,而低序时间戳timestamp_low为123,其对应2位字节数组可表示为\x00\x7b。最终该数据记录在时间序列数据表中记录存储如表2所示:
表2某条电网传感器数据记录在Time-series时间序列数据表中存储示意
最后将该条数据记录在时间截面数据表中,这个过程的关键依然是构造rowkey,时间截面数据表rowkey格式为:
<metric_uid><timestamp><groupID><tagk1_uid><tagv1_uid>[…<tagkN_uid><tagvN_uid>],这里metric以及tag对应的UID在前面UID表中都可以确定,至于时间戳timastamp为1292148123,其对应4位字节数组可表示为\x4d\x04\x9d\x9b。最终该条数据记录在时间截面数据表中记录存储如表3所示:
表3某条电网传感器数据记录在Time-point时间截面数据表存储示意
(2)数据查询
查询整体流程如图1所示,数据查询分为两种类型:查询时间序列数据和查询时间截面数据,前者从时间序列数据表中读取,后者从时间截面数据表中读取。
两者读取数据的步骤顺序相同,分别是:确定行键范围,再定义适当的过滤器以及最后执行扫描。下面分别以时间序列数据查询和时间截面查询场景为例进行说明。
对于时间序列数据查询场景,假设如下:查询电表设备为myammeter的正向有功电能量在T1时刻(UNIX时间戳1292148000,对应4位字节数组为\x4d\x04\x9d\x20)到T2时刻(UNIX时间戳1292166000,对应4位字节数组为\x4d\x04\xe3\x70)时间段内变化情况。首先确定行键范围,其中start key可设置为\x00\x00\x00\x05\x4d\x04\x9d\x20,end key可设置为x00\x00\x00\x05\x4d\x04\xe3\x70;接下来定义过滤器,过滤器由给定的标签来定义,对于这里查询条件中已经指定了电表设备为myammeter,即device=myammeter,此时可以利用正则表达式来对HBase的行键构造一个过滤器,通过过滤器可以得到符合用户查询条件的记录;最后对时间序列数据表进行扫描获取查询结果。
对于时间截面数据查询场景,假设如下:查询在T时刻(UNIX时间戳1292148123,其对应4位字节数组为\x4d\x04\x9d\x9b)的所有设备类型为ammeter的正向有功电能量。首先确定行键范围,行键可设置为\x00\x00\x00\x05\x4d\x04\x9d\x9b;接下来定义过滤器,过滤器由给定标签定义,对于这里查询条件中已经指定了设备类型为ammeter,即device_type=ammeter,此时可以利用正则表达式来对HBase的行键构造一个过滤器,通过过滤器可以得到符合用户查询条件的记录;最后对时间截面数据表进行扫描获取查询结果。
上述实施方式中所涉及到的技术特征,只要彼此间未构成冲突就可以相互组合。本发明不限于上述实施例,一切采用等同替换或等效替换形成的技术方案均属于本发明要求保护的范围。
Claims (2)
1.一种适用于截面访问模式的电网海量时序数据存取方法,其特征在于,根据电网时序数据特征,将一条时序数据记录格式表示为:
<metric><timestamp><value><tagk1=tagv1[tagk2=tagv2…tagkN=tagvN]>;
据此,在***中建立三张表,分别为Uid表、Time-series时间序列数据表、Time-point时间截面数据表,其模式设计为:
Uid表:该表是time-series与time-point表的辅助表,任一量测项metric以及标签tag在该Uid表中有自己唯一的ID,即UID,Uid表用于管理UID;注册一个新UID会在该Uid表里添加两行,一行是从Name映射到UID,另一行从UID映射到Name;
Time-series时间序列数据表:该表存储时间序列数据,用来支持按时间序列方式查询请求,其行键布局包含量测项UID、高序时间戳、标签名ID和标签值ID,row key格式为:
<metric_uid><timestamp_high><tagk1_uid><tagv1_uid>[…<tagkN_uid><tagvN_uid>],列族名设为t,列限定符由时间戳低序位和掩码组成,掩码用于表示量测值数据类型及其存储占用字节个数;
Time-point时间截面数据表:该表存储截面数据,用来支持按时间截面方式查询请求,其行键布局包含量测项UID、时间戳、设备分组编号、标签名ID和标签值ID,row key格式描述为:
<metric_uid><timestamp><groupID><tagk1_uid><tagv1_uid>[…<tagkN_uid><tagvN_uid>],列族名设为u,列限定符由某电网设备对应的UID和掩码组成,掩码用于表示量测值的数据类型及其存储占用字节个数。
2.根据权利要求1所述的方法,其特征是,所述时间截面数据表中groupID是对设备进行分组,这里以电网设备对应的UID的前两位字节为分组编号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410567859.0A CN104331432A (zh) | 2014-10-22 | 2014-10-22 | 一种适用于截面访问模式的电网海量时序数据存取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410567859.0A CN104331432A (zh) | 2014-10-22 | 2014-10-22 | 一种适用于截面访问模式的电网海量时序数据存取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104331432A true CN104331432A (zh) | 2015-02-04 |
Family
ID=52406159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410567859.0A Pending CN104331432A (zh) | 2014-10-22 | 2014-10-22 | 一种适用于截面访问模式的电网海量时序数据存取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104331432A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503276A (zh) * | 2017-01-06 | 2017-03-15 | 山东浪潮云服务信息科技有限公司 | 一种用于实时监控***的时间序列数据库的方法与装置 |
CN108052551A (zh) * | 2017-11-28 | 2018-05-18 | 北京航天云路有限公司 | 一种在redis上实现的存储大量时序数据的方法 |
CN108062378A (zh) * | 2017-12-12 | 2018-05-22 | 清华大学 | 一种列式存储下多时间序列的连接查询方法及*** |
CN108596344A (zh) * | 2018-04-17 | 2018-09-28 | 惠州学院 | 一种基于大数据的复杂面板数据学习方法 |
CN108614836A (zh) * | 2016-12-13 | 2018-10-02 | 上海仪电(集团)有限公司中央研究院 | 一种基于Hbase的时空数据管理方法 |
CN108647243A (zh) * | 2018-04-13 | 2018-10-12 | 中国神华能源股份有限公司 | 基于时间序列的工业大数据存储方法 |
CN109412737A (zh) * | 2018-11-26 | 2019-03-01 | 深圳航天工业技术研究院有限公司 | 数据采集***的控制方法、数据采集***及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120066514A1 (en) * | 2000-02-03 | 2012-03-15 | Integrated Information Solutions | Digital identity device |
CN103390045A (zh) * | 2013-07-19 | 2013-11-13 | 北京京东尚科信息技术有限公司 | 一种用于监控***的时间序列存储方法及装置 |
CN103400046A (zh) * | 2013-08-19 | 2013-11-20 | 武汉大学 | 适用于电网广域监测***的数据建模方法及应用 |
CN104035956A (zh) * | 2014-04-11 | 2014-09-10 | 江苏瑞中数据股份有限公司 | 一种基于分布式列存储的时间序列数据存储方法 |
-
2014
- 2014-10-22 CN CN201410567859.0A patent/CN104331432A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120066514A1 (en) * | 2000-02-03 | 2012-03-15 | Integrated Information Solutions | Digital identity device |
CN103390045A (zh) * | 2013-07-19 | 2013-11-13 | 北京京东尚科信息技术有限公司 | 一种用于监控***的时间序列存储方法及装置 |
CN103400046A (zh) * | 2013-08-19 | 2013-11-20 | 武汉大学 | 适用于电网广域监测***的数据建模方法及应用 |
CN104035956A (zh) * | 2014-04-11 | 2014-09-10 | 江苏瑞中数据股份有限公司 | 一种基于分布式列存储的时间序列数据存储方法 |
Non-Patent Citations (3)
Title |
---|
BIKASH AGRAWAL: "Analysis of large time-series data in OpenTSDB", 《FACULTY OF SCIENCE AND TECHNOLOGY UNIVERSITY OF STAVANGER》 * |
李庆华: "《计量经济学》", 1 February 2005 * |
赵家庆等: "电网调度自动化主备***间模型正确性校验技术方案", 《电力***保护与控制》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614836A (zh) * | 2016-12-13 | 2018-10-02 | 上海仪电(集团)有限公司中央研究院 | 一种基于Hbase的时空数据管理方法 |
CN106503276A (zh) * | 2017-01-06 | 2017-03-15 | 山东浪潮云服务信息科技有限公司 | 一种用于实时监控***的时间序列数据库的方法与装置 |
CN108052551A (zh) * | 2017-11-28 | 2018-05-18 | 北京航天云路有限公司 | 一种在redis上实现的存储大量时序数据的方法 |
CN108062378A (zh) * | 2017-12-12 | 2018-05-22 | 清华大学 | 一种列式存储下多时间序列的连接查询方法及*** |
CN108062378B (zh) * | 2017-12-12 | 2018-12-11 | 清华大学 | 一种列式存储下多时间序列的连接查询方法及*** |
CN108647243A (zh) * | 2018-04-13 | 2018-10-12 | 中国神华能源股份有限公司 | 基于时间序列的工业大数据存储方法 |
CN108647243B (zh) * | 2018-04-13 | 2021-11-23 | 中国神华能源股份有限公司 | 基于时间序列的工业大数据存储方法 |
CN108596344A (zh) * | 2018-04-17 | 2018-09-28 | 惠州学院 | 一种基于大数据的复杂面板数据学习方法 |
CN108596344B (zh) * | 2018-04-17 | 2022-03-25 | 惠州学院 | 一种基于大数据的复杂面板数据学习方法 |
CN109412737A (zh) * | 2018-11-26 | 2019-03-01 | 深圳航天工业技术研究院有限公司 | 数据采集***的控制方法、数据采集***及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104331432A (zh) | 一种适用于截面访问模式的电网海量时序数据存取方法 | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和*** | |
CN104516894B (zh) | 用于管理时间序列数据库的方法和装置 | |
EP2263180B1 (en) | Indexing large-scale gps tracks | |
CN106933833B (zh) | 一种基于空间索引技术的位置信息快速查询方法 | |
CN104252536B (zh) | 一种基于hbase的上网日志数据查询方法及装置 | |
Han et al. | Hgrid: A data model for large geospatial data sets in hbase | |
US20140122022A1 (en) | Processing time series data from multiple sensors | |
CN105404634B (zh) | 基于Key-Value数据块的数据管理方法及*** | |
CN103116610A (zh) | 基于HBase的矢量空间大数据存储方法 | |
CN105488043A (zh) | 基于Key-Value数据块的数据查询方法及*** | |
CN102375853A (zh) | 分布式数据库***、在其中建立索引的方法和查询方法 | |
CN103617232A (zh) | 一种针对HBase表的分页查询方法 | |
Ma et al. | KSQ: Top-k similarity query on uncertain trajectories | |
CN102446184B (zh) | 一种基于时间序列的工业数据存储及索引方法 | |
CN106503276A (zh) | 一种用于实时监控***的时间序列数据库的方法与装置 | |
CN103116595B (zh) | 面向电网的scada历史数据分布式存储的实现方法 | |
CN103488704A (zh) | 一种数据存储方法及装置 | |
CN110825733B (zh) | 一种面向多采样流的时间序列数据管理方法及*** | |
CN102902797A (zh) | 一种大数据量设备实时监测数据的存储及检索方法 | |
CN103177094A (zh) | 一种物联网数据清洗方法 | |
Jonathan et al. | GARNET: A holistic system approach for trending queries in microblogs | |
CN104112011A (zh) | 一种海量数据提取的方法及装置 | |
CN112783901A (zh) | 一种基于物联网中间件的物联网时序大数据处理方法 | |
Zhang et al. | Improving NoSQL storage schema based on Z-curve for spatial vector data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150204 |
|
RJ01 | Rejection of invention patent application after publication |