一种海量时序数据的存储方法技术

技术编号:9718861 阅读:196 留言:0更新日期:2014-02-27 05:39
一种海量时序数据的存储方法,属于数据管理技术领域。采用设计精简的HBase主键,并根据不同类型时序数据的存储及访问特性对时序数据分类并设计存储机制:对于实时数据、大周期数据以及无周期数据,采用简单行存储,即一条时序数据对应一条HBase行记录,通过简单行存储实现快速插入及检索数据;对于历史数据,采用把某一时段内的历史时序数据存储为HBase的一条行记录的段存储机制,通过段存储实现快速、高吞吐性能的历史数据数据检索数。优点在于,解决了具有实时访问性能的海量时序数据存储问题。

【技术实现步骤摘要】

本专利技术属于数据管理
,特别涉及。
技术介绍
时序数据是一种具有时间属性和值属性的数据。时序数据的时间属性也称为该时序数据的时间戳。以流程工业为例,包括化工、冶金、建筑、电力等等,存在着海量的时序数据。这些时序数据具体有:仪表的计量数据,生产计划数据,成本核算数据等。对于大型流程工业企业,一般有几十个分厂或车间,有几十万点级的仪表计量,一年产生的时序数据的规模在TB级。面对如此大规模的数据,许多企业在建设信息系统时采用分而治之的策略:每个分厂或车间拥有自己的数据存储系统,而企业层面存储的数据主要是汇总后的数据。在工业化与信息化深入融合的今天,许多企业要求进一步提高信息化水平,要求建立企业级的数据平台,即实现对企业各车间所有计量数据等时序数据的统一集中管理,并基于此解决当前车间级多个数据存储系统造成的数据孤岛、数出多源等问题,实现更好的生产管控。企业级的数据平台需要一个企业级数据存储系统。该存储系统需要具有良好地弹性可扩展能力,以支持日渐增大的数据存储规模,且具有快速访问性能,以满足数据报警、实时查询、曲线查看等实时应用需求。当前,在流程工业面临着海量数据时序存储管理的困境时,互联网公司也在面临着海量数据管理的难题。以Hadoop、HBase等为代表的大数据技术为海量数据管理提供了一种解决方案,并为当前淘宝、百度、搜狐等许多互联网公司采用。Hadoop提供了一种可靠、可伸缩的分布式文件系统,HBase是一种高性能、面向列存储的分布式数据存储系统。在专利《一种基于Hadoop+Hbase的农业时序数据组织方法》(专利申请号:201210107915.3)中,采用Hadoop和HBase技术来存储管理具有时间顺序的农业经济技术数据。
技术实现思路
本专利技术的目的是提供一种海量时序数据存储方法,以便建立具有海量时序数据存储能力以及实时访问能力的企业级数据存储系统。该方法采用Hadoop和HBase作为底层存储支撑技术,利用它们的高扩展性以支持海量时序数据高性能存储管理,通过设计精简的HBase主键以及设计段存储进一步提升时序数据的读、写速度。其中,段存储定义为把同一数据点在某一时间的时序数据存储到一起。本专利技术包括下列工艺步骤:(I)采用HBase集群来直接管理企业的时序数据,由HBase写数据到Hadoop分布式文件系统,最终由Hadoop归档数据到磁盘;外部用户通过访问HBase来读、写、删除时序数据。(2)企业的每个需要存储的时序数据点均具有唯一 Id,通过数据点Id可定位具体的数据点并获取数据点名称等信息,其中,Id为大于或等于O的长整型数据,这使得数据存储系统可以支持万亿级的数据点管理。(3)数据增加和数据修改均是数据写的一种特殊形式,在HBase中均通过Put操作完成,因此,在本专利技术中,把数据增加和数据修改均统一到数据写入操作。在数据写入时,每个数据点的一条或多条时序记录成为HBase数据表的一条行记录。行记录包括行键(rowkey)和值部分。HBase数据表通过行键区分行记录。合理的行键,可以起到数据索引作用,促成数据的快速检索。另外,对于海量数据,行键需要被存储上亿次,因此,行键也需要尽可能的短。为此,行键设计为比特串,具体为:数据点IdtoBytes+时间戳.toBytes,其中数据点Id在前,时间戳在后,它们一前一后的目的是为了把同一数据点的数据聚在一起,使得可以方便查询某一数据点在某一时段的数据。Id为长整型,最多占用8字节,且可以根据数据点Id的值大小来自动选取最短长度的比特流,例如小于256的Id只需用I个字节。时间戳精确到毫秒,也采用长整型表示,占用8个字节。因此,行键最多占用16字节。(4)具体哪个数据点的时序数据写入到哪张HBase数据表中,由平衡存储机制来控制。通过平衡存储,实现在数据访问时把网络I/o和磁盘I/O分布到集群中多个机器上,从而提高总的网络吞吐量和磁盘吞吐量。通过为每个数据点定义一个启发知识来实现平衡存储。在读、写某一数据点的数据时,可根据数据点的启发知识确定其HBase数据表。(5)按照是否周期性的有数据,把时序数据点分为两类:周期性的,即数据点每隔指定时间就有一条时序数据;无周期的,即该数据点数据流的时间戳是没有周期性规律的。按照周期数据点的周期大小,把周期性数据点分为小周期数据点和大周期数据点;其中,用于分类的周期阈值通过配置设定。按照数据新旧,把小周期性数据点的具体时序数据分为两类:历史数据,指时间戳在某一时刻之前的数据;实时数据,指除历史数据以外的数据。历史数据和实时数据的分割时刻实际也是实时数据起始时刻。用户在访问周期性数据点时,主要是访问某一时刻的实时数据,或者访问某一时段的历史数据。根据不同数据的存储及访问特性,设计存储机制如下:a.实时数据的每一条时序数据记录为HBase的一条行记录。行键中的时间戳选取为时序数据的时间戳,此时,行键已经包含了数据点Id和时序数据的时间戳,因此,行记录的值部分只需存储序列化为比特流的时序数据的值。实时数据直接写入到HBase实时数据表中。实时数据表提供数据实时读写功能。在读取某数据点在某一时刻的实时数据时,根据数据点Id及读取数据的时刻确定HBase记录的行键,并由此直接检索到数据,最后反序列化得到数据。b.对于历史数据数据,某一时段内的历史时序数据存储为HBase的一条行记录,行键的时间戳部分选取为时段的开始时间。通过增加一次IO的读取量,减少在读取时间区间数据时的IO次数。由于是周期数据,因此,当把时序数据做有序存储时,行记录的值部分就只需存储时序数据的值,而时间戳可以经过推算得到。因此,行记录的值部分设计为比特串,比特串中存放时序数据值序列化得到的比特流,并根据时序数据的时间戳及时段的开始时间确定时序数据值的存储位置。对于数据缺失的情况,在比特串的指定位置填充序列化为比特流的Double.NaN。其中,Double.NaN表示不是数字(NaN)的值,在java、C#等语言中均有支持。在写入某一历史时序数据时,先把那一时刻所在时段的段存储记录读出来,之后进行更新,最后再把段存储记录写回到历史数据表中。随着时间前进,实时数据表中的实时数据记录会慢慢地变为历史数据,我们需要把实时数据表中已变为历史数据的记录迁移到采用段存储的历史数据表中。相比面向某个数据点的某一具体时序数据的迁移,面向某个数据点某一时段所有时序数据的迁移是更高效的,因为可以通过确保相应段存储的时间区间完全覆盖,来构造新的段存储记录并写到历史数据表,从而避免读历史数据表段记录、更新段记录、再写回段记录的复杂操作。此时,实时数据表具有了数据缓冲的功能,可以通过周期性的遍历小周期数据点列表,计算、查找变为了历史数据的时序记录,并批量迁移查到的历史数据到历史数据表中。为此,具体定义实时数据起始时刻的计算公式为:实时数据的起始时刻=当前段存储的开始时刻-段存储的时间区间大小*n当前段存储的开始时刻=当前时刻-当前时刻%段存储的时间区间大小段存储的时间区间大小=存储周期*存储的数据点个数其中,η为大于O的整数;%为数学求模运算符。在读取某一数据点在某一时间区间的历史数据时,根据所要读取的时间区间确定所在的时段,并进而结合数据点Id本文档来自技高网
...

