数据库数据分片存储方法和装置、数据查询方法和装置的制造方法

文档序号:9326963阅读:351来源:国知局
数据库数据分片存储方法和装置、数据查询方法和装置的制造方法
【技术领域】
[0001]本发明涉及数据库技术领域,特别是涉及一种数据库数据分片存储方法和装置,以及涉及一种基于数据分片存储的数据库数据查询方法和装置。
【背景技术】
[0002]近年来,随着互联网技术的发展,互联网应用越来越普及。随着互联网应用所拥有的客户数量的增加,互联网应用积累的数据量也越来越巨大,而且由于产品之间竞争激烈,用户体验对于互联网应用至关重要,这些针对互联网应用对于数据查询的响应速度以及并发处理能力提出了更高的要求。
[0003]为了适应用户需求以及在互联网竞争中取得优势,互联网应用提供商致力于提高数据查询的响应速度以及并发处理能力。传统的方案中,一般采用加强数据库服务器的硬件配置的措施,以提高数据库处理服务器的处理性能,这种提升数据库处理服务器的处理性能的方式称为纵向扩展;还是一种方式,称为横向扩展,即是,增加数据库服务器的数量,将一个数据库服务器中的数据全量拷贝到其它的数据库服务器,多个数据库服务器共同提供数据读写服务。
[0004]上述的纵向扩展方式和横向扩展方式,虽然可以减轻单个数据库服务器的数据查询压力,提高对多个数据查询请求的并发处理能力,可以减少用户等待服务器处理其它用户的数据查询请求的时间,从而一定程度上可以提高数据查询的整体响应速度。但是,在数据查询请求较少的情况下,上述的纵向扩展方式和横向扩展方式对于用户的数据查询请求的响应速度的提高,几乎没有贡献。一个数据查询请求至少会涉及到一张表,对于一个数据查询请求,数据库服务器有可能需要在对应的数据表中遍历整张表,从而可能需要较长的遍历时间。
[0005]尤其是当一个数据表中的数据量巨大时,查询该整个数据表可能需要花费用户不希望等待的时间。

【发明内容】

