CN106897344A - 分布式数据库的数据操作请求处理方法及装置 - Google Patents

分布式数据库的数据操作请求处理方法及装置 Download PDF

Info

Publication number
CN106897344A
CN106897344A CN201610580832.4A CN201610580832A CN106897344A CN 106897344 A CN106897344 A CN 106897344A CN 201610580832 A CN201610580832 A CN 201610580832A CN 106897344 A CN106897344 A CN 106897344A
Authority
CN
China
Prior art keywords
data
client
operation request
data operation
partition table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610580832.4A
Other languages
English (en)
Inventor
陈萌萌
冯柯
庄明强
陈俊全
万全威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610580832.4A priority Critical patent/CN106897344A/zh
Publication of CN106897344A publication Critical patent/CN106897344A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了分布式数据库的数据操作请求处理方法及装置,用以解决现有技术中分布式数据库的数据操作请求路由方式效率低的问题。本申请公开的一种分布式数据库的数据操作请求处理方法包括:客户端接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;所述客户端根据所述关键字和所述表名,当确定所述数据表为分区表时,获取与所述数据操作请求和所述分区表对应的分区策略;所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。

Description

分布式数据库的数据操作请求处理方法及装置
技术领域
本申请涉及分布式数据库领域,尤其涉及分布式数据库的数据操作请求处理方法及装置。
背景技术
为了解决单级数据库的扩容问题,分布式数据库作为一种解决方法被广泛采用。相对于传统人工分库分表的数据库部署,分布式数据库提供了数据分区的功能以支持数据横向扩展。
分布式数据库可以使用由多个独立节点组成、节点间采用网络互联的计算机集群实现数据库的分布式存储、计算等功能。分布式数据库可以使用相互独立的计算节点,则同一张数据表的不同数据可以根据分区策略被分配到不同的节点进行存储,考虑到网络时延和带宽原因,跨节点的数据操作效率一般远小于节点内部的数据操作效率,为了保证分布式数据库的高效运行,针对不同数据的数据操作请求需要被尽可能地路由到其对应的存储节点,其中,数据操作请求可以是诸如结构化查询语言(Structured Query Language,SQL)请求等可用于请求操作分布式数据库中数据的请求。
在现有技术中,由于分布式数据库的分区规则的复杂性,数据操作请求路由往往通过少量的服务器(称为路由代理服务器)集中部署。具体地,分布式数据库对应的客户端可以与路由代理服务器建立会话并发出数据操作请求,路由代理服务器接收到数据操作请求后,根据数据操作请求所依赖的数据分区,将数据操作请求转发到该分区所处节点进行处理,由于处理结果也需要路由代理服务器转发回到客户端。
但是,由于路由代理服务器往往只有少数机器组成,其接受数据处理请求的吞吐量较小,从而导致数据操作请求路由效率低。
发明内容
本申请实施例提供分布式数据库的数据操作请求处理方法及装置,用以解决现有技术中分布式数据库的数据操作请求路由方式效率低的问题。
本申请实施例采用下述技术方案:
本申请实施例提供的一种分布式数据库的数据操作请求处理方法,包括:
客户端接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
所述客户端根据所述关键字和所述表名,当确定所述数据表为分区表时,获取与所述数据操作请求和所述分区表对应的分区策略;
所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
本申请实施例提供的一种分布式数据库的数据操作请求处理装置,所述装置位于客户端,包括:
第一接收模块,接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
第一获取模块,根据所述关键字和所述表名,当确定所述数据表为分区表时,获取与所述数据操作请求和所述分区表对应的分区策略;
发送模块,根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
本申请实施例提供的另一种分布式数据库的数据操作请求处理方法,包括:
服务端接收客户端发送的数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名,所述数据表为分区表;
所述服务端根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略;
所述服务端将所述分区策略返回给所述客户端,以便于所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
本申请实施例提供的另一种分布式数据库的数据操作请求处理装置,所述装置位于服务端,包括:
第二接收模块,接收客户端发送的数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名,所述数据表为分区表;
第二获取模块,根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略;
返回模块,将所述分区策略返回给所述客户端,以便于所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
本申请实施例提供的再一种分布式数据库的数据操作请求处理方法,包括:客户端接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
所述客户端对所述数据操作请求进行解析,获得所述表名;
所述客户端根据所述表名,当确定所述数据表为分区表时,对所述数据操作请求进行参数化处理,获得所述关键字;
所述客户端根据所述表名和所述关键字,获取与所述数据操作请求和所述分区表对应的分区策略;
所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
本申请实施例提供的再一种分布式数据库的数据操作请求处理装置,所述装置位于客户端,包括:
请求接收模块,收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
解析模块,对所述数据操作请求进行解析,获得所述表名;
参数化处理模块,根据所述表名,当确定所述数据表为分区表时,对所述数据操作请求进行参数化处理,获得所述关键字;
分区策略第一获取模块,根据所述表名和所述关键字,获取与所述数据操作请求和所述分区表对应的分区策略;
请求转发模块,根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:将原来由少数服务器完成的数据操作请求路由工作,转移至由分布式数据库中的各客户端完成,由各客户端对数据操作请求进行转发,从而可以提高接收数据处理请求的吞吐量,提高数据操作请求路由效率,因此,可以部分或全部地解决现有技术中的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种分布式数据库的数据操作请求处理方法的流程示意图;
图2为本申请实施例提供的另一种分布式数据库的数据操作请求处理方法的流程示意图;
图3为本申请实施例提供的再一种分布式数据库的数据操作请求处理方法的流程示意图;
图4为本申请实施例提供的在一种实际应用场景下,分布式数据库的数据操作请求处理方法对应的一种系统结构示意图;
图5为本申请实施例提供的在一种实际应用场景下,分布式数据库的数据操作请求处理方法的详细流程示意图;
图6为本申请实施例提供的对应于图1的分布式数据库的数据操作请求处理装置结构示意图;
图7为本申请实施例提供的对应于图2的分布式数据库的数据操作请求处理装置结构示意图;
图8为本申请实施例提供的对应于图3的分布式数据库的数据操作请求处理装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的方案的核心思想是:通过客户端与服务端的动态交互,以及客户端上保存(为了提高速度,具体可以保存在相应的缓存中)的服务于数据操作请求路由过程的相关数据,实现基于复杂分区规则的全自动数据操作请求路由过程。需要说明的是,本申请中提到的“路由”均是指分布式数据库的数据操作请求的路由,而非一般理解的IP数据包的路由。
在本申请实施例中,分布式数据库中可以有两类数据表。第一类是未分区表,对于一张未分区表,其可以存储在分布式数据库中的某一台设备上;第二类是分区表,分区表被拆分为至少两部分(每一部分可以称为一个分区),不同分区一般分别处于分布式数据库中的不同的设备上,和/或分别处于分布式数据库中的某一台设备的不同存储区域中,其中,用于存储数据表的设备一般为作分布式数据库中的各服务器。在实际应用中,涉及未分区表或分区表的数据操作请求都有可能需要在分布式数据库中进行路由,不同之处在于涉及分区表的数据操作请求路由更加复杂,因为,涉及同一张分区表的不同数据操作请求所请求操作的数据可能处于不同的服务器上,则不同数据操作请求相应地可能会被转发至不同的服务器进行处理。
本申请的方案对于这两类数据表均是适用的,需要说明的是,在分区表的场景下,尤其能体现出本申请的方案相比于现有技术的优点。因此,以下主要是以基于分区表的场景进行说明的。
下面分别从客户端、服务端的角度对本申请的方案进行详细说明。
图1为本申请实施例提供的一种分布式数据库的数据操作请求处理方法的流程示意图。
图1中的流程的执行主体可以是分布式数据库对应的客户端(以下简称为:客户端)。其中,分布式数据库可以对应多个客户端以及多个服务端,每个客户端可以有其对应的至少一个服务端。本申请对搭载客户端或服务端的设备并不做限定,以下仅列举一些设备作为示例,比如,个人计算机、大中型计算机、计算机集群、手机、平板电脑、智能手表、车载移动台等。
图1中的流程可以包括以下步骤:
S101:客户端接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名。
在本申请实施例中,所述数据操作请求可以是:诸如SQL请求等可用于请求操作分布式数据库中数据的请求。所述数据操作请求可以是分布式数据库的用户所发送的。
所述关键字可以为数据库记录中包含的键值对中的“键(key)”。以某数据操作请求为有如下SQL语句为例:
select*from t1where c1=1and c2=2。
该数据操作请求中包含的其所请求操作的数据对应的关键字为“c1”和“c2”,其所请求操作的数据对应的数据表的表名为“t1”。
S102:所述客户端根据所述关键字和所述表名,当确定所述数据表为分区表时,获取与所述数据操作请求和所述分区表对应的分区策略。
在本申请实施例中,客户端在接收到数据操作请求后,可以判断数据操作请求所请求操作的数据对应的数据表是否为分区表;若是,则可以执行步骤S102;否则,可以直接根据数据操作请求所请求操作的数据对应的数据表的表名,查询该数据表所处的服务器,进而将数据操作请求发送至该数据表所处的服务器(也即,对于对应的数据表为非分区表的数据操作请求的路由过程)。
客户端和/或客户端的服务端上可以预先保存有分布式数据库中的分区表的分区表模式信息,基于分区表模式信息,客户端可以判断数据操作请求所请求操作的数据对应的数据表是否为分区表,其中,分区表模式信息可以用于表明对应的分区表是采用哪种分区模式进行分区的,分区模式可以包括范围(range)分区模式、哈希(hash)分区模式等。
以实际应用中的某分区表为例,假定该分区表记作t1=(c1int,c2int,c3int),采用hash分区模式,其中,c1、c2、c3均为t1的列名,数值类型为整型。这些信息可以包含在t1对应的分区表模式信息中,需要说明的是,该例中只是对分区表模式信息进行了示例性说明,并非是对分区表模式信息所包含内容的限定,只要根据分区表模式信息包含的内容足以判断t1是否为分区表即可。
需要说明的是,在实际应用中,可以用于判断数据操作请求所请求操作的数据对应的数据表是否为分区表的依据并不限于分区表模式信息,所述依据还可以是用于表明对应的数据表是否为分区表的标记信息等,标记信息可以携带在数据表的表名中,等等。
在本申请实施例中,不同的数据操作请求包含的关键字可以不同,不同的数据操作请求对包含的各关键字的取值限定情况也可以不同,相应地可以导致不同的数据操作请求所请求操作的数据也不同,可能属于不同的分区。步骤S102中所述的与所述数据操作请求和所述分区表对应的分区策略可以指:可用于确定所述数据操作请求所请求操作的数据属于所述分区表划分出的哪个分区的策略。
S103:所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
在本申请实施例中,客户端根据分区策略以及数据操作请求,可以确定数据操作请求所请求操作的数据属于分区表划分出的哪个分区,进而,可以根据该分区的相关信息,确定该分区所处服务器(也即,数据操作请求所请求操作的数据所处的服务器)的地址,并将数据操作请求发送给该服务器,以便于该服务器对响应于接收到的数据操作请求,对数据操作请求所请求操作的的数据执行相应的操作。
通过图1中的方法,可以将原来由少数服务器完成的数据操作请求路由工作,转移至由分布式数据库中的各客户端完成,由各客户端对数据操作请求进行转发,从而可以提高接收数据处理请求的吞吐量,提高数据操作请求路由效率,因此,可以部分或全部地解决现有技术中的问题。
基于图1中的方法,本申请实施例还提供了图1中的方法的一些具体实施方案,以及扩展方案,下面进行说明。
在本申请实施例中,前面已经提到,可以根据分区表模式信息或标记信息等判断数据操作请求所请求操作的数据对应的数据表是否为分区表,由于分区表模式信息在后续步骤的实施过程中还可以有其他用途,因此,以分区表模式信息作为判断依据即可,一般无需采用标记信息。
在这种情况下,对于步骤S102,所述客户端根据所述关键字和所述表名,当确定所述数据表为分区表时,获取与所述数据操作请求和所述分区表对应的分区策略,具体可以包括:所述客户端对所述数据操作请求进行解析,获得所述表名;所述客户端根据所述表名,在所述客户端上保存的分区表模式信息和/或所述客户端的服务端上保存的分区表模式信息中进行查询,以确定所述数据表是否为分区表;若是,对所述数据操作请求进行参数化处理,获得所述关键字,并根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略。。
分区表模式信息与分区表的表名可以是一一对应的,则客户端对数据操作请求进行解析时,至少可以解析出数据操作请求中包含的表名,确定出了表名即确定出了数据操作请求所请求操作的数据对应的数据表。
进一步地,客户端上保存的分区表模式信息与所述客户端的服务端上保存的分区表模式信息可以不完全一致,客户端上保存的分区表模式信息可以是源于客户端的服务端的。
在这种情况下,上述的所述客户端根据所述表名,在所述客户端上保存的分区表模式信息和/或所述客户端的服务端上保存的分区表模式信息中进行查询,以确定所述数据表是否为分区表,具体可以包括:所述客户端根据所述表名,在所述客户端上保存的分区表模式信息中进行查询,以确定所述客户端上保存的分区表模式信息是否包含所述数据表对应的分区表模式信息;若是,根据所述客户端上保存的分区表模式信息,确定所述数据表是否为分区表;否则,根据所述表名,在所述客户端的服务端上保存的分区表模式信息中查询,以确定所述数据表是否为分区表,以及若查询获得所述数据表对应的分区表模式信息,将所述数据表对应的分区表模式信息保存至所述客户端上,如此,客户端以后可以直接使用该分区表模式信息,而无需再从服务端获取,可以提高效率。
在本申请实施例中,根据对于步骤S102的说明可知,不同的数据操作请求及分区表对应的分区策略也可能不同,则分区策略可能有多种。这些分区策略可以部分或全部地保存在客户端的服务端上,也可以部分或全部地保存在客户端上。则对于步骤S102,获取与所述数据操作请求和所述分区表对应的分区策略,具体可以包括:所述客户端根据所述关键字和所述表名,从所述客户端和/或所述客户端的服务端,获取与所述数据操作请求和所述分区表对应的分区策略。
进一步地,客户端上保存的分区策略可以是源于客户端的服务端的,保存的各分区策略可以分别与一个或多个参数化(或者,也可以称为模板化)的数据操作请求建立有对应关系,其中,每个参数化的数据操作请求可以反映某一个或某一类数据操作请求包含的关键字以及关键字的取值限定情况等,每一类数据操作请求参数化处理结果可以是相同的,参数化处理结果至少可以包括数据操作请求包含的关键字。
在这种情况下,上述的所述客户端根据所述关键字和所述表名,从所述客户端和/或所述客户端的服务端,获取与所述数据操作请求和所述分区表对应的分区策略,具体可以包括:所述客户端根据所述关键字和所述表名,确定所述客户端上保存的分区策略中是否包含与所述数据操作请求和所述分区表对应的分区策略;若是,从所述客户端获取与所述数据操作请求和所述分区表对应的分区策略;否则,从所述客户端的服务端上的保存的分区策略中获取与所述数据操作请求和所述分区表对应的分区策略,以及将与所述数据操作请求和所述分区表对应的分区策略保存至所述客户端上,如此,客户端以后可以直接使用该分区策略,而无需再从服务端获取,可以提高效率。其中,所述关键字和所述表名是客户端通过对所述数据操作请求进行解析和参数化处理而获得的。
进一步地,若客户端从服务端获取分区策略,服务端也需要获得数据操作请求或数据操作请求相关的信息才能够确定对应的分区策略,因此,上述的从所述客户端的服务端获取与所述数据操作请求和所述分区表对应的分区策略,具体可以包括:所述客户端将所述数据操作请求发送给所述客户端的服务端,以使所述客户端的服务端根据所述数据操作请求包含的所述关键字和所述表名,确定与所述数据操作请求和所述分区表对应的分区策略并返回给所述客户端。
客户端向服务端发送数据操作请求时,可以仅发送数据操作请求本身,也可以将数据操作请求携带在其他请求(比如查询请求等)中,再将其他请求发送给服务端,总之,只要使得服务端可以获得该数据操作操作请求即可。
以所述其他请求为虚拟表查询请求为例,上述的所述客户端将所述数据操作请求发送给所述客户端的服务端,具体可以包括:所述客户端将携带所述数据操作请求的虚拟表查询请求发送给所述客户端的服务端,以使所述服务端通过对应的虚拟表,确定与所述数据操作请求和所述分区表对应的分区策略并返回给所述客户端。这种方式的优点是:可以利用已有的数据库查询接口从服务端获取分区策略,而无需专门定义用于获取分区策略的应用程序接口,可以节省成本,避免使用定制远程过程调用协议(Remote ProcedureCall Protocol,RPC),也可以增加方案的灵活性和通用性。
在本申请实施例中,客户端在获取分区策略后,可以确定数据操作请求所请求操作的数据所处分区,进而确定该分区所处服务器。一种实施方式如下:
对于步骤S103,所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器,具体可以包括:所述客户端根据所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识;根据所述分区物理标记,在保存的分区物理位置信息中确定所述分区物理标记对应的分区物理位置信息;根据所述分区物理标记对应的分区物理位置信息,确定所述数据所请求操作的数据所处的服务器的地址,并将所述数据操作请求发送给所述服务器。
在本申请实施例中,当分区为hash分区时,可以根据数据操作请求的参数以及获得的分区策略,直接计算出分区物理标识,而当分区为range分区时,还需要获取用于表明range分区的范围的信息,该信息一般包含在分区表模式信息中。则当所述分区为范围range分区时,上述的所述客户端所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识,具体可以包括:所述客户端获取所述分区表对应的分区表模式信息;所述客户端根据所述分区表对应的分区表模式信息、所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识;其中,所述分区表模式信息包含用于表明所述range分区的范围的信息。
进一步地,上述的分区物理位置信息可以保存在客户端上和/或客户端的服务端上,客户端上保存的分区物理位置信息可以源于服务端。
在本申请实施例中,根据上面的说明可知,客户端上可以保存部分或全部用于实现数据操作请求路由的信息,比如,分区策略、分区表模式信息、分区物理位置信息等。在实际应用中,可以将这些信息存储在客户端上的缓存(cache)中,以实现对这些信息的高速读写,从而可以提高本申请的方案的效率。具体地,所述客户端上保存的分区策略和/或分区表模式信息和/或分区物理位置信息可以分别保存在对应的缓存中,这些信息中的部分或全部可以分别保存在自己独占的缓存中,也可以保存在共用缓存中。
上面从客户端角度对本申请的方案进行了说明。基于同样的思路,本申请实施例还提供了另一种分布式数据库的数据操作请求处理方法,是从服务端角度出发的,下面进行说明。
图2为本申请实施例提供的另一种分布式数据库的数据操作请求处理方法的流程示意图。
图2中的流程的执行主体可以是分布式数据库对应的服务端。
图2中的流程可以包括以下步骤:
S201:服务端接收客户端发送的数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名,所述数据表为分区表。
S202:所述服务端根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略。
S203:所述服务端将所述分区策略返回给所述客户端,以便于所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
通过图2中的方法,可以将原来由少数服务器完成的数据操作请求路由工作,转移至由分布式数据库对应的各客户端完成,由各客户端对数据操作请求进行转发,从而可以提高接收数据处理请求的吞吐量,提高数据操作请求路由效率,因此,可以部分或全部地解决现有技术中的问题。
基于图2中的方法,本申请实施例还提供了图2中的方法的一些具体实施方案,以及扩展方案,下面进行说明。
在本申请实施例中,对于步骤S201,服务端接收客户端发送的数据操作请求,具体可以包括:服务端接收客户端发送的携带数据操作请求的虚拟表查询请求。
进一步地,对于步骤S202,所述服务端根据所述数据操作请求,确定与所述数据操作请求和所述分区表对应的分区策略,具体可以包括:所述服务端响应于所述虚拟表查询请求,通过对应的虚拟表对所述数据操作请求进行解析,确定与所述数据操作请求和所述分区表对应的分区策略。
在本申请实施例中,对于步骤S203,所述服务端将所述分区策略返回给所述客户端,具体可以包括:所述服务端将所述分区策略序列化;所述服务端将序列化的分区策略返回给所述服务端,以便于所述客户端对所述序列化的分区策略反序列化后使用。对分区策略序列化的原因是为了便于通过已有的查询接口返回分区策略,而无需专门定义用于返回分区策略的应用程序接口。当然,在实际应用中,即使不对分区策略序列化,服务端仍然可以实现将分区策略返回给客户端,本申请对具体的返回方式并不做限定,将分区策略序列化后返回仅是返回方式的一种示例。
本申请实施例还提供了再一种分布式数据库的数据操作请求处理方法的流程示意图,如图3所示,是对图1中流程进一步的细化。
图3中的流程可以包括以下步骤:
S301:客户端接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名。
S302:所述客户端对所述数据操作请求进行解析,获得所述表名。
S303:所述客户端根据所述表名,当确定所述数据表为分区表时,对所述数据操作请求进行参数化处理,获得所述关键字。
S304:所述客户端根据所述表名和所述关键字,获取与所述数据操作请求和所述分区表对应的分区策略。
S305:所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
上面分别从客户端、服务端对本申请的方案进行了说明。本申请实施例还提供了在一种实际应用场景下,分布式数据库的数据操作请求处理方法对应的一种系统结构示意图,以及对应的数据操作请求处理方法的详细流程示意图,如图4、图5所示。
图4为本申请实施例提供的在一种实际应用场景下,分布式数据库的数据操作请求处理方法的详细流程示意图。
在图4中,上述的数据操作请求具体可以为SQL请求,上述的分区策略具体可以为分区计算公式,需要说明的是,在实际应用中,分区策略也可以是公式形式以外的其他形式的信息。
客户端中包含有:
SQL请求快速参数化模块,用于对接收到的SQL请求进行参数化处理,参数化处理结果包括但不限于该SQL请求中的关键字;
SQL请求分区计算公式缓存,用于保存分区计算公式;
分区表模式缓存,用于保存分区表模式信息;
分区物理位置缓存,用于保存分区物理位置信息。
服务端中包含有:
分区计算公式虚拟表,用于处理客户端发送的分区计算公式虚拟表查询请求;
SQL请求解析模块,用于解析分区计算公式虚拟表查询请求中携带的SQL请求,以便于确定与该SQL请求对应的分区计算公式;
分区表模式记录,用于保存分区表模式信息,以及向客户端提供客户端上尚未保存的分区表模式信息。
图5为本申请实施例提供的在一种实际应用场景下,分布式数据库的数据操作请求处理方法的详细流程示意图。
图5中的详细流程可以概括为以下七个步骤:
步骤一:客户端接收用户发送的SQL请求,首先利用SQL请求快速参数化模块对SQL请求涉及的表名进行解析,以判断SQL请求对应的数据表是否为分区表,如果不是分区表,则可以直接查询分区物理标识(比如,可以将非分区表的分区ID统一设置为0),如果是分区表,则进入步骤二。
步骤二:客户端利用通过步骤一得到的参数化处理后的SQL请求,查询SQL请求分区计算公式缓存,如果命中,则进入步骤四,如果未命中,则进入步骤三。
步骤三:客户端通过发送SQL请求,查询服务端的分区计算公式虚拟表,服务端在接收到请求后,驱动SQL请求解析模块,解析请求并将SQL请求对应的分区计算公式序列化,通过结果集合返回给客户端。
步骤四:客户端利用服务端返回的分区计算公式,将其反序列化,再结合SQL请求的参数,计算分区信息,并可以将该分区计算公式保存在SQL请求分区计算公式缓存中以便于以后使用。其中,如果SQL请求对应的分区是hash分区,则可以直接计算出分区物理标识,如果是range分区,则进入步骤五。
步骤五:客户端查询range分区表模式缓存,如果命中,则进入步骤七,如果未命中,则进入步骤六。
步骤六:客户端查询服务端的分区表模式记录,并通过服务端返回的结果,计算分区物理标识。
步骤七:客户端通过计算得到的分区物理标识,查询分区物理位置缓存,找到所在的服务器的地址,并将用户的SQL请求转发至该服务器。
为了进一步地帮助理解本申请的方案,基于以上概括出的步骤,以下还提供了3个更具体的应用实例,下面分别进行说明。
实例一:
假设分区表为t1(c1int,c2int,c3int),其中,分区模式为hash,分区键为c1+c2,分区个数为256个。
客户端当接收到用户的如下SQL请求:
select*from t1where c1=1and c2=2;
步骤一中,利用SQL请求快速参数化模块解析出SQL请求涉及的表名为“t1”,通过查询分区模式表缓存可知t1为分区表,进入步骤二。
步骤二中,假定SQL请求分区计算公式缓存中无对应的记录,则进入步骤三。
步骤三中,假定服务端的分区计算公式虚拟表为proxy_route,客户端可以向服务端发送如下虚拟表查询请求:
select partition_type,partition_cnt,partition_calc_formula fromproxy_route where sql_string=‘select*from t1where c1=1and c2=2’;
其中,“partition_type”表示分区模式,“partition_cnt”表示分区个数,“partition_calc_formula”表示分区计算公式。
服务器端通过解析该请求,对应地返回类似如下的结果:
‘hash’,256,‘0100010111010….’;
‘0100010111010….’即为对应于用户的SQL请求的分区计算公式,在此场景下也可以将其理解为:‘@1+@2’。其中@1为快速参数化的第一个关键字,此例中为c=1中的1,@2为第二个关键字,即为c2=2中的2。该分区计算公式的内容依赖于快速参数化所得到的关键字列表,因此对于不同SQL请求会有所不同。
步骤四中,服务器端通过计算‘@1+@2’,即‘1+2’得到3,并调动内建hash函数计算得到hash值,例如假定计算得到的hash为300,然后通过hash分区物理标识的计算规则,即300取模256,得到分区物理标识为44。
进入到步骤七(并非是range分区,因此,无需执行步骤五、步骤六),假设分区表的第44号分区的物理位置缓存为18.220.2.25,则将该请求转发到地址为18.220.2.25的服务器上。
另外,步骤三得到的分区计算表达式可以保存在客户端的分区计算公式缓存中,则客户端再次收到形式相同但关键字不同的请求后,例如select*from t1where c1=5andc2=7,则会命中该缓存,并利用公式计算出5+7=12,进而执行步骤四之后的过程。
实例二:
客户端当接收到用户的如下SQL请求:
select*from t1where t1=1and t3=2and t2=4;
由于该SQL请求不同于实例一中的请求,无法命中分区计算式缓存,需要重新发送到服务端解析,解析后的分区表达式也不同于上例中的‘@1+@2’,而是变为‘@1+@3’,客户端根据新的分区计算公式计算出1+4=5,并重复对应于实例一的后续步骤。在实例一和实例二发生后,客户端的SQL请求分区计算公式缓存中可以保存有如下表1中的内容:
表1
实例三:
假定有range分区表t2(c1int,c2int,c3int),其分区键为c1,分区模式为range分区模式,具体如下:
“0<c1<=10→分区0
10<c1<=20→分区1
20<c1<=30→分区2
30<c1→分区4”。
客户端当接收到用户的如下SQL请求:
select*from t2where c1=c2and c3=4and c2>15and c2<20;
则对应的分区计算表达式可以为(@2,@3),注意:由于c1与c2相等,则c2的条件自动等价到c1上。假设此时分区表模式缓存中没有对应的记录,则需要通过步骤五,查询服务端的分区表模式记录,并将服务端返回的结果保存在分区表模式缓存中,则分区表模式缓存可以保存有如下表2中的内容:
表2
表名 分区 分区模式
T2 0 (0,10]
T2 1 (10,20]
T2 2 (20,30]
T2 3 (30,40)
通过分区计算公式(@2,@3),可以得到计算结果落在分区区间(15,20)中,查询可得1号分区,进而可以执行后续步骤,在此不赘述。
上面对本申请的方案进行了详细说明。下面再对本申请的方案的优点集中总结如下:
第一,充分利用客户端的缓存,在同一数据操作请求反复出现的场景下避免多次访问服务端而可以直接计算出分区物理标识,可以加快数据操作请求转发速度;
第二,客户端与服务端直接可以通过分区表模式记录内部表访问所需的分区表模式信息,减少了对服务端代码的依赖,这样可以大大简化客户端的代码,有利于实现客户端与服务端的解耦。
第三,通过缓存分区计算表达式,可以处理很多复杂的数据操作请求及复杂的分区模式,可以提高客户端进行数据操作请求路由的准确率。
第四、客户端可以对缓存策略进行控制,针对不同的内存配置、时延容忍度采用不同的缓存策略,灵活性较高。
第五、使用通用的虚拟表模式实现客户端与服务端的交互,避免了使用定制RPC,增加了方案的灵活性和通用性,有利于客户端与服务端相互独立地维护、升级,提高了兼容性。
以上为本申请实施例提供的分布式数据库的数据操作请求处理方法,基于同样的思路,本申请实施例还提供相应的分布式数据库的数据操作请求处理装置,如图6、图7、图8所示。
图6为本申请实施例提供的对应于图1的分布式数据库的数据操作请求处理装置结构示意图,该装置位于客户端,包括:
第一接收模块601,接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
第一获取模块602,根据所述关键字和所述表名,当确定所述数据表为分区表时,获取与所述数据操作请求和所述分区表对应的分区策略;
发送模块603,根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
可选地,第一获取模块602,对所述数据操作请求进行解析,获得所述表名,根据所述表名,在所述客户端上保存的分区表模式信息和/或所述客户端的服务端上保存的分区表模式信息中进行查询,以确定所述数据表是否为分区表,若是,对所述数据操作请求进行参数化处理,获得所述关键字,并根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略。
可选地,第一获取模块602,根据所述表名,在所述客户端上保存的分区表模式信息中进行查询,以确定所述客户端上保存的分区表模式信息是否包含所述数据表对应的分区表模式信息,若是,根据所述客户端上保存的分区表模式信息,确定所述数据表是否为分区表,否则,根据所述表名,在所述客户端的服务端上保存的分区表模式信息中查询,以确定所述数据表是否为分区表,以及若查询获得所述数据表对应的分区表模式信息,将所述数据表对应的分区表模式信息保存至所述客户端上。
可选地,第一获取模块602,根据所述关键字和所述表名,从所述客户端和/或所述客户端的服务端,获取与所述数据操作请求和所述分区表对应的分区策略。
可选地,第一获取模块602,根据所述关键字和所述表名,确定所述客户端上保存的分区策略中是否包含与所述数据操作请求和所述分区表对应的分区策略,若是,从所述客户端获取与所述数据操作请求和所述分区表对应的分区策略,否则,从所述客户端的服务端获取与所述数据操作请求和所述分区表对应的分区策略,以及将与所述数据操作请求和所述分区表对应的分区策略保存至所述客户端上。
可选地,第一获取模块602,将所述数据操作请求发送给所述客户端的服务端,以使所述客户端的服务端根据所述数据操作请求包含的所述关键字和所述表名,确定与所述数据操作请求和所述分区表对应的分区策略并返回给所述客户端。
可选地,第一获取模块602,将携带所述数据操作请求的虚拟表查询请求发送给所述客户端的服务端,以使所述服务端通过对应的虚拟表,确定与所述数据操作请求和所述分区表对应的分区策略并返回给所述客户端。
可选地,发送模块603,根据所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识,根据所述分区物理标记,在保存的分区物理位置信息中确定所述分区物理标记对应的分区物理位置信息,根据所述分区物理标记对应的分区物理位置信息,确定所述数据所请求操作的数据所处的服务器的地址,并将所述数据操作请求发送给所述服务器。
可选地,当所述分区为范围range分区时,发送模块603,获取所述分区表对应的分区表模式信息,根据所述分区表对应的分区表模式信息、所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识。
可选地,所述客户端上保存的分区策略和/或分区表模式信息和/或分区物理位置信息分别保存在对应的缓存中。
图7为本申请实施例提供的对应于图2的分布式数据库的数据操作请求处理装置结构示意图,该装置位于服务端,包括:
第二接收模块701,接收客户端发送的数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名,所述数据表为分区表;
第二获取模块702,根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略;
返回模块703,将所述分区策略返回给所述客户端,以便于所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
可选地,第二接收模块701,接收客户端发送的携带数据操作请求的虚拟表查询请求。
可选地,第二获取模块702,响应于所述虚拟表查询请求,通过对应的虚拟表对所述数据操作请求进行解析,确定与所述数据操作请求和所述分区表对应的分区策略。
可选地,返回模块703,将所述分区策略序列化,将序列化的分区策略返回给所述服务端,以便于所述客户端对所述序列化的分区策略反序列化后使用。
图8为本申请实施例提供的对应于图3的分布式数据库的数据操作请求处理装置结构示意图,该装置位于客户端,包括:
请求接收模块801,收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
解析模块802,对所述数据操作请求进行解析,获得所述表名;
参数化处理模块803,根据所述表名,当确定所述数据表为分区表时,对所述数据操作请求进行参数化处理,获得所述关键字;
分区策略获取模块804,根据所述表名和所述关键字,获取与所述数据操作请求和所述分区表对应的分区策略;
请求转发模块805,根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
本申请提供的装置是与本申请提供的方法一一对应的,因此,所述装置也具有与所述方法类似的有益技术效果,由于上面已经对所述方法的有益技术效果进行了详细说明,因此,这里不再赘述所述装置的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (30)

