一种基于分布式列存储的时间序列数据存储方法

文档序号:6543427阅读:691来源:国知局
一种基于分布式列存储的时间序列数据存储方法
【专利摘要】本发明公开了一种基于分布式列存储的时间序列数据存储方法,属于数据库【技术领域】。本发明使用由行键和列组成的稀疏表存储测点记录数据,行键包含了尽可能多的检索信息,每一行记录把某个时间段的分散采集的数据合并在一起,同时设置了名称映射表存储名称信息。本发明能够充分利用分布式列存储技术的各项优势,保证时间序列数据在分布式列存储上的存储和检索的效率,并且利用分布式存储增强数据存储的安全性。
【专利说明】一种基于分布式列存储的时间序列数据存储方法
【技术领域】
[0001]本发明属于数据库【技术领域】,更准确地说,本发明涉及一种基于分布式列存储的时间序列数据存储方法。
【背景技术】
[0002]随着工业化、信息化“两化融合”建设的不断深入,各个行业都面临着数据的爆发式增长,数据处理压力越来越大。从国家电网的视角出发,随着国家电网的高速发展,信息化技术在国家电网各种业务中的广泛而深入的应用,智能电网的推广及普及。电力系统各个业务系统的数据出现了爆发式的增长,其中时间序列的增长速度尤为明显。传统的时间序列数据库,无论在处理的数据量上还是响应速度上,已经越来越无法满足现有业务需要,这一点在各个网省公司的用电信息采集中,体现的尤为明显。与此同时,随着国内外互联网业务的快速发展,大数据及云计算的发展及广泛应用,分布式的列存储技术成为了处理海量数据中的首要重要技术,并且给与我们很多启示。
[0003]在电网业务中,时间序列数据,作为一种重要的非结构化的数据类型,在营销、调度、运监、生产等多种场景有着广泛而深入的应用。在传统应用中,时间序列数据往往被抽象建立为结构化的数据模型,而存入关系型数据库。而关系型数据库的行列模式,在存储不同采样周期的时间序列数据时,会造成存储空间的极大浪费。另一方面,随着海量数据的增力口,传统的关系型数据库往往无法应对,使得查询效率剧降,从而无法满足业务应用场景的需求。另外有很多厂家采用四元组的形式,使用B+树的数据结构,直接存入文件系统。这种方式具有节省存储空间,查询直接,效率较高的特点。但同时存在后期扩展困难,不具备聚合计算等数据库常用功能,而且在处理海量时间序列数据上存在很多不足。综合来看,这两种方式不论在理论还是实际应用,都存在着很大的局限性,制约了针对时间序列数据的业务应用的进一步发展。采用分布式列存储数据库,对时间序列数据进行建模,使用该存储模型在分布式列存储上进行时间序列数据的存储,可以在很大程度上解决这些制约和突破这些局限。
[0004]随着新兴的移动互联网技术的推进,传统企业也在不断的发展与进步,共通的一点就是,数据作为一种重要的资源和财富,已经越来越多的受到各方面企业的重视。而且随着各个企业中监测和控制对象的不断复杂化,数据量的爆炸式增长,不同应用在对各种数据的使用及可利用价值的认识不断深入,对海量数据如何高效存储,如何便利的访问,以及对访问的效率及响应速度的要求也在不断提高。因此对数据的高效存储,快速检索,以及各种分析处理能力提出了更高要求。本发明正是为了达到高效存储以及快速的检索时间序列数据而开发实现的。

【发明内容】

[0005]本发明的目的是:提供一种基于分布式列存储的时间序列数据存储方法,使时间序列数据能够适应分布式列存储的存储方式,发挥分布式列存储的优势。该方法能够保证时间序列数据在分布式列存储上的高效存储和快速检索。
[0006]具体地说,本发明是采用以下的技术方案来实现的,包括下列步骤:
1)使用测点数据表存储测点记录数据,所述测点数据表由行键和列组成的稀疏表构成,其中,行键由特征点、时间戳、标签三个部分组成,特征点用于标识测点的名称,时间戳用于标识基准时间值,标签用于表示特征点的属性,每个行键中的标签数量为一个或多个,每个标签由一个或多个键值对组成,键值对中的键用于标识测点的属性,键值对中的值用于标识测点的属性值;列由子列组成,每个子列用于存储相应于行键中所记载的基准时间的偏移量的记录值,子列的数量由预先设置的最大偏移量决定;
使用名称映射表存储特征点的名称和标签键值对的名称,在名称映射表使用固定长度的名称映射值对应相应的特征点的名称和标签键值对的名称;
使用测点信息表存储各测点的信息,存储方式采用标准的分布式数据存储方式;
2)写入数据时,在分布式列存储数据库环境中,先根据各条测点记录数据获得相应的特征点的名称和标签键值对的名称,并将特征点的名称和标签键值对的名称存储在名称映射表中;
然后,根据各条测点记录数据的特征点名称的名称映射值、基准时间、标签键值对名称的名称映射值和相应值生成相应的行键值,并根据各条测点记录数据的偏移量将各条测点记录数据的行键值和记录值分别存储在测点数据表中相应的行键和与该行键相应偏移量相对的子列中。
[0007]上述技术方案的进一步特征在于,所述列采用采用可变长存储。
[0008]上述技术方案的进一步特征在于,所述名称映射表采用双向映射,既能通过特征点的名称或标签键值对的名称检索相应名称映射值,也能通过名称映射值检索相应的特征点的名称或标签键值对的名称。
[0009]上述技术方案的进一步特征在于,所述步骤2)中,当测点数据表中的某一行记录存储满时,再开启新的一行。
[0010]本发明的有益效果如下:本发明测点数据表中的行键包含了尽可能多的检索信息,每一行记录把某个时间段的分散采集的数据合并在一起,减少了整个表格行键的个数,从而提高了检索的速度。而本发明按照时间的延展来存储数据的方式实质是一种无状态的存储方案。无状态的存储是指连续存入的两条记录是不相互了解的,是不相关的。假如连续存入的两条记录是相关的,那么当前一条记录出错后,很可能导致后一条记录出错。因此,本发明方法的无状态的存储方案还能提高系统的容错能力。同时本发明设置了名称映射表存储名称信息,从而在存储具体的时间序列数据时能够减少存储空间的使用。综上所述本发明方法的有益效果是,充分利用分布式列存储技术的各项优势,保证时间序列数据在分布式列存储上的存储和检索的效率,并且利用分布式存储增强数据存储的安全性。
【专利附图】