[0006]基于此,有必要针对上述查询数据时有可能需要遍历整张数据表从而延长响应速度的问题,提供一种数据库数据分片存储方法和装置。
[0007]此外,还有必要针对上述查询数据时有可能需要遍历整张数据表从而延长响应速度的问题,提供一种基于数据分片存储的数据库数据查询方法和装置。
[0008]—种数据库数据分片存储方法,包括以下步骤:
[0009]生成数据库主机中存储的各个数据表对应的多个子表,其中,每一数据表对应的所有子表的数据覆盖对应的数据表,且各子表之间的数据不重叠;
[0010]将数据库主机中存储的各个数据表对应的多个子表存储到多个数据库备机上,使得数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表;
[0011]维护数据库主机中的各数据表的子表在数据库备机上的分布信息。
[0012]在其中一个实施例中,所述数据库主机中存储完整的数据库。
[0013]在其中一个实施例中,数据表的子表在数据库备机上的分布信息包括存储了数据表对应的子表的数据库备机的标识,以及数据库备机上存储的数据表子表的主键值范围。
[0014]在其中一个实施例中,同一个子表被存储到多个不同的数据库备机上。
[0015]在其中一个实施例中,还包括每间隔预设时长在数据库备机上进行负载均衡处理的过程,所述在数据库备机上进行负载均衡处理的过程包括以下步骤:
[0016]获取数据库备机中数据存储量相对较小的数据库备机,
[0017]以及获取数据库备机中数据存储量相对较大的数据库备机;
[0018]将数据存储量相对较大的数据库备机上的部分子表迀移到数据存储量相对较小的数据库备机上,使得各数据库备机上的数据存储量相对均衡;
[0019]根据子表迀移情况更新数据库主机中的各数据表的子表在备机上的分布信息。
[0020]在其中一个实施例中,还包括以下步骤:
[0021]每间隔预设时长检查数据库备机上的子表的数据存储量是否超过第一阈值;
[0022]将数据存储量超过第一阈值的子表拆分成两个以上的子表,使得拆分后的子表的数据存储量不超过第一阈值。
[0023]在其中一个实施例中,还包括以下步骤:
[0024]每间隔预设时长检查数据库备机上是否存在同一数据表对应的多个数据存储量小于第二阈值的子表;
[0025]若存在同一数据表对应的多个数据存储量小于第二阈值的子表,则将同一数据表对应的多个数据存储量小于第二阈值的子表进行合并。
[0026]在其中一个实施例中,还包括以下步骤:
[0027]接收写数据请求;
[0028]将所述写数据请求发送给数据库主机,以请求数据库主机根据写数据请求更新对应数据表中的数据;
[0029]接收数据库主机返回的数据更新结果;
[0030]向所述写数据请求的发送方返回所述数据更新结果;
[0031]以及,所述方法还包括以下步骤:
[0032]每间隔预设时长将数据库主机中的数据同步到数据库备机中。
[0033]—种基于数据分片存储的数据库数据查询方法,包括以下步骤:
[0034]接收数据查询请求;
[0035]获取所述数据查询请求所涉及的数据库主机中存储的数据表,其中,数据库主机中存储的各个数据表对应多个子表,每一数据表对应的所有子表的数据覆盖对应的数据表,且各子表之间的数据不重叠;而且数据库主机中存储的各个数据表对应的多个子表存储在多个数据库备机上,数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表;
[0036]根据数据库主机中存储的数据表的子表在数据库备机上的分布信息,查询所述数据查询请求所涉及的数据库主机中存储的数据表的子表所分布的数据库备机;
[0037]向所述所分布的数据库备机发送所述数据查询请求对应的子查询请求;
[0038]接收所述所分布的数据库备机返回的子查询结果;
[0039]向所述数据查询请求发送方返回所述子查询结果对应的数据查询结果。
[0040]在其中一个实施例中,所述数据表的子表在数据库备机上的分布信息包括存储了数据表对应的子表的数据库备机的标识,以及数据库备机上存储的数据表子表的主键值范围;
[0041]若所述数据查询请求中指定了主键值需要满足的条件,则向所述所分布的数据库备机发送所述数据查询请求对应的子查询请求的步骤包括:
[0042]根据数据表的子表在数据库备机上的分布信息查询满足对应条件的主键值落入所存储的数据表子表的主键值范围的数据库备机,向查询得到的数据库备机发送所述数据查询请求对应的子查询请求。
[0043]在其中一个实施例中,所述数据查询请求中包含目标字段和查询条件、以及可省略的对满足查询条件的目标字段值需进行的汇总计算操作的描述;
[0044]当需要向多台数据库备机发送所述子查询请求时,所述子查询请求包含所述目标字段和所述查询条件,以使得接收到所述子查询请求的数据库备机返回满足所述查询条件的所述目标字段的值,即所述子查询结果;
[0045]若所述数据查询请求中还包含对满足查询条件的目标字段值需进行的汇总计算操作的描述,则所述方法还包括以下步骤:
[0046]将接收到所述子查询请求的数据库备机返回的满足所述查询条件的所述目标字段的值进行所述描述对应的汇总计算操作,得到所述数据查询结果。
[0047]在其中一个实施例中,同一个子表被存储到多个不同的数据库备机上;
[0048]所述子查询请求用于请求数据库备机返回子查询结果,该子查询结果所包含的数据满足所述数据查询请求的查询条件,且子查询结果中的数据对应有主键值;
[0049]所述方法还包括步骤:根据主键值对各数据库备机返回的子查询结果进行去重处理,得到所述数据查询结果。
[0050]在其中一个实施例中,所述数据库主机中存储完整的数据库;
[0051]在所述获取所述数据查询请求所涉及的数据库主机中存储的数据表的步骤之后,所述方法还包括以下步骤:
[0052]判断所述数据查询请求所涉及的数据库主机中存储的数据表是否包含多个数据表;
[0053]若是,则将所述数据查询请求发送给所述数据库主机,接收所述数据库主机返回的数据查询结果,向所述数据查询请求发送方返回所述数据查询结果;
[0054]否则,进入所述查询所述数据查询请求所涉及的数据库主机中存储的数据表的子表所分布的数据库备机的步骤。
[0055]—种数据库数据分片存储装置,包括:
[0056]子表生成模块,用于生成数据库主机中存储的各个数据表对应的多个子表,其中,每一数据表对应的所有子表的数据覆盖对应的数据表,且各子表之间的数据不重叠;
[0057]子表分配模块,用于将数据库主机中存储的各个数据表对应的多个子表存储到多个数据库备机上,使得数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表;
[0058]分布信息维护模块,用于维护数据库主机中的各数据表的子表在数据库备机上的分布信息。
[0059]—种基于数据分片存储的数据库数据查询装置,包括:
[0060]查询请求接收模块,用于接收数据查询请求;
[0061]数据表获取模块,用于获取所述数据查询请求所涉及的数据库主机中存储的数据表,其中,数据库主机中存储的各个数据表对应多个子表,每一数据表对应的所有子表的数据覆盖对应的数据表,且各子表之间的数据不重叠;而且数据库主机中存储的各个数据表对应的多个子表存储在多个数据库备机上,数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表;
[0062]分布备机查询模块,用于查询所述数据查询请求所涉及的数据库主机中存储的数据表的子表所分布的数据库备机;
[0063]子查询请求发送模块,用于向所述所分布的数据库备机发送所述数据查询请求对应的子查询请求;
[0064]子查询结果接收模块,用于接收所述所分布的数据库备机返回的子查询结果;
[0065]查询结果返回模块,用于向所述数据查询请求发送方返回所述子查询结果对应的数据查询结果。
[0066]上述数据库数据分片存储方法和装置,生成数据库主机中存储的各个数据表对应的子表,将子表存储到多个数据库备机上,而且,使得数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表,对该类数据表的读数据请求可以被分配到多个数据库备机上,从而可在多个数据库备机上并发查询数据,可以加快查询速度;而且,每一个数据库备机上都只是存储该类数据表的一部分数据,需要查询的数据量变得更少,从而可以进一步加快查询速度;以至于可以提高数据库主机和数据库备机对于读数据请求的整体响应速度。
[0067]上述基于数据分片存储的数据库数据查询方法和装置中,数据库主机中存储的数据表对应的多个子表存储在多个数据库备机上,而且,数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表;接收到数据查询请求后,查询数据查询请求所涉及的数据库主机中存储的数据表的子表所分布的数据库备机,在所分布的数据库备机上进行查询,得到数据查询结果;当某一数据表对应的子表被存储到不同的数据库备机上时,对该数据表的数据查询请求可以被分配到多个数据库备机上,从而可在多个数据库备机上并发查询数据,加快对这类数据表的数据查询速度。而且,每一个数据库备机上都只是存储该类数据表的一部分数据,每一数据库备机需要查询的数据量变得更少,从而可以进一步加快该类数据表的数据查询速度;以至于可以提高数据库主机和数据库备机对于读数据请求的整体响应速度。
【附图说明】
[0068]图1A为一个实施例中的数据库数据分片存储方法的流程示意图;
[0069]图1B为一个实施例中的数据库数据分片存储方法的子表生成即存储示意图;
[0070]图2为一个实施例中每次在数据库备机上进行负载均衡处理的过程的流程示意图;
[0071]图3为一个实施例中拆分子表的过程的流程示意图;
[0072]图4为一个实施例中合并子表的过程的流程示意图;
[0073]图5为一个实施例中写数据过程的流程示意图;
[0074]图6为一个实施例中的基于数据分片存储的数据库数据查询方法的流程示意图;
[0075]图7为另一实施例中的基于数据分片存储的数据库数据查询方法的流程示意图;
[0076]图8为又一实施例中的基于数据分片存储的数据库数据查询方法的流程示意图;
[0077]图9为再一实施例中的基于数据分片存储的数据库数据查询方法的流程示意图;
[0078]图10为一个实施例的基于数据分片存储的数据库数据查询方法中管理服务器与数据库主机以及数据库备机之间的交互时序示意图;
[0079]图11为一个实施例中的数据库数据分片存储装置的结构示意图;
[0080]图12为另一实施例中的数据库数据分片存储装置的结构示意图;
[0081]图13为又一实施例中的数据库数据分片存储装置的结构示意图;
[0082]图14为再一实施例中的数据库数据分片存储装置的结构示意图;
[0083]图15为其它一个实施例中的数据库数据分片存储装置的结构示意图;
[0084]图16为一个实施例中的基于数据分片存储的数据库数据查询装置的结构示意图;
[0085]图17为另
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1