一种分布式数据存储结构及数据存储方法和数据查询方法技术

技术编号:14405905 阅读:167 留言:0更新日期:2017-01-11 17:26
本发明专利技术公开了一种分布式数据存储结构及其数据存储方法和查询方法。涉及模块包括:主控节点:用于建立数据存储单元Block到所在的物理机器的映射关系、统计全局负载情况以及生成数据存储单元Block的ID。数据导入管理器:对外部数据进行缓存,生成数据存储单元Block,导入数据存储单元Block到存储节点。存储节点:存储数据存储单元Block,对查询者提供查询功能。

【技术实现步骤摘要】

本专利技术涉及数据存储计算领域,特别涉及一种分布式数据存储架构及数据存储方法和数据查询方法。
技术介绍
传统的行式数据库,是按照行存储的。行式存储一般用在关系数据库中,其优势在于处理OLTP型业务。而列式数据库恰恰相反,列式数据库的数据是按照列存储,每一列单独存放,数据访问某些列时,只需要访问查询涉及的列,大大降低了系统的数据传输量。而且,由于数据类型一致,数据特征相似,极大方便压缩,提到了压缩率。行式数据库擅长随机读和更新操作,列式数据库则更擅长大批量数据量查询。而行列混合存储兼顾了行存储和列存储的优点。行列存储中一个重要的问题,就是如何索引数据,以达到数据快速定位。以及如何在有索引情况下,降低内存使用量。现有技术技术一方案:CN201310296167数据库系统的行列混合存储方法。这个方法是行列混合存储是以表为单位。也就是说,一个表要么整个表都是行存储,要么整个表都是列存储。该方法在数据库系统的存储层分别设立一个行存储引擎和一个列存储引擎,然后由访问接口层将两者封装起来,对列表进行元组物化,对行表进行投影,向查询引擎提供统一的数据访问接口,从而隐藏存储差别,实现查询处理的统一化。行列混合存储查询流程。根据创建表时的存储模型,在查询语句的解析阶段,获取表的存储模式;结合查询分析的相关信息生成<文件ID,存储模式,属性列表,选择条件列表>四个访问参数。执行引擎在访问数据时将访问参数传给存储引擎,存储引擎根据参数选择适当的方法读取数据并作选择、投影处理后返回数据。现有技术技术一方案缺点:由于一个表要么是整个表都是行存储,要么整个表都是列存储。已定的存储方案并不能够很好的应对对表的更新后的存储。比如,原定于适应于行存储的表,由于表的更新,列存储更加适合。此时,表需要重新存储。表重新存储代价大。现有技术技术二方案:Hyper数据库管理系统提出数据组织方式——《DataBlocks:HybridOLTPandOLAPonCompressedStorageusingbothVectorizationandCompilation》。其数据组织结构头部中,设定了数据相对部分的偏移量。分别是SMA、字典、数据压缩策略,和字符数据的偏移量。Hyper提出的存储结构包括:tuplecount、smaoffset、dictoffset、dataoffset、stringoffset。tuplecount是该存储单元中的存储的单列数据的行数,smaoffset、dictoffset、dataoffset、stringoffset分别是SMA、字典、非字符类型数据、字符类型数据对应于存储单元起始位置的偏移量,compression是数据的压缩方式。现在技术二方案缺点:其数据组织结构头部中,设定了数据相对部分的偏移量。分别是SMA、字典、数据压缩策略,和字符数据的偏移量。这么设定,限定了接下来数据的组织方式必须有SMA等。虽然这些字段只是偏移量,如果我们不用字典,可以通过将字典偏移量字段设置为一个无效值。但是,如此一来,字典偏移量字段本身占用了额外空间。其数据的索引采用的是SMA作为自己的索引。其优点是在数据值小的情况下,能够很好的索引到所需要的数据。但是数据值相对较大情况下,落在同一个索引区间的数据多,那么索引范围扩大,索引准确度降低。以查找998这个数据为例,和998所属的同一个索引区间的值理论有2^8个,准确度很低。除此之外,当源数据倾斜严重的情况下,如果数据没有排序,即使是有SMA作索引,依然需要遍历整个列。
技术实现思路
本专利技术提供一种分布式数据存储架构及数据存储方法和数据查询方法,本专利技术主要解决的问题是分布式环境下,数据库中数据索引和存储问题。达到的效果是:高效索引,即使在数据偏移情况下,通过值读取位置时间复杂度是O(logN),通过数据的位置取值的时间复杂度是O(1)。一种分布式数据存储架构,包括:主控节点:用于建立数据存储单元Block到所在的物理机器的映射关系、统计全局负载情况以及生成数据存储单元Block的ID;数据导入管理器:用于对外部数据进行缓冲,将外部数据按照数据值排序,生成索引Groupkey和数据,然后生成数据存储单元Block存储索引Groupkey和数据,最后导入数据存储单元Block到存储节点;存储节点:存储数据存储单元Block,对查询者提供查询功能;存储节点包括子元数据管理器、数据存储单元Block、数据读取器模块;子元数据管理器:用于维护存储节点内部由数据库名、表名、列名唯一确定的列到数据存储单元Block的映射、维护数据存储单元Block的生命周期;数据存储单元Block:用于存储索引Groupkey和数据;数据读取器模块:用于按照存储的索引Groupkey提供范围查询和等值查询接口,为外部提供了数据访问,具有指向真实数据的指针。本专利技术利用数据导入管理器导入外部数据,并生成数据存储单元Block和元数据,数据存储单元Block存储了索引Groupkey和数据;利用存储节点存储数据存储单元Block;利用存储节的子元数据管理器维护存储节点内部的库表列到数据存储单元Block的映射;利用主控节点建立数据存储单元Block到所在的物理机器的映射关系。通过以上部件构建起一个分布式数据存储架构。其中存储节点一般为多个,每个存储节点接受数据导入管理器数据,受到主控节点管制,每个存储节点有包含子元数据管理器、数据读取器以及多个数据存储单元Block,存储数据单元Block可以提供范围和等值查询。数据存储单元Block按照值的大小进行存储,且每个范围都标有对应的数据存储单元Block的ID,这样能大幅提高查询时间,达到高效索引的目的。优选的,所述主控节点的元数据组织为由数据库名、表名、列名唯一确定的列以及每个存储节点存储的数据中包含的列的列值范围到存储节点的地址的映射,主控节点的元数据组织的结构为:<数据库名、表名字,列名、列值范围、存储节点的地址>。存储节点的元数据组织为数据库名、表名、列名唯一确定的列到数据存储单元Block的映射,存储节点的元数据组织的结构为:<数据库名、表名字、列名、列值范围、数据存储单元Block的ID>。优选的,数据存储单元Block存储数据的方式为:以索引Groupkey加数据的方式存储在数据存储单元Block当中,一个数据存储单元Block包含一张表的若干列或全部的列,每张表的所有的列都会在数据存储单元Block中存储,在数据导入管理器生成这个数据存储单元Block的时候,生成这个数据存储单元Block对应的元数据,在存储节点存储数据存储单元Block的时候,记录元数据到子元数据管理器中。数据存储单元Block的头部结构分为定长结构和变长两个部分:定长部分包括:block_id、begin_rowid、rows。block_id:表示数据存储单元block的编号,由数据导入管理器生成,全局唯一:每个数据存储单元Block对应着一个全局唯一的block_id;begin_rowid:指明了这个数据存储单元Block中所存储的数据的起始的rowid。rows:表明这个数据存储单元Block中一共有多少行的数据。变长部分包括:col本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201610678434.html" title="一种分布式数据存储结构及数据存储方法和数据查询方法原文来自X技术">分布式数据存储结构及数据存储方法和数据查询方法</a>

