一种分布式关系数据库及其建立、查询方法和装置制造方法及图纸

技术编号:8883281 阅读:193 留言:0更新日期:2013-07-04 02:05
本发明专利技术实施例公开了一种分布式关系数据库及其建立、查询方法和装置。该方法包括:将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内。应用本发明专利技术能够降低数据表的复制和传输开销、以及内存消耗。

【技术实现步骤摘要】
一种分布式关系数据库及其建立、查询方法和装置
本专利技术涉及数据库
,尤其涉及一种分布式关系数据库及其建立、查询方法和装置。
技术介绍
连接(join)查询操作是关系数据库的主要特点,也是关系数据库区别于其他类型数据库的一个标志,通过连接运算符,可以对连接数据库中的多个数据表进行查询。在关系数据库中,数据表建立时,各个数据表之间的关系不必确定,通常将一个实体的所有信息存储在一个数据表中。当检索数据时,通过连接查询操作查询出存放在多个数据表中的不同实体的信息。连接查询操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的数据表,尔后通过连接进行查询。分布式数据库与传统数据库不同的是,分布式数据库将数据表分布式地存储在多个节点上。例如,假设现在有A表和B表,分布式数据库集群中2个节点,分别为节点1和节点2,则A表的数据可以分布在节点1和节点2上,而B表的数据也可以分布在节点1和节点2上。对于分布式关系数据库,当执行连接查询操作时,如果需要连接的数据表不在一个节点上,目前通常采用的方法是:将数据量较小的数据表装入所有节点的内容,然后针对连接条件,与其他需要连接的数据表进行逐一比对。考虑A、B两个数据表执行连接查询操作的情况,假定较小的数据表的数据量很少,则将数据表的复制和传输开销尚可忍受,但若A、B两个数据表的规模差异不大,都是数据量较大的表,或者A、B两个数据表中较小的数据表的数据量也较大,例如超过10GB,则数据表的复制和传输开销就非常大了,而且还很可能导致节点的内存溢出。可见,现有的分布式关系数据库,存在以下的技术问题:在执行带有连接查询操作的信息查询时,数据表的复制和传输开销较大;而且可能造成节点内存溢出,最终导致连接查询操作失败,数据库可能停止服务。
技术实现思路
有鉴于此,本专利技术提供了一种分布式关系数据库及其建立、查询方法和装置,以便降低数据表的复制和传输开销、以及内存消耗。本专利技术的技术方案具体是这样实现的:一种分布式关系数据库的建立方法,该方法包括:将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内。一种分布式关系数据库的建立装置,该装置包括数据提取模块和写入模块;所述数据提取模块,用于将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据;所述写入模块,用于将从两个以上的数据表中提取的、目标列的取值相同的各行数据,存储在同一个存储节点内。一种分布式关系数据库,该数据库包括两个以上的存储节点,在单个存储节点中存储有从两个以上的数据表中提取的、目标列的取值相同的各行数据,其中,所述目标列是未来需要执行连接查询操作的数据列。一种分布式关系数据库的查询方法,该方法包括:根据执行连接查询操作的数据列的信息,查询每个存储节点,将从每个存储节点中取得的查询结果取并集,得到对两个以上的数据表的所述数据列执行连接查询操作时的查询结果;其中,所述两个以上的数据表中所述数据列的取值相同的各行数据,存储在同一个存储节点内。一种分布式关系数据库的查询装置,该装置包括存储节点查询模块和结果合并模块;所述存储节点查询模块,用于根据执行连接查询操作的数据列的信息,查询每个存储节点;所述结果合并模块,用于将从每个存储节点中取得的查询结果取并集,得到对两个以上的数据表的所述数据列执行连接查询操作时的查询结果;其中,所述两个以上的数据表中所述数据列的取值相同的各行数据,存储在同一个存储节点内。由上述技术方案可见,本专利技术通过将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内,使得对所述两个以上的数据表中的所述目标列执行连接查询操作时,由于所述目标列的取值相同的数据列存储在同一个存储节点内,因此不需要在不同存储节点之间传输数据表,从而降低了数据表的复制和传输开销,也降低了内存消耗。附图说明图1是本专利技术提供的分布式关系数据库的建立方法流程图。图2是本专利技术提供的分布式关系数据库的建立装置结构图。图3是本专利技术提供的分布式关系数据库的查询装置结构图。具体实施方式本申请在分布式关系数据库的建立阶段,需要针对存在连接需求的表,根据连接的目标列,在创建数据表时进行一定的配置,从而将需要执行连接查询操作的数据预先安排在相同的节点上,使得在连接查询操作发生时产生的数据传输开销得到优化,避免了连接查询操作时大量数据拷贝开销和内存溢出的可能。具体地,本专利技术将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内。其中,实际应用中,可以采用多种方法从两个以上的数据表中提取出目标列的取值相同的各行数据。例如,按照预定的映射规则,从两个以上的数据表中提取出目标列的取值相同的各行数据,典型地,可以利用哈希函数,将两个以上的数据表中目标列的取值相同的各行数据映射到同一个存储节点内。所述哈希函数有很多种,例如,可以是对每个数据表中的目标列的取值进行模n取余操作,从所述两个以上的数据表中提取出对目标列的取值进行模n取余操作结果相同的各行数据,将所述各行数据存储在同一个存储节点内其中,n是不小于2的整数。再例如,对每个数据表中的目标列的取值进行模n取整操作,从两个以上的数据表中提取出对目标列的取值进行模n取整操作结果相同的各行数据,将所述各行数据存储在同一个存储节点内,其中,n是不小于2的整数。比如,当n取值为6时,在目标列的取值为0~5时,模6取整的结果均为0,所以可以将目标列的取值为0~5的各行数据都存储在同一个存储节点内,目标列的取值为6~11时,模6取整的结果均为1,所以可以将目标列的取值为6~11的各行数据都存储在同一个存储节点内,以此类推。为了能够提高执行连接查询操作时的数据扫描速度,即提高执行连接查询操作时对数据进行顺序性查询的速度,本专利技术还提供了另外一种从两个以上的数据表中提取出目标列的取值相同的各行数据,并将所述各行数据存储在同一个存储节点内的方法,具体请参见图1。图1是本专利技术提供的分布式关系数据库的建立方法流程图。如图1所示,该方法包括:步骤101,将未来需要执行连接查询操作的数据列作为目标列,按照目标列的取值,将两个以上的数据表进行整体排列,得到预连接数据表。步骤102,根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到子表,使得所述两个以上的数据表中目标列的取值相同的各行数据在同一个子表内。步骤103,将切分出的不同子表,存储在不同的存储节点内。其中,在对所述预连接数据表进行切分时,可以根据单个存储节点中的当前可用存储空间,从所述预连接数据表中切分出不大于所述当前可用存储空间的子表,将该子表存储在该单个存储节点中。作为极限情况,如果该单个存储节点中的当前可用存储空间很大,足以容纳整个预连接数据表,则所述子表可以就是该整个预连接数据表,即可以将该整个预连接数据表存储在该单个存储节点中。通常,可以将预连接数据表切分成两个以上的子表,并将不同的子表存储在不同的存储节点中。采用本专利技术方法建立分布式关系本文档来自技高网
...
一种分布式关系数据库及其建立、查询方法和装置

