访问分布式数据库的方法和分布式数据服务的装置与流程

文档序号:12824869阅读:224来源:国知局
本申请涉及数据库
技术领域
:,尤其涉及访问分布式数据库技术。
背景技术
::对于分布式数据库系统而言,不同类型的数据可能分布在不同的数据库中。比如:表a被存储在1个数据库中,表b被存储在另外一个数据库中。这样如果需要访问表格a和表格b,那么可能是需要进行跨数据库(简称,跨库)关联访问。目前,可以使用复制表的方法来解决在分布式数据库系统中跨库关联的问题。这里的复制表为存储在多个数据库服务器上的同一数据表,通俗来说,就是一张数据表被同时存储在多个数据库服务器上。如果复制表需要数据更新,目前通常的做法是:对多个数据库服务器的复制表进行同步更新。但是由于数据一致性的要求,在这种数据更新方式下,需要将更新处理请求发送给所有复制表所在的数据库服务器,并且只有所有复制表所在的数据库服务器都成功更新数据时,该复制表的数据更新才算更新成功。如果复制表所在的某个数据库服务器的数据更新失败时,那么本次数据更新就失败了,因此该种方式的性能和可靠性不高。技术实现要素:本申请实施例提供一种访问分布式数据库的方法和分布式数据服务的装置,提高访问分布式数据库的性能和可靠性。一方面,本申请的实施例提供了一种访问分布式数据库的方法。方法包括:数据库中间件接收应用服务器发送的第一访问请求(如增加请求,删除请求,修改请求,查询请求等),第一访问请求包含了第一数据表的表名和所述第一 数据表的关键值(通常还可以包含访问动作,比如查询,删除,修改或者增加),可以通过关键值查询到该数据表优先访问的数据库服务器;数据库中间件根据第一数据表的表名,查询到第一数据表为复制表和所述复制表对应的第一访问规则(例如:可以通过访问规则内容和数据表访问规则关系进行查询),其中,这里的复制表为存储在多个数据库服务器上的相同数据表;数据库中间件确定所述第一访问规则中所述关键值对应的数据库服务器为优先访问的第一数据库服务器;数据库中间件向第一数据库服务器发送所述第一访问请求。使用分区优先访问的读写策略,访问请求(特别是写操作,例如:增加,删除和修改)一般只发送给在优先关键值对应的数据库服务器中进行处理,不涉及其它复制表。只有在优先关键值对应的数据库服务器故障情况下,才使用其他分区进行处理该访问请求,因此数据库访问性能大大提升。在一个可能设计中,数据库中间件在向第一数据库服务器发送第一访问请求之前,确定所述第一数据库服务器发生故障或者断网,数据库中间件向除所述第一数据库服务器之外的所有存储复制表的数据库服务器中任意一个数据库服务器发送所述第一访问请求。如上面分析,使用分区访问优先读写策略,正常情况下写操作只在客户身份证发行地的数据复制表进行,但是当身份证发行地数据库故障时,中间件随机选择一个其它分区的复制表进行更新,业务照常开展,因此解决了单点故障问题。在一个可能设计中,同步设备确定所述第一数据库服务器处理了所述访问请求后,如果第一数据表包含数据发生了变化,同步设备向除所述第一数据库服务器之外的所有存储复制表的数据库服务器发送所述第一访问请求。数据更新后通过同步设备更新到其它复制表,以及避免了多复制表更新单点故障问题,以及提高了读数据的实时性,在一个可能设计中,数据库中间件接收应用服务器发送的第二访问请求,所述第二访问请求包含了第二数据表的表名,第三数据表的表名和第二数据表的关键值;根据所述第二数据表的表名,数据库中间件查询到所述第二数据表 为分区表和所述分区表的第二访问规则,其中分区表为数据按照分区规则分散并且唯一存储到多个数据库服务器中的数据表,所述分区表在所述多个数据库服务器中具有相同表名和表结构;根据所述第二数据表的关键值和所述第二访问规则,数据库中间件确定存储所述分区关键值对应的分区表的第二数据库服务器;根据所述第三数据表的表名,数据库中间件查询到所述第二数据表为复制表和第三访问规则,从所述第三访问规则中,确认所述第二数据库服务器存储了所述第二数据表;或者从所述第三访问规则中,确认所有存储所述第二数据表的数据库服务器,当所述所有存储所述第二数据表的数据库服务器中包含了所述第二数据库服务器时;数据库中间件将所述第二访问请求发送给所述第二数据库服务器。在一个可能设计中,数据库中间件查询到所述第二数据表为复制表和第三访问规则,从所述第三访问规则中,确认所述第二数据库服务器没有存储了所述第二数据表;或者从所述第三访问规则中,确认所有存储所述第二数据表的数据库服务器,当所述所有存储所述第二数据表的数据库服务器中没有包含了述第二数据库服务器时;数据库中间件进行跨库关联操作。另一方面,本申请的实施例提供一种访问分布式数据库的方法,方法包括:数据库中间件接收应用服务器发送的访问请求,访问请求包含了第一数据表的表名,第二数据表的表名,所述第一数据表的关键值和所述第二数据表的关键值;根据所述第一数据表的表名,查询到所述第一数据表为复制表和所述第一数据表对应的第一访问规则,其中,所述复制表为存储在多个数据库服务器上的同一数据表;根据所述第二数据表的表名,确定所述第二数据表为复制表和所述第二数据表对应的第二访问规则;当第一访问规则和第二访问规则相同时,从第一访问规则或第二访问规则,确认所述第一数据表的关键值或所述第二数据表的关键值对应的数据库服务器为优先访问的第一数据库服务器;向所述第一数据库服务器发送所述第一访问请求。在一个可能设计中,当第一访问规则和第二访问规则不同时,从所述第一 访问规则中,确认所有存储所述第一数据表的数据库服务器,从所述第二访问规则中,确认所有存储所述第二数据表的数据库服务器;确认所有存储所述第一数据表的数据库服务器和所有存储所述第二数据表的数据库服务器中有相同的一个或多个时,确认所述相同一个或多个的数据库服务器中的任意一个为优先访问的第二数据库服务器;向所述第二数据库服务器发送所述第一访问请求。在一个可能设计中,数据库中间件所有存储所述第一数据表的数据库服务器和所有存储所述第二数据表的数据库服务器没有任何一相同时,数据库中间件进行跨库关联操作。另一方面,本申请实施例提供了一种分布式数据服务的装置,该装置具有实现上述方法实际中数据库中间件的功能,所述功能可以通过硬件实现,也可以通过硬件执行的软件实现。所述硬件或软件包括一个或多个上述功能相对应的模块。该分布式数据服务的装置可以适用于上述访问请求只包含复制表的表名的场景,或者可以适用于上述访问请求只包含复制表的表名和分区表的表名的场景,或者可以适用于上述访问请求只包含2个或2个以上的复制表的表名的场景,或者上述所有场景。再一方面,本申请实施例提供了一种计算机存储介质,用于存储为上述数据库中间件所用的计算机软件指令,其包含用于执行上述所设计的程序。该数据库中间件可以适用于上述访问请求只包含复制表的表名的场景,或者可以适用于上述访问请求只包含复制表的表名和分区表的表名的场景,或者可以适用于上述访问请求只包含2个或2个以上的复制表的表名的场景,或者上述所有场景。相较于现有技术,本发明提供的方案中,访问请求(特别是写操作,例如:增加,删除和修改)一般只发送给在优先关键值对应的数据库服务器中进行处理,不涉及其它复制表。只有在优先关键值对应的数据库服务器故障情况下,才使用其他分区进行处理该访问请求,因此数据库访问性能大大提升。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1所示为本发明实施例的一种可能的系统网络示意图;图2所示为本发明实施例提供的系统示意图;图3所示为本发明实施例提供的计算机设备示意图;图4所示为本发明实施例提供的数据库访问的方法流程示意图;图5所示为本发明实施例提供的分布式数据服务设备的结构示意图;图6所示为本发明实施例提供的分布式数据服务设备的结构示意图。具体实施方式为了使本申请的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。如图1所示,本发明实施例简单的的访问分布式数据库的系统框架图,包括:应用服务器101,数据库中间件102,数据库服务器103和同步设备104。其中,在地点a,地点b和地点c分别设置一个应用服务器101和数据库服务器103,应用服务器101和数据库中间件102是一一对应的。应用服务器101用于处理一些具体的业务,当需要访问数据库服务器103存储的数据表的数据时,应用服务器101通过本地对应的数据库中间件102来访问某个数据库服务器103。当某个数据库服务器103中存储的复制表的数据进行更新后,通过其对应的同步设备104将更新的操作请求发送给其他数据库服务器103,以使得其他各个数据库服务器103也同步更新该数据。图1中给出的是每个地方都有 一个应用服务器,一个数据库服务器,在实际应用中,可能会设置多个应用服务器和数据库服务器,这里并不做限定。在各个数据库服务器中存储了多种数据表,通常有两种典型类型的数据表:分别为分区表和复制表。有些数据表太大,如果存在一个数据库服务器上,那么可能导致这个数据库服务器被集中访问,从而导致这个数据库服务器负荷过大,导致性能降低。目前可以把这种大的数据表按照分区规则将数据表的数据分散地且唯一地存放在多个数据库服务器上,形成了多个小的数据表,从逻辑上来说,这些小的数据表组成在一起,还是一个大的数据表,这种被划分的多个小的数据表被称为分区表。在本发明实施例中,数据库服务器有的时候也可以称为分区,或者数据库。数据库服务器在对一个大的数据表或者数据进行分区时,按照分区规则,将数据分散且唯一地存放在多个数据库服务器中,并且具有相同表名与相同表结构的,它们的并集组成了完整的表数据。也就是说,分区表为在多个数据库服务器中存储的相同的数据表的表名和结构的表并且数据分散其唯一存储所述多个数据库服务器中的一个数据库服务器中。分区指的是针对表来说的,即通过某一个分区规则将数据分布到不同的数据库服务器中。分区字段指的是对数据表记录进行分库存放处理时,施加函数运算的表字段。对于分区表而言,如果分区关键值归属在某个分区区间值范围内的话,则分区表存储在该分区区间对应的数据库服务器。在分布式数据库系统中,还有一类经常被用到和其它表进行关联操作的表,例如:关联操作可以为join。特别的是,该类表需要与分区表做关联操作,这类表本身不大,例如系统参数表、资源表或者产品表等。这类表如果独立存放在一个数据库服务器,那么当其它数据库服务器上的表需要与之关联时,则必须做跨数据库服务器才能进行关联操作,这样导致数据库服务器的性能很低。如果在所有需要做关联操作每个数据库服务器上都存放一个副本,那么就可以避免了跨数据库服务器操作的问题了。因为在多个数据库服务器中存放相 同的数据表副本,因此将这类表称为复制表。也就是说,复制表指的是存储在多个数据库服务器中的相同数据表,从任何一个数据库服务器中都可以获得完整的数据,在某些情况下,存储在数据库服务器中的复制表也可以称作为复制表的副本。对于复制表而言,如果优先关键值归属在某个分区区间值范围内的话,则优先访问该分区区间值对应的数据库服务器存储的复制表,在该分区区间对应的数据库服务器无法访问时,才访问其它的存储复制表的数据库服务器。如图2所示,本发明提供的一种访问分布式数据库的系统可以包括一个以上分布式数据服务的装置201,一个以上的数据库服务器202和一个以上同步装置203。这里的分布式数据服务的装置201可以是图1中的数据库中间件102,在本发明实施例中,数据库中间件和分布式数据服务的装置是相同的,有些内容描述的是数据库中间件,有些内容描述的是分布式数据服务的装置。同步装置203可以是单独的设备,也可以是分布式数据服务的装置201的一个部件。如图2所示,图2中的数据库中间件201可以以图3中的计算机设备(或系统)的方式来实现。图3所示为本发明实施例提供的计算机设备示意图。计算机设备300包括至少一个处理器301,通信总线302,存储器303以及至少一个通信接口304。处理器301可以是一个通用中央处理器(cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制本发明方案程序执行的集成电路。通信总线302可包括一通路,在上述组件之间传送信息。所述通信接口404,使用任何收发器一类的设备,用于与其他设备或通信网络通信,如以太网,无线接入网(ran),无线局域网(wirelesslocalareanetworks,wlan)等。存储器303可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccess memory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。其中,所述存储器303用于存储执行本发明方案的应用程序代码,并由处理器301来控制执行。所述处理器301用于执行所述存储器303中存储的应用程序代码。在具体实现中,作为一种实施例,处理器301可以包括一个或多个cpu,例如图3中的cpu0和cpu1。在具体实现中,作为一种实施例,计算机设备300可以包括多个处理器,例如图3中的处理器301和处理器308。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。在具体实现中,作为一种实施例,计算机设备300还可以包括输出设备305和输入设备306。输出设备305和处理器301通信,可以以多种方式来显示信息。例如,输出设备305可以是液晶显示器(liquidcrystaldisplay,lcd),发光二级管(lightemittingdiode,led)显示设备,阴极射线管(cathoderaytube,crt)显示设备,或投影仪(projector)等。输入设备306和处理器301通信,可以以多种方式接受用户的输入。例如,输入设备306可以是鼠标、键盘、触摸屏设备或传感设备等。上述的计算机设备300可以是一个通用计算机设备或者是一个专用计算机 设备。在具体实现中,计算机设备300可以是台式机、便携式电脑、网络服务器、掌上电脑(personaldigitalassistant,pda)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图3中类似结构的设备。本发明实施例不限定计算机设备300的类型。如图2中的分布式数据服务的装置可以为图3所示的设备,分布式数据服务的装置201的存储器中存储了一个或多个软件模块(例如:交互模块和查询模块等)。分布式数据服务的装置201可以通过处理器以及存储器中的程序代码来实现软件模块,实现对分布式数据库的数据访问。下面将基于上面所述的本发明涉及的共性方面,对本发明实施例进一步详细说明。本发明实施例中可以按照分区访问优先读写策略,实现对复制表进行读写。所谓分区访问优先读写策略,就是根据关键值,将对复制表的访问请求发送给关键值对应的数据库服务器中间处理,除非该分区故障,才将访问请求发送给其它分区。在复制表与分区表join的场景,复制表仍然使用分区表所在数据库的复制表,即使用就近读策略。数据更新操作,也只更新分区路由对应复制表,然后通过数据同步设备更新其它分区上的复制表。本发明实施例提供的访问分布式数据库的方法包括了3个过程,分别为:访问规则的具体定义,数据表和访问规则对应关系的设定和数据表的访问这3个过程。本发明实施例中的,数据表的访问包括了对数据表中数据的增加、删除、改变和查询等操作。下面分别介绍这四个过程,首先介绍一下访问规则的定义过程。对于访问规则的具体定义,数据表和访问规则对应关系的设定和数据表的访问这3个过程的处理过程均为上述分布式数据访问的装置201进行处理的。在访问规则的定义之前,可能有系统人员通过专业工具在数据库服务器上创建各类数据表以及初始化数据,对于数据表的创建是本领域的基本技术,在 这里不做介绍了。为了方便说明本发明实施例的方案,下面列举电信系统中典型的四个表来进行说明,这四个表分别为客户表,客户订购关系表,系统参数定义表和产品表。需要说明的,这四个表仅仅用于来说明本发明的方案,并不限制本发明的方案只局限于在电信领域的这四个表中,本发明实施例的技术方案适合在任何场景下的分布式数据库系统中。客户表记录的是客户身份信息,客户表可以包括身份证号码,客户姓名,客户地址和客户email地址。如表1所示,在实际应用中,客户表可以包括很多种数据,并不局限于上述这几个数据。该表1可以表示为:tbl_customer(custid,custmname,address,email)。字段名字段说明custid客户身份证号码custmname客户姓名address客户地址email客户email地址表1客户关系表记录的是客户订购的手机号码信息,客户关系表可以包括:客户身份证号码,客户订购的手机号码和订购手机号码时间,如表2所示,在实际应用中,客户关系表可以包括很多种数据,并不局限于上述这几个数据。该表2可以表示:tbl_cust_order(custid,mdn,time)字段名字段说明custid客户身份证号码mdn客户订购手机号码time订购手机号码的时间表2系统参数表记录的是系统中的参数信息,系统参数表可以包括:参数名称,参数描述,参数类型,参数值和参数生效版本,如表3所示,在实际应用中, 系统参数表可以包括很多种数据,并不局限于上述这几个数据。该表3可以表示为:tbl_sys_parameter(parametername,parameterdes,parametertype,parametervalue,parametervesion)字段名字段说明parametername参数名称parameterdes参数描述parametertype参数类型parametervalue参数值parametervesion参数生效版本表3产品表记录的是产品的相关信息,产品表可以包括:产品编号,产品名称,产品描述和产品生效时间,如表4所示,在实际应用中,产品表可以包括很多种数据,并不局限于上述这几个数据:该表4可以表示为:tbl_product(productid,productname,productdes,producttime)字段名字段说明productid产品编号productname产品名称productdes产品描述producttime产品生效时间表4下面介绍4类访问规则,具体为:访问规则1指的是按照优先路由策略对复制表进行访问;访问规则2指的是按照分区路由策略对分区表进行访问;访问规则3指的是按照多写策略对数据表进行访问;访问规则4指的是master写策略对数据表进行访问。这里的四类访问规则,主要针对的是一个请求中单独的一个数据表的访问,如果涉及到两个数据表或者两个以上数据表的关联访问,则结合上述4类访问规则和跨 库关联操作的原理来实现对数据表访问过程。数据库中间件定义各个访问规则的过程,具体包括:数据库中间件接收到访问规则定义请求,该访问规则定义请求包含了访问规则名和访问规则内容。数据库中间件根据访问规则名和访问规则内容,存储上述访问规则名和访问规则内容的对应关系。访问规则内容指定了数据库中间件可以按照何种方式访问数据表,也就是说,通过访问规则内容,可以获知将访问请求发送给哪个数据库服务器。在有些情况下,访问规则内容还可以包含分区区间值和数据库服务器名的对应关系。例如:对于访问规则1而言,确定访问请求中携带的优先关键值在某个分区区间值中,然后找到该分区区间值对应的数据库服务器名,则该访问请求就发送到该数据库服务器中。对于访问规则2而言,确定访问请求中携带的分区关键值在某个分区区间值中,然后找到该分区区间对应的数据库服务器名,则该访问请求就发送到该数据库服务器中。在实际应用中,访问规则定义请求可以具体是一个sql语句。该访问规则定义请求可以来自于系统管理人员的终端,也可以来自于数据库中间件的客户端软件,这里不做限制。需要说明的是:访问规则名可以是一个具体的访问规则名称,或者访问规则名称缩写,或者是访问规则代码,这里不做限定。分区数据库名可以是一个具体的分区数据库名称,或者分区数据库名称缩写,或者是分区数据库代码,这里不做限定假设上述rule1,该规则内容为分区访问优先读写策略,即按照优先关键值进行优先访问分区路由。优先关键值归属在分区区间值[“3201”,“3201”]范围内,访问数据库服务器p1上的复制表;优先关键值归属在分区区间值[“3202”,“3202”]范围内,访问数据库服务器p2上的复制表,依次类推。此时的访问规则定义请求具体为:假设上述rule2,该规则要求按照分区关键值进行范围分区路由。分区关键值归属在分区区间值[“1377010”,“1377099”]范围内,访问分区数据库p1的分区表;分区关键值归属在分区区间值[“1390150”,“1390159”]范围内,访问分区数据库p2上的分区表,依次类推。此时的访问规则定义请求具体为:数据中间件存储包含上述规则名,规则类型,分区区间值范围和分区数据库名称之间对应关系的访问规则内容,可以以一个表的形式来进行存储,如表5所示,当然也可以以其他形式进行存储,例如:文件形式等。表5接着介绍一下数据表和访问规则对应关系的设定的过程,该过程是在数据库中间件中执行的。数据库中间件接收到对应关系设定请求,该对应关系设定请求包含了数据表的表名和访问规则名。数据库中间件解析该对应关系设定请求,并根据该对应关系设定义请求,存储上述数据表的表名和访问规则名。如果访问规则名对应的是访问规为分区访问或者分区优先访问,该对应关系设定请求还需要包括分区关键值或者优先关键值。如果对应关系设定请求包含分区关键值或者优先 关键值的话,则还将保存上述分区关键值或者优先关键值。在实际应用中,对应关系设定请求可以具体是一个sql语句。该对应关系设定请求可以来自于系统管理人员的终端,也可以来自于数据库中间件的客户端软件,这里不做限制。下面介绍上述4个数据表和访问规则的对应关系。对应关系1:数据表和访问规则1(rule1)的对应关系,由于rule1是按照优先路由策略进行复制表访问,该数据表为复制表,因此对应关系设定请求除了包含了数据表表名和访问规则外,还包括了优先关键值,具体的,如上述表1的客户表为复制表,并且声明使用custid字段的前4位作为复制表优先访问策略的优先关键值。此时的对应关系设定请求具体为:altertabletbl_customerusingshardrulerule1accesspartitionby(substr(custid,0,4))对应关系2:数据表和访问规则2(rule2)的对应关系,该数据表为分区表,由于rule2是按照分区路由策略进行访问分区表。因此对应关系设定请求除了包含了数据表表名和访问规则外,还包括了分区关键值,具体的,上述表2的客户关系订购表为分区表,并且声明使用mdn字段的前7位作为这个分区表分区路由策略的分区关键值。此时的对应关系设定请求具体为:altertabletbl_cust_orderusingshardrulerule2accesspartitionby(substr(mdn,0,7))当然,如果有其它的访问规则,还可以继续设定,比如:多写策略等,这里就不做限定。数据中间件还存储包含上述数据表的表名和访问规则名的数据表访问规则关系,可以以一个表的形式来进行存储,如表6所示。当然也可以以其他形式进行存储,例如:文件形式等。数据表表名访问规则名分区访问策略的分区关键值tbl_customerrule1substr(custid,0,4)tbl_cust_orderrule2substr(mdn,0,7)表6如图4所示,本发明实施例提供了数据表的访问过程,包括:s401:应用服务器向数据库中间件发送对数据表的访问请求,该数据表访问请求包含了一个或多个数据表的表名和访问条件。这里的访问条件可以包含访问动作,比如:查询,删除,增加或者修改,也可以包含一些其它的要求,比如:排序,合并等,这里不做限定。访问条件还包含了关键值,关键值有两类:对于复制表而言,该关键值为优先关键值,通过优先关键值,可以获知该复制表存储在哪些数据库服务器上,以及优先访问的数据库服务器是哪个;对于分区表而言,该关键值为分区关键值,通过分区关键值,可以获知该分区关键值对应的数据库服务器。s402:数据库中间件接收到数据表访问请求,根据存储数据表表名和规则名对应关系的数据表访问规则关系,查询到该数据表表名对应的访问规则名。例如:如果复制表的话,可能的查询到的访问规则为访问规则1。如果分区表的话,可能查询到的访问规则为访问规则2。s403:数据库中间件根据分区关键值或者优先关键值,从访问规则内容中确定将该访问请求发送到的某个特定的数据库服务器,即访问请求被发送的目的地。这个过程在下面做详细介绍。s404:数据库中间件将该访问请求发送给上述确定的数据库服务器。s405:数据库服务器接收到该数据表访问请求后,根据该数据表访问请求,处理该数据表访问请求,并把处理结果返回给数据库中间件。s406:数据库中间件接收到该处理结果后,将该处理结果返回给应用服务器。s407:当数据库服务器处理该数据表访问请求实际上对数据表进行更新时,同步设备将上述访问请求发送给所有存储复制表的数据库服务器。同步设备可以从上述处理访问请求的数据库服务器中获得上述访问请求, 将访问请求发送给除处理访问请求的数据库服务器之外的所有存储复制表的数据库服务器。当然,同步设备也可以从数据库中间件处理获取到上述访问请求,然后将访问请求发送给除处理访问请求的数据库服务器之外的所有存储复制表的数据库服务器。接着对步骤s403的内容做详细介绍。当访问请求只包含了一个数据表的表名,然后根据该数据表的表名从如表6所示的访问规则内容,确定该数据表的访问规则名;然后根据数据的访问规则名和关键值,从如表5所示数据表访问规则关系,确认该数据表为复制表,则这个关键值为优先关键值,确认该优先关键值归属在上述的一个优先访问区间值范围所对应的数据库服务器为访问请求发送的目的地,也就是说访问请求将被发送到上述确认的数据库服务器中。当访问请求只包含了一个数据表的表名,然后根据该数据表的表名从如表6所示的访问规则内容,确定该数据表的访问规则名;然后根据数据的访问规则名和关键值,从如表5所示数据表访问规则关系,确认该数据表为分区表,则这个关键值为分区关键值,确认该分区关键值归属在上述的一个分区区间值范围所对应的数据库服务器为访问请求发送的目的地,也就是说访问请求将被发送到上述确认的数据库服务器中。当访问请求包含了2个数据表的表名,根据该数据表的表名从如表6所示的访问规则内容,确定这2个数据表的访问规则名;然后分别根据数据表的访问规则名和关键值,从如表5所示数据表访问规则关系,确认一个数据表为分区表,则这个分区表对应关键值为分区关键值,另外一个数据表为复制表,则这个复制表对应的关键值为优先关键值。然后该分区关键值归属在上述的一个优先访问分区区间值范围所对应的数据库服务器,然后由两种处理方式,方式一:接着可以通过如表5所示数据表访问规则关系查找上述确认的数据库服务器中是否存储了上述复制表,如果存储的话,则上述确认的数据库服务器为访问请求发送的目的地,也就是说访问请求将被发送到上述确认的数据库服务器 中。如果没有存储的话,则需要进行跨库关联操作,跨库关联操作是一个现有技术,可以有多种处理的方式,如:将上述访问请求变形成两个或多个子访问请求,每一根子访问请求只单独查询一个数据表,然后再将变形的两个或多个子访问请求发送给相应的数据库服务器,然后数据库中间件接收到各个数据库服务器发送的处理结果,数据库中间件对这些处理结果进行二次处理,如:合并,排序之类的,形成最终访问结果。跨库关联操作的方式很多,这里就不做限定和介绍了。下面介绍方式二:从如表5所示数据表访问规则关系中,查找到所有存储的该复制表的数据库服务器,然后确认所有存储这个复制表的数据库服务器包含分区关键值对应的数据库服务器,则上述确认分区关键值对应的数据库服务器为访问请求,也就是说访问请求将被发送到上述确认的数据库服务器中。如果没有存储的话,则需要进行跨库关联操作。当访问请求包含了2个数据表的表名,根据该数据表的表名从如表6所示的数据表访问规则关系,确定这2个数据表的访问规则名。如果这两个访问规则名相同时,根据数据表的访问规则名和关键值,从如表5所示的访问规则内容,确认两个数据表均为复制表,则这两个复制表对应的关键值为优先关键值,通过任意一个优先关键字确认到一个优先访问的数据库服务器,则上述确认的数据库服务器为访问请求发送的目的地,也就是说访问请求将被发送到上述确认的数据库服务器中。如果这两个访问规则不同时,则根据数据表的访问规则名和关键值,从如表5所示数据表访问规则关系,确认两个数据表均为复制表,分别查询到所有存储复制表的数据库服务器,如果这两个所有存储复制表的数据库服务器有相同的一个或多个时,则相同的一个或多个数据库服务器中的任意一个为访问请求发送的目的地。如果这两个所有存储复制表的数据库服务器没有任何一个或者多个相同时,则需要进行跨库关联操作。下面以几个具体的例子来说明上述数据表访问过程,这几个具体的例子是典型电信领域的应用场景,需要说明的是,本发明实施例不局限于电信领域。场景一:客户开户处理过程,包括如下:客户将相关信息告知营业厅营业员,营业员在终端上输入客户信息,该客户信息包含身份证号码,客户姓名,客户的地址和客户的email,营业员通过终端将上述客户信息提交到应用服务器上。在实际过程中,客户也可以自助开户,那么此时应该客户通过终端向应用服务器提交开户的客户信息。应用服务器根据提交的开户的客户信息,生成客户信息插入请求,其sql语句可以为:insertintotbl_customer(custid,custmname,address,…)values(‘320102198807327436’,‘tom’,‘上海市***街道’,‘tom@yahoo.com’)。应用服务器将该客户信息插入请求发送给数据库中间件。数据库中间件接收到该客户信息插入请求后,根据该客户信息插入请求中包含的表名,去查找该表名对应的访问规则,如表5和表6的结合可以获知,该表的访问规则是按分区访问优先的复制表,得到分区关键值值为“3201”。数据库中间件再根据复制表访问规则rule1,获知该sql应该发往分区p1中处理。数据库中间件将sql语句发往分区p1的数据库服务器上,数据库服务器p1将该客户数据插入到客户表上。由于是对复制表的数据的更新,此时同步设备发现分区数据库服务器中客户表数据变化,此时将该更新的数据同步更新到其它地区的数据库。这个过程中,数据库中间件处理sql语句的过程相当于步骤402-404和406的过程。因为绝大多数客户都是在身份证发行地生活和工作,因此业务开户主要也是在身份证发行地进行。在外地办理的概率很低,如果在外地办理,应用服务器也依然根据tbl_customer的定义,得到将sql发送到身份证发现地数据库处理。场景二:查询客户信息的过程,包括:客户向营业厅营业员出具身份证信息,营业员通过客户查询页面输入客户身份证号码,并将客户查询请求发送给应用服务器,应用服务器接收到上述客户查询请求,生成查询sql语句,例如:selectcustid,custmname,address,…fromtbl_customerwherecustid=‘320102198807327436’应用服务器将上述sql语句发送到数据库中间件。数据库中间件接收到sql语句,获取到tbl_customer的定义,根据tbl_customer的定义,获知该表是一个按分区优先访问的复制表,分区关键值为substr(custid,0,4),从而得到分区关键值“3201”,中间件再根据复制表分区路由规则rule1,获知该sql应该发往数据库服务器p1处理。中间件将该sql语句发送到数据库服务器p1。数据库服务器p1接收到上述sql语句,根据sql语句在数据表上进行查询,获得身份证为‘320102198807327436’的客户数据,并将该客户数据发送给数据库中间件。数据库中间件接收到数据库服务器p1方的客户数据,并将该客户数据发送给应用服务器。应用服务器将该客户数据发送给查询该客户数据的终端。上述数据库中间件处理sql语句的过程相当于步骤402-404和406的过程。上述数据库服务器处理过程相当于步骤405。场景三,订购手机号码的过程,包括:营业员通过终端在订购portal页面输入客户选择的手机号码,营业员递交portal页面信息到本地应用服务器。应用服务器接收到该手机号码订购请求,生成sql语句,例如:insertintotbl_custm_order(custmid,mdn,time)values(‘320102198807327436’,’13770168568’,’2015-06-30’)。应用服务器将该sql语句发送给数据库中间件。数据库中间件接收到该sql语句后,根据该sql语句中的tbl_custm_order的定义,获知它是一个分区表,分区键为substr(mdn,0,7),从而得到分区键值“1377016”,再根据分区表tbl_custm_order的规则rule2,获知该sql应该发往数据库服务器p1处理。数据库服务器p1在客户关系表上添加这条记录,并向数据库中间件返回订购成功响应。上述数据库中间件处理sql语句的过程相当于步骤402-404和406 的过程。因为手机号码的订购时,需要读取客户信息,该读取操作是独立进行的,因此读取的是身份证发行地数据库客户表数据,这一数据肯定是最新数据。手机号码订购只可能在归属地办理,手机号码业务的处理也都在手机号归属地,因此数据只需要在手机号码归属地存储,无需同步到其它数据库。而且用户办理多个手机号码,一般都会在身份证发行地事先办理手机号码,且办理多个号码的人员相对很少。具体的应用场景有很多,这里就不再举例了。本发明实施例可以解决多复制表更新性能问题。如上面分析,访问请求(特别是写操作,例如:增加,删除和修改)一般只发送给在优先关键值对应的数据库服务器中进行处理,不涉及其它复制表。只有在优先关键值对应的数据库服务器故障情况下,才使用其他分区进行处理该访问请求,因此数据库访问性能大大提升。数据更新后通过同步设备更新到其它复制表。以及解决多复制表更新单点故障问题。如上面分析,使用分区访问优先读写策略,正常情况下写操作只在客户身份证发行地的数据复制表进行,但是当身份证发行地数据库故障时,中间件随机选择一个其它分区进行更新,业务照常开展,因此解决了单点故障问题。之后更新数据通过同步设备更新其它复制表。解决读数据的实时性问题,因为电信业务客户表读写操作大多数情况下都在客户身份证发行地处理,因此读操作可以获得最新的数据。即使客户出差外地,如果单独读取客户表信息,仍然读取的是客户身份证发行地的复制表,同样获得的是最新数据。如果需要在外地办理手机号码业务或进行手机号业务查询,需要join客户表,虽然这时使用就近读策略,读取的是外地的分区的复制表,但客户出差距离客户开户操作本身有一段很长时间,客户数据早已完成同步,因此也基本不存在数据实时性问题。解决负载均衡问题,因为复制表采用按分区路由优先读写策略,独立对客户表查询均使用身份证发行地数据库,各分区的客户量基本均衡,因此各复制表的读写负载也是基本均衡。而join操作均使手机号码归属地的 复制表,因为各分区手机业务量基本均衡,因此join操作的负载也是均衡的,而且使用就近读策略,性能也是最优的。如图5所示,本发明实施例还提供了一种分布式数据服务的装置的结构示意图。装置500包括:接收单元501,查询单元502,确定单元503,和发送单元504。接收单元501,用于接收应用服务器发送的第一访问请求,所述第一访问请求包含了所述第一数据表的表名和所述第一数据表的关键值;查询单元502,用于根据所述第一数据表的表名,查询到所述第一数据表为复制表和所述复制表对应的第一访问规则,确定单元503,用于确定所述第一访问规则中所述关键值对应的数据库服务器为优先访问的第一数据库服务器;发送单元504,用于向所述第一数据库服务器发送所述第一访问请求。发送单元504,还用于确定所述第一数据库服务器发生故障或者断网,向除所述第一数据库服务器之外的所有存储复制表的数据库服务器中任意一个数据库服务器发送所述第一访问请求。另外,该装置还包括:同步单元505,用于确定所述第一数据库服务器处理了所述访问请求后,所述第一数据表包含数据发生了变化,向除所述第一数据库服务器之外的所有存储复制表的数据库服务器发送所述第一访问请求。另外,接收单元501,还用于接收应用服务器发送的第二访问请求,所述第二访问请求包含了第二数据表的表名,第三数据表的表名和第二数据表的关键值;查询单元502,还用于根据所述第二数据表的表名,查询到所述第二数据表为分区表和所述分区表的第二访问规则,其中分区表为数据按照分区规则分散并且唯一存储到多个数据库服务器中的数据表,所述分区表在所述多个数据库服务器中具有相同表名和表结构;确定单元503,还用于根据所述第二数据表的关键值和所述第二访问规则,确定存储所述分区关键值对应的分区表的第二数据库服务器;根据所述第三数据表的表名,查询到所述第二数据表为复制表和第三访问规则,从所述第三访问规则中,确认所述第二数据库服务器存储了所述第二数据表;或者从所述第三访问规则中,确认所有存储所述第二数 据表的数据库服务器和所述所有存储所述第二数据表的数据库服务器中包含了所述第二数据库服务器;发送单元504,还用于将所述第二访问请求发送给所述第二数据库服务器。在本实施例中,分布式数据服务的装置500是以功能单元的形式来呈现。这里的“单元”可以指特定应用集成电路(application-specificintegratedcircuit,asic),电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到分布式数据服务的装置可以采用图3所示的形式。接收单元501,查询单元502,确定单元503,和发送单元504,以及同步单元505可以通过图3的处理器和存储器来实现,具体的,接收单元501,发送单元504和同步单元505可以通过由处理器来执行交互模块来实现,查询单元502和确定单元503可以通过由处理器来执行查询模块来实现。如图6所示,本发明实施例还提供了一种分布式数据服务的装置的结构示意图。装置600包括:接收单元601,查询单元602,确定单元603,和发送单元604。接收单元601,用于接收应用服务器发送的访问请求,所述访问请求包含了第一数据表的表名,第二数据表的表名,所述第一数据表的关键值和所述第二数据表的关键值;查询单元602,用于根据所述第一数据表的表名,查询到所述第一数据表为复制表和所述第一数据表对应的第一访问规则,其中,所述复制表为存储在多个数据库服务器上的同一数据表;确认单元603,用于根据所述第二数据表的表名,确定所述第二数据表为复制表和所述第二数据表对应的第二访问规则;当第一访问规则和第二访问规则相同时,从第一访问规则或第二访问规则,确认所述第一数据表的关键值或所述第二数据表的关键值对应的数据库服务器为优先访问的第一数据库服务器;发送单元604,用于向所述第一数据库服务器发送所述第一访问请求。另外,确认单元603,还用于当第一访问规则和第二访问规则不同时,从所述第一访问规则中,确认所有存储所述第一数据表的数据库服务器,从所述第二访问规则中,确认所有存储所述第 二数据表的数据库服务器;确认所有存储所述第一数据表的数据库服务器和所有存储所述第二数据表的数据库服务器中有相同的一个或多个时,确认所述相同一个或多个的数据库服务器中的任意一个为优先访问的第二数据库服务器;发送单元604,还用于向所述第二数据库服务器发送所述第一访问请求。在本实施例中,分布式数据服务的装置600是以功能单元的形式来呈现。这里的“单元”可以指特定应用集成电路(application-specificintegratedcircuit,asic),电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到分布式数据服务的装置可以采用图3所示的形式。接收单元601,查询单元602,确定单元603,和发送单元604可以通过图3的处理器和存储器来实现,具体的,接收单元601和发送单元604可以通过由处理器来执行交互模块来实现,查询单元602和确定单元603可以通过由处理器来执行查询模块来实现。本发明实施例还提供了一种计算机存储介质,用于储存为上述图5所示的云管理设备所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以实现执行装置的访问分布式数据库。本发明实施例还提供了另一种计算机存储介质,用于储存为上述图6所示的执行设备所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以执行装置的访问分布式数据库。本领域内的技术人员应明白,本申请的实施例可提供为方法、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和 /或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1