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

xiaoxiao2020-7-23  11

专利名称:一种分布式关系数据库及其建立、查询方法和装置的制作方法
技术领域
本发明涉及数据库技术领域,尤其涉及一种分布式关系数据库及其建立、查询方法和装置。
背景技术
连接(join)查询操作是关系数据库的主要特点,也是关系数据库区别于其他类型数据库的一个标志,通过连接运算符,可以对连接数据库中的多个数据表进行查询。在关系数据库中,数据表建立时,各个数据表之间的关系不必确定,通常将一个实体的所有信息存储在一个数据表中。当检索数据时,通过连接查询操作查询出存放在多个数据表中的不同实体的信息。连接查询操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的数据表,尔后通过连接进行查询。分布式数据库与传统数据库不同的是,分布式数据库将数据表分布式地存储在多个节点上。例如,假设现在有A表和B表,分布式数据库集群中2个节点,分别为节点I和节点2,则A表的数据可以分布在节点I和节点2上,而B表的数据也可以分布在节点I和节点2上。对于分布式关系数据库,当执行连接查询操作时,如果需要连接的数据表不在一个节点上,目前通常采用的方法是:将数据量较小的数据表装入所有节点的内容,然后针对连接条件,与其他需要连接的数据表进行逐一比对。考虑A、B两个数据表执行连接查询操作的情况,假定较小的数据表的数据量很少,则将数据表的复制和传输开销尚可忍受,但若A、B两个数据表的规模差异不大,都是数据量较大的表,或者A、B两个数据表中较小的数据表的数据量也较大,例如超过10GB,则数据表的复制和传输开销就非常大了,而且还很可能导致节点的内存溢出。可见,现有的分布式关系数据库,存在以下的技术问题:在执行带有连接查询操作的信息查询时,数据表的复制和传输开销较大;而且可能造成节点内存溢出,最终导致连接查询操作失败,数据库可能停止服务。

发明内容
有鉴于此,本发明提供了一种分布式关系数据库及其建立、查询方法和装置,以便降低数据表的复制和传输开销、以及内存消耗。本发明的技术方案具体是这样实现的:—种分布式关系数据库的建立方法,该方法包括:将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内。一种分布式关系数据库的建立装置,该装置包括数据提取模块和写入模块;所述数据提取模块,用于将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据;
所述写入模块,用于将从两个以上的数据表中提取的、目标列的取值相同的各行数据,存储在同一个存储节点内。一种分布式关系数据库,该数据库包括两个以上的存储节点,在单个存储节点中存储有从两个以上的数据表中提取的、目标列的取值相同的各行数据,其中,所述目标列是未来需要执行连接查询操作的数据列。—种分布式关系数据库的查询方法,该方法包括:根据执行连接查询操作的数据列的信息,查询每个存储节点,将从每个存储节点中取得的查询结果取并集,得到对两个以上的数据表的所述数据列执行连接查询操作时的查询结果;其中,所述两个以上的数据表中所述数据列的取值相同的各行数据,存储在同一个存储节点内。一种分布式关系数据库的查询装置,该装置包括存储节点查询模块和结果合并模块;所述存储节点查询模块,用于根据执行连接查询操作的数据列的信息,查询每个存储节点;所述结果合并模块,用于将从每个存储节点中取得的查询结果取并集,得到对两个以上的数据表的所述数据列执行连接查询操作时的查询结果;其中,所述两个以上的数据表中所述数据列的取值相同的各行数据,存储在同一个存储节点内。由上述技术方案可见,本发明通过将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内,使得对所述两个以上的数据表中的所述目标列执行连接查询操作时,由于所述目标列的取值相同的数据列存储在同一个存储节点内,因此不需要在不同存储节点之间传输数据表,从而降低了数据表的复制和传输开销,也降低了内存消耗。