1.一种分布式数据库的数据操作请求处理方法,其特征在于,包括:
客户端接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
所述客户端根据所述关键字和所述表名,当确定所述数据表为分区表时,获取与所述数据操作请求和所述分区表对应的分区策略;
所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
2.如权利要求1所述的方法,其特征在于,所述客户端根据所述关键字和所述表名,当确定所述数据表为分区表时,获取与所述数据操作请求和所述分区表对应的分区策略,具体包括:
所述客户端对所述数据操作请求进行解析,获得所述表名;
所述客户端根据所述表名,在所述客户端上保存的分区表模式信息和/或所述客户端的服务端上保存的分区表模式信息中进行查询,以确定所述数据表是否为分区表;
若是,对所述数据操作请求进行参数化处理,获得所述关键字,并根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略。
3.如权利要求2所述的方法,其特征在于,所述客户端根据所述表名,在所述客户端上保存的分区表模式信息和/或所述客户端的服务端上保存的分区表模式信息中进行查询,以确定所述数据表是否为分区表,具体包括:
所述客户端根据所述表名,在所述客户端上保存的分区表模式信息中进行查询,以确定所述客户端上保存的分区表模式信息是否包含所述数据表对应的分区表模式信息;
若是,根据所述客户端上保存的分区表模式信息,确定所述数据表是否为分区表;
否则,根据所述表名,在所述客户端的服务端上保存的分区表模式信息中查询,以确定所述数据表是否为分区表,以及若查询获得所述数据表对应的分区表模式信息,将所述数据表对应的分区表模式信息保存至所述客户端上。
4.如权利要求1所述的方法,其特征在于,获取与所述数据操作请求和所述分区表对应的分区策略,具体包括:
所述客户端根据所述关键字和所述表名,从所述客户端和/或所述客户端的服务端,获取与所述数据操作请求和所述分区表对应的分区策略。
5.如权利要求4所述的方法,其特征在于,所述客户端根据所述关键字和所述表名,从所述客户端和/或所述客户端的服务端,获取与所述数据操作请求和所述分区表对应的分区策略,具体包括:
所述客户端根据所述关键字和所述表名,确定所述客户端上保存的分区策略中是否包含与所述数据操作请求和所述分区表对应的分区策略;
若是,从所述客户端获取与所述数据操作请求和所述分区表对应的分区策略;
否则,从所述客户端的服务端获取与所述数据操作请求和所述分区表对应的分区策略,以及将与所述数据操作请求和所述分区表对应的分区策略保存至所述客户端上。
6.如权利要求5所述的方法,其特征在于,从所述客户端的服务端获取与所述数据操作请求和所述分区表对应的分区策略,具体包括:
所述客户端将所述数据操作请求发送给所述客户端的服务端,以使所述客户端的服务端根据所述数据操作请求包含的所述关键字和所述表名,确定与所述数据操作请求和所述分区表对应的分区策略并返回给所述客户端。
7.如权利要求6所述的方法,其特征在于,所述客户端将所述数据操作请求发送给所述客户端的服务端,具体包括:
所述客户端将携带所述数据操作请求的虚拟表查询请求发送给所述客户端的服务端,以使所述服务端通过对应的虚拟表,确定与所述数据操作请求和所述分区表对应的分区策略并返回给所述客户端。
8.如权利要求1所述的方法,其特征在于,所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器,具体包括:
所述客户端根据所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识;
根据所述分区物理标记,在保存的分区物理位置信息中确定所述分区物理标记对应的分区物理位置信息;
根据所述分区物理标记对应的分区物理位置信息,确定所述数据所请求操作的数据所处的服务器的地址,并将所述数据操作请求发送给所述服务器。
9.如权利要求8所述的方法,其特征在于,当所述分区为范围range分区时,所述客户端根据所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识,具体包括:
所述客户端获取所述分区表对应的分区表模式信息;
所述客户端根据所述分区表对应的分区表模式信息、所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识。
10.如权利要求1~9任一项所述的方法,其特征在于,所述客户端上保存的分区策略和/或分区表模式信息和/或分区物理位置信息分别保存在对应的缓存中。
11.一种分布式数据库的数据操作请求处理方法,其特征在于,包括:
服务端接收客户端发送的数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名,所述数据表为分区表;
所述服务端根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略;
所述服务端将所述分区策略返回给所述客户端,以便于所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
12.如权利要求10所述的方法,其特征在于,服务端接收客户端发送的数据操作请求,具体包括:
服务端接收客户端发送的携带数据操作请求的虚拟表查询请求。
13.如权利要求12所述的方法,其特征在于,所述服务端根据所述数据操作请求,确定与所述数据操作请求和所述分区表对应的分区策略,具体包括:
所述服务端响应于所述虚拟表查询请求,通过对应的虚拟表对所述数据操作请求进行解析,确定与所述数据操作请求和所述分区表对应的分区策略。
14.如权利要求11所述的方法,其特征在于,所述服务端将所述分区策略返回给所述客户端,具体包括:
所述服务端将所述分区策略序列化;
所述服务端将序列化的分区策略返回给所述服务端,以便于所述客户端对所述序列化的分区策略反序列化后使用。
15.一种分布式数据库的数据操作请求处理方法,其特征在于,包括:
客户端接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
所述客户端对所述数据操作请求进行解析,获得所述表名;
所述客户端根据所述表名,当确定所述数据表为分区表时,对所述数据操作请求进行参数化处理,获得所述关键字;
所述客户端根据所述表名和所述关键字,获取与所述数据操作请求和所述分区表对应的分区策略;
所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
16.一种分布式数据库的数据操作请求处理装置,其特征在于,所述装置位于客户端,包括:
第一接收模块,接收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
第一获取模块,根据所述关键字和所述表名,当确定所述数据表为分区表时,获取与所述数据操作请求和所述分区表对应的分区策略;
发送模块,根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
17.如权利要求16所述的装置,其特征在于,所述第一获取模块,对所述数据操作请求进行解析,获得所述表名,根据所述表名,在所述客户端上保存的分区表模式信息和/或所述客户端的服务端上保存的分区表模式信息中进行查询,以确定所述数据表是否为分区表,若是,对所述数据操作请求进行参数化处理,获得所述关键字,并根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略。
18.如权利要求17所述的装置,其特征在于,所述第一获取模块,根据所述表名,在所述客户端上保存的分区表模式信息中进行查询,以确定所述客户端上保存的分区表模式信息是否包含所述数据表对应的分区表模式信息,若是,根据所述客户端上保存的分区表模式信息,确定所述数据表是否为分区表,否则,根据所述表名,在所述客户端的服务端上保存的分区表模式信息中查询,以确定所述数据表是否为分区表,以及若查询获得所述数据表对应的分区表模式信息,将所述数据表对应的分区表模式信息保存至所述客户端上。
19.如权利要求16所述的装置,其特征在于,所述第一获取模块,根据所述关键字和所述表名,从所述客户端和/或所述客户端的服务端,获取与所述数据操作请求和所述分区表对应的分区策略。
20.如权利要求19所述的装置,其特征在于,所述第一获取模块,根据所述关键字和所述表名,确定所述客户端上保存的分区策略中是否包含与所述数据操作请求和所述分区表对应的分区策略,若是,从所述客户端获取与所述数据操作请求和所述分区表对应的分区策略,否则,从所述客户端的服务端获取与所述数据操作请求和所述分区表对应的分区策略,以及将与所述数据操作请求和所述分区表对应的分区策略保存至所述客户端上。
21.如权利要求20所述的装置,其特征在于,所述第一获取模块,将所述数据操作请求发送给所述客户端的服务端,以使所述客户端的服务端根据所述数据操作请求包含的所述关键字和所述表名,确定与所述数据操作请求和所述分区表对应的分区策略并返回给所述客户端。
22.如权利要求21所述的装置,其特征在于,所述第一获取模块,将携带所述数据操作请求的虚拟表查询请求发送给所述客户端的服务端,以使所述服务端通过对应的虚拟表,确定与所述数据操作请求和所述分区表对应的分区策略并返回给所述客户端。
23.如权利要求16所述的装置,其特征在于,所述发送模块,根据所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识,根据所述分区物理标记,在保存的分区物理位置信息中确定所述分区物理标记对应的分区物理位置信息,根据所述分区物理标记对应的分区物理位置信息,确定所述数据所请求操作的数据所处的服务器的地址,并将所述数据操作请求发送给所述服务器。
24.如权利要求23所述的装置,其特征在于,当所述分区为范围range分区时,所述发送模块,获取所述分区表对应的分区表模式信息,根据所述分区表对应的分区表模式信息、所述分区策略以及所述关键字,确定所述数据操作请求所请求操作的数据所处分区的分区物理标识。
25.如权利要求16~24任一项所述的装置,其特征在于,所述客户端上保存的分区策略和/或分区表模式信息和/或分区物理位置信息分别保存在对应的缓存中。
26.一种分布式数据库的数据操作请求处理装置,其特征在于,所述装置位于服务端,包括:
第二接收模块,接收客户端发送的数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名,所述数据表为分区表;
第二获取模块,根据所述关键字和所述表名,获取与所述数据操作请求和所述分区表对应的分区策略;
返回模块,将所述分区策略返回给所述客户端,以便于所述客户端根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
27.如权利要求26所述的装置,其特征在于,第二接收模块,接收客户端发送的携带数据操作请求的虚拟表查询请求。
28.如权利要求27所述的装置,其特征在于,所述第二获取模块,响应于所述虚拟表查询请求,通过对应的虚拟表对所述数据操作请求进行解析,确定与所述数据操作请求和所述分区表对应的分区策略。
29.如权利要求26所述的装置,其特征在于,所述返回模块,将所述分区策略序列化,将序列化的分区策略返回给所述服务端,以便于所述客户端对所述序列化的分区策略反序列化后使用。
30.一种分布式数据库的数据操作请求处理装置,其特征在于,所述装置位于客户端,包括:
请求接收模块,收数据操作请求,所述数据操作请求中包含其所请求操作的数据对应的关键字和数据表的表名;
解析模块,对所述数据操作请求进行解析,获得所述表名;
参数化处理模块,根据所述表名,当确定所述数据表为分区表时,对所述数据操作请求进行参数化处理,获得所述关键字;
分区策略获取模块,根据所述表名和所述关键字,获取与所述数据操作请求和所述分区表对应的分区策略;
请求转发模块,根据所述分区策略,将所述数据操作请求发送给所述数据操作请求所请求操作的数据所处的服务器。
CN201610580832.4A 2016-07-21 2016-07-21 分布式数据库的数据操作请求处理方法及装置 Pending CN106897344A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610580832.4A CN106897344A (zh) 2016-07-21 2016-07-21 分布式数据库的数据操作请求处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610580832.4A CN106897344A (zh) 2016-07-21 2016-07-21 分布式数据库的数据操作请求处理方法及装置

