[发明专利]一种海量时序数据的存储方法有效
申请号: | 201310659810.3 | 申请日: | 2013-12-09 |
公开(公告)号: | CN103605805B | 公开(公告)日: | 2016-10-26 |
发明(设计)人: | 朱寅;李勇;徐化岩;于立业;黄霜梅;余志刚;赵博;贾天云;梁青艳;王丽娜 | 申请(专利权)人: | 冶金自动化研究设计院 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京华谊知识产权代理有限公司 11207 | 代理人: | 刘月娥 |
地址: | 100071 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 海量 时序 数据 存储 方法 | ||
1.一种海量时序数据的存储方法,其特征在于:工艺步骤:
(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的整数;%为数学求模运算符。
2.根据权利要求1所述的方法,其特征在于:根据不同数据的存储及访问特性,设计存储机制如下:
a.实时数据的每一条时序数据记录为HBase的一条行记录,行键中的时间戳选取为时序数据的时间戳,此时,行键已经包含了数据点Id和时序数据的时间戳,行记录的值部分只需存储序列化为比特流的时序数据的值;
实时数据直接写入到HBase实时数据表中,实时数据表提供数据实时读写功能;在读取某数据点在某一时刻的实时数据时,根据数据点Id及读取数据的时刻确定HBase记录的行键,并由此直接检索到数据,最后反序列化得到数据;
b.对于历史数据数据,某一时段内的历史时序数据存储为HBase的一条行记录,行键的时间戳部分选取为时段的开始时间,通过增加一次IO的读取量,减少在读取时间区间数据时的IO次数;由于是周期数据,当把时序数据做有序存储时,行记录的值部分就只需存储时序数据的值,而时间戳;经过推算得到;因此,行记录的值部分设计为比特串,比特串中存放时序数据值序列化得到的比特流,并根据时序数据的时间戳及时段的开始时间确定时序数据值的存储位置;对于数据缺失的情况,在比特串的指定位置填充序列化为比特流的Double.NaN;其中,Double.NaN表示不是数字(NaN)的值,在java、C#语言中均有支持;
在写入某一历史时序数据时,先把那一时刻所在时段的段存储记录读出来,之后进行更新,最后再把段存储记录写回到历史数据表中;随着时间前进,实时数据表中的实时数据记录会慢慢地变为历史数据,需要把实时数据表中已变为历史数据的记录迁移到采用段存储的历史数据表中;通过确保相应段存储的时间区间完全覆盖,来构造新的段存储记录并写到历史数据表,从而避免读历史数据表段记录、更新段记录、再写回段记录的复杂操作;实时数据表具有了数据缓冲的功能,通过周期性的遍历小周期数据点列表,计算、查找变为了历史数据的时序记录,并批量迁移查到的历史数据到历史数据表中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于冶金自动化研究设计院,未经冶金自动化研究设计院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310659810.3/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置