【技术保护点】
一种海量时序数据的存储方法,其特征在于:工艺步骤:(1)采用HBase集群来直接管理企业的时序数据,由HBase写数据到Hadoop分布式文件系统,最终由Hadoop归档数据到磁盘;外部用户通过访问HBase来读、写、删除时序数据;(2)企业的每个需要存储的时序数据点均具有唯一Id,通过数据点Id定位具体的数据点并获取数据点名称等信息,其中,Id为大于或等于0的长整型数据,这使得数据存储系统支持万亿级的数据点管理;(3)数据增加和数据修改均是数据写的一种特殊形式,在HBase中均通过Put操作完成,把数据增加和数据修改均统一到数据写入操作;在数据写入时,每个数据点的一条或多条时序记录成为HBase数据表的一条行记录;行记录包括行键rowkey和值部分;HBase数据表通过行键区分行记录;行键设计为比特串,具体为:数据点Id.toBytes+时间戳.toBytes,其中数据点Id在前,时间戳在后,它们一前一后把同一数据点的数据聚在一起,方便查询某一数据点在某一时段的数据;Id为长整型,最多占用8字节,且根据数据点Id的值大小来自动选取最短长度的比特流,小于256的Id只需用1个字节;时间戳精确到毫秒,也采用长整型表示,占用8个字节,行键最多占用16字节;(4)具体哪个数据点的时序数据写入到哪张HBase数据表中,由平衡存储机制来控制;通过平衡存储,实现在数据访问时把网络I/O和磁盘I/O分布到集群中多个机器上,提高总的网络吞吐量和磁盘吞吐量;通过为每个数据点定义一个启发知识来实现平衡存储;在读、写某一数据点的数据时,根据数据点的启发知识确定其HBase数据表;(5)按照是否周期性的有数据,把时序数据点分为两类:周期性的,即数据点每隔指定时间就有一条时序数据;无周期的,即该数据点数据流的时间戳是没有周期性规律的;按照周期数据点的周期大小,把周期性数据点分为小周期数据点和大周期数据点;其中,用于分类的周期阈值通过配置设定;按照数据新旧,把小周期性数据点的具体时序数据分为两类:历史数据,指时间戳在某一时刻之前的数据;实时数据,指除历史数据以外的数据。历史数据和实时数 据的分割时刻实际也是实时数据起始时刻。用户在访问周期性数据点时,主要是访问某一时刻的实时数据,或者访问某一时段的历史数据;实时数据起始时刻的计算公式为:实时数据的起始时刻=当前段存储的开始时刻–段存储的时间区间大小*n当前段存储的开始时刻=当前时刻–当前时刻%段存储的时间区间大小段存储的时间区间大小=存储周期*存储的数据点个数;其中,n为大于0的整数;%为数学求模运算符。...