【技术保护点】
一种分布式数据存储架构,其特征在于,包括:主控节点:用于建立数据存储单元Block到所在的物理机器的映射关系、统计全局负载情况以及生成数据存储单元Block的ID;数据导入管理器:用于对外部数据进行缓冲,将外部数据按照数据值排序,生成索引Groupkey和数据,然后生成数据存储单元Block存储索引Groupkey和数据,最后导入数据存储单元Block到存储节点;存储节点:存储数据存储单元Block,对查询者提供查询功能;存储节点包括子元数据管理器、数据存储单元Block、数据读取器模块;子元数据管理器:用于维护存储节点内部由数据库名、表名、列名唯一确定的列到数据存储单元Block的映射、维护数据存储单元Block的生命周期;数据存储单元Block:用于存储索引Groupkey和数据;数据读取器模块:用于按照存储的索引Groupkey提供范围查询和等值查询接口,为外部提供了数据访问,具有指向真实数据的指针。

【技术特征摘要】
1.一种分布式数据存储架构,其特征在于,包括:主控节点:用于建立数据存储单元Block到所在的物理机器的映射关系、统计全局负载情况以及生成数据存储单元Block的ID;数据导入管理器:用于对外部数据进行缓冲,将外部数据按照数据值排序,生成索引Groupkey和数据,然后生成数据存储单元Block存储索引Groupkey和数据,最后导入数据存储单元Block到存储节点;存储节点:存储数据存储单元Block,对查询者提供查询功能;存储节点包括子元数据管理器、数据存储单元Block、数据读取器模块;子元数据管理器:用于维护存储节点内部由数据库名、表名、列名唯一确定的列到数据存储单元Block的映射、维护数据存储单元Block的生命周期;数据存储单元Block:用于存储索引Groupkey和数据;数据读取器模块:用于按照存储的索引Groupkey提供范围查询和等值查询接口,为外部提供了数据访问,具有指向真实数据的指针。2.根据权利要求1所述的一种分布式数据存储架构,其特征在于:所述主控节点的元数据组织为由数据库名、表名、列名唯一确定的列以及每个存储节点存储的数据中包含的列的列值范围到存储节点的地址的映射,主控节点的元数据组织的结构为:<数据库名、表名字,列名、列值范围、存储节点的地址>。3.根据权利要求1所述的一种分布式数据存储架构,其特征在于:存储节点的元数据组织为由数据库名、表名、列名唯一确定的列到数据存储单元Block的映射,存储节点的元数据组织的结构为:<数据库名、表名字、列名、列值范围、数据存储单元Block的ID>。4.根据权利要求1所述的一种分布式数据存储架构,其特征在于:数据存储单元Block存储数据的方式为:以索引Groupkey加数据的方式存储在数据存储单元Block当中,一个数据存储单元Block包含一张表的若干列或全部的列,每张表的所有的列都会在数据存储单元Block中存储,在数据导入管理器生成这个数据存储单元Block的时候,生成这个数据存储单元Block对应的元数据,在存储节点存储数据存储单元的时候,记录元数据到子元数据管理器;数据存储单元Block的头部结构分为定长结构和变长两个部分:定长部分包括:block_id、begin_rowid、rows;block_id:表示数据存储单元block的编号,由数据导入管理器生成,全局唯一:每个数据存储单元Block对应着一个全局唯一的block_id;begin_rowid:指明了这个数据存储单元Block中所存储的数据的起始的rowid;rows:表明这个数据存储单元Block中一共有多少行的数据;变长部分包括column_offset;column_offset:column_offset为一个数组,第i个值表示这个数据存储单元Block中的第i个列的物理位置相对于数据存储单元Block起始头部的偏移量,i为自然数。5.根据权利要求4所述的一种分布式数据存储架构,其特征在于:所述column_offset的内部逻辑结构包括column_type部分和其余约定部分,column_type是头部信息,其余约定部分是根据column_type部分由使用人员根据具体的需求具体约定。6.根据权利要求5所述的一种分布式数据存储架构...

【专利技术属性】
技术研发人员:段翰聪闵革勇张建钟红霞詹文翰
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

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

1