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

技术编号:12314852 阅读:141 留言:0更新日期:2015-11-12 03:59
本发明专利技术涉及一种数据库数据分片存储方法,包括以下步骤:生成数据库主机中存储的各个数据表对应的多个子表,其中,每一数据表对应的所有子表的数据覆盖对应的数据表,且各子表之间的数据不重叠;将数据库主机中存储的各个数据表对应的多个子表存储到多个数据库备机上,使得数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表;维护数据库主机中的各数据表的子表在数据库备机上的分布信息。上述方法对于读数据请求的响应速度。此外,还提供一种数据库数据分片存储装置,以及提供一种基于数据分片存储的数据库数据查询方法和装置。

【技术实现步骤摘要】

本专利技术涉及数据库
,特别是涉及一种数据库数据分片存储方法和装置,以及涉及一种基于数据分片存储的数据库数据查询方法和装置。
技术介绍
近年来,随着互联网技术的发展,互联网应用越来越普及。随着互联网应用所拥有的客户数量的增加,互联网应用积累的数据量也越来越巨大,而且由于产品之间竞争激烈,用户体验对于互联网应用至关重要,这些针对互联网应用对于数据查询的响应速度以及并发处理能力提出了更高的要求。为了适应用户需求以及在互联网竞争中取得优势,互联网应用提供商致力于提高数据查询的响应速度以及并发处理能力。传统的方案中,一般采用加强数据库服务器的硬件配置的措施,以提高数据库处理服务器的处理性能,这种提升数据库处理服务器的处理性能的方式称为纵向扩展;还是一种方式,称为横向扩展,即是,增加数据库服务器的数量,将一个数据库服务器中的数据全量拷贝到其它的数据库服务器,多个数据库服务器共同提供数据读写服务。上述的纵向扩展方式和横向扩展方式,虽然可以减轻单个数据库服务器的数据查询压力,提高对多个数据查询请求的并发处理能力,可以减少用户等待服务器处理其它用户的数据查询请求的时间,从而一定程度上可以提高数据查询的整体响应速度。但是,在数据查询请求较少的情况下,上述的纵向扩展方式和横向扩展方式对于用户的数据查询请求的响应速度的提高,几乎没有贡献。一个数据查询请求至少会涉及到一张表,对于一个数据查询请求,数据库服务器有可能需要在对应的数据表中遍历整张表,从而可能需要较长的遍历时间。尤其是当一个数据表中的数据量巨大时,查询该整个数据表可能需要花费用户不希望等待的时间。【专利
技术实现思路
】基于此,有必要针对上述查询数据时有可能需要遍历整张数据表从而延长响应速度的问题,提供一种数据库数据分片存储方法和装置。此外,还有必要针对上述查询数据时有可能需要遍历整张数据表从而延长响应速度的问题,提供一种基于数据分片存储的数据库数据查询方法和装置。—种数据库数据分片存储方法,包括以下步骤:生成数据库主机中存储的各个数据表对应的多个子表,其中,每一数据表对应的所有子表的数据覆盖对应的数据表,且各子表之间的数据不重叠;将数据库主机中存储的各个数据表对应的多个子表存储到多个数据库备机上,使得数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表;维护数据库主机中的各数据表的子表在数据库备机上的分布信息。在其中一个实施例中,所述数据库主机中存储完整的数据库。在其中一个实施例中,数据表的子表在数据库备机上的分布信息包括存储了数据表对应的子表的数据库备机的标识,以及数据库备机上存储的数据表子表的主键值范围。在其中一个实施例中,同一个子表被存储到多个不同的数据库备机上。在其中一个实施例中,还包括每间隔预设时长在数据库备机上进行负载均衡处理的过程,所述在数据库备机上进行负载均衡处理的过程包括以下步骤:获取数据库备机中数据存储量相对较小的数据库备机,以及获取数据库备机中数据存储量相对较大的数据库备机;将数据存储量相对较大的数据库备机上的部分子表迀移到数据存储量相对较小的数据库备机上,使得各数据库备机上的数据存储量相对均衡;根据子表迀移情况更新数据库主机中的各数据表的子表在备机上的分布信息。在其中一个实施例中,还包括以下步骤:每间隔预设时长检查数据库备机上的子表的数据存储量是否超过第一阈值;将数据存储量超过第一阈值的子表拆分成两个以上的子表,使得拆分后的子表的数据存储量不超过第一阈值。在其中一个实施例中,还包括以下步骤:每间隔预设时长检查数据库备机上是否存在同一数据表对应的多个数据存储量小于第二阈值的子表;若存在同一数据表对应的多个数据存储量小于第二阈值的子表,则将同一数据表对应的多个数据存储量小于第二阈值的子表进行合并。在其中一个实施例中,还包括以下步骤:接收写数据请求;将所述写数据请求发送给数据库主机,以请求数据库主机根据写数据请求更新对应数据表中的数据;接收数据库主机返回的数据更新结果;向所述写数据请求的发送方返回所述数据更新结果;以及,所述方法还包括以下步骤:每间隔预设时长将数据库主机中的数据同步到数据库备机中。—种基于数据分片存储的数据库数据查询方法,包括以下步骤:接收数据查询请求;获取所述数据查询请求所涉及的数据库主机中存储的数据表,其中,数据库主机中存储的各个数据表对应多个子表,每一数据表对应的所有子表的数据覆盖对应的数据表,且各子表之间的数据不重叠;而且数据库主机中存储的各个数据表对应的多个子表存储在多个数据库备机上,数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表;根据数据库主机中存储的数据表的子表在数据库备机上的分布信息,查询所述数据查询请求所涉及的数据库主机中存储的数据表的子表所分布的数据库备机;向所述所分布的数据库备机发送所述数据查询请求对应的子查询请求;接收所述所分布的数据库备机返回的子查询结果;向所述数据查询请求发送方返回所述子查询结果对应的数据查询结果。在其中一个实施例中,所述数据表的子表在数据库备机上的分布信息包括存储了数据表对应的子表的数据库备机的标识,以及数据库备机上存储的数据表子表的主键值范围;若所述数据查询请求中指定了主键值需要满足的条件,则向所述所分布的数据库备机发送所述数据查询请求对应的子查询请求的步骤包括:根据数据表的子表在数据库备机上的分布信息查询满足对应条件的主键值落入所存储的数据表子表的主键值范围的数据库备机,向查询得到的数据库备机发送所述数据查询请求对应的子查询请求。在其中一个实施例中,所述数据查询请求中包含目标字段和查询条件、以及可省略的对满足查询条件的目标字段值需进行的汇总计算操作的描述;当需要向多台数据库备机发送所述子查询请求时,所述子查询请求包含所述目标字段和所述查询条件,以使得接收到所述子查询请求的数据库备机返回满足所述查询条件的所述目标字段的值,即所述子查询结果;若所述数据查询请求中还包含对满足查询条件的目标字段值需进行的汇总计算操作的描述,则所述方法还包括以下步骤:将接收到所述子查询请求的数据库备机返回的满足所述查询条件的所述目标字段的值进行所述描述对应的汇总计算操作,得到所述数据查询结果。在其中一个实施例中,同一个子表被存储到多个不同的数据库备机上;所述子查询请求用于请求数据库备机返回子查询结果,该子查询结果所包含的数据满足所述数据查询请求的查询条件,且子查询结果中的数据对应有主键值;所述方法还包括步骤:根据主键值对各数据库备机返回的子查询结果进行去重处理,得到所述数据查询结果。在其中一个实施例中,所述数据库主机中存储完整的数据库;在所述获取所述数据查询请求所涉及的数据库主机中存储的数据表的步骤之后,所述方法还包括以下步骤:判断所述数据查询请求所涉及的数据库主机中存储的数据表是否包含多个数据表;若是,则将所述数据查询请求发送给所述数据库主机,接收所述数据库主机返回的数据查询结果,向所述数据查询请求发送方返回所述数据查询结果;否则,进入所述查询所述数据查询请求所涉及的数据库主机中存储的数据表的子表所分布的数据库备机的步骤。—种数据库数据分片存储装置,包括:子表生成模块,用于生成数据库主机中存储的各个数据表对应的多个子表,其中,每一数本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/CN105045877.html" title="数据库数据分片存储方法和装置、数据查询方法和装置原文来自X技术">数据库数据分片存储方法和装置、数据查询方法和装置</a>

【技术保护点】
一种数据库数据分片存储方法,包括以下步骤:生成数据库主机中存储的各个数据表对应的多个子表,其中,每一数据表对应的所有子表的数据覆盖对应的数据表,且各子表之间的数据不重叠;将数据库主机中存储的各个数据表对应的多个子表存储到多个数据库备机上,使得数据库主机中存储的各个数据表中存在对应的子表被分配到多个数据库备机上的数据表;维护数据库主机中的各数据表的子表在数据库备机上的分布信息。

【技术特征摘要】

【专利技术属性】
技术研发人员:吴利斌刘少东黄茂彪
申请(专利权)人:深圳市深信服电子科技有限公司
类型:发明
国别省市:广东;44

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

1