【技术特征摘要】
1.一种海量时序数据的存储方法,其特征在于:工艺步骤:(1)采用HBase集群来直接管理企业的时序数据,由HBase写数据到Hadoop分布式文件系统,最终由Hadoop归档数据到磁盘;外部用户通过访问HBase来读、写、删除时序数据;(2)企业的每个需要存储的时序数据点均具有唯一Id,通过数据点Id定位具体的数据点并获取数据点名称等信息,其中,Id为大于或等于O的长整型数据,这使得数据存储系统支持万亿级的数据点管理;(3)数据增加和数据修改均是数据写的一种特殊形式,在HBase中均通过Put操作完成,把数据增加和数据修改均统一到数据写入操作;在数据写入时,每个数据点的一条或多条时序记录成为HBase数据表的一条行记录;行记录包括行键rowkey和值部分;HBase数据表通过行键区分行记录;行键设计为比特串,具体为:数据点Id.toBytes+时间戳.toBytes,其中数据点Id在前,时间戳在后,它们一前一后把同一数据点的数据聚在一起,方便查询某一数据点在某一时段的数据;Id为长整型,最多占用8字节,且根据数据点Id的值大小来自动选取最短长度的比特流,小于256的Id只需用I个字节;时间戳精确到毫秒,也采用长整型表示,占用8个字节,行键最多占用16字节;(4)具体哪个数据点的时序数据写入到哪张HBase数据表中,由平衡存储机制来控制;通过平衡存储,实现在数据访问时把网络I/O和磁盘I/O分布到集群中多个机器上,提高总的网络吞吐量和磁盘吞吐量;通过为每个数据点定义一个启发知识来实现平衡存储;在读、写某一数据点的数据时,根据数据点的启发知识确定其HBase数据表;(5)按照是否周期性的有数据, 把时序数据点分为两类:周期性的,即数据点每隔指定时间就有一条时序数据;无周期的,即该数据点数据流的时间戳是没有周期性规律的;按照周期数据点的周期大小,把周期性数据点分为小周期数据点和大周期数据点;其中,用于分类的周期阈值通过配置设定;按照数据新旧,把小周期性数据点的具体时序数据分为两类:历史数据,指时间戳在某一时刻之前的数据;实时数据,指除历史数据以外的数据。历史数据和实时数据的分割时刻实际也是实时数据起始时刻。用户在访问周期性数据点时,主要是访问某一时刻的实时数据,或者访...

【专利技术属性】
技术研发人员:朱寅李勇徐化岩于立业黄霜梅余志刚赵博贾天云梁青艳王丽娜
申请(专利权)人:冶金自动化研究设计院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1