访问分布式数据库的方法和分布式数据服务的装置制造方法及图纸

技术编号:15791981 阅读:118 留言:0更新日期:2017-07-09 22:51
本申请实施例涉及数据库领域,尤其涉及访问分布式数据库的方法,包括:接收应用服务器发送的第一访问请求,所述第一访问请求包含了所述第一数据表的表名和所述第一数据表的关键值;根据所述第一数据表的表名,查询到所述第一数据表为复制表和所述复制表对应的第一访问规则,其中,所述复制表为存储在多个数据库服务器上的相同数据表;确定所述第一访问规则中所述关键值对应的数据库服务器为优先访问的第一数据库服务器;向所述第一数据库服务器发送所述第一访问请求。分布式数据库访问性能大大提升。

【技术实现步骤摘要】
访问分布式数据库的方法和分布式数据服务的装置
本申请涉及数据库
,尤其涉及访问分布式数据库技术。
技术介绍
对于分布式数据库系统而言,不同类型的数据可能分布在不同的数据库中。比如:表A被存储在1个数据库中,表B被存储在另外一个数据库中。这样如果需要访问表格A和表格B,那么可能是需要进行跨数据库(简称,跨库)关联访问。目前,可以使用复制表的方法来解决在分布式数据库系统中跨库关联的问题。这里的复制表为存储在多个数据库服务器上的同一数据表,通俗来说,就是一张数据表被同时存储在多个数据库服务器上。如果复制表需要数据更新,目前通常的做法是:对多个数据库服务器的复制表进行同步更新。但是由于数据一致性的要求,在这种数据更新方式下,需要将更新处理请求发送给所有复制表所在的数据库服务器,并且只有所有复制表所在的数据库服务器都成功更新数据时,该复制表的数据更新才算更新成功。如果复制表所在的某个数据库服务器的数据更新失败时,那么本次数据更新就失败了,因此该种方式的性能和可靠性不高。
技术实现思路
本申请实施例提供一种访问分布式数据库的方法和分布式数据服务的装置,提高访问分布式数据库的性能和可靠性。一方面,本申请的实施例提供了一种访问分布式数据库的方法。方法包括:数据库中间件接收应用服务器发送的第一访问请求(如增加请求,删除请求,修改请求,查询请求等),第一访问请求包含了第一数据表的表名和所述第一数据表的关键值(通常还可以包含访问动作,比如查询,删除,修改或者增加),可以通过关键值查询到该数据表优先访问的数据库服务器;数据库中间件根据第一数据表的表名,查询到第一数据表为复制表和所述复制表对应的第一访问规则(例如:可以通过访问规则内容和数据表访问规则关系进行查询),其中,这里的复制表为存储在多个数据库服务器上的相同数据表;数据库中间件确定所述第一访问规则中所述关键值对应的数据库服务器为优先访问的第一数据库服务器;数据库中间件向第一数据库服务器发送所述第一访问请求。使用分区优先访问的读写策略,访问请求(特别是写操作,例如:增加,删除和修改)一般只发送给在优先关键值对应的数据库服务器中进行处理,不涉及其它复制表。只有在优先关键值对应的数据库服务器故障情况下,才使用其他分区进行处理该访问请求,因此数据库访问性能大大提升。在一个可能设计中,数据库中间件在向第一数据库服务器发送第一访问请求之前,确定所述第一数据库服务器发生故障或者断网,数据库中间件向除所述第一数据库服务器之外的所有存储复制表的数据库服务器中任意一个数据库服务器发送所述第一访问请求。如上面分析,使用分区访问优先读写策略,正常情况下写操作只在客户身份证发行地的数据复制表进行,但是当身份证发行地数据库故障时,中间件随机选择一个其它分区的复制表进行更新,业务照常开展,因此解决了单点故障问题。在一个可能设计中,同步设备确定所述第一数据库服务器处理了所述访问请求后,如果第一数据表包含数据发生了变化,同步设备向除所述第一数据库服务器之外的所有存储复制表的数据库服务器发送所述第一访问请求。数据更新后通过同步设备更新到其它复制表,以及避免了多复制表更新单点故障问题,以及提高了读数据的实时性,在一个可能设计中,数据库中间件接收应用服务器发送的第二访问请求,所述第二访问请求包含了第二数据表的表名,第三数据表的表名和第二数据表的关键值;根据所述第二数据表的表名,数据库中间件查询到所述第二数据表为分区表和所述分区表的第二访问规则,其中分区表为数据按照分区规则分散并且唯一存储到多个数据库服务器中的数据表,所述分区表在所述多个数据库服务器中具有相同表名和表结构;根据所述第二数据表的关键值和所述第二访问规则,数据库中间件确定存储所述分区关键值对应的分区表的第二数据库服务器;根据所述第三数据表的表名,数据库中间件查询到所述第二数据表为复制表和第三访问规则,从所述第三访问规则中,确认所述第二数据库服务器存储了所述第二数据表;或者从所述第三访问规则中,确认所有存储所述第二数据表的数据库服务器,当所述所有存储所述第二数据表的数据库服务器中包含了所述第二数据库服务器时;数据库中间件将所述第二访问请求发送给所述第二数据库服务器。在一个可能设计中,数据库中间件查询到所述第二数据表为复制表和第三访问规则,从所述第三访问规则中,确认所述第二数据库服务器没有存储了所述第二数据表;或者从所述第三访问规则中,确认所有存储所述第二数据表的数据库服务器,当所述所有存储所述第二数据表的数据库服务器中没有包含了述第二数据库服务器时;数据库中间件进行跨库关联操作。另一方面,本申请的实施例提供一种访问分布式数据库的方法,方法包括:数据库中间件接收应用服务器发送的访问请求,访问请求包含了第一数据表的表名,第二数据表的表名,所述第一数据表的关键值和所述第二数据表的关键值;根据所述第一数据表的表名,查询到所述第一数据表为复制表和所述第一数据表对应的第一访问规则,其中,所述复制表为存储在多个数据库服务器上的同一数据表;根据所述第二数据表的表名,确定所述第二数据表为复制表和所述第二数据表对应的第二访问规则;当第一访问规则和第二访问规则相同时,从第一访问规则或第二访问规则,确认所述第一数据表的关键值或所述第二数据表的关键值对应的数据库服务器为优先访问的第一数据库服务器;向所述第一数据库服务器发送所述第一访问请求。在一个可能设计中,当第一访问规则和第二访问规则不同时,从所述第一访问规则中,确认所有存储所述第一数据表的数据库服务器,从所述第二访问规则中,确认所有存储所述第二数据表的数据库服务器;确认所有存储所述第一数据表的数据库服务器和所有存储所述第二数据表的数据库服务器中有相同的一个或多个时,确认所述相同一个或多个的数据库服务器中的任意一个为优先访问的第二数据库服务器;向所述第二数据库服务器发送所述第一访问请求。在一个可能设计中,数据库中间件所有存储所述第一数据表的数据库服务器和所有存储所述第二数据表的数据库服务器没有任何一相同时,数据库中间件进行跨库关联操作。另一方面,本申请实施例提供了一种分布式数据服务的装置,该装置具有实现上述方法实际中数据库中间件的功能,所述功能可以通过硬件实现,也可以通过硬件执行的软件实现。所述硬件或软件包括一个或多个上述功能相对应的模块。该分布式数据服务的装置可以适用于上述访问请求只包含复制表的表名的场景,或者可以适用于上述访问请求只包含复制表的表名和分区表的表名的场景,或者可以适用于上述访问请求只包含2个或2个以上的复制表的表名的场景,或者上述所有场景。再一方面,本申请实施例提供了一种计算机存储介质,用于存储为上述数据库中间件所用的计算机软件指令,其包含用于执行上述所设计的程序。该数据库中间件可以适用于上述访问请求只包含复制表的表名的场景,或者可以适用于上述访问请求只包含复制表的表名和分区表的表名的场景,或者可以适用于上述访问请求只包含2个或2个以上的复制表的表名的场景,或者上述所有场景。相较于现有技术,本专利技术提供的方案中,访问请求(特别是写操作,例如:增加,删除和修改)一般只发送给在优先关键值对应的数据库服务器中进行处理,不涉及其它复制表。只有在优先关键值对应的数据库服务器故障情本文档来自技高网...
访问分布式数据库的方法和分布式数据服务的装置