【技术保护点】
一种分布式关系数据库的建立方法,其特征在于,该方法包括:将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内。

【技术特征摘要】
1.一种分布式关系数据库的建立方法,其特征在于,该方法包括:将未来需要执行连接查询操作的数据列作为目标列,按照目标列的取值,将两个以上的数据表进行整体排列,得到预连接数据表;根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到子表,使得所述两个以上的数据表中目标列的取值相同的各行数据在同一个子表内,将切分出的不同子表,存储在不同的存储节点内。2.根据权利要求1所述的方法,其特征在于,所述使得所述两个以上的数据表中目标列的取值相同的各行数据在同一个子表内,将切分出的不同子表,存储在不同的存储节点内包括:按照预定的映射规则,从两个以上的数据表中提取出目标列的取值相同的各行数据,并将所述各行数据存储在同一个存储节点内。3.根据权利要求1所述的建立方法,其特征在于,对所述预连接数据表进行切分包括:根据单个存储节点中的当前可用存储空间,从所述预连接数据表中切分出不大于所述当前可用存储空间的子表。4.根据权利要求1所述的方法,其特征在于,对所述预连接数据表进行切分包括:将所述预连接数据表切分成两个以上的子表。5.一种分布式关系数据库的建立装置,其特征在于,该装置包括数据提取模块和写入模块;所述数据提取模块,用于将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据;所述写入模块,用于将从两个以上的数据表中提取的、目标列的取值相同的各行数据,存储在同一个存储节点内;其中,所述数据提取模块包括预连接模块和切分模块;所述预连接模块,用于将未来需要执行连接查询操作的数据列作为目标列,按照目标列的取值,将两个以上的数据表进行整体排列,得到预连接数据表;所述切分模块,用于根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到子表,使得所述两个以上的数据表中目标列的取值相同的各行数据在同一个子表内;所述写入模块,用于将所述切分模块切分出的不同子表,写入到不同的存储节点内。6.根据权利要求5所述的装置,其特征在于,所述数据提取模块,用于按照预定的映射规则,从两个以上的数据表中提取出目标列的取值相同的各行数据。7.根据权利要求5所述的装置,其特征在于,所述切分模块,用于根据单个存储节点中的当前可用存储空间,从所述预连接数据表中切分出不大于所述当前可用存储空间的子表。8.根据权利要求5所述的装置,其特征在于,所述切分模块,用于将所述预连接数据表切分成两个以上的子表。9.一种分布式关系数据库,其特征...

【专利技术属性】
技术研发人员:齐骥钱岭郭磊涛周大
申请(专利权)人:中国移动通信集团公司
类型:发明
国别省市:

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

1