图1是本发明提供的分布式关系数据库的建立方法流程图。图2是本发明提供的分布式关系数据库的建立装置结构图。图3是本发明提供的分布式关系数据库的查询装置结构图。
具体实施例方式本申请在分布式关系数据库的建立阶段,需要针对存在连接需求的表,根据连接的目标列,在创建数据表时进行一定的配置,从而将需要执行连接查询操作的数据预先安排在相同的节点上,使得在连接查询操作发生时产生的数据传输开销得到优化,避免了连接查询操作时大量数据拷贝开销和内存溢出的可能。具体地,本发明将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内。其中,实际应用中,可以采用多种方法从两个以上的数据表中提取出目标列的取值相同的各行数据。例如,按照预定的映射规则,从两个以上的数据表中提取出目标列的取值相同的各行数据,典型地,可以利用哈希函数,将两个以上的数据表中目标列的取值相同的各行数据映射到同一个存储节点内。所述哈希函数有很多种,例如,可以是对每个数据表中的目标列的取值进行模η取余操作,从所述两个以上的数据表中提取出对目标列的取值进行模η取余操作结果相同的各行数据,将所述各行数据存储在同一个存储节点内其中,η是不小于2的整数。再例如,对每个数据表中的目标列的取值进行模η取整操作,从两个以上的数据表中提取出对目标列的取值进行模η取整操作结果相同的各行数据,将所述各行数据存储在同一个存储节点内,其中,η是不小于2的整数。比如,当η取值为6时,在目标列的取值为O 5时,模6取整的结果均为0,所以可以将目标列的取值为O 5的各行数据都存储在同一个存储节点内,目标列的取值为6 11时,模6取整的结果均为1,所以可以将目标列的取值为6 11的各行数据都存储在同一个存储节点内,以此类推。为了能够提高执行连接查询操作时的数据扫描速度,即提高执行连接查询操作时对数据进行顺序性查询的速度,本发明还提供了另外一种从两个以上的数据表中提取出目标列的取值相同的各行数据,并将所述各行数据存储在同一个存储节点内的方法,具体请参见图1。图1是本发明提供的分布式关系数据库的建立方法流程图。如图1所示,该方法包括:步骤101,将未来需要执行连接查询操作的数据列作为目标列,按照目标列的取值,将两个以上的数据表进行整体排列,得到预连接数据表。步骤102,根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到子表,使得所述两个以上的数据表中目标列的取值相同的各行数据在同一个子表内。步骤103,将切分出的不同子表,存储在不同的存储节点内。其中,在对所述预连接数据表进行切分时,可以根据单个存储节点中的当前可用存储空间,从所述预连接数据表中切分出不大于所述当前可用存储空间的子表,将该子表存储在该单个存储节点中。作为极限情况,如果该单个存储节点中的当前可用存储空间很大,足以容纳整个预连接数据表,则所述子表可以就是该整个预连接数据表,即可以将该整个预连接数据表存储在该单个存储节点中。通常,可以将预连接数据表切分成两个以上的子表,并将不同的子表存储在不同的存储节点中。采用本发明方法建立分布式关系数据库以后,在对所述分布式关系数据库进行查询时,根据执行连接查询操作的数据列的信息,查询每个存储节点,将从每个存储节点中取得的查询结果取并集,得到对两个以上的数据表的所述数据列执行连接查询操作时的查询结果;其中,所述两个以上的数据表中所述数据列的取值相同的各行数据,存储在同一个存储节点内。其中,采用图1所示方法建立分布式关系数据库以后,对所述分布式关系数据库进行查询时,可以根据需要执行连接查询操作的数据列信息,从每个存储节点中查询以所述数据列作为目标列得到的预连接数据表的子表,从所述子表中取得查询结果,将从所述预连接数据表的所有子表中取得的查询结果取并集,得到对组成所述预连接数据表的两个以上的数据表执行连接查询操作时的查询结果。其中,所述预连接数据表,通过按照所述目标列的取值,将两个以上的数据表进行整体排列得到,所述子表,通过根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到。可见,通过根据需要执行连接查询操作的数据列,从每个存储节点中查询根据所述数据列得到的预连接数据表的子表,从所述子表中取得查询结果,实现了可以直接从单个存储节点中查询结果,将从多个单个存储节点中查询出的结果取并集,就可以得到对预连接数据表的查询结果、即得到对组成所述预连接数据表的两个以上的数据表执行连接查询操作时的查询结果。下面举两个具体的例子对本发明进行示例性说明。首先,以名称分别为iubcdr表和iucscdr表的两个表为例阐述本发明技术方案。假定未来可能对iubcdr表和iucscdr表以(imsi)和(imsi, starttime)为条件进行连接查询操作,则iubcdr表的建表语句可以为:
权利要求
1.一种分布式关系数据库的建立方法,其特征在于,该方法包括: 将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内。
2.根据权利要求1所述的方法,其特征在于,所述从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内包括: 按照预定的映射规则,从两个以上的数据表中提取出目标列的取值相同的各行数据,并将所述各行数据存储在同一个存储节点内。
3.根据权利要求1所述的方法,其特征在于,所述从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内包括: 按照目标列的取值,将两个以上的数据表进行整体排列,得到预连接数据表; 根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到子表,使得所述两个以上的数据表中目标列的取值相同的各行数据在同一个子表内,将切分出的不同子表,存储在不同的存储 节点内。
4.根据权利要求3所述的建立方法,其特征在于,对所述预连接数据表进行切分包括: 根据单个存储节点中的当前可用存储空间,从所述预连接数据表中切分出不大于所述当前可用存储空间的子表。
5.根据权利要求3所述的方法,其特征在于,对所述预连接数据表进行切分包括: 将所述预连接数据表切分成两个以上的子表。
6.一种分布式关系数据库的建立装置,其特征在于,该装置包括数据提取模块和写入模块; 所述数据提取模块,用于将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据; 所述写入模块,用于将从两个以上的数据表中提取的、目标列的取值相同的各行数据,存储在同一个存储节点内。
7.根据权利要求6所述的装置,其特征在于, 所述数据提取模块,用于按照预定的映射规则,从两个以上的数据表中提取出目标列的取值相同的各行数据。
8.根据权利要求6所述的装置,其特征在于,所述数据提取模块包括预连接模块和切分模块; 所述预连接模块,用于将未来需要执行连接查询操作的数据列作为目标列,按照目标列的取值,将两个以上的数据表进行整体排列,得到预连接数据表; 所述切分模块,用于根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到子表,使得所述两个以上的数据表中目标列的取值相同的各行数据在同一个子表内; 所述写入模块,用于将所述切分模块切分出的不同子表,写入到不同的存储节点内。
9.根据权利要求8所述的装置,其特征在于, 所述切分模块,用于根据单个存储节点中的当前可用存储空间,从所述预连接数据表中切分出不大于所述当前可用存储空间的子表。
10.根据权利要求8所述的装置,其特征在于,所述切分模块,用于将所述预连接数据表切分成两个以上的子表。
11.一种分布式关系数据库,其特征在于,该数据库包括两个以上的存储节点,在单个存储节点中存储有从两个以上的数据表中提取的、目标列的取值相同的各行数据,其中,所述目标列是未来需要执行连接查询操作的数据列。
12.根据权利要求11所述的数据库,其特征在于,在单个存储节点中存储有从两个以上的数据表中提取的、目标列的取值相同的各行数据包括: 在单个存储节点中存储有从预连接数据表中划分出的子表; 其中,所述预连接数据表,通过按照未来需要执行连接查询操作的数据列的取值,将两个以上的数据表进行整体排列得到,所述子表,通过根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到。
13.根据权利要求12所述的数据库,其特征在于, 在两个以上的存储节点中,分别存储有从同一个预连接数据表中划分出的不同子表。
14.根据权利要求12所述的数据库,其特征在于,在存储节点中包括查询模块; 所述查询模块,用于接收执行连接查询操作的数据列的信息,根据所述数据列的信息查询预连接数据表的子表,返回从所述子表中取得的查询结果。
15.—种分布式关系数据库的查询方法,其特征在于,该方法包括: 根据执行连接查询操作的数据列的信息,查询每个存储节点,将从每个存储节点中取得的查询结果取并集,得到对两个以上的数据表的所述数据列执行连接查询操作时的查询结果; 其中,所述两个以上的数据表中所述数据列的取值相同的各行数据,存储在同一个存储节点内。
16.根据权利要求15所述的方法,其特征在于,所述查询每个存储节点包括: 根据执行连接查询操作的数据列的信息,从每个存储节点中查询以所述数据列作为目标列得到的预连接数据表的子表,从所述子表中取得查询结果; 其中,所述预连接数据表,通过按照所述目标列的取值,将两个以上的数据表进行整体排列得到,所述子表,通过根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到。
17.—种分布式关系数据库的查询装置,其特征在于,该装置包括存储节点查询模块和结果合并模块; 所述存储节点查询模块,用于根据执行连接查询操作的数据列的信息,查询每个存储节点; 所述结果合并模块,用于将从每个存储节点中取得的查询结果取并集,得到对两个以上的数据表的所述数据列执行连接查询操作时的查询结果; 其中,所述两个以上的数据表中所述数据列的取值相同的各行数据,存储在同一个存储节点内。
18.根据权利要求17所述的装置,其特征在于, 所述存储节点查询模块,用于根据执行连接查询操作的数据列的信息,从每个存储节点中查询以所述数据列作为目标列得到的预连接数据表的子表,从所述子表中取得查询结果;其中,所述预连接数据表,通过按照所述目标列的取值,将两个以上的数据表进行整体排列得到,所述子表,通过根据各个存储节点的当前可用存储空间,对所述预连接数据表进行切分得到。
全文摘要
本发明实施例公开了一种分布式关系数据库及其建立、查询方法和装置。该方法包括将未来需要执行连接查询操作的数据列作为目标列,从两个以上的数据表中,提取出目标列的取值相同的各行数据,将所述各行数据存储在同一个存储节点内。应用本发明能够降低数据表的复制和传输开销、以及内存消耗。
文档编号G06F17/30GK103186651SQ201110461308
公开日2013年7月3日 申请日期2011年12月31日 优先权日2011年12月31日
发明者齐骥, 钱岭, 郭磊涛, 周大 申请人:中国移动通信集团公司

最新回复(0)