Publications (1)

Publication Number Publication Date
CN106897344A true CN106897344A (zh) 2017-06-27

Family

ID=59190906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610580832.4A Pending CN106897344A (zh) 2016-07-21 2016-07-21 分布式数据库的数据操作请求处理方法及装置

Country Status (1)

Country Link
CN (1) CN106897344A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107609089A (zh) * 2017-09-07 2018-01-19 北京神州绿盟信息安全科技股份有限公司 一种数据处理方法、装置及系统
CN109299157A (zh) * 2018-08-27 2019-02-01 杭州安恒信息技术股份有限公司 一种分布式大单表的数据导出方法及装置
CN109582694A (zh) * 2017-09-29 2019-04-05 北京国双科技有限公司 一种生成数据查询脚本的方法及相关产品
CN110275772A (zh) * 2018-03-15 2019-09-24 华为技术有限公司 一种数据处理方法及其相关设备
CN110704381A (zh) * 2019-09-06 2020-01-17 平安城市建设科技(深圳)有限公司 数据解析方法、装置及存储介质
CN113360503A (zh) * 2021-06-18 2021-09-07 建信金融科技有限责任公司 分布式数据库的测试数据跟踪方法及装置
WO2022006794A1 (en) * 2020-07-08 2022-01-13 Alibaba Group Holding Limited Routing directives for partitioned databases
WO2022062555A1 (zh) * 2020-09-24 2022-03-31 广州巨杉软件开发有限公司 一种实现跨不同数据库引擎事务强一致性的系统及方法
CN115062092A (zh) * 2022-08-10 2022-09-16 阿里云计算有限公司 数据库访问方法、设备、系统及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080140690A1 (en) * 2004-08-17 2008-06-12 International Business Machines Corporation Routable application partitioning
CN102968503A (zh) * 2012-12-10 2013-03-13 曙光信息产业(北京)有限公司 数据库系统的数据处理方法以及数据库系统
WO2013078611A1 (zh) * 2011-11-29 2013-06-06 华为技术有限公司 分布式存储系统中的数据处理方法及设备、客户端
CN103838770A (zh) * 2012-11-26 2014-06-04 中国移动通信集团北京有限公司 一种数据逻辑分区的方法和系统
US20150149413A1 (en) * 2013-11-22 2015-05-28 Chul Won Lee Client-side partition-aware batching of records for insert operations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080140690A1 (en) * 2004-08-17 2008-06-12 International Business Machines Corporation Routable application partitioning
WO2013078611A1 (zh) * 2011-11-29 2013-06-06 华为技术有限公司 分布式存储系统中的数据处理方法及设备、客户端
CN103838770A (zh) * 2012-11-26 2014-06-04 中国移动通信集团北京有限公司 一种数据逻辑分区的方法和系统
CN102968503A (zh) * 2012-12-10 2013-03-13 曙光信息产业(北京)有限公司 数据库系统的数据处理方法以及数据库系统
US20150149413A1 (en) * 2013-11-22 2015-05-28 Chul Won Lee Client-side partition-aware batching of records for insert operations

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107609089A (zh) * 2017-09-07 2018-01-19 北京神州绿盟信息安全科技股份有限公司 一种数据处理方法、装置及系统
CN107609089B (zh) * 2017-09-07 2019-11-19 北京神州绿盟信息安全科技股份有限公司 一种数据处理方法、装置及系统
CN109582694A (zh) * 2017-09-29 2019-04-05 北京国双科技有限公司 一种生成数据查询脚本的方法及相关产品
CN110275772A (zh) * 2018-03-15 2019-09-24 华为技术有限公司 一种数据处理方法及其相关设备
CN110275772B (zh) * 2018-03-15 2022-12-13 华为云计算技术有限公司 一种数据处理方法及其相关设备
CN109299157A (zh) * 2018-08-27 2019-02-01 杭州安恒信息技术股份有限公司 一种分布式大单表的数据导出方法及装置
CN110704381A (zh) * 2019-09-06 2020-01-17 平安城市建设科技(深圳)有限公司 数据解析方法、装置及存储介质
WO2022006794A1 (en) * 2020-07-08 2022-01-13 Alibaba Group Holding Limited Routing directives for partitioned databases
WO2022062555A1 (zh) * 2020-09-24 2022-03-31 广州巨杉软件开发有限公司 一种实现跨不同数据库引擎事务强一致性的系统及方法
CN113360503A (zh) * 2021-06-18 2021-09-07 建信金融科技有限责任公司 分布式数据库的测试数据跟踪方法及装置
CN115062092A (zh) * 2022-08-10 2022-09-16 阿里云计算有限公司 数据库访问方法、设备、系统及存储介质

