公开/公告号CN107341198A
专利类型发明专利
公开/公告日2017-11-10
原文格式PDF
申请/专利权人 云南电网有限责任公司信息中心;昆明能讯科技有限责任公司;
申请/专利号CN201710466965.3
申请日2017-06-16
分类号G06F17/30(20060101);
代理机构53106 昆明大百科专利事务所;
代理人何健
地址 650206 云南省昆明市经济技术开发区云大西路105号云南电网有限责任公司信息中心
入库时间 2023-06-19 03:44:20
法律状态公告日
法律状态信息
法律状态
2020-05-12
授权
授权
2017-12-05
实质审查的生效 IPC(主分类):G06F17/30 申请日:20170616
实质审查的生效
2017-11-10
公开
公开
技术领域
本发明涉及电力海量数据存储查询领域,具体为一种基于主题实例的电力海量数据存储和查询方法。
背景技术
目前大部分电网企业用企业级关系数据库进行数据的集中存储。关系型数据库以及所采用的按行存储模式,能够进行多条件的查询,但支持的数据量规模较小,不能满足电网状态监测数据的海量存储需求;当存储的数据量较大时,查询性能下降明显,不能很好的适应状态监测大数据的准实时处理应用需求。
Hadoop提供了一个分布式的数据库系统HBase,HBase的目标是存储并处理海量数据,是建立在HDFS之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统,能够对海量数据提供随机、实时的读写访问。但是HBase介于nosql和RDBMS之间,仅能通过主键(RowKey)和主键的range来检索数据,仅支持单行事务。用户在使用电网设备状态监测系统时,通常需要利用多个条件对监测数据进行综合查询。因此如何采用统一的模型对电网海量数据进行高效、可靠地存储,并快速访问和分析,需要对HBase逻辑存储模式和查询方法进行有效的设计。
发明内容
本发明针对电力海量监测数据的存储查询需求,基于Oracle和HBase提出了一种新的基于主题实例的统一模型的电力海量数据的存储和查询方法,以支持电力海量监测数据的可靠存储和快速的多条件查询分析。
本发明的技术方案是:
一种基于主题实例的电力海量数据存储与查询方法,将电力海量数据分成静态数据和电网运行数据,将电网设备台账、设备技术参数、监测终端信息以及终端监测属性等静态数据以结构化的方式建立主题实例模型;将电网运行数据基于列式存储方案存储在HBase列式数据库中;
存储方法包括以下步骤:
步骤S200:先根据设备类型及其监测终端需要监测的属性建立属性基础标准库,主题类型库,主题类型与监测属性关联表,主题属性与终端项关联表,并固化到Oracle中;
步骤S201:接收监测终端传感器数据,数据包中包含了设备ID,监测终端ID,主题类型ID,监测属性ID和监测值;
步骤S202:实例化一个主题实例,将主题实例与电网设备台账关系维护到主题实例模型中,同时将主题实例与监测终端关系也维护到主题实例模型中;
步骤S203:通过MD5加密设备ID取前两位+主题实例ID+(Long.Max_Value-timestamp)作为HBase存储数据的行健RowKey;
步骤S204:建立一个列族f,以电网运行时的监测属性作为列,将电网运行时的监测数据存储在HBase列式数据表中;
查询方法的数据查询中包括过滤查询字段,过滤器生成规则,并根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器;从所述行键查询范围中获得预设返回条数的行键对应的数据;利用所述过滤器从所述行键查询范围内的行键中过滤出与所述行键过滤字段匹配的行键;包括利用所述过滤器对所述行键查询范围内的数据进行过滤,得到过滤数据;从所述过滤数据中提取预设返回条数的数据;
查询方法包括以下步骤:
步骤S300:提取查询参数,根据所述主题实例ID,监测属性ID以及HBase行健生成规则生成行健查询范围,以及列族,版本号和列信息;
步骤S301:根据所述过滤查询字段及其所述过滤器生成规则生成对应的过滤器;
步骤S302:调用HBase的数据访问接口,从与所述表名对应的表内查找所述行健查询范围或者行健以及监测属性ID,利用所述过滤器对应的行健查询范围内的数据进行过滤,并从所述行健查询范围中获取预设返回的条数的行健及其列族,列名对应的数据;
步骤S303:将所述预设返回条数的行健对应的数据映射为预设的格式,并将映射后的数据发送至客户端。
本发明存储方法中所述HBase包括行健、时间戳和列族,列族包括监测主题对应的所有监测属性。
本发明查询方法中,当用户使用设备ID或者终端设备编号和监测属性ID等条件进行数据查询时,主题实例模型提取查询参数,根据设备ID或者终端设备编号和监测属性ID找到该终端或者该设备对应的主题实例ID,根据所述主题实例ID,监测属性ID以及HBase行健生成规则生成行健查询范围,以及列族,版本号和列信息。
本发明在查询方法中,根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器之前,对所述过滤查询字段进行处理,以使所述过滤查询字段满足所述过滤器的生成要求。
本发明存储方法中,调用HBase的数据访问接口,从与所述列式数据表表名对应的表内查找所述行健查询范围或者行健以及监测属性ID,并从所述行健查询范围中获取预设返回的条数的行健及其列族,列名对应的数据。
本发明将所述预设返回条数的行健对应的数据映射为预设的格式,并将映射后的数据发送至客户端。
本发明基于电网结构化的静态数据创建主题实例模型,并将结构化静态数据固化到Oracle中,基于统一主题实例模型构建HBase实时监测数据存储方案,可以对海量的历史数据进行完整高效的查询和统计分析。
本发明的有益效果是,提供统一的模型对电网设备状态监测进行高效、可靠地存储,并快速访问和分析,降低开发成本,提高开发效率。
附图说明
图1为本发明系统提供的基于主题实例的电网海量数据存储流程图;
图2为本发明系统提供的基于主题实例的电网海量数据查询流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,一种基于主题实例的电力海量数据存储与查询方法,将电力海量数据分成静态数据和电网运行数据,将电网设备台账、设备技术参数、监测终端信息以及终端监测属性等静态数据以结构化的方式建立主题实例模型;将电网运行数据基于列式存储方案存储在HBase列式数据库中;
存储方法包括以下步骤:
步骤S200:先根据设备类型及其监测终端需要监测的属性建立属性基础标准库,主题类型库,主题类型与监测属性关联表,主题属性与终端项关联表,并固化到Oracle中;
步骤S201:接收监测终端传感器数据,数据包中包含了设备ID,监测终端ID,主题类型ID,监测属性ID和监测值;
步骤S202:实例化一个主题实例,将主题实例与电网设备台账关系维护到主题实例模型中,同时将主题实例与监测终端关系也维护到主题实例模型中;
步骤S203:通过MD5加密设备ID取前两位+主题实例ID+(Long.Max_Value-timestamp)作为HBase存储数据的行健RowKey;
步骤S204:建立一个列族f,以电网运行时的监测属性作为列,将电网运行时的监测数据存储在HBase列式数据表中;
查询方法的数据查询中包括过滤查询字段,过滤器生成规则,并根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器;从所述行键查询范围中获得预设返回条数的行键对应的数据;利用所述过滤器从所述行键查询范围内的行键中过滤出与所述行键过滤字段匹配的行键;包括利用所述过滤器对所述行键查询范围内的数据进行过滤,得到过滤数据;从所述过滤数据中提取预设返回条数的数据;
查询方法包括以下步骤:
步骤S300:提取查询参数,根据所述主题实例ID,监测属性ID以及HBase行健生成规则生成行健查询范围,以及列族,版本号和列信息;
步骤S301:根据所述过滤查询字段及其所述过滤器生成规则生成对应的过滤器;
步骤S302:调用HBase的数据访问接口,从与所述表名对应的表内查找所述行健查询范围或者行健以及监测属性ID,利用所述过滤器对应的行健查询范围内的数据进行过滤,并从所述行健查询范围中获取预设返回的条数的行健及其列族,列名对应的数据;
步骤S303:将所述预设返回条数的行健对应的数据映射为预设的格式,并将映射后的数据发送至客户端。
本发明存储方法中所述HBase包括行健、时间戳和列族,列族包括监测主题对应的所有监测属性。
本发明查询方法中,当用户使用设备ID或者终端设备编号和监测属性ID等条件进行数据查询时,主题实例模型提取查询参数,根据设备ID或者终端设备编号和监测属性ID找到该终端或者该设备对应的主题实例ID,根据所述主题实例ID,监测属性ID以及HBase行健生成规则生成行健查询范围,以及列族,版本号和列信息。
本发明在查询方法中,根据所述过滤查询字段以及所述过滤器生成规则生成对应的过滤器之前,对所述过滤查询字段进行处理,以使所述过滤查询字段满足所述过滤器的生成要求。
本发明存储方法中,调用HBase的数据访问接口,从与所述列式数据表表名对应的表内查找所述行健查询范围或者行健以及监测属性ID,并从所述行健查询范围中获取预设返回的条数的行健及其列族,列名对应的数据。
本发明将所述预设返回条数的行健对应的数据映射为预设的格式,并将映射后的数据发送至客户端。
电网监测数据在HBase数据库中以表的形式存储数据,行健,列族,列,时间戳。行健(RowKey)是用来检索一行记录的主键,是行的唯一标识,在HBase内部,RowKey保存为字节数组,存储时,数据按照RowKey的字典顺序排序存储。时间戳,默认由系统指定,用户也可以显示设置。不同的时间戳用来区分不同的版本,时间戳一般按照版本从新到旧的顺序进行排列,在数据读取的时候优先读取最新版本。
举例而言,表1为一个可视化的HBase表。
其中,f2101101144578984543和c7101101144576514530为两个行键,行健f2101101144578984543包含列co2,co,h2,c2h4等;行健c7101101144576514530包含co2,co,这里只是举例,所以没有一一列出所有行健,列族,列及其时间戳。
机译: 基于实体提及过滤器和搜索工具的基于主题的特定于源的搜索系统的查询方法
机译: 基于关键术语群的基于主题的特定于源的搜索系统的查询方法
机译: 一种显示文学中基于关键词的主题的各种主题的方法及主题或关键词的选择方法