【技术保护点】
一种访问分布式数据库的方法,其特征在于,方法包括:接收应用服务器发送的第一访问请求,所述第一访问请求包含了所述第一数据表的表名和所述第一数据表的关键值;根据所述第一数据表的表名,查询到所述第一数据表为复制表和所述复制表对应的第一访问规则,其中,所述复制表为存储在多个数据库服务器上的相同数据表;确定所述第一访问规则中所述关键值对应的数据库服务器为优先访问的第一数据库服务器;向所述第一数据库服务器发送所述第一访问请求。

【技术特征摘要】
1.一种访问分布式数据库的方法,其特征在于,方法包括:接收应用服务器发送的第一访问请求,所述第一访问请求包含了所述第一数据表的表名和所述第一数据表的关键值;根据所述第一数据表的表名,查询到所述第一数据表为复制表和所述复制表对应的第一访问规则,其中,所述复制表为存储在多个数据库服务器上的相同数据表;确定所述第一访问规则中所述关键值对应的数据库服务器为优先访问的第一数据库服务器;向所述第一数据库服务器发送所述第一访问请求。2.如权利要求1所述的方法,其特征在于,在所述向第一数据库服务器发送所述第一访问请求之前,还包括:确定所述第一数据库服务器发生故障或者断网,向除所述第一数据库服务器之外的所有存储复制表的数据库服务器中任意一个数据库服务器发送所述第一访问请求。3.如权利要求1所述的方法,其特征在于,还包括:确定所述第一数据库服务器处理了所述访问请求后,所述第一数据表包含数据发生了变化,向除所述第一数据库服务器之外的所有存储复制表的数据库服务器发送所述第一访问请求。4.如权利要求1-3中任意一个所述的方法,其特征在于,还包括:接收应用服务器发送的第二访问请求,所述第二访问请求包含了第二数据表的表名,第三数据表的表名和第二数据表的关键值;根据所述第二数据表的表名,查询到所述第二数据表为分区表和所述分区表的第二访问规则,其中分区表为数据按照分区规则分散并且唯一存储到多个数据库服务器中的数据表,所述分区表在所述多个数据库服务器中具有相同表名和表结构;根据所述第二数据表的关键值和所述第二访问规则,确定存储所述分区关键值对应的分区表的第二数据库服务器;根据所述第三数据表的表名,查询到所述第二数据表为复制表和第三访问规则,从所述第三访问规则中,确认所述第二数据库服务器存储了所述第二数据表;或者从所述第三访问规则中,确认所有存储所述第二数据表的数据库服务器,当所述所有存储所述第二数据表的数据库服务器中包含了所述第二数据库服务器时;将所述第二访问请求发送给所述第二数据库服务器。5.如权利要求1所述的方法,其特征在于,还包括:所述访问请求包含了查询请求,删除请求,修改请求或者增加请求。6.一种访问分布式数据库的方法,其特征在于,方法包括:接收应用服务器发送的访问请求,所述访问请求包含了第一数据表的表名,第二数据表的表名,所述第一数据表的关键值和所述第二数据表的关键值;根据所述第一数据表的表名,查询到所述第一数据表为复制表和所述第一数据表对应的第一访问规则,其中,所述复制表为存储在多个数据库服务器上的同一数据表;根据所述第二数据表的表名,确定所述第二数据表为复制表和所述第二数据表对应的第二访问规则;当第一访问规则和第二访问规则相同时,从第一访问规则或第二访问规则,确认所述第一数据表的关键值或所述第二数据表的关键值对应的数据库服务器为优先访问的第一数据库服务器;向所述第一数据库服务器发送所述第一访问请求。7.如权利要求1所述的方法,其特征在于,还包括:当第一访问规则和第二访问规则不同时,从所述第一访问规则中,确认所有存储所述第一数据表的数据库服务器,从所述第二访问规则中,确认所有存储所述第二数据表的数据库服务器;确认所有存储所述第一数据表的数据库服务器和所有存储所述第二数据表的数据库服务器中有相同的一个或多个时,确认所述相同一个或多个的数据库服务器中的任意一个为优先访问的第二数据库服务器;向所述第二数据库服务器发送所述第一访问请求。8.一种分布式数据服务的装置,其特征在于,包括:接收单元,用于接收应用服务器发送的第一访问请求,所述第一访问请求包含了所述第一数据表的表名和所述第一数据表的关键值;查询单元,用于根据所述第一数据表的表名,查询到所述第一数据表为复制表和所述复制表对应的第一访问规则,其中,所述复制表为存储在多个数据库服务器上的相同数据表;确定单元,用于确定所述第一访问规则中所述关键值对应的数据库服务器为优先访问的第一数据库服务器;发送单元,用于向所述第一数据库服务器发送所述第一访问请求。9.如权利要求8所述的装置,其特征在于,所述发送单元,还用于确定所述第一数据库服务器发生故障或者断网,向除所述第一数据库服务器之外的所有存储复制表的数据库服务器中任意一个数据库服务器发送所述第一访问请求。10.如权利要求8...

【专利技术属性】
技术研发人员:李臻峰卢元元韩建中
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1