Similar Documents

Publication Publication Date Title
CN106897344A (zh) 分布式数据库的数据操作请求处理方法及装置
US10878052B2 (en) Blockchain-based cross-chain data operation method and apparatus
US9720949B2 (en) Client-side partition-aware batching of records for insert operations
JP4295791B2 (ja) アトミックに更新される集中キャッシュメモリのための方法及びシステム
US20030236780A1 (en) Method and system for implementing dynamic cache of database cursors
CN109690500A (zh) 使用在以处理器为基础的系统中的空间服务质量(QoS)标记提供异质存储器系统的弹性管理
CN108810041A (zh) 一种分布式缓存系统的数据写入及扩容方法、装置
US20120291049A1 (en) Tracking large numbers of moving objects in an event processing system
CN109240946A (zh) 数据的多级缓存方法及终端设备
Esteves et al. Quality-of-service for consistency of data geo-replication in cloud computing
CN112579319B (zh) 一种基于LRU Cache优化的服务调用方法及装置
CN106878370A (zh) 一种本地缓存的更新方法和设备
CN115827907B (zh) 基于分布式内存的跨云多源数据立方体发现与集成方法
CN106933891A (zh) 访问分布式数据库的方法和分布式数据服务的装置
CN107463422A (zh) 代码部署方法及装置、电子设备
CN110287264A (zh) 分布式数据库的数据批量更新方法、装置以及系统
CN108509453B (zh) 一种信息处理方法及装置
US10872085B2 (en) Recording lineage in query optimization
WO2016011677A1 (en) Local database cache
US11683316B2 (en) Method and device for communication between microservices
CN104166649A (zh) 一种用于搜索引擎的缓存方法和设备
Eltarjaman et al. Private retrieval of POI details in top-K queries
CN108173948A (zh) 一种分布式试验数据实时交换方法
CN111857979A (zh) 一种分布式系统的信息管理方法、系统、存储介质及设备
US20120215756A1 (en) Gateways having localized in memory databases and business logic execution

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201015

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201015

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210129

Address after: 801-10, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Applicant after: Ant financial (Hangzhou) Network Technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Innovative advanced technology Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210918

Address after: 100020 unit 02, 901, floor 9, unit 1, building 1, No.1, East Third Ring Middle Road, Chaoyang District, Beijing

Applicant after: Beijing Aoxing Beisi Technology Co.,Ltd.

Address before: 801-10, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province 310000

Applicant before: Ant financial (Hangzhou) Network Technology Co.,Ltd.