【附图说明】
[0011]图1是本发明中测点数据表结构示意图。
[0012]图2是本发明中列存储结构示意图。
[0013]图3是本发明中名称映射表结构示意图。【具体实施方式】
[0014]下面参照附图并结合实例对本发明作进一步详细描述。
[0015]本发明的一个实例,整个时间序列数据库的数据表分为测点信息表METRIC_INF0、名称映射表METRICTAG_UID和测点数据表METRIC_DATA三部分组成。测点信息表主要存储采集测点的信息,名称映射表主要存储测点或标签的名称和相应的名称映射值,测点数据表存储具体的时间序列数据。
[0016]如图1所示,测点数据表METRIC_DATA由行键和列组成的稀疏表来构成,而列又可以由一个或多个子列来实现。行键的结构如图3中所示,行键由特征点、时间戳、标签组成。本实施例中,特征点名用3字节表示,时间戳值用4字节表示,标签用来表示特征点的属性,如表明该特征点来自于哪个信息采集点或其他属性特征,一个标签由一个或多个键值对组成,每个键值对用6个字节,每个行键可同时由多个标签来描述特征点的属性。
[0017]子列存储的是相应于行键基准时间的偏移量时的记录值,子列的数量由预先设置的最大偏移量决定。图1所示中的最大偏移量为3600秒,实际应用中可以根据具体需求调整。如图2所示,列的存储模型采用2字节表述,其中前12位用来表示基准时间,第13位为类型标志位表示存储的数据类型(整型或浮点型),最后3位用来表示存储的记录值的长度。列存储模型对于记录值的存储采用可变长存储而不是固定长度值,可以充分利用存储空间,这种存储方式和测点存储模型的稀疏特点的目的一致。
[0018]可见,测点数据表METRIC_DATA实现了测点存储,同时通过相应于行键基准时间的偏移量(子列)来稀疏存储测点连续的数据点(时间序列数据),可以显著减少存储的行数,达到了压缩存储信息的效果。
[0019]使用测点信息表METRIC_INF0存储各测点的信息,存储方式采用标准的分布式数据存储方式。测点的信息包括测点的类型、单位、地址、描述、显示名称、备注等。
[0020]使用名称映射表METRICTAG_UID存储特征点名称以及标签的键值对名称。名称映射表METRICTAG_UID中使用固定长度(如3字节)的名称映射值(UID)对应相应的特征点的名称和标签键值对的名称,UID和名称的具体对应关系可采用双向映射的方式。如图3所示,名称映射表METRICTAG_UID由行键、列名和列id三个部分组成。名称映射表METRICTAG_UID行键用来存储测点数据表METRIC_DATA中行键(特征点、标签.键、标签.值)对应的UID及名称,同时在列名和列id中存储对应的名称或WD。固定长度的WD,使得在存储具体的时间序列数据时,减少了存储空间的使用,同时加快了检索速度。通过双向映射的方式,还可以既能高速的通过名称检索对应WD,也能通过WD高速检索名称。
[0021]由于在分布式列存储的时间序列数据存储模型中,行的列不可能无限制的持续性扩展。因此,在该模型中数据点第一次建立时,先建立一个新的行,在存储一定数据后(存储满后)再开启另一行。由于在分布式环境中存在并发写的情况,测点数据表与UID名称映射确保了不同行键(由特征点、时间戳、标签组成)不存在冲突,而对于同一行键,设置固定的时间偏移量来决定换行,不同客户端对于同一行键不同时间偏移分别存储,避免了分布式环境下的写冲突。具体应用部署中可以根据需求通过配置文件来指定换行的时间偏移量。分布式环境下每个独立的该模型可以根据时间来判断当前数据所在的行。
[0022]具体的写入过程为:写入数据时,在分布式列存储数据库环境中,先根据各条测点记录数据获得相应的特征点的名称和标签键值对的名称,并将特征点的名称和标签键值对的名称存储在名称映射表METRICTAG_UID中。然后,根据各条测点记录数据的特征点的名称的名称映射值、基准时间、标签键值对的名称的名称映射值和相应值生成相应的行键值,并根据各条测点记录数据的偏移量将各条测点记录数据的行键值和记录值分别存储在测点数据表METRIC_DATA中相应的行键和与该行键相应偏移量相对的子列中。偏移量根据测点数据表METRIC_DATA中该条记录对应的基准时间计算。对于测点数据表METRIC_DATA中某一行记录而言,如果该行存储满(某一时间段后)或新的记录数据中的偏移量已经超过该行的最大偏移量,则在测点数据表METRIC_DATA中新开启一行记录。重复以上过程,完成所有测点信息数据的存储。
[0023]数据的查询过程如下:在查询某个测点的一段历史数据时,根据查询的特征点的名称查询名称映射表METRICTAG_UID来得到特征点的WD,同时根据指定的时间范围共同确定该特征点映射到测点数据表METRIC_DATA中的行键,然后由行键和查询的时间信息确定返回查询的特征点的记录值。
[0024]以下以具体的实例进行说明。设有待存储某测点时间序列中的两条测点记录信息,分别为:
测点记录信息 1,其内容为:Crd.tsd.test 1386304551191 5400 Host=hostARange=Suzhou。其中,Crd.tsd.test 为特征点名,Host=hostA、Range=Suzhou 为标签。
[0025]测点记录信息2,其内容为:Crd.tsd.test 1386304550002 8500 Host=hostARange=Suzhou。其中,Crd.tsd.test 为特征点名,Host=hostA、Range=Suzhou 为标签。
[0026]根据测点记录信息I生成相应的行键值存储在测点数据表METRIC_DATA的行键中,根据其时间信息为1386304551191得出基准时间(1386304550000)和偏移量(1191),把记录值(5400)存储于该行键对应的子列(1191)中,完成值的存储,其结果如图1所示。
[0027]测点记录信息2生成相应的行键值存储在测点数据表METRIC_DATA的行键中,根据其时间信息为1386304550002得出基准时间(1386304550000)和偏移量(0002),把记录值(8500)存储于该行键对应的子列(2)中,完成值的存储。测点记录信息I和测点记录信息2存储于同一行键中,对于存储时间序列数据,可以减少存储的行数,达到了数据压缩存储的效果。
[0028]虽然本发明已以较佳实施例公开如上,但实施例并不是用来限定本发明的。在不脱离本发明之精神和范围内,所做的任何等效变化或润饰,同样属于本发明之保护范围。因此本发明的保护范围应当以本申请的权利要求所界定的内容为标准。
【权利要求】
1.一种基于分布式列存储的时间序列数据存储方法,其特征在于,包括如下步骤: 1)使用测点数据表存储测点记录数据,所述测点数据表由行键和列组成的稀疏表构成,其中,行键由特征点、时间戳、标签三个部分组成,特征点用于标识测点的名称,时间戳用于标识基准时间值,标签用于表示特征点的属性,每个行键中的标签数量为一个或多个,每个标签由一个或多个键值对组成,键值对中的键用于标识测点的属性,键值对中的值用于标识测点的属性值;列由子列组成,每个子列用于存储相应于行键中所记载的基准时间的偏移量的记录值,子列的数量由预先设置的最大偏移量决定; 使用名称映射表存储特征点的名称和标签键值对的名称,在名称映射表使用固定长度的名称映射值对应相应的特征点的名称和标签键值对的名称; 使用测点信息表存储各测点的信息,存储方式采用标准的分布式数据存储方式; 2)写入数据时,在分布式列存储数据库环境中,先根据各条测点记录数据获得相应的特征点的名称和标签键值对的名称,并将特征点的名称和标签键值对的名称存储在名称映射表中; 然后,根据各条测点记录数据的特征点名称的名称映射值、基准时间、标签键值对名称的名称映射值和相应值生成相应的行键值,并根据各条测点记录数据的偏移量将各条测点记录数据的行键值和记录值分别存储在测点数据表中相应的行键和与该行键相应偏移量相对的子列中。
2.根据权利要求1所述的基于分布式列存储的时间序列数据存储方法,其特征在于,所述列采用采用可变长存储。
3.根据权利要求1所述的基于分布式列存储的时间序列数据存储方法,其特征在于,所述名称映射表采用双向映射,既能通过特征点的名称或标签键值对的名称检索相应名称映射值,也能通过名称映射值检索相应的特征点的名称或标签键值对的名称。
4.根据权利要求1所述的基于分布式列存储的时间序列数据存储方法,其特征在于,所述步骤2)中,当测点数据表中的某一行记录存储满时,再开启新的一行。
【文档编号】G06F17/30GK104035956SQ201410143604
【公开日】2014年9月10日 申请日期:2014年4月11日 优先权日:2014年4月11日
【发明者】范振华, 赵京虎, 季胜鹏, 王春毅, 袁军 申请人:江苏瑞中数据股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1