一种分布式数据库处理的方法和设备的制造方法

文档序号:9750879阅读:455来源:国知局
一种分布式数据库处理的方法和设备的制造方法【
技术领域
】[0001]本发明涉及存储
技术领域
,尤其涉及一种分布式数据库处理的方法和设备。【
背景技术
】[0002]随着应用系统的用户数量的急剧增加,互联网的发展以及IT建设的集中化,集中式数据库系统越来越不能满足大数据量储存与大量并发访问的发展需要,分布式数据系统正在蓬勃发展。尤其是当前计算机行业正在兴起去Ι0Ε运动,使得数据库设备更多地安装在X86主机上,不使用磁阵设备,并更多地选择开源数据库(例如MySQL),这就使得数据变得更为分散,对数据处理的性能要变得更为突出。在分布式数据库系统中,数据是需要按分区规则存放的。[0003]在数据查询或更新时,如果能根据查询条件直接定位到数据所在分布式数据库,并向该数据库发起SQL,将能获取最快的响应性能;否则当无法确定数据所在分布式数据库时,需要对系统中每个分布式数据库发起SQL处理,方能获得正确结果,当系统中分布式数据库数量很多时,这种处理既消耗性能,又增加响应时延,从而导致用户满意度的下降。[0004]具体的,现有技术中,当数据表需要存放到多个分布式数据库中时,需要遵循某种规则,这种规则就叫做分区规则,否则将导致数据无法管理。当前业界通常的做法是,按数据表的某个(些)字段(下文中称为分区字段)做函数运算(例如Hash),再对运算结果对数据库的个数取模,不同模值的记录使用不同分布式数据库存放。如图1所示,对待存储的数据表的coll字段做Hash运算,然后将Hash值对数据库个数m取模,不同模值的记录存放在对应序号的分布式数据库中。当然,还有其它数据分区规则,例如对字段的函数运算结果值域,甚至字段本身的值域做区间划分,不同区间的数据使用不同的分库存放。上述根据分区规则将数据表中的数据记录存放到多个分布式数据库中的过程中,用于分区的字段称为分区字段,例如coll字段。[0005]因为数据是按某个(些)分区字段(如上述的coll字段)的函数计算结果进行分布存放的,因此在用户查询数据或更新数据时,如果SQL语句的查询条件中含有这些分区字段,便可以根据分区字段值做同样的函数运算,从而通过计算结果可以确定数据所在分布式数据库,从而将SQL发往该分布式数据库进行处理便可获得所需结果。[0006]例如用户SQL:selectnamefromtablelwherecoll='abc',应用程序便可以根据SQL语句的查询索引字段coll的值'abc'做Hash运算,再根据运算结果与分区规则共同确定SQL处理数据库,再将SQL发往对应分布式数据库去处理。[0007]为获取快速处理性能,通常会要求用户在SQL的语句的查询条件中带上分区字段,否则系统需要将SQL语句发往每个分布式数据库处理,这样做虽然能够获得期望的结果,但响应时延和性能消耗显然不是最好的。然而现实中的很多场景,无法让用户在SQL语句的查询条件中带上分区字段,从而数据的访问时延很长。【
发明内容】[0008]本发明提供了一种分布式数据库存储和访问的方法和设备,以解决用户使用非分区字段访问数据库时,需要将访问请求发往所有数据库进行处理的技术问题。[0009]为达到上述目的,本发明的实施例采用如下技术方案:[0010]第一方面,提供一种分布式数据库的处理方法,包括:数据库处理设备接收第一访问请求,该第一访问请求包括第一查询索引字段及其取值和待访问的第一目标字段;其中,所述第一查询索引字段为第一数据表的非分区信息;为了避免按照现有技术将该第一访问请求发送到所有分布式数据库处理,数据库处理设备需要根据所述第一查询索引字段及其取值,在所述第一数据表的分区路由表中获取与该第一查询索引字段对应的分区信息及取值(例如,数据库处理设备可以向保存有所述第一数据表的分区路由表的数据库发送查询请求,并从保存有所述第一数据表的分区路由表的数据库接收查询结果,从而获取与该第一查询索引字段对应的分区信息及取值),其中所述分区路由表中存储有所述第一数据表的分区信息及取值和非分区信息及取值的对应关系;根据所述第一查询索引字段及其取值对应的分区信息及取值,将所述第一访问请求发送到与该分区信息取值对应的数据库。数据库处理设备根据分区信息以及分区规则将第一数据表进行拆分并存储在多个数据库中。具体的,所述分区信息包括分区字段或者分区携带字段,其中所述分区携带字段与所述分区字段存在映射关系。分区携带字段可以是分区字段根据预设的变换规则生成,例如,分区携带字段可以由字符串前缀和字符串后缀构成,其中字符串前缀为分区字段,字符串后缀为顺序数。显然,由于所述分区携带字段与所述分区字段存在映射关系,所以根据分区携带字段和分区规则,也能够确定需要将访问语句发送的数据库。本申请实施例提供的方案,当第一访问请求中的查询索引字段不是分区信息时,可以根据第一数据表对应的分区路由表确定查询索引字段的取值对应的分区信息的取值,然后根据分区信息的取值,将第一访问请求发送到对应的数据库处理。避免了按照现有技术,需要将第一访问请求发送到所有数据库处理的问题,有效的减小了访问响应的延时,也减小了系统性能消耗。[0011]结合第一方面,在第一方面的第一种可能的实现方式中,所述在所述第一数据表的分区路由表中查找与该第一查询索引字段对应的分区信息及取值,具体可以为:获取所述第一数据表关联的分区路由表;根据所述第一查询索引字段,在所述第一数据表关联的分区路由表中,确定与所述第一查询索引字段关联的分区路由表;在所述第一查询索引字段关联的分区路由表中查找与该第一查询索引字段对应的分区信息及取值。当该第一数据表存在多个分区路由表时,不需要查询所有的分区路由表,直接查询与所述第一查询索引字段关联的分区路由表即可,从而加快了查询与所述第一查询索引字段及其取值对应的分区信息及其取值的速度,进而进一步减小了访问响应的延时。[0012]结合第一方面和第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,根据所述第一查询索引字段及其取值对应的分区信息及取值,将所述第一访问请求发送到与该分区信息取值对应的数据库,具体为:根据所述第一查询索引字段及其取值对应的分区信息及取值,更新所述第一访问请求,所述更新后的第一访问请求包括该分区信息及取值和所述待访问的第一目标字段;将所述更新后的第一访问请求发送到与该分区信息取值对应的数据库。更新所述第一访问请求后,可以使得数据库处理设备的现有处理逻辑不需要修改,直接按照现有的处理逻辑处理更新后的第一访问请求即可。[0013]结合第一方面和第一方面的第一至第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述接收第一访问请求之前,该方法还包括:接收插入请求,所述插入请求包括待插入数据,所述待插入数据包括所述分区信息的取值、所述第一查询索引字段的取值和所述待访问的第一目标字段的取值;根据所述分区信息的取值,将所述待插入数据插入所述数据库的分区表中;确定存在所述第一查询索引字段关联的分区路由表;将所述第一查询索引字段的取值和所述分区信息的取值插入到所述第一查询索引字段关联的分区路由表中。在插入分区表数据的时候,同步插入分区路由表数据,可以使得分区路由表数据和分区表数据保持同步,以便于后续用户通过非分区信息访问数据表时,可以根据分区路由表获取相应的分区信息及其取值。[0014]结合第一方面和第一方面的第一至第三种可能的实现方式,在第一方面的第四种可能的实现方式中,该方法还包括:接收第二访问请求,所述第二访问请求包括第二查询索引字段及其取值和待访问的第二目标字段;其中,所述第二查询索引字段是所述第二数据表的分区信息;根据所述第二查询索引字段及其取值,将所述第二访问请求发送到对应的数据库处理。当数据库处理设备接收到的访问请求中的查询索引字段为分区信息时,则可以直接根据查询索引字段及其取值,将访问请求发送到对应的数据库处理。特别地,当所述第二查询索引字段为分区携带字段时,按照现有技术,该第二访问请求将被发送到所有分布式数据库处理。而采用本发明的提供的技术方案,将避免将该第二访问请求将被发送到所有分布式数据库处理,从而有效的减小了访问响应的延时,也减小了系统性能消耗。[0015]第二方面,本发明实施例提供了一种分布式数据库处理设备,该数据库处理设备具有实现上述第一方面中数据库处理设备行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。[0016]在一个可能的设计中,数据库处理设备的结构中包括处理器和存储器,所述存储器用于存储支持数据库处理设备执行上述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述数据库处理设备还可以包括通信接口,用于数据库处理设备与其他设备或通信网络通信。[0017]第三方面,本发明实施例提供了一种计算机存储介质,用于储存为上述数据库处理设备所用的计算机软件指令,其包含用于执行上述方面为数据库处理设备所设计的程序。[0018]可选的,上述方面所述的分区信息具体包括分区字段和/或分区携带字段。[0019]在具体实现中,数据库处理设备可以为Application、DDS或者是Application与DDS合设的一个设备。[0020]相较于现有技术,本发明提供的方案可以在用户使用非分区字段访问数据库时,避免将访问请求发送到所有分布式数据库处理,有效的减小了客户响应时延,同时大大的减小了系统性能消耗。[0021]本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。【附图说明】[0022]图1为现有技术中一种分布式数据库处理的示意图;[0023]图2为本发明一实施例提供的分布式数据库系统的运行架构;[0024]图3为本发明一实施例所提供的一种可能的分区携带字段的生成方法;[0025]图4为本发明一实施例提供的分布式数据库系统示意图;[0026]图5为本发明一实施例提供的计算机设备示意图;[0027]图6为本发明一实施例提供的一种分布式数据库的处理方法的流程示意图;[0028]图7为本发明一实施例提供的另一种分布式数据库处理方法的流程示意图;[0029]图8为本发明一实施例提供的另一种分布式数据库处理方法的流程示意图;[0030]图9为本发明一实施例提供的另一种分布式数据库处理方法的流程示意图;[0031]图10为本发明一实施例提供的另一种分布式数据库处理方法的流程示意图;[0032]图11为本发明一实施例提供的数据库处理设备的结构示意图。【具体实施方式】[0033]为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。[0034]图2描述了本发明一实施例涉及的分布式数据库系统的运行架构。该分布式数据库系统的运行架构200包括应用程序Application201、分布式数据服务中间件202(DistributedDataService,DDS)以及分布式数据库203(如DB1、DB2、DB3等)。其中,App1ication201可以是任何需要访问分布式数据库的应用程序,例如,电信行业的CRM(CustomerRelationshipManagement)系统、华为商城的商品订购系统等。DDS202包括两种运行形态:独立进程运行形态(作为独立运行的一个装置)和嵌入式运行形态(作为Application201的一个功能模块),本发明对DDS的具体运行形态不做限定。Application201通过DDS202对DB1、DB2以及DB3等分布式数据库进行透明操作。对于Application201而言,分布式数据库DB1、DB2和DB3在逻辑上是一个统一的整体,在物理上则是分别存储在不同的物理节点上。当DDS202接收到Application201发送过来的访问请求后,需要确定将该访问请求发送到哪个分布式数据库(即DB1、DB2或者DB3)。在分布式数据库系统的运行架构202中,Application201以及使用Application的用户都不必知道所使用的数据存储在什么地方,简化了Application的复杂性,即使存储数据的位置改变了,Application201也不用改变。[0035]在本发明实施例中,用户通过Application201生成的访问请求访问分布式数据库203,该访问请求可以是更新请求也可以是查询请求,具体的,该访问请求可以是结当前第1页1 2 3 4 5 6 
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1