一种多源时间序列数据压缩存储方法技术

技术编号:10206539 阅读:151 留言:0更新日期:2014-07-12 07:51
本发明专利技术公开了一种多源时间序列数据压缩存储方法,包含以下步骤:对各部署对象分组;将各部署对象组划分内部组;在内存中为每个内部组分配一个用于缓存的内存文件;在收到某量测点的时间序列数据时,进行第一级有损压缩,并根据该量测点所属的部署对象组和内部组,找到其对应的内存文件,将压缩后的数据缓存到内存文件中;在内存文件写满或达到预设的时间限制时,将内存文件映射到硬盘,进行第二级无损压缩,将压缩后的数据块存储到关系型数据库中。使得数据缓存时能够快速找到对应的内存文件,并快速定位存储位置,提高了缓存效率;采用分块压缩方式,提高了压缩效率,并且有效地节约了硬盘容量;而且,通过关系型数据库,提高了数据读取速度。

【技术实现步骤摘要】
一种多源时间序列数据压缩存储方法
本专利技术涉及一种数据压缩存储方法,尤其涉及一种多源时间序列数据压缩存储方法。
技术介绍
对于电力、石油和连锁经营等大型企业,其分站或经营场所分布在全国、甚至全球各地,它们的每个分站或经营场所又包含许多的量测点,这些大型企业的数据中心,随时随刻都要对这些量测点产生的数据进行存储,需要的时候,还要从存储的众多数据中读取所需的数据。而这些工业数据有一个共同点:数据量比较大、数据来源比较广泛。通常,工业数据是各个量测点一段连续的量,其存储的数据都带有时间戳。工业数据具有明显的时间特性,其结构可以用VQT(Value、Quality、Timestamp,数据值、质量码、时间戳)来表示。同时工业数据是不断产生的,从而具有海量数据、以及来源广泛的特点。针对这些特点,怎样更快速地对数据进行存储,而且有效地利用存储空间是需要亟待解决的问题。在实时数据库中,索引策略决定数据库快速定位数据的效率,索引可以提高数据存储和查询的效率。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。高效的索引不仅取决于索引策略,还取决于数据的存储方式,以及待存储的数据的特性。对于数量大、来源范围广的工业数据,采用通用的存储和索引方式存在以下问题:由于工业数据是随着时间推移逐渐产生、进行存储的,即不同的数据源(量测点)均是陆续不规律地生成数据;传统的存储方式一般都是预先为每个量测点分配一较大的存储空间,在收到属于该量测点的数据时,将其存到对应空间。然而这种数据存储方式所需预留的存储空间极大,而每个量测点的数据量是不可预测的,在部分量测点没有数据需要存储、或存储数据比较少时,会造成存储空间的很大浪费。并且,在量测点的数量是成千上万、甚至更多的情况下,采用这种存储方式,所需要的索引时间依然较多,需要进一步改进。为了节省存储空间提高存储效率,现有技术还会通过数据压缩和自定义存储结构的方式来提高存储效率,从而提高系统整体处理速度及性能。对实时数据库而言,数据压缩可以带来两方面的好处:一是,占用硬盘容量减小;二是,系统整体处理速度提高。目前,很多实时数据库的存储方案大多采用二级压缩技术。通常的具体做法是第一级采用有损压缩,如PI中使用的旋转门压缩算法,IH中使用的死区压缩算法;第二级采用无损压缩,针对具体的量测点数据项(VQT),对相邻的数据项之间的值(Value)、质量码(Quality)、时间戳(Timestamp)采用适当降低数据精度以及编码压缩等方法。在实际系统中,这类方法也存在制约因素,如压缩、解压的难度和时间消耗,数据压缩率与数据量大小有一定关系,即在一定量范围内,压缩率顺着数据量的增大而迅速增大,超过一定范围后,压缩率增大不明显。另外,由于上述方法常结合自定义格式的文件来实现自定义结构的存储,自定义存储结构虽然能够提高存储速度降低存储空间,但其查询速度通常要比传统的关系型数据库慢,在一定程度上限制了数据读取的速度。
技术实现思路
本专利技术主要解决的技术问题是提供一种多源时间序列数据压缩存储方法,使得提高了数据压缩存储过程中的缓存效率和压缩效率,从而提高了数据整体存储效率,并且有效地节约了硬盘容量,加快了数据查询速度。为了解决上述技术问题,本专利技术提供了一种多源时间序列数据压缩存储方法,多源时间序列数据来自不同部署对象的不同量测点,包含以下步骤:根据各部署对象所包含的量测点数量,对各部署对象分组,将所包含量测点数量总和小于预设值的至少两个部署对象分为一组,将其余的每个部署对象分别分为一组;对各部署对象组进行组内划分,以预设值为界限,每达到预设值数量的量测点划分为一内部组,对应一组内标识,其余不足预设值数量的量测点划分为一内部组;在内存中为每个部署对象组中的每个内部组分配一个用于缓存的内存文件,并进行内存镜像处理;在收到来自一部署对象辖下量测点的时间序列数据时,对该数据进行第一级有损压缩,并根据该量测点所属的部署对象组和内部组,找到该量测点对应的内存文件,将该压缩后的时间序列数据缓存到该内存文件中;在内存文件写满或达到预设的时间限制时,对该内存文件进行第二级无损压缩,将压缩后的数据块存储到关系型数据库中。作为进一步改进,第二级无损压缩为LZW压缩;和/或内存文件对应的存储空间为512K至2M之间;和/或预设的时间限制为30分钟。作为进一步改进,内存文件的文件体由固定大小、连续的数据片组成,包含索引区和数据区,索引区中保存每个量测点在该内存文件中存储位置的索引,数据区中各连续的数据片对应不同的量测点,单个数据片保存同一量测点的数据。作为进一步改进,将压缩后的时间序列数据缓存到内存文件中的步骤中,包含以下子步骤:根据该数据所属量测点的本地标识找到该量测点对应的存储位置索引,如果该索引表示当前未在数据区中为该量测点分配数据片、或所分配的数据片已存满,则在数据区中为该量测点分配一空白数据片,所分配的数据片与该数据区中已分配的数据片连续,将量测点数据存储在该新分配的数据片中;反之,则将量测点的数据存储在该索引指示的数据片的相应位置;如果在存储过程中,当前数据片已存满,则为该量测点新分配一数据片进行存储,所分配的数据片与该数据区中已分配的数据片连续。作为进一步改进,该方法还包含以下步骤:在接收到来自部署对象辖下量测点的时间序列数据之前,在内存文件的数据区中为该内存文件对应的内部组的所有量测点预分配一数据片进行数据缓存,在索引区中保存各量测点对应的数据片的位置;或者在初次收到一量测点数据时,在内存文件数据区中为该量测点分配一数据片进行数据缓存,在索引区中保存该量测点对应的数据片的位置。作为进一步改进,该方法还包含以下步骤:为每个部署对象组的内部组中的各量测点分配唯一对应一本地标识,该本地标识为连续的序列;索引区中以本地标识为顺序,依次保存每个量测点在该存储文件中存储位置的索引;根据该数据所属量测点的本地标识找到该量测点对应的存储位置索引的步骤中,根据量测点的本地标识和单个索引的长度直接定位该量测点对应的索引位置、确定该量测点数据在该内存文件中的存储位置。作为进一步改进,待存储的量测点数据包含:数据值、质量码、和时间戳;数据片包含页面头和页面体,将量测点数据存储在数据片的步骤中,将量测点数据存储在数据片的页面体中;在将量测点数据存储在数据片中的步骤之后,将该数据片中保存的数据的起始时间和结束时间存储在该数据片的页面头中。作为进一步改进,对内存文件进行第二级无损压缩的步骤中,以数据片为单位分别进行无损压缩,得到压缩后的各数据块;将压缩后的数据块存储到关系型数据库中的步骤中,在关系型数据库中保存该数据块对应的量测点的标识、该数据块中所存储数据的起始时间、结束时间或相对于起始时间的时间跨度、数据块长度、和该压缩后的数据块。作为进一步改进,将量测点的数据存储在该索引指示的数据片或新分配的数本文档来自技高网
...
一种多源时间序列数据压缩存储方法

【技术保护点】
一种多源时间序列数据压缩存储方法,所述多源时间序列数据来自不同部署对象的不同量测点,其特征在于,包含以下步骤:根据各部署对象所包含的量测点数量,对所述各部署对象分组,将所包含量测点数量总和小于预设值的至少两个部署对象分为一组,将其余的每个部署对象分别分为一组;对各部署对象组进行组内划分,以所述预设值为界限,每达到预设值数量的量测点划分为一内部组,对应一组内标识,其余不足预设值数量的量测点划分为一内部组;在内存中为每个部署对象组中的每个内部组分配一个用于缓存的内存文件,并进行内存镜像处理;在收到来自一部署对象辖下量测点的时间序列数据时,对该数据进行第一级有损压缩,并根据该量测点所属的部署对象组和内部组,找到该量测点对应的内存文件,将该压缩后的时间序列数据缓存到该内存文件中;在所述内存文件写满或达到预设的时间限制时,对该内存文件进行第二级无损压缩,将压缩后的数据块存储到关系型数据库中。

【技术特征摘要】
1.一种多源时间序列数据压缩存储方法,所述多源时间序列数据来自不同部署对象的不同量测点,其特征在于,包含以下步骤:根据各部署对象所包含的量测点数量,对所述各部署对象分组,将所包含量测点数量总和小于预设值的至少两个部署对象分为一组,将其余的每个部署对象分别分为一组;对各部署对象组进行组内划分,以所述预设值为界限,每达到预设值数量的量测点划分为一内部组,对应一组内标识,其余不足预设值数量的量测点划分为一内部组;在内存中为每个部署对象组中的每个内部组分配一个用于缓存的内存文件,并进行内存镜像处理;在收到来自一部署对象辖下量测点的时间序列数据时,对该数据进行第一级有损压缩,并根据该量测点所属的部署对象组和内部组,找到该量测点对应的内存文件,将该压缩后的时间序列数据缓存到该内存文件中;在所述内存文件写满或达到预设的时间限制时,对该内存文件进行第二级无损压缩,将压缩后的数据块存储到关系型数据库中。2.根据权利要求1所述的多源时间序列数据压缩存储方法,其特征在于,所述第二级无损压缩为LZW压缩;和/或所述内存文件对应的存储空间为512K至2M之间;和/或所述预设的时间限制为30分钟。3.根据权利要求1所述的多源时间序列数据压缩存储方法,其特征在于,所述内存文件的文件体由固定大小、连续的数据片组成,包含索引区和数据区,所述索引区中保存每个所述量测点在该内存文件中存储位置的索引,所述数据区中各连续的数据片对应不同的量测点,单个数据片保存同一量测点的数据。4.根据权利要求3所述的多源时间序列数据压缩存储方法,其特征在于,所述将压缩后的时间序列数据缓存到内存文件中的步骤中,包含以下子步骤:根据该数据所属量测点的本地标识找到该量测点对应的存储位置索引,如果该索引表示当前未在数据区中为该量测点分配数据片、或所分配的数据片已存满,则在所述数据区中为该量测点分配一空白数据片,所分配的数据片与该数据区中已分配的数据片连续,将所述量测点数据存储在该新分配的数据片中;反之,则将所述量测点的数据存储在该索引指示的数据片的相应位置;如果在存储过程中,当前数据片已存满,则为该量测点新分配一数据片进行存储,所分配的数据片与该数据区中已分配的数据片连续。5.根据权利要求4所述的多源时间序列数据压缩存储方法,其特征在于,还包含以下步骤:在接收到来自部署对象辖下量测点的时间序列数据之前,在所述内存文件的数据区中为该内存文件对应的内部组的所有量测点预分配一数据片进行数据缓存,在所述索引区中保存各量测点对应的数据片的...

【专利技术属性】
技术研发人员:俞高宇张晓华梁俊
申请(专利权)人:上海可鲁系统软件有限公司
类型:发明
国别省市:上海;31

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

1