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

文档序号:9750879阅读:来源:国知局
相连接。存储器也可以和处理器集成在一起。
[0070]其中,所述存储器503用于存储执行本发明方案的程序代码,并由处理器501来控 制执行。所述处理器501用于执行所述存储器503中存储的程序代码。
[0071] 在具体实现中,作为一种实施例,处理器501可以包括一个或多个CPU,例如图5中 的CPU0和CPU1。
[0072]在具体实现中,作为一种实施例,计算机设备500可以包括多个处理器,例如图5中 的处理器501和处理器508。这些处理器中的每一个可以是一个单核(single-CPU)处理器, 也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或 用于处理数据(例如计算机程序指令)的处理核。
[0073] 在具体实现中,作为一种实施例,计算机设备500还可以包括输出设备505和输入 设备506。输出设备505和处理器501通信,可以以多种方式来显不信息。例如,输出设备505 可以是液晶显示器(liquid crystal display,IXD),发光二级管(light emitting diode, LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。 输入设备506和处理器501通信,可以以多种方式接受用户的输入。例如,输入设备506可以 是鼠标、键盘、触摸屏设备或传感设备等。
[0074] 上述的计算机设备500可以是一个通用计算机设备或者是一个专用计算机设备。 在具体实现中,计算机设备500可以是台式机、便携式电脑、网络服务器、掌上电脑 (Personal Digital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入 式设备或有图5中类似结构的设备。本发明实施例不限定计算机设备500的类型。
[0075]如图4中的数据库处理设备可以为图5所示的设备,数据库处理设备的存储器中存 储了一个或多个软件模块(例如:交互模块、路由模块等)。数据库处理设备可以通过处理器 以及存储器中的程序代码来实现软件模块,实现将访问请求发送到目标数据库处理。
[0076] 基于如图2所示的系统架构图,为更加清楚描述分布式数据库系统的处理过程,本 发明实施例提供一种分布式数据库的处理方法的流程示意图。具体根据Application 201 和DDS 202的功能划分,可以包括图6、图7两种实现方式。其中,图6所述的实施例中,以数据 库处理设备为DDS或者是Application和DDS合设的一个设备为例;图7所述的实施例中,以 数据库处理设备为Application或者是Application和DDS合设的一个设备为例。需要说明 的是,本发明实施例中对DDS 202的运行形态不做限定,当DDS 202为嵌入式运行形态时, Application 201和DDS 202之间的消息交互为内部交互;当DDS 202为独立进程运行形态 时,Application 201和DDS 202之间的消息交互为外部交互。
[0077] 如图6所示为本发明实施例提供的一种分布式数据库的处理方法的流程示意图, 包括:
[0078] 步骤601-步骤602Application 201接收用户的访问请求,并将该访问请求发送 给 DDS;
[0079]具体的,Application 201接收用户输入的访问请求,该访问请求包括待访问的目 标字段、查询条件以及待访问的数据表名称,其中查询条件包括查询索引字段及其取值。该 访问请求具体可是查询请求或者更新请求。例如,用户需要在表3所述的用户数据表A中查 询手机号为13800000001对应的用户名是什么,那么Application 201发送给DDS 202的访 问请求可以是:select name from A,where msdn='13800000001',其中name表不待访问 目标字段是姓名,msdn= ' 13800000001'表示查询条件,A表示待访问的数据表名称。
[0080] 步骤603、DDS 202接收Application 201发送的访问请求,并解析该访问请求,确 定该访问请求中的查询索引字段不是该数据表的分区信息;确定该数据表存在关联的分区 路由表;
[0081 ]具体实现中,DDS接收到访问请求后,会解析该访问请求,获取访问请求中的查询 索引字段及其取值,并确定该查询索引字段不是该数据表的分区信息。DDS上保存有该数据 表的分区路由表的元数据,该分区路由表的元数据用于指示该数据表存在关联的分区路由 表,当DDS确定该查询索引字段不是该数据表的分区信息时,可以根据该分区路由表的元数 据,确定该数据表存在关联的分区路由表。可选的,当该数据表存在多个关联的分区路由表 时,还包括根据访问请求中查询索引字段,确定该访问请求中查询索引字段对应的分区路 由表。。
[0082] 步骤604、DDS向保存有该分区路由表的数据库发送查询请求,该查询请求包括所 述查询索引字段及其取值;
[0083] -种可能的实现方式是,DDS生成查询请求,该查询请求包括待访问的目标字段、 查询条件以及待访问的数据表名称,其中待访问的目标字段为该分区路由表保存的该数据 表的分区信息,查询条件包括查询索引字段及其取值,待访问的数据表名称为该分区路由 表的名称。例如,针对步骤601中的访问请求,DDS生成的查询请求可以为:select userid from tbl_route_msdn,where msdn= ' 13800000001 ',其中userid表不待访问目标字段, msdn= ' 13800000001 '表示查询条件,tbl_route_msdn表示关联的分区路由表。
[0084] 需要说明的是,当该分区路由表保存在多个数据库中时,DDS需要分别向该多个数 据库发送查询请求。
[0085]步骤605、分布式数据库接收DDS发送的查询请求,在该数据表的分区路由表中获 取查询索引字段及其取值对应的分区信息及其取值,并将获取到的分区信息及其取值作为 查询结果返回给DDS;
[0086]步骤606、DDS接收分布式数据库返回的查询结果,并根据查询结果中的查询索引 字段对应的分区信息及取值,生成更新的访问请求,该更新的访问请求包括该查询索引字 段对应的分区信息及取值和待访问的目标字段,根据所述查询索引字段对应的分区信息及 取值,确定该更新的访问请求对应的目标数据库;
[0087] 需要说明的是,DDS根据查询结果中的查询索引字段对应的分区信息及取值,生成 更新的访问请求不是必需的。一种可能的实现方式中,DDS根据查询结果中的查询索引字段 对应的分区信息及取值,并结合待访问的数据表对应的分区规则,直接确定步骤601中的访 问请求对应的目标数据库。
[0088] 具体的,当DDS从对应的分区路由表中获取到查询索引字段对应的分区信息及取 值时,结合所述待访问的数据表的分区规则,即可确定将从Application接收到的访问请求 发送到哪个(些)具体的分布式数据库。
[0089] 步骤607、DDS将访问请求发送到对应的分布式数据库中处理。
[0090]可选的,该方法还包括DDS接收访问结果,并将该访问结果反馈给Appl ication,其 中,该访问结果包括步骤601中访问请求中待访问的目标字段对应的数据记录。
[0091 ]在本发明实施例中,Appl i cat ion接收到用户的访问请求后,将该访问请求发送给 DDS,DDS确定访问请求中的查询索引字段不是分区信息,并且根据关联的分区路由表获取 与访问请求中查询索引字段及其取值对应的分区信息及其取值,然后DDS根据获取到的分 区信息及其取值确定将该访问请求发送到目标分布式数据库。避免了按照现有技术,需要 将访问请求发送到所有数据库处理的问题,有效的减小了访问响应的延时,也减小了系统 性能消耗。并且整个过程对Appl ication透明,Appl icat ion只要生成访问请求,即可快速的 获取访问结果,有效的提高了用户的使用体验。
[0092]上述DDS的动作可以由DDS根据上述如5所述实施例提及的存储器中的软件模块来 执行。例如,S603可以根据图5中的交互模块来执行。S604,S606和S607可以根据图5中的路 由模块来执行。
[0093]如图7所示为本发明实施例提供的另一种分布式数据库的处理方法的流程示意 图,包括:
[0094] 步骤701、App 1 ication 201接收用户的访问请求,该访问请求包括查询索引字段 及其取值和待访问的目标字段;确定该访问请求中的查询索引字段不是数据表的分区信 息,且该数据表存在关联的分区路由表;
[0095]具体实现中,Appl i cat ion接收到用户输入的访问请求后,获取访问请求中的查询 索引字段及其取值,并确定该查询索引字段不是该数据表的分区信息。Application上保存 有该数据表的分区路由表的元数据,该分区路由表的元数据用于指示该数据表存在关联的 分区路由表,当Application确定该查询索引字段不是该数据表的分区信息时,可以根据该 分区路由表的元数据,确定该数据表存在关联的分区路由表。可选的,当该数据表存在多个 关联的分区路由表时,还包括根据访问请求中查询索引字段,确定该访问请求中查询索引 字段对应的分区路由表。
[0096] 步骤702、Application 201向DDS 202发送查询分区路由表的查询请求,所述查询 分区路由表的查询请求包括步骤701中的查询索引字段及其取值;
[0097] 正如上述实施例提到的,Application 201通过DDS 202对DB1、DB2以及DB3等分布 式数据库进行透明操作。Application 201对数据库的操作都是经由DDS 202处理,并确定 发送到具体的分布式数据库进行处理的。
[0098] -种可能的实现方式是,Application生成查询请求,该查询请求包括待访问的目 标字段、查询条件以及待访问的数据表名称,其中待访问的目标字段为该分区路由表保存 的该数据表的分区信息,查询条件包括查询索引字段及其取值,待访问的数据表名称为步 骤701中确定的分区路由表的名称。例如,Appl i cat i on生成的查询请求可以为:select userid from tbl_route_msdn,where msdn='13800000001',其中userid表不待访问目标 字段,msdn= ' 13800000001 '表示查询条件,tbl_route_msdn表示关联的分区路由表。步骤 703、DDS 202接收Application 201发送的查询分区路由表的查询请求,并将该查询分区路 由表的查询请求发送到保存有分区路由表的分布式数据库中;步骤704、保存有分区路由表 的分布式数据库接收DDS 202发送的查询分区路由表的查询请求,并获取所述查询索引字 段及其取值对应的分区信息及其取值,并该获取到的分区信息及其取值作为查询结果发送 给DDS 202;
[0099]步骤705、DDS 202接收保存有分区路由表的分布式数据库返回的查询结果,并将 接收到的查询结果发送给Application 201;
[0100] 步骤706、Application 201接收DDS 202返回的查询结果,并使用接收到的查询结 果中的分区信息及其取值更新所述访问请求;
[0101] 具体的,更新的访问请求包括所述分区信息及其取值和待访问的目标字段。
[0102] 步骤707Application 201将更新后的访问请求发送给DDS 202;
[0103] 步骤708、DDS 202接收Application 201发送的更新后的访问请求,解析所述更新 后的访问请求,获得所述分区信息及其取值,并根据所述分区信息及其取值,将所述更新后 的访问请求发送到目标数据库。
[0104]本发明实施例中,App 1 i cat ion接收到用户的访问请求后确定访问请求中的查询 索引字段不是分区信息,并且根据关联的分区路由表获取与访问请求中查询索引字段及其 取值对应的分区信息及其取值,然后使用获取到的分区信息及其取值更新所述访问请求, 并将更新后的访问请求发送给DDS,DDS根据该分区信息及其取值确定将该更新后的访问请 求发送到目标分布式数据库。由于在Application上保存有分区路由表元数据,所以 Ap p 1 i c a t i ο η能够感知分区路由表的存在,这种情况下,数据表的分区路由表与 Application紧親合,DDS不需要改进,只要按照现有技术处理Application生成的SQL语句 即可,特别是当多个App 1 i cat i on共同使用一个DDS时,有效的减轻了
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1