CN105512200A - 一种分布式数据库处理的方法和设备 - Google Patents
一种分布式数据库处理的方法和设备 Download PDFInfo
- Publication number
- CN105512200A CN105512200A CN201510843773.0A CN201510843773A CN105512200A CN 105512200 A CN105512200 A CN 105512200A CN 201510843773 A CN201510843773 A CN 201510843773A CN 105512200 A CN105512200 A CN 105512200A
- Authority
- CN
- China
- Prior art keywords
- value
- subregion
- field
- request
- search index
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及存储技术领域,提供一种分布式数据库的处理方法,数据库处理设备接收访问请求,该访问请求包括第一查询索引字段及其取值和待访问的目标字段;其中,所述查询索引字段为数据表的非分区信息;根据查询索引字段及其取值,在该数据表的分区路由表中获取与该查询索引字段对应的分区信息及取值,其中分区路由表中存储有该数据表的分区信息及取值和非分区信息及取值的对应关系;根据该查询索引字段及其取值对应的分区信息及取值,将该访问请求发送到与该分区信息取值对应的数据库。通过上述方案,解决了用户使用非分区字段访问数据库时需要将访问请求发往所有数据库进行处理的问题。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种分布式数据库处理的方法和设备。
背景技术
随着应用系统的用户数量的急剧增加,互联网的发展以及IT建设的集中化,集中式数据库系统越来越不能满足大数据量储存与大量并发访问的发展需要,分布式数据系统正在蓬勃发展。尤其是当前计算机行业正在兴起去IOE运动,使得数据库设备更多地安装在X86主机上,不使用磁阵设备,并更多地选择开源数据库(例如MySQL),这就使得数据变得更为分散,对数据处理的性能要变得更为突出。在分布式数据库系统中,数据是需要按分区规则存放的。
在数据查询或更新时,如果能根据查询条件直接定位到数据所在分布式数据库,并向该数据库发起SQL,将能获取最快的响应性能;否则当无法确定数据所在分布式数据库时,需要对系统中每个分布式数据库发起SQL处理,方能获得正确结果,当系统中分布式数据库数量很多时,这种处理既消耗性能,又增加响应时延,从而导致用户满意度的下降。
具体的,现有技术中,当数据表需要存放到多个分布式数据库中时,需要遵循某种规则,这种规则就叫做分区规则,否则将导致数据无法管理。当前业界通常的做法是,按数据表的某个(些)字段(下文中称为分区字段)做函数运算(例如Hash),再对运算结果对数据库的个数取模,不同模值的记录使用不同分布式数据库存放。如图1所示,对待存储的数据表的col1字段做Hash运算,然后将Hash值对数据库个数m取模,不同模值的记录存放在对应序号的分布式数据库中。当然,还有其它数据分区规则,例如对字段的函数运算结果值域,甚至字段本身的值域做区间划分,不同区间的数据使用不同的分库存放。上述根据分区规则将数据表中的数据记录存放到多个分布式数据库中的过程中,用于分区的字段称为分区字段,例如col1字段。
因为数据是按某个(些)分区字段(如上述的col1字段)的函数计算结果进行分布存放的,因此在用户查询数据或更新数据时,如果SQL语句的查询条件中含有这些分区字段,便可以根据分区字段值做同样的函数运算,从而通过计算结果可以确定数据所在分布式数据库,从而将SQL发往该分布式数据库进行处理便可获得所需结果。
例如用户SQL:selectnamefromtable1wherecol1=‘abc’,应用程序便可以根据SQL语句的查询索引字段col1的值‘abc’做Hash运算,再根据运算结果与分区规则共同确定SQL处理数据库,再将SQL发往对应分布式数据库去处理。
为获取快速处理性能,通常会要求用户在SQL的语句的查询条件中带上分区字段,否则系统需要将SQL语句发往每个分布式数据库处理,这样做虽然能够获得期望的结果,但响应时延和性能消耗显然不是最好的。然而现实中的很多场景,无法让用户在SQL语句的查询条件中带上分区字段,从而数据的访问时延很长。
发明内容
本发明提供了一种分布式数据库存储和访问的方法和设备,以解决用户使用非分区字段访问数据库时,需要将访问请求发往所有数据库进行处理的技术问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种分布式数据库的处理方法,包括:数据库处理设备接收第一访问请求,该第一访问请求包括第一查询索引字段及其取值和待访问的第一目标字段;其中,所述第一查询索引字段为第一数据表的非分区信息;为了避免按照现有技术将该第一访问请求发送到所有分布式数据库处理,数据库处理设备需要根据所述第一查询索引字段及其取值,在所述第一数据表的分区路由表中获取与该第一查询索引字段对应的分区信息及取值(例如,数据库处理设备可以向保存有所述第一数据表的分区路由表的数据库发送查询请求,并从保存有所述第一数据表的分区路由表的数据库接收查询结果,从而获取与该第一查询索引字段对应的分区信息及取值),其中所述分区路由表中存储有所述第一数据表的分区信息及取值和非分区信息及取值的对应关系;根据所述第一查询索引字段及其取值对应的分区信息及取值,将所述第一访问请求发送到与该分区信息取值对应的数据库。数据库处理设备根据分区信息以及分区规则将第一数据表进行拆分并存储在多个数据库中。具体的,所述分区信息包括分区字段或者分区携带字段,其中所述分区携带字段与所述分区字段存在映射关系。分区携带字段可以是分区字段根据预设的变换规则生成,例如,分区携带字段可以由字符串前缀和字符串后缀构成,其中字符串前缀为分区字段,字符串后缀为顺序数。显然,由于所述分区携带字段与所述分区字段存在映射关系,所以根据分区携带字段和分区规则,也能够确定需要将访问语句发送的数据库。本申请实施例提供的方案,当第一访问请求中的查询索引字段不是分区信息时,可以根据第一数据表对应的分区路由表确定查询索引字段的取值对应的分区信息的取值,然后根据分区信息的取值,将第一访问请求发送到对应的数据库处理。避免了按照现有技术,需要将第一访问请求发送到所有数据库处理的问题,有效的减小了访问响应的延时,也减小了系统性能消耗。
结合第一方面,在第一方面的第一种可能的实现方式中,所述在所述第一数据表的分区路由表中查找与该第一查询索引字段对应的分区信息及取值,具体可以为:获取所述第一数据表关联的分区路由表;根据所述第一查询索引字段,在所述第一数据表关联的分区路由表中,确定与所述第一查询索引字段关联的分区路由表;在所述第一查询索引字段关联的分区路由表中查找与该第一查询索引字段对应的分区信息及取值。当该第一数据表存在多个分区路由表时,不需要查询所有的分区路由表,直接查询与所述第一查询索引字段关联的分区路由表即可,从而加快了查询与所述第一查询索引字段及其取值对应的分区信息及其取值的速度,进而进一步减小了访问响应的延时。
结合第一方面和第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,根据所述第一查询索引字段及其取值对应的分区信息及取值,将所述第一访问请求发送到与该分区信息取值对应的数据库,具体为:根据所述第一查询索引字段及其取值对应的分区信息及取值,更新所述第一访问请求,所述更新后的第一访问请求包括该分区信息及取值和所述待访问的第一目标字段;将所述更新后的第一访问请求发送到与该分区信息取值对应的数据库。更新所述第一访问请求后,可以使得数据库处理设备的现有处理逻辑不需要修改,直接按照现有的处理逻辑处理更新后的第一访问请求即可。
结合第一方面和第一方面的第一至第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述接收第一访问请求之前,该方法还包括:接收插入请求,所述插入请求包括待插入数据,所述待插入数据包括所述分区信息的取值、所述第一查询索引字段的取值和所述待访问的第一目标字段的取值;根据所述分区信息的取值,将所述待插入数据插入所述数据库的分区表中;确定存在所述第一查询索引字段关联的分区路由表;将所述第一查询索引字段的取值和所述分区信息的取值插入到所述第一查询索引字段关联的分区路由表中。在插入分区表数据的时候,同步插入分区路由表数据,可以使得分区路由表数据和分区表数据保持同步,以便于后续用户通过非分区信息访问数据表时,可以根据分区路由表获取相应的分区信息及其取值。
结合第一方面和第一方面的第一至第三种可能的实现方式,在第一方面的第四种可能的实现方式中,该方法还包括:接收第二访问请求,所述第二访问请求包括第二查询索引字段及其取值和待访问的第二目标字段;其中,所述第二查询索引字段是所述第二数据表的分区信息;根据所述第二查询索引字段及其取值,将所述第二访问请求发送到对应的数据库处理。当数据库处理设备接收到的访问请求中的查询索引字段为分区信息时,则可以直接根据查询索引字段及其取值,将访问请求发送到对应的数据库处理。特别地,当所述第二查询索引字段为分区携带字段时,按照现有技术,该第二访问请求将被发送到所有分布式数据库处理。而采用本发明的提供的技术方案,将避免将该第二访问请求将被发送到所有分布式数据库处理,从而有效的减小了访问响应的延时,也减小了系统性能消耗。
第二方面,本发明实施例提供了一种分布式数据库处理设备,该数据库处理设备具有实现上述第一方面中数据库处理设备行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,数据库处理设备的结构中包括处理器和存储器,所述存储器用于存储支持数据库处理设备执行上述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述数据库处理设备还可以包括通信接口,用于数据库处理设备与其他设备或通信网络通信。
第三方面,本发明实施例提供了一种计算机存储介质,用于储存为上述数据库处理设备所用的计算机软件指令,其包含用于执行上述方面为数据库处理设备所设计的程序。
可选的,上述方面所述的分区信息具体包括分区字段和/或分区携带字段。
在具体实现中,数据库处理设备可以为Application、DDS或者是Application与DDS合设的一个设备。
相较于现有技术,本发明提供的方案可以在用户使用非分区字段访问数据库时,避免将访问请求发送到所有分布式数据库处理,有效的减小了客户响应时延,同时大大的减小了系统性能消耗。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
图1为现有技术中一种分布式数据库处理的示意图;
图2为本发明一实施例提供的分布式数据库系统的运行架构;
图3为本发明一实施例所提供的一种可能的分区携带字段的生成方法;
图4为本发明一实施例提供的分布式数据库系统示意图;
图5为本发明一实施例提供的计算机设备示意图;
图6为本发明一实施例提供的一种分布式数据库的处理方法的流程示意图;
图7为本发明一实施例提供的另一种分布式数据库处理方法的流程示意图;
图8为本发明一实施例提供的另一种分布式数据库处理方法的流程示意图;
图9为本发明一实施例提供的另一种分布式数据库处理方法的流程示意图;
图10为本发明一实施例提供的另一种分布式数据库处理方法的流程示意图;
图11为本发明一实施例提供的数据库处理设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。
图2描述了本发明一实施例涉及的分布式数据库系统的运行架构。该分布式数据库系统的运行架构200包括应用程序Application201、分布式数据服务中间件202(DistributedDataService,DDS)以及分布式数据库203(如DB1、DB2、DB3等)。其中,Application201可以是任何需要访问分布式数据库的应用程序,例如,电信行业的CRM(CustomerRelationshipManagement)系统、华为商城的商品订购系统等。DDS202包括两种运行形态:独立进程运行形态(作为独立运行的一个装置)和嵌入式运行形态(作为Application201的一个功能模块),本发明对DDS的具体运行形态不做限定。Application201通过DDS202对DB1、DB2以及DB3等分布式数据库进行透明操作。对于Application201而言,分布式数据库DB1、DB2和DB3在逻辑上是一个统一的整体,在物理上则是分别存储在不同的物理节点上。当DDS202接收到Application201发送过来的访问请求后,需要确定将该访问请求发送到哪个分布式数据库(即DB1、DB2或者DB3)。在分布式数据库系统的运行架构202中,Application201以及使用Application的用户都不必知道所使用的数据存储在什么地方,简化了Application的复杂性,即使存储数据的位置改变了,Application201也不用改变。
在本发明实施例中,用户通过Application201生成的访问请求访问分布式数据库203,该访问请求可以是更新请求也可以是查询请求,具体的,该访问请求可以是结构化查询语言(StructuredQueryLanguage,SQL)的形式,其中,该访问请求包括的查询索引字段可能是分区字段,也可能不是分区字段。虽然本发明对于Application201生成的访问请求中包括的查询索引字段是分区字段的情况也适用,但是本发明主要着力于解决Application201生成的访问请求中包括的查询索引字段不是分区字段的情况下,如何准确的将访问请求发送到目标数据库进行处理的问题。
具体的,为了在Application201生成的访问请求中包括的查询索引字段不是分区信息的情况下,避免将访问请求发送到所有分布式数据库去处理,需要为数据表创建并保存分区路由表。所述分区路由表包括该数据表中非分区信息及其取值和分区信息(分区字段或者包含分区字段的信息)及其取值之间的映射关系。也就是说,通过查询数据表的分区路由表,可以获得一个数据表的非分区信息及其取值对应的分区信息及其取值。可选的,可以为一个数据表创建多个分区路由表,此时需要根据查询索引字段进一步从该数据表对应的多个分区路由表中,确定与该查询索引字段对应的分区路由表。当用户通过Application201生成的访问请求中包括的查询索引字段不是分区信息时,通过查询对应的分区路由表,即可获知查询索引字段及其取值对应的分区信息及其取值,然后DDS202根据分区信息及其取值,即可将用户的访问请求发送到目标数据库处理。
需要说明是,Application201、DDS202和分布式数据库203之间通过通信接口进行信息交互。例如,Application201和DDS202之间可以采用JDBC(JavaDataBaseConnectivity,Java数据库连接,一种用于执行SQL语句的JavaAPI,可以为多个数据库提供统一访问,它由一组用Java语言编写的类和接口组成)。可选的,Application201和DDS202之间,以及DDS202和分布式数据库203之间,可以通过通信网络进行通信连接。
结合表1和表2,对分区路由表进行详细描述。一个数据表的任何一条数据记录都会包括很多字段,如表1所示为一个用户数据表,该用户数据表1000条数据记录,每条数据记录包括userId、msdn、name和identifierId4个字段(实际中,数据表包括的数据记录以及字段可能更多),实际使用中基于不同的考虑(如查询效率、存储空间、数据安全等),需要将该用户数据表进行拆分,分别存放在不同的数据库中,其中,userId为分区字段。当Application201生成的访问请求的查询索引字段为useId时,DDS202可以根据userId及其取值,准确的将该访问请求发送到目标数据库处理。但是,现实中经常出现用户A只知道用户B的msdn,并且希望查询用户B的identifierId的情况,因此,有必要为用户数据表创建一个分区路由表tbl_route_msdn(msdn,userId),分区路由表的格式可以如表2所示,该分区路由表记录了非分区字段msdn及其取值和分区字段userId及其取值之间的映射关系。例如,当用户A通过Application201生成的SQL语句中包括的查询索引字段及其取值为msdn=13800000001时,按照现有技术,DDS202将会把Application201生成的SQL语句发送到所有分布式数据库(如DB1、DB2、DB3…),而本发明中DDS202通过查询与该用户数据表关联的分区路由表(当该数据表存在多个分区路由表时,需要进一步根据查询索引字段msdn,确定与该查询索引字段msdn关联的分区路由表),获知msdn=13800000001对应的分区字段及其取值为userID=0001,从而,DDS202根据userId=0001,可以准确的将该SQL语句发送到目标数据库处理。
表1
userId | msdn | name | identifierId |
0001 | 13800000001 | Jack | 00000000000001 |
… | … | … | … |
1000 | 13800001000 | Jone | 00000000001000 |
表2
userId | msdn |
0001 | 13800000001 |
… | … |
1000 | 13800001000 |
需要说明的是,当用户向数据表中插入数据的时候,需要同步的向关联的分区路由表中插入相应的数据。例如,当需要向表1所示的用户数据表中插入数据记录(userId=1001.,msdn=13800001001,name=Lucy,identifierId=00000000001001)时,则需要同步的向表2所示的分区路由表中插入相应的数据记录(msdn=13800001001,userId=1001)。插入数据记录后的用户数据表和分区路由表分别如表3和表4所示。
表3
userId | msdn | name | identifierId |
0001 | 13800000001 | Jack | 00000000000001 |
… | … | … | … |
1000 | 13800001000 | Jone | 00000000001000 |
1001 | 13800001001 | Lucy | 00000000001001 |
表4
userId | msdn |
0001 | 13800000001 |
… | … |
1000 | 13800001000 |
1001 | 13800001001 |
分区路由表的规划需要根据用户的实际业务需要进行设计。一个数据表可以包括很多的字段,但是对该数据表进行分区存储的时候会有不同的考虑,比如说,尽量使数据表中的数据能够均匀的分到不同的分布式数据库中存储,再比如说,在主从表场景下,尽量减少跨库查询等等。基于不同的考虑,可能会使用不同的分区字段。例如,上面的例子中,因为userId是一个顺序增长的数字,为了使用户数据表中的数据能够均匀的分到不同的分布式数据库中存储,使用了userId作为分区字段。然而,用户A实际使用中经常只知道另一个用户B的手机号码msdn,需要查询这个用户B的name等其他信息,这种情况下,就需要为这个用户数据表设置如表2所示的分区路由表。
在一种可能的设计中,分区路由表由用户通过Application201创建,并保存在数据库中。由Application201来管理分区路由表,这样用户可以根据实际业务需要创建自己的分区路由表,不会存在创建了却又不用的分区路由表数据。
在另一种可能的设计中,分区路由表由分布式数据库系统的管理员创建,并保存在数据库中。这样用户通过Application201插入数据或者访问数据库时,都不需要关心分区路由表的存在,分区路由表对于Application201而言完全透明。但是需要DDS202来管理分区路由表,DDS202业务处理复杂,特别涉及多个分区路由表时,DDS202处理时间会变长,加大用户访问时延。并且由于分区路由表是由分布式数据库系统的管理员创建,这种分区路由表的创建是基于管理员的经验来规划的,不一定完全符合用户的业务需求,也就是说会存在系统管理员创建了却又不用的分区路由表数据。
可选的,在一种情况下,所有分区路由表可以保存在特定的数据库中,这样DDS202需要查询分区路由表时,可以快速地将查询请求发送到该特定的数据库中,提高了查询效率;
在另一种情况下,当分区路由表很多,为了防止存储压力过大,可以将分区路由表设置在多个数据库中进行维护。
在另一种情况下,当分区路由表很大时,也可以按照现有技术将分区路由表进行拆分存储到不同的分布式数据库中,从而减小了数据库的存储压力。
需要说明的是,本发明实施例中的分区信息包括分区字段或者分区携带字段,其中所述分区携带字段与所述分区字段存在映射关系。具体的,分区携带字段可以是分区字段根据预设的规则生成,例如,分区携带字段可以由字符串前缀和字符串后缀构成,其中字符串前缀为分区字段,字符串后缀为顺序数;分区携带字段还可以是由DDS202根据分区字段和分区规则生成的。显然,由于所述分区携带字段与所述分区字段存在映射关系,所以根据分区携带字段和分区规则,也能够确定需要将访问语句发送的数据库。下面实施例中,将分区字段和分区携带字段统称为分区信息。
示例性的,图3本发明实施例介绍一种可能的分区携带字段的生成方法。以上述表2为例。可以根据DDS202上保存的分区规则,由分区字段userId的值生成分区携带字段orderId的值。假设分区规则为:
其中,VP表示逻辑分区,PARTITION表示物理分区。上述分区规则具体是指,对分区字段使用hash函数计算,并用计算结果对105取模,并将不同模值的数据记录存放在不同的数据库上,例如模值范围[0,33333]的数据记录使用逻辑分区1001存放,并且该逻辑分区对应物理分区为p1。分区携带字段orderId的生成方法可以是:对分区字段userId进行hash计算,然后对105取模,即Hash(userId)%105,对运算结果Hash(userId)%105查询分区规则,获得虚拟分区值VP,最后使用VP*1016+顺序号计算得到orderId的值。具体的,包括:
步骤301、Application向DDS发送获取逻辑分区值的请求,所述获取逻辑分区值的请求包括分区字段及其取值,例如,userId=0001;
步骤302、DDS接收Application发送的获取逻辑分区值的请求,得到该获取逻辑分区值的请求中的分区字段及其取值;DDS根据保存的分区规则,获取该分区字段及其取值对应的逻辑分区值。例如,DDS对0001(分区字段的取值)进行hash计算,然后对105取模,即Hash(0001)%105,假设运算结果为10000,则查询分区规则,确定运算结果落在区间[0,33333]中,从而获得虚拟分区值VP=1001。
步骤303、DDS向Application发送获取逻辑分区值的响应,该获取逻辑分区值的响应中包括DDS获取的逻辑分区值;
步骤304、Application接收DDS发送的获取逻辑分区值的响应,得到分区字段的取值对应的逻辑分区值;Application根据获取的逻辑分区值生成分区携带字段;例如,使用VP*1016+顺序号计算得到orderId的值。
通过上述方法生成的分区携带字段既包括了分区字段的信息,又可以包含其他一些特性,如顺序号。这种分区携带字段的使用可以满足很多实际的应用需求。例如,快递业中的订单号,系统生成的订单号需要按顺序生成(便于统计等原因),且不重叠,并且用户可以根据该订单号快速查询到相应快递的信息。采用本发明实施例提供的方法生成分区携带字段(如orderId),则既可以满足按顺序生成不重叠的要求,又便于系统根据分区携带字段直接将SQL语句直接发往对应的目标数据库。
如图4所示,本发明提供的分布式数据库处理系统可以包括数据库处理设备401和分布式数据库403。数据库处理设备401在实际中可以是图1中的Application201,也可以是DDS202或者是Application201和DDS202合设的一个设备,不发明不做限定。可选的,当数据库处理设备401为Application201时,图4所述的系统中还包括DDS。为另外,这里“数据库处理设备”只是一个名字,名字本身对设备不构成限定。
如图5所示,图4中的数据库处理设备可以以图5中的计算机设备(或系统)的方式来实现。
图5所示为本发明实施例提供的计算机设备示意图。计算机设备500包括至少一个处理器501,通信总线502,存储器503以及至少一个通信接口504。
处理器501可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specificintegratedcircuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。
通信总线502可包括一通路,在上述组件之间传送信息。所述通信接口504,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WirelessLocalAreaNetworks,WLAN)等。
存储器503可以是只读存储器(read-onlymemory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasableProgrammableRead-OnlyMemory,EEPROM)、只读光盘(CompactDiscRead-OnlyMemory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器503用于存储执行本发明方案的程序代码,并由处理器501来控制执行。所述处理器501用于执行所述存储器503中存储的程序代码。
在具体实现中,作为一种实施例,处理器501可以包括一个或多个CPU,例如图5中的CPU0和CPU1。
在具体实现中,作为一种实施例,计算机设备500可以包括多个处理器,例如图5中的处理器501和处理器508。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备500还可以包括输出设备505和输入设备506。输出设备505和处理器501通信,可以以多种方式来显示信息。例如,输出设备505可以是液晶显示器(liquidcrystaldisplay,LCD),发光二级管(lightemittingdiode,LED)显示设备,阴极射线管(cathoderaytube,CRT)显示设备,或投影仪(projector)等。输入设备506和处理器501通信,可以以多种方式接受用户的输入。例如,输入设备506可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机设备500可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备500可以是台式机、便携式电脑、网络服务器、掌上电脑(PersonalDigitalAssistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图5中类似结构的设备。本发明实施例不限定计算机设备500的类型。
如图4中的数据库处理设备可以为图5所示的设备,数据库处理设备的存储器中存储了一个或多个软件模块(例如:交互模块、路由模块等)。数据库处理设备可以通过处理器以及存储器中的程序代码来实现软件模块,实现将访问请求发送到目标数据库处理。
基于如图2所示的系统架构图,为更加清楚描述分布式数据库系统的处理过程,本发明实施例提供一种分布式数据库的处理方法的流程示意图。具体根据Application201和DDS202的功能划分,可以包括图6、图7两种实现方式。其中,图6所述的实施例中,以数据库处理设备为DDS或者是Application和DDS合设的一个设备为例;图7所述的实施例中,以数据库处理设备为Application或者是Application和DDS合设的一个设备为例。需要说明的是,本发明实施例中对DDS202的运行形态不做限定,当DDS202为嵌入式运行形态时,Application201和DDS202之间的消息交互为内部交互;当DDS202为独立进程运行形态时,Application201和DDS202之间的消息交互为外部交互。
如图6所示为本发明实施例提供的一种分布式数据库的处理方法的流程示意图,包括:
步骤601-步骤602、Application201接收用户的访问请求,并将该访问请求发送给DDS;
具体的,Application201接收用户输入的访问请求,该访问请求包括待访问的目标字段、查询条件以及待访问的数据表名称,其中查询条件包括查询索引字段及其取值。该访问请求具体可是查询请求或者更新请求。例如,用户需要在表3所述的用户数据表A中查询手机号为13800000001对应的用户名是什么,那么Application201发送给DDS202的访问请求可以是:selectnamefromA,wheremsdn=‘13800000001’,其中name表示待访问目标字段是姓名,msdn=‘13800000001’表示查询条件,A表示待访问的数据表名称。
步骤603、DDS202接收Application201发送的访问请求,并解析该访问请求,确定该访问请求中的查询索引字段不是该数据表的分区信息;确定该数据表存在关联的分区路由表;
具体实现中,DDS接收到访问请求后,会解析该访问请求,获取访问请求中的查询索引字段及其取值,并确定该查询索引字段不是该数据表的分区信息。DDS上保存有该数据表的分区路由表的元数据,该分区路由表的元数据用于指示该数据表存在关联的分区路由表,当DDS确定该查询索引字段不是该数据表的分区信息时,可以根据该分区路由表的元数据,确定该数据表存在关联的分区路由表。可选的,当该数据表存在多个关联的分区路由表时,还包括根据访问请求中查询索引字段,确定该访问请求中查询索引字段对应的分区路由表。。
步骤604、DDS向保存有该分区路由表的数据库发送查询请求,该查询请求包括所述查询索引字段及其取值;
一种可能的实现方式是,DDS生成查询请求,该查询请求包括待访问的目标字段、查询条件以及待访问的数据表名称,其中待访问的目标字段为该分区路由表保存的该数据表的分区信息,查询条件包括查询索引字段及其取值,待访问的数据表名称为该分区路由表的名称。例如,针对步骤601中的访问请求,DDS生成的查询请求可以为:selectuserIdfromtbl_route_msdn,wheremsdn=‘13800000001’,其中userId表示待访问目标字段,msdn=‘13800000001’表示查询条件,tbl_route_msdn表示关联的分区路由表。
需要说明的是,当该分区路由表保存在多个数据库中时,DDS需要分别向该多个数据库发送查询请求。
步骤605、分布式数据库接收DDS发送的查询请求,在该数据表的分区路由表中获取查询索引字段及其取值对应的分区信息及其取值,并将获取到的分区信息及其取值作为查询结果返回给DDS;
步骤606、DDS接收分布式数据库返回的查询结果,并根据查询结果中的查询索引字段对应的分区信息及取值,生成更新的访问请求,该更新的访问请求包括该查询索引字段对应的分区信息及取值和待访问的目标字段,根据所述查询索引字段对应的分区信息及取值,确定该更新的访问请求对应的目标数据库;
需要说明的是,DDS根据查询结果中的查询索引字段对应的分区信息及取值,生成更新的访问请求不是必需的。一种可能的实现方式中,DDS根据查询结果中的查询索引字段对应的分区信息及取值,并结合待访问的数据表对应的分区规则,直接确定步骤601中的访问请求对应的目标数据库。
具体的,当DDS从对应的分区路由表中获取到查询索引字段对应的分区信息及取值时,结合所述待访问的数据表的分区规则,即可确定将从Application接收到的访问请求发送到哪个(些)具体的分布式数据库。
步骤607、DDS将访问请求发送到对应的分布式数据库中处理。
可选的,该方法还包括DDS接收访问结果,并将该访问结果反馈给Application,其中,该访问结果包括步骤601中访问请求中待访问的目标字段对应的数据记录。
在本发明实施例中,Application接收到用户的访问请求后,将该访问请求发送给DDS,DDS确定访问请求中的查询索引字段不是分区信息,并且根据关联的分区路由表获取与访问请求中查询索引字段及其取值对应的分区信息及其取值,然后DDS根据获取到的分区信息及其取值确定将该访问请求发送到目标分布式数据库。避免了按照现有技术,需要将访问请求发送到所有数据库处理的问题,有效的减小了访问响应的延时,也减小了系统性能消耗。并且整个过程对Application透明,Application只要生成访问请求,即可快速的获取访问结果,有效的提高了用户的使用体验。
上述DDS的动作可以由DDS根据上述如5所述实施例提及的存储器中的软件模块来执行。例如,S603可以根据图5中的交互模块来执行。S604,S606和S607可以根据图5中的路由模块来执行。
如图7所示为本发明实施例提供的另一种分布式数据库的处理方法的流程示意图,包括:
步骤701、Application201接收用户的访问请求,该访问请求包括查询索引字段及其取值和待访问的目标字段;确定该访问请求中的查询索引字段不是数据表的分区信息,且该数据表存在关联的分区路由表;
具体实现中,Application接收到用户输入的访问请求后,获取访问请求中的查询索引字段及其取值,并确定该查询索引字段不是该数据表的分区信息。Application上保存有该数据表的分区路由表的元数据,该分区路由表的元数据用于指示该数据表存在关联的分区路由表,当Application确定该查询索引字段不是该数据表的分区信息时,可以根据该分区路由表的元数据,确定该数据表存在关联的分区路由表。可选的,当该数据表存在多个关联的分区路由表时,还包括根据访问请求中查询索引字段,确定该访问请求中查询索引字段对应的分区路由表。
步骤702、Application201向DDS202发送查询分区路由表的查询请求,所述查询分区路由表的查询请求包括步骤701中的查询索引字段及其取值;
正如上述实施例提到的,Application201通过DDS202对DB1、DB2以及DB3等分布式数据库进行透明操作。Application201对数据库的操作都是经由DDS202处理,并确定发送到具体的分布式数据库进行处理的。
一种可能的实现方式是,Application生成查询请求,该查询请求包括待访问的目标字段、查询条件以及待访问的数据表名称,其中待访问的目标字段为该分区路由表保存的该数据表的分区信息,查询条件包括查询索引字段及其取值,待访问的数据表名称为步骤701中确定的分区路由表的名称。例如,Application生成的查询请求可以为:selectuserIdfromtbl_route_msdn,wheremsdn=‘13800000001’,其中userId表示待访问目标字段,msdn=‘13800000001’表示查询条件,tbl_route_msdn表示关联的分区路由表。步骤703、DDS202接收Application201发送的查询分区路由表的查询请求,并将该查询分区路由表的查询请求发送到保存有分区路由表的分布式数据库中;步骤704、保存有分区路由表的分布式数据库接收DDS202发送的查询分区路由表的查询请求,并获取所述查询索引字段及其取值对应的分区信息及其取值,并该获取到的分区信息及其取值作为查询结果发送给DDS202;
步骤705、DDS202接收保存有分区路由表的分布式数据库返回的查询结果,并将接收到的查询结果发送给Application201;
步骤706、Application201接收DDS202返回的查询结果,并使用接收到的查询结果中的分区信息及其取值更新所述访问请求;
具体的,更新的访问请求包括所述分区信息及其取值和待访问的目标字段。
步骤707、Application201将更新后的访问请求发送给DDS202;
步骤708、DDS202接收Application201发送的更新后的访问请求,解析所述更新后的访问请求,获得所述分区信息及其取值,并根据所述分区信息及其取值,将所述更新后的访问请求发送到目标数据库。
本发明实施例中,Application接收到用户的访问请求后确定访问请求中的查询索引字段不是分区信息,并且根据关联的分区路由表获取与访问请求中查询索引字段及其取值对应的分区信息及其取值,然后使用获取到的分区信息及其取值更新所述访问请求,并将更新后的访问请求发送给DDS,DDS根据该分区信息及其取值确定将该更新后的访问请求发送到目标分布式数据库。由于在Application上保存有分区路由表元数据,所以Application能够感知分区路由表的存在,这种情况下,数据表的分区路由表与Application紧耦合,DDS不需要改进,只要按照现有技术处理Application生成的SQL语句即可,特别是当多个Application共同使用一个DDS时,有效的减轻了DDS的负担。对于用户而言只要生成访问请求,即可快速的获取访问结果,有效的提高了用户的使用体验。
上述Application的动作可以由Application根据上述图5所述实施例提及的存储器中的软件模块来执行。例如,S701可以根据图5中的交互模块来执行。S702,S706和S707可以根据图5中的路由模块来执行。
为更加清楚描述分布式数据库系统的处理过程,现举例描述一种主从表场景下分布式数据库系统的处理过程。在本发明实施例中假设需要处理主从表的存储和查询,其中主表为用户表:tbl_user(usrId,msdn,name),从表为用户订单表tbl_user_order(usrId,orderId,orderNo,detail),分别如表5和表6所示。由于跨库查询会降低数据的管理和查询性能,为了管理和查询性能的需要,将同一个用户的信息及相关数据存放到相同的数据分库中,即能够按用户进行分库存放,这样查询一个用户的数据时便可以仅在一个分库中进行,避免了跨库查询。具体的,用户表tbl_user和用户订单表tbl_usr_order都以usrId作为分区字段,因此,在使用相同的分区规则时,同一个用户的用户表tbl_user和用户订单表tbl_user_order的数据记录将保存在同一个数据库中。需要说明的是,本发明实施例中用户订单表tbl_usr_order中的orderId为分区携带字段,其值可以是系统由分区字段userId根据一定的规则生成的,例如可以采用图3所述实施例中的方法生成。为了清楚的描述存储和查询的过程,在本发明实施例中假设需要向用户表tbl_user中存储的数据记录为(usrId=0001,msdn=1380000000,name=Jack),向用户订单表tbl_user_order存储的数据记录为(usrId=0001,orderId=1001000000000001,orderNo=00000001,detail=iphone6s),其中orderId=1001000000000001为根据上述oderId的生成规则确定。
表5用户表tbl_user(usrId,msdn,name)
字段名 | 字段含义 |
usrId | 用户唯一识别码 |
msdn | 用户手机号 |
name | 用户名称 |
表6用户订单表tbl_usr_order(usrId,orderId,orderNo,detail)
字段名 | 字段含义 |
usrId | 用户唯一识别码 |
orderId | 订单唯一识别码 |
orderNo | 订单号(含日期信息,在某一天的订单编码)12 --> |
detail | 订单详情 |
如图8所示是一种分布式数据库的处理方法,所述方法包括:
在将数据表存储到分布式数据库前,需要先进行如下设置:
步骤801:规划并创建分区路由表;
本发明实施例中,用户表tbl_user的分区字段为userId,但用户经常使用msdn查询用户信息,因此用户需要为用户表tbl_user设置一个分区路由表tbl_route_msdn(msdn,userId),其中msdn为查询索引字段,userId为该分区路由表中包含的分区字段。同理,用户经常使用orderNo查询订单号,需要为用户订单表tbl_usr_order设置分区路由表tbl_route_order(orderNo,orderId),其中orderNo为查询索引字段,orderId为分区携带字段。分区路由表tbl_route_msdn(msdn,userId)和tbl_route_order(orderNo,orderId)具体的形式分别如表7和表8所示。
表7分区路由表tbl_route_msdn(msdn,userId)
字段名 | 字段含义 |
msdn | 用户手机号 |
usrId | 用户唯一识别码 |
表8分区路由表tbl_route_order(orderNo,orderId)
字段名 | 字段含义 |
orderNo | 订单号(含日期信息,在某一天的订单编码) |
orderId | 订单唯一识别码 |
需要说明是,分区路由表字段的个数通常都很少,所以数据量较小,一般可以使用一个固定的数据库存放。即使分区路由表数据量很大,也可以将分区路由表分布式存放到多个数据库中。为了便于说明,本发明实施例中分区路由表都保存在一个固定的数据中存放,例如,图1所述系统图中的DB3中。
步骤802:在DDS上创建分区规则和分区表的元数据。
具体的,创建的分区规则可以为:
上述分区规则的具体含义可以参考图3所述实施例中的相关描述,这里不再赘述。
创建的分区表元数据可以为:
ALTERTABLEtbl_userSHARDINGBY(usrId)
USINGSHARDRULErule1;
ALTERTABLEtbl_user_orderSHARDINGBY(usrId)
WITHVP(DIV(orderId,1016))
USINGSHARDRULErule1;
创建上述分区表的元数据的含义是指,创建分区表tbl_user,以usrId为分区字段,并使用分区规则rule1对数据表tbl_user进行分区;创建分区表tbl_user_order,以usrId为分区字段,或以DIV(orderId,1016)确定VP值,并使用分区规则rule1,对数据表tbl_user_order进行分区。
步骤803:在Application上配置分区路由表元数据。
用户在应用程序上为数据表配置分区路由表元数据,分区路由表元数据是指描述分区路由表的数据。根据分区路由表元数据,可以确定数据表关联的分区路由表。具体的,在Application上配置标记,记录数据表tbl_user含有分区路由表tbl_route_msdn(msdn,userId),数据表tbl_user_order含有分区路由表tbl_route_order(orderNo,orderId),以便于插入分区表数据记录时插入对应分区路由表记录,及在查询分区表数据记录时进行分区路由表匹配。
需要说明的是,在本发明实施例中,分区路由表由用户根据具体的业务需要创建,从而可以避免存在大量创建了却又不用的分区路由表数据。
在完成上述设置后,即可以将数据表的数据记录存储到分布式数据库中,具体的:
步骤804-步骤806:Application向DDS请求分区字段对应的逻辑分区值,DDS获取对应的逻辑分区值,并返回给应用程序;
具体的,步骤804-步骤806分别与图3所述实施例中步骤301、302及304相同,这里不再赘述。
本发明实施例中,用户订单表tbl_user_order中包括分区字段usrId以及分区携带字段orderId,当在用户订单表tbl_user_order中插入数据时,系统需要先计算orderId的值。例如,待插入用户订单表tbl_user_order中的数据userId为0001,通过DDS查询usrId=0001对应的逻辑分区值为1001,按照上述orderId的生成规则可知orderId的值为1001000000000001(即1001*1016+1)。
步骤807-808、Application通过DDS插入分区表数据;
本发明实施例中,需要向用户表tbl_user的分区表中插入数据记录(usrId=0001,msdn=1380000000,name=Jack),向用户订单表tbl_user_order的分区表中插入数据记录(usrId=0001,orderId=1001000000000001,orderNo=00000001,detail=iphone6s),其中orderId=1001000000000001由步骤806确定。根据分区规则以及分区字段,将数据记录插入到指定的分布式数据库中,属于本领域技术人员熟知的技术,这里不再赘述。插入数据后的分区表tbl_user和tbl_user_order分别如表9和表10所示。
表9插入数据后的分区表tbl_user
usrId | msdn | name |
0001 | 1380000000 | Jack |
表10插入数据后的分区表tbl_user_order
usrId | orderId | orderNo | detail |
0001 | 1001000000000001 | 00000001 | iphone6s |
步骤809-步骤811、Application通过DDS插入分区表数据时,检查是否存在关联的分区路由表配置,如果存在,则生成并插入对应的分区路由表数据。
在本发明实施例中,当用户在数据表tbl_user(usrId,msdn,name)中插入数据(usrId=0001,msdn=1380000000,name=Jack)时,根据Application上配置的分区路由表元数据,确定数据表tbl_user(usrId,msdn,name)存在关联的分区路由表tbl_route_msdn(msdn,userId),则在关联的分区路由表tbl_route_msdn(msdn,userId)中插入相应的分区路由表数据(msdn=1380000000,usrId=0001)。当用户在用户订单表tbl_user_order中插入数据(usrId=0001,orderId=1001000000000001,orderNo=00000001,detail=iphone6s)时,根据Application上配置的分区路由表元数据,确定用户订单表tbl_user_order存在关联的分区路由表tbl_route_order(orderNo,orderId),则在关联的分区路由表tbl_route_order(orderNo,orderId)中插入相应的分区路由表数据(orderNo=00000001,orderId=1001000000000001)。同样地,在关联的分区路由表中插入相应的分区路由表数据也属于本领域技术人员熟知的技术,本发明实施例不再赘述。插入分区路由表数据后的分区路由表tbl_route_msdn和tbl_route_order分别如表11和表12所示。
表11插入数据后的分区路由表tbl_route_msdn
msdn | usrId |
1380000000 | 0001 |
表12插入数据后的分区路由表tbl_route_order
orderNo | ordered |
00000001 | 1001000000000001 |
本发明实施例中通过执行步骤804-步骤811,可以实现将数据记录存储到对应的数据库中。与现有技术不同的是,本发明实施例中在存储数据记录时,还需要生成对应的分区路由表数据,并将生成的分区路由表数据插入到关联的分区路由表中。后续Application查询数据时,如果使用的查询索引字段既不是分区字段也不是分区携带字段时,DDS可以根据关联的分区路由表获取查询索引字段的值对应的分区字段或者分区携带字段的值,并反馈给Application,以便于Application根据查询字段的值对应的分区字段或者分区携带字段的值来进行数据查询,从而提高了数据查询的效率。
需要说明的是,当存储的数据记录中不涉及分区携带字段时,则步骤804-步骤806不是必须的。
步骤812、Application接收用户输入的查询请求,该查询请求包括查询索引字段及其取值和待访问的目标字段;确定该查询索引字段既不是非分区字段也不是分区携带字段,则根据配置的分区路由表元数据,判断是否存在关联的分区路由表。
具体的,当用户通过Application生成的查询请求中的查询字段既不是分区字段也不是分区携带字段时,Application会根据步骤803中配置的分区路由表元数据,判断是否存在关联的分区路由表。例如,当Application生成的查询请求(SQL语句的形式)为:selectnamefromtbl_usr,wheremsdn=‘13800000001’,Application确定查询字段msdn既不是分区字段也不是分区携带字段,此时根据步骤803中配置的分区路由表元数据,Application确定用户表tbl_usr存在关联的分区路由表tbl_route_msdn;当Application生成的查询请求为:selectdetailfromtbl_usr_order,whereorderNo=‘00000001’,Application确定查询字段orderNo既不是分区字段也不是分区携带字段,此时根据步骤803中配置的分区路由表元数据,Application确定用户订单表tbl_usr_order存在分区路由表tbl_route_order。
步骤812-步骤819与图7所述的实施例中步骤701-708相同,这里不再赘述。
具体的,Application会生成SQL查询语句到存储关联的分区路由表的分布式数据库中获取查询字段的值对应的分区信息及其取值;例如,本发明实施例中应用程序会到用户表tbl_usr关联的分区路由表tbl_route_msdn中查询msdn=13800000001对应的userId取值是多少,具体的,生成的SQL语句可以为:selectuserIdfromtbl_route_msdn,wheremsdn=‘13800000001’;应用程序会到用户订单表tbl_user_order关联的分区路由表tbl_route_order中查询orderNo=00000001对应的orderId取值是多少,具体的,生成的SQL语句可以为:selectorderIdfromtbl_route_order,where‘orderNo=00000001’。
Application根据获取的分区信息及其取值,修改用户通过Application初始生成查询语句,将初始生成语句中查询索引字段及其取值替换为获取的分区信息及其取值。例如,在本发明实施例中,分区路由表tbl_route_msdn中查询msdn=13800000001对应的userId取值是0001,所以应用程序将初始生成的用于查询用户表tbl_usr的SQL语句修改为:selectnamefromtbl_usr,whereuserId=‘00000001’;分区路由表tbl_route_order中查询orderNo=00000001对应的orderId取值是1001000000000001,所以应用程序将初始生成的用于查询用户订单表tbl_user_order的SQL语句修改为:selectdetailfromtbl_usr_order,whereorderId=‘1001000000000001’。
需要说明的是,当步骤812中当用户查询分区表数据使用的查询请求中的查询字段是分区携带字段时,Application将该查询请求转发给DDS,DDS解析该查询请求,并根据分区携带字段获取相应的分区字段或者逻辑分区,进一步可以根据分区规则直接确定数据记录所在的分库,并将该查询请求发送给确定的数据库处理。例如,当用户通过orderId来查询用户订单表中的detail数据记录时,SQL查询语句可以为:selectdetailfromtbl_usr_order,where‘orderId=1001000000000001’,DDS根据orderId确定对应的VP=1001,再结合分区规则rule1可知,VP=1001对应的物理分区为p1,从而将该SQL语句发往p1处理。
步骤820-步骤821、目标数据库处理完所述更新后的访问请求后,将查询结果通过DDS发送给应用程序。
本发明实施例提供的方案,通过为数据表设置关联分区路由表,实现了当查询请求中的查询字段不是分区信息时,可以根据数据表对应的分区路由表确定查询字段的取值对应的分区信息的取值,然后根据分区信息、分区信息的取值以及数据表的分区规则,将查询请求发送到对应的数据库处理。避免了按照现有技术,需要将查询请求发送到所有数据库处理的问题,有效的减小了查询响应的延时,也减小了系统性能消耗。需要说明的是,本发明实施例中由于在Application上保存有分区路由表元数据,所以Application对分区路由表完全感知,这种情况下,数据表的分区路由表与Application紧耦合,DDS不需要改进,只要按照现有技术处理Application生成的SQL语句即可,特别是当多个Application共同使用一个DDS时,有效的减轻了DDS的负担,并且由于数据表的分区路由表为用户根据业务的实际需求创建的,有效的避免存储创建了又不适用的分区路由表。
如图9所示是另一种分布式数据库的处理方法,所述方法包括:
步骤9901、规划并创建分区路由表;
具体的,步骤901与图8所述实施例中的步骤801相同,具体可以参考步骤801中的相关描述。
步骤902、在DDS上创建分区规则和分区表的元数据;
具体的,创建的分区规则可以为:
PARTITIONREFERENCEprsql1“selectusrIdfromtbl_route_msdnwheremsdn=:msdn”ASCOLUMN
PARTITIONREFERENCEprsql2“selectDIV(orderId,1016)fromtbl_route_orderwhereorderId=:orderId”ASCOLUMN
与图8所述实施例中步骤802相比,相同部分不再赘述,不同的是增加了PARTITIONREFERENCE(加粗部分),表示当查询请求中的查询字段不是分区信息时,可以使用定义的SQL语句去查询对应的分区路由表,获得分区信息对应的区值,或VP值。
创建的分区表元数据可以为:
ALTERTABLEtbl_userSHARDINGBY(usrId)
PARTITIONREFERENCEprsql1COLUMNS(msdn)
USINGSHARDRULErule1;
ALTERTABLEtbl_user_orderSHARDINGBY(usrId)
WITHVP(DIV(orderId,1016))
PARTITIONREFERENCEprsql2COLUMNS(orderNo)
USINGSHARDRULErule1;
与图8所述实施例中步骤802相比,相同部分不再赘述,不同的是增加了PARTITIONREFERENCEprsql1COLUMNS(msdn)和PARTITIONREFERENCEprsql2COLUMNS(orderNo)(加粗部分),其中,PARTITIONREFERENCEprsql1COLUMNS(msdn)表示当查询请求中的查询字段不是分区信息但是是字段msdn时,可以使用字段msdn为参数通过PARTITIONREFERENCEprsql1确定将查询请求发送到哪个数据库进行处理;PARTITIONREFERENCEprsql2COLUMNS(orderNo)表示当查询请求中的查询字段不是分区信息但是是字段orderNo时,可以使用字段orderNo为参数通过PARTITIONREFERENCEprsql2确定将查询请求发送到哪个数据库进行处理。
步骤903-步骤911与图8所述实施例中步骤803-步骤811相同,具体可以参考步骤803-步骤811中的相关描述。
步骤912-步骤918与图6所述实施例中步骤601-步骤607相同,相关内容可以参考图6所述实施例。
具体的,步骤914中DDS确定查询请求中的查询索引字段既不是非分区字段也不是分区携带字段,确定创建的分区表元数据中定义的PARTITIONREFERENCE中存在与所述查询索引字段匹配的字段;根据查询索引字段和分区规则中对应的SQL语句,生成查询分区路由表的SQL语句;例如,DDS从Application接收到的SQL语句为:selectnamefromtbl_usr,wheremsdn=‘13800000001’,DDS确定查询字段msdn既不是分区字段也不是分区携带字段,但是从步骤902中创建的分区表元数据可知,存在定义PARTITIONREFERENCEprsql1COLUMNS(msdn),因此可以使用字段msdn为参数通过PARTITIONREFERENCEprsql1确定将查询请求发送到哪个数据库进行处理。具体的,DDS根据分区规则中的prsql1生成查询分区路由表的SQL语句:selectusrIdfromtbl_route_msdnwheremsdn=‘13800000001’。
步骤919-步骤920、目标数据库处理完所述更新后的访问请求后,将查询结果通过DDS发送给Application。
本发明实施例与图8所述的实施例的不同在于,虽然在Application上保存有分区路由表元数据,但是Application对于分区路由表为半感知,即当需要插入分区表数据记录时,由Application根据分区路由表元数据确定插入对应分区路由表数据,这样可以有效的保证,数据表和对应的分区路由表的一致性。当需要查询分区表数据记录时,Application不需要关注分区路由表的存在,由DDS进行分区路由表匹配,即由DDS确定访问请求中的查询索引字段不是分区信息,并获取关联的分区路由表中的与该查询索引字段对应的分区信息取值。
如图10所示是另一种分布式数据库的处理方法流程示意图,所述方法包括:
步骤1001、规划并创建分区路由表;
具体的,步骤1001与图8所述实施例中的步骤801相同,具体可以参考步骤801中的相关描述。
步骤1002、在DDS上创建分区规则、分区表的元数据和分区路由表元数据;
具体的,在DDS上创建分区规则、分区表的元数据与图8所述实施例中的步骤802相同,具体可以参考步骤802中的相关描述。创建分区路由表元数据具体可参阅图8所述实施例中的步骤803。
步骤1003-步骤1007与图8所述实施例中步骤804-步骤808相同,具体可以参考步骤704-步骤808中的相关描述。
步骤1008-步骤1009、DDS插入分区表数据时,检查是否存在关联的分区路由表配置,如果存在,则生成并插入对应的分区路由表数据;
步骤1010-步骤1018与图9所述实施例中步骤912-步骤920相同,具体可以参考步骤912-步骤920中的相关描述。
本发明实施例与图8及图9所述的实施例的不同在于,Application对于分区路由表完全不感知,即当需要插入分区表数据记录时,由DDS根据分区路由表元数据确定插入对应分区路由表数据;但是当需要查询分区表数据记录时,也是由DDS进行分区路由表匹配。Application与现有技术完全相同,不需要修改。
本发明实施例还描述了上述方法实施例属于同一发明构思下的一种数据库处理设备结构示意图。如图11所示,该数据库处理设备1100用于执行图6-图10上述方法实施例中Application或者DDS或者Application与DDS合设的设备的功能,包括:接收单元1101,处理单元1103和发送单元1105。
其中,接收单元1101,用于接收第一访问请求,该第一访问请求包括第一查询索引字段及其取值和待访问的第一目标字段,其中,所述第一查询索引字段为第一数据表的非分区信息。该访问请求具体可是查询请求或者更新请求。处理单元1103,用于根据所述第一查询索引字段及其取值,在所述第一数据表的分区路由表中查找与该第一查询索引字段对应的分区信息及取值,其中所述分区路由表中存储有所述第一数据表的分区信息及取值和非分区信息及取值的对应关系;发送单元1105,用于根据所述第一查询索引字段及其取值对应的分区信息及取值,将所述第一访问请求发送到与该分区信息取值对应的数据库。
可选的,,所述处理单元用于在所述第一数据表的分区路由表中获取与该第一查询索引字段对应的分区信息及取值,具体为:获取所述第一数据表关联的分区路由表;根据所述第一查询索引字段,在所述第一数据表关联的分区路由表中,确定与所述第一查询索引字段关联的分区路由表;在所述第一查询索引字段关联的分区路由表中获取与该第一查询索引字段对应的分区信息及取值。
在一种可能的实现方式中,所述处理单元,还用于根据所述第一查询索引字段及其取值对应的分区信息及取值,更新所述第一访问请求,所述更新后的第一访问请求包括该分区信息及取值和所述待访问的第一目标字段;所述发送单元用于将所述第一访问请求发送到与该分区信息取值对应的数据库,具体为:将所述更新后的第一访问请求发送到与该分区信息取值对应的数据库。
进一步的,在所述接收单元用于接收第一访问请求之前,所述接收单元还用于接收插入请求,所述插入请求包括待插入数据,所述待插入数据包括所述分区信息的取值、所述第一查询索引字段的取值和所述待访问的第一目标字段的取值;所述处理单元,还用于根据所述分区信息的取值,将所述待插入数据插入所述数据库的分区表中;确定存在所述第一查询索引字段关联的分区路由表;所述发送单元,还用于将所述第一查询索引字段的取值和所述分区信息的取值插入到所述第一查询索引字段关联的分区路由表中。
可选的,所述接收单元,还用于接收第二访问请求,所述第二访问请求包括第二查询索引字段及其取值和待访问的第二目标字段;其中,所述第二查询索引字段是第二数据表的分区信息;所述发送单元,还用于根据所述第二查询索引字段及其取值,将所述第二访问请求发送到对应的数据库处理。
需要说明的是,上述提及的分区信息包括分区字段或者分区携带字段,其中所述分区携带字段与所述分区字段存在映射关系。
在本实施例中,数据库处理设备1100是以功能单元的形式来呈现。这里的“单元”可以指特定应用集成电路(application-specificintegratedcircuit,ASIC),电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到数据库处理设备1100可以采用图5所示的形式。接收单元1101,处理单元1103和发送单元1105可以通过图5的处理器和存储器来实现,具体的,接收单元1101,和发送单元1105可以通过由处理器来执行交互模块来实现,处理单元1103可以通过由处理器来执行路由模块来实现。
本发明实施例还提供了一种计算机存储介质,用于储存实现上述图11所示的数据库处理设备的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以实现用户使用非分区字段访问数据库时,避免将访问请求发往所有数据库处理。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
本领域技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机程序存储/分布在合适的介质中,与其它硬件一起提供或作为硬件的一部分,也可以采用其他分布形式,如通过Internet或其它有线或无线电信系统。
本发明是参照本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种分布式数据库的处理方法,其特征在于,
数据库处理设备接收第一访问请求,所述第一访问请求包括第一查询索引字段及其取值和待访问的第一目标字段,其中,所述第一查询索引字段为第一数据表的非分区信息;
根据所述第一查询索引字段及其取值,在所述第一数据表的分区路由表中获取与该第一查询索引字段对应的分区信息及取值,其中所述分区路由表中存储有所述第一数据表的分区信息及取值和非分区信息及取值的对应关系;
根据所述第一查询索引字段及其取值对应的分区信息及取值,将所述第一访问请求发送到与该分区信息取值对应的数据库。
2.如权利要求1所述的方法,其特征在于,所述在所述第一数据表的分区路由表中获取与该第一查询索引字段对应的分区信息及取值,具体为:
获取所述第一数据表关联的分区路由表;
根据所述第一查询索引字段,在所述第一数据表关联的分区路由表中,确定与所述第一查询索引字段关联的分区路由表;
在所述第一查询索引字段关联的分区路由表中获取与该第一查询索引字段对应的分区信息及取值。
3.如权利要求1所述的方法,其特征在于,在将所述第一访问请求发送到与该分区信息取值对应的数据库之前,所述方法还包括:
根据所述第一查询索引字段及其取值对应的分区信息及取值,更新所述第一访问请求,所述更新后的第一访问请求包括该分区信息及取值和所述待访问的第一目标字段;
所述将所述第一访问请求发送到与该分区信息取值对应的数据库,具体为:
将所述更新后的第一访问请求发送到与该分区信息取值对应的数据库。
4.如权利要求2所述的方法,其特征在于,在所述接收第一访问请求之前,所述方法还包括:
接收插入请求,所述插入请求包括待插入数据,所述待插入数据包括所述分区信息的取值、所述第一查询索引字段的取值和所述待访问的第一目标字段的取值;
根据所述分区信息的取值,将所述待插入数据插入所述数据库的分区表中;
确定存在所述第一查询索引字段关联的分区路由表;
将所述第一查询索引字段的取值和所述分区信息的取值插入到所述第一查询索引字段关联的分区路由表中。
5.如权利要求1-4任一所述的方法,其特征在于,所述方法还包括
接收第二访问请求,所述第二访问请求包括第二查询索引字段及其取值和待访问的第二目标字段;其中,所述第二查询索引字段是第二数据表的分区信息;
根据所述第二查询索引字段及其取值,将所述第二访问请求发送到对应的数据库处理。
6.如权利要求1-5任一所述的方法,其特征在于,所述分区信息包括分区字段或者分区携带字段,其中所述分区携带字段与所述分区字段存在映射关系。
7.一种分布式数据库处理装置,其特征在于,包括:
接收单元,用于接收第一访问请求,所述第一访问请求包括第一查询索引字段及其取值和待访问的第一目标字段,其中,所述第一查询索引字段为第一数据表的非分区信息;
处理单元,用于根据所述第一查询索引字段及其取值,在所述第一数据表的分区路由表中获取与该第一查询索引字段对应的分区信息及取值,其中所述分区路由表中存储有所述第一数据表的分区信息及取值和非分区信息及取值的对应关系;
发送单元,用于根据所述第一查询索引字段及其取值对应的分区信息及取值,将所述第一访问请求发送到与该分区信息取值对应的数据库。
8.如权利要求7所述装置,其特征在于,所述处理单元用于在所述第一数据表的分区路由表中获取与该第一查询索引字段对应的分区信息及取值,具体为:
获取所述第一数据表关联的分区路由表;
根据所述第一查询索引字段,在所述第一数据表关联的分区路由表中,确定与所述第一查询索引字段关联的分区路由表;
在所述第一查询索引字段关联的分区路由表中获取与该第一查询索引字段对应的分区信息及取值。
9.如权利要求7所述装置,其特征在于,所述处理单元,还用于根据所述第一查询索引字段及其取值对应的分区信息及取值,更新所述第一访问请求,所述更新后的第一访问请求包括该分区信息及取值和所述待访问的第一目标字段;
所述发送单元用于将所述第一访问请求发送到与该分区信息取值对应的数据库,具体为:将所述更新后的第一访问请求发送到与该分区信息取值对应的数据库。
10.如权利要求8所述装置,其特征在于,在所述接收单元用于接收第一访问请求之前,所述接收单元还用于接收插入请求,所述插入请求包括待插入数据,所述待插入数据包括所述分区信息的取值、所述第一查询索引字段的取值和所述待访问的第一目标字段的取值;
所述处理单元,还用于根据所述分区信息的取值,将所述待插入数据插入所述数据库的分区表中;确定存在所述第一查询索引字段关联的分区路由表;
所述发送单元,还用于将所述第一查询索引字段的取值和所述分区信息的取值插入到所述第一查询索引字段关联的分区路由表中。
11.如权利要求7-10任一所述的装置,其特征在于,所述接收单元,还用于接收第二访问请求,所述第二访问请求包括第二查询索引字段及其取值和待访问的第二目标字段;其中,所述第二查询索引字段是第二数据表的分区信息;
所述发送单元,还用于根据所述第二查询索引字段及其取值,将所述第二访问请求发送到对应的数据库处理。
12.如权利要求7-11任一所述的装置,其特征在于,所述分区信息包括分区字段或者分区携带字段,其中所述分区携带字段与所述分区字段存在映射关系。
13.一种分布式数据库处理设备,其特征在于,包括:处理器和存储器,其中,
所述存储器中存有计算机可读程序;
所述处理器通过运行所述存储器中的程序,以用于完成上述权利要求1至6所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510843773.0A CN105512200A (zh) | 2015-11-26 | 2015-11-26 | 一种分布式数据库处理的方法和设备 |
PCT/CN2016/082375 WO2017088358A1 (zh) | 2015-11-26 | 2016-05-17 | 一种分布式数据库处理的方法和设备 |
EP16867587.4A EP3333726A4 (en) | 2015-11-26 | 2016-05-17 | Distributed database processing method and device |
US15/943,348 US10872101B2 (en) | 2015-11-26 | 2018-04-02 | Distributed database processing method and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510843773.0A CN105512200A (zh) | 2015-11-26 | 2015-11-26 | 一种分布式数据库处理的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105512200A true CN105512200A (zh) | 2016-04-20 |
Family
ID=55720182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510843773.0A Pending CN105512200A (zh) | 2015-11-26 | 2015-11-26 | 一种分布式数据库处理的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10872101B2 (zh) |
EP (1) | EP3333726A4 (zh) |
CN (1) | CN105512200A (zh) |
WO (1) | WO2017088358A1 (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106202441A (zh) * | 2016-07-13 | 2016-12-07 | 腾讯科技(深圳)有限公司 | 基于关系型数据库的数据处理方法、装置和系统 |
CN106776848A (zh) * | 2016-11-04 | 2017-05-31 | 广州市诚毅科技软件开发有限公司 | 一种数据库查询方法及装置 |
WO2017088358A1 (zh) * | 2015-11-26 | 2017-06-01 | 华为技术有限公司 | 一种分布式数据库处理的方法和设备 |
CN107656980A (zh) * | 2017-09-07 | 2018-02-02 | 北京神州绿盟信息安全科技股份有限公司 | 应用于分布式数据库系统中的方法及分布式数据库系统 |
WO2018040722A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 表数据查询方法及装置 |
CN107943807A (zh) * | 2016-10-13 | 2018-04-20 | 华为技术有限公司 | 一种数据处理方法及存储设备 |
CN108427684A (zh) * | 2017-02-14 | 2018-08-21 | 华为技术有限公司 | 数据查询方法、装置及计算设备 |
CN108427748A (zh) * | 2018-03-12 | 2018-08-21 | 北京奇艺世纪科技有限公司 | 分布式数据库二级索引查询方法、装置以及服务器 |
CN108595482A (zh) * | 2018-03-13 | 2018-09-28 | 华为技术有限公司 | 一种数据索引方法及装置 |
CN108628972A (zh) * | 2018-04-25 | 2018-10-09 | 咪咕音乐有限公司 | 一种数据表的处理方法、装置及存储介质 |
CN109144994A (zh) * | 2017-06-19 | 2019-01-04 | 华为技术有限公司 | 索引更新方法、系统及相关装置 |
CN109325779A (zh) * | 2018-08-20 | 2019-02-12 | 北京数美时代科技有限公司 | 一种用于反欺诈的读写画像方法、系统和画像处理系统 |
CN109902101A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 基于SparkSQL的透明分区方法及装置 |
CN109902126A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 支持hive自动分区的加载系统及其实现方法 |
CN110019211A (zh) * | 2017-11-27 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 关联索引的方法、装置和系统 |
CN110019337A (zh) * | 2017-11-02 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 确定数据库中有效分区的方法、装置和系统 |
CN110147407A (zh) * | 2017-09-29 | 2019-08-20 | 华为技术有限公司 | 一种数据处理方法、装置及数据库管理服务器 |
CN110413606A (zh) * | 2018-04-27 | 2019-11-05 | 贵州白山云科技股份有限公司 | 一种数据表水平拆分方法及装置 |
CN110750515A (zh) * | 2019-09-25 | 2020-02-04 | 浙江大华技术股份有限公司 | 数据库查询方法及处理装置 |
CN110874383A (zh) * | 2018-08-30 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及电子设备 |
CN110990400A (zh) * | 2019-11-20 | 2020-04-10 | 浙江大搜车软件技术有限公司 | 数据库查询方法、装置、计算机设备和存储介质 |
CN111597160A (zh) * | 2020-04-21 | 2020-08-28 | 中国人民财产保险股份有限公司 | 分布式数据库系统、分布式数据处理方法和装置 |
CN111813772A (zh) * | 2019-04-12 | 2020-10-23 | 阿里巴巴集团控股有限公司 | 数据处理方法以及装置 |
CN112131215A (zh) * | 2019-06-25 | 2020-12-25 | 中国移动通信集团重庆有限公司 | 自底向上的数据库信息获取方法及装置 |
CN112860737A (zh) * | 2021-03-11 | 2021-05-28 | 中国平安财产保险股份有限公司 | 数据查询方法、装置、电子设备及可读存储介质 |
CN113297164A (zh) * | 2020-04-07 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据库系统、数据查询方法及装置 |
CN113590622A (zh) * | 2021-07-28 | 2021-11-02 | 中国人民银行清算总中心 | 分布式数据访问方法及装置 |
CN114625798A (zh) * | 2020-12-14 | 2022-06-14 | 金篆信科有限责任公司 | 数据检索方法、装置、电子设备及存储介质 |
WO2023237120A1 (zh) * | 2022-06-10 | 2023-12-14 | 华为技术有限公司 | 一种数据处理系统及装置 |
CN117539962A (zh) * | 2024-01-09 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866003B (zh) * | 2018-08-27 | 2023-09-26 | 阿里云计算有限公司 | 索引值数目的估算方法和装置以及电子设备 |
US11188671B2 (en) * | 2019-04-11 | 2021-11-30 | Bank Of America Corporation | Distributed data chamber system |
CN110659282B (zh) * | 2019-08-14 | 2023-09-15 | 中国平安财产保险股份有限公司 | 数据路由的构建方法、装置、计算机设备和存储介质 |
CN112416924A (zh) * | 2019-08-22 | 2021-02-26 | 富泰华工业(深圳)有限公司 | 数据同步查询方法、装置、计算机装置及存储介质 |
CN112835887A (zh) * | 2019-11-25 | 2021-05-25 | 航天信息股份有限公司 | 数据库管理方法、装置、计算设备和存储介质 |
CN111008200B (zh) * | 2019-12-18 | 2024-01-16 | 北京数衍科技有限公司 | 数据查询方法、装置和服务器 |
CN111209296A (zh) * | 2019-12-31 | 2020-05-29 | 航天信息股份有限公司企业服务分公司 | 数据库访问方法、装置、电子设备及存储介质 |
CN111651424B (zh) * | 2020-06-10 | 2024-05-03 | 中国科学院深圳先进技术研究院 | 一种数据处理方法、装置、数据节点及存储介质 |
CN112817990B (zh) * | 2021-01-28 | 2024-03-08 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备以及可读存储介质 |
CN116701543B (zh) * | 2023-08-03 | 2024-01-19 | 深圳前海环融联易信息科技服务有限公司 | 数据管理方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025550A (zh) * | 2010-12-20 | 2011-04-20 | 中兴通讯股份有限公司 | 一种分布式集群中数据管理的系统和方法 |
CN102043726A (zh) * | 2010-12-29 | 2011-05-04 | 北京播思软件技术有限公司 | 一种大规模时序数据的存储管理方法 |
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | 中国移动通信集团公司 | 分布式数据库系统、在其中建立索引的方法和查询方法 |
JP2013134522A (ja) * | 2011-12-26 | 2013-07-08 | Nec Corp | データ管理システム、データ管理方法及びデータ管理プログラム |
CN104462430A (zh) * | 2014-12-12 | 2015-03-25 | 北京国双科技有限公司 | 关系型数据库的数据处理方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6810427B1 (en) * | 1999-04-23 | 2004-10-26 | Nortel Networks Limited | Router table manager |
US7477843B1 (en) * | 2003-09-05 | 2009-01-13 | Nortel Networks Limited | Method of and system for routing in a photonic network |
US8533181B2 (en) * | 2009-04-29 | 2013-09-10 | Oracle International Corporation | Partition pruning via query rewrite |
US9514187B2 (en) * | 2012-09-28 | 2016-12-06 | Oracle International Corporation | Techniques for using zone map information for post index access pruning |
US10044799B2 (en) * | 2013-05-28 | 2018-08-07 | International Business Machines Corporation | Implementing synchronization of state information betweeen instances of an application as well as between different applications in an efficient, scalable manner |
CN105512200A (zh) * | 2015-11-26 | 2016-04-20 | 华为技术有限公司 | 一种分布式数据库处理的方法和设备 |
US10579618B1 (en) * | 2015-12-15 | 2020-03-03 | Amazon Technologies, Inc. | Query routing and rewriting |
-
2015
- 2015-11-26 CN CN201510843773.0A patent/CN105512200A/zh active Pending
-
2016
- 2016-05-17 WO PCT/CN2016/082375 patent/WO2017088358A1/zh unknown
- 2016-05-17 EP EP16867587.4A patent/EP3333726A4/en not_active Withdrawn
-
2018
- 2018-04-02 US US15/943,348 patent/US10872101B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | 中国移动通信集团公司 | 分布式数据库系统、在其中建立索引的方法和查询方法 |
CN102025550A (zh) * | 2010-12-20 | 2011-04-20 | 中兴通讯股份有限公司 | 一种分布式集群中数据管理的系统和方法 |
CN102043726A (zh) * | 2010-12-29 | 2011-05-04 | 北京播思软件技术有限公司 | 一种大规模时序数据的存储管理方法 |
JP2013134522A (ja) * | 2011-12-26 | 2013-07-08 | Nec Corp | データ管理システム、データ管理方法及びデータ管理プログラム |
CN104462430A (zh) * | 2014-12-12 | 2015-03-25 | 北京国双科技有限公司 | 关系型数据库的数据处理方法及装置 |
Cited By (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017088358A1 (zh) * | 2015-11-26 | 2017-06-01 | 华为技术有限公司 | 一种分布式数据库处理的方法和设备 |
US10872101B2 (en) | 2015-11-26 | 2020-12-22 | Huawei Technologies Co., Ltd. | Distributed database processing method and device |
CN106202441A (zh) * | 2016-07-13 | 2016-12-07 | 腾讯科技(深圳)有限公司 | 基于关系型数据库的数据处理方法、装置和系统 |
WO2018010527A1 (zh) * | 2016-07-13 | 2018-01-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、系统及存储介质 |
US10915550B2 (en) | 2016-07-13 | 2021-02-09 | Tencent Technology (Shenzhen) Company Limited | Data processing method, apparatus, system, and storage medium |
WO2018040722A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 表数据查询方法及装置 |
CN107784044B (zh) * | 2016-08-31 | 2020-02-14 | 华为技术有限公司 | 表数据查询方法及装置 |
CN107943807A (zh) * | 2016-10-13 | 2018-04-20 | 华为技术有限公司 | 一种数据处理方法及存储设备 |
CN107943807B (zh) * | 2016-10-13 | 2020-06-16 | 华为技术有限公司 | 一种数据处理方法及存储设备 |
CN106776848A (zh) * | 2016-11-04 | 2017-05-31 | 广州市诚毅科技软件开发有限公司 | 一种数据库查询方法及装置 |
CN106776848B (zh) * | 2016-11-04 | 2020-04-17 | 广州市诚毅科技软件开发有限公司 | 一种数据库查询方法及装置 |
CN108427684A (zh) * | 2017-02-14 | 2018-08-21 | 华为技术有限公司 | 数据查询方法、装置及计算设备 |
CN108427684B (zh) * | 2017-02-14 | 2020-12-25 | 华为技术有限公司 | 数据查询方法、装置及计算设备 |
US11308062B2 (en) | 2017-06-19 | 2022-04-19 | Huawei Technologies Co., Ltd. | Index update method and system, and related apparatus |
CN109144994A (zh) * | 2017-06-19 | 2019-01-04 | 华为技术有限公司 | 索引更新方法、系统及相关装置 |
CN107656980B (zh) * | 2017-09-07 | 2020-09-22 | 北京神州绿盟信息安全科技股份有限公司 | 应用于分布式数据库系统中的方法及分布式数据库系统 |
CN107656980A (zh) * | 2017-09-07 | 2018-02-02 | 北京神州绿盟信息安全科技股份有限公司 | 应用于分布式数据库系统中的方法及分布式数据库系统 |
CN110147407B (zh) * | 2017-09-29 | 2023-02-14 | 华为技术有限公司 | 一种数据处理方法、装置及数据库管理服务器 |
CN110147407A (zh) * | 2017-09-29 | 2019-08-20 | 华为技术有限公司 | 一种数据处理方法、装置及数据库管理服务器 |
CN110019337A (zh) * | 2017-11-02 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 确定数据库中有效分区的方法、装置和系统 |
CN110019211A (zh) * | 2017-11-27 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 关联索引的方法、装置和系统 |
CN108427748A (zh) * | 2018-03-12 | 2018-08-21 | 北京奇艺世纪科技有限公司 | 分布式数据库二级索引查询方法、装置以及服务器 |
CN108595482A (zh) * | 2018-03-13 | 2018-09-28 | 华为技术有限公司 | 一种数据索引方法及装置 |
WO2019174558A1 (zh) * | 2018-03-13 | 2019-09-19 | 华为技术有限公司 | 一种数据索引方法及装置 |
CN108595482B (zh) * | 2018-03-13 | 2022-06-10 | 华为云计算技术有限公司 | 一种数据索引方法及装置 |
CN108628972A (zh) * | 2018-04-25 | 2018-10-09 | 咪咕音乐有限公司 | 一种数据表的处理方法、装置及存储介质 |
CN108628972B (zh) * | 2018-04-25 | 2020-11-06 | 咪咕音乐有限公司 | 一种数据表的处理方法、装置及存储介质 |
CN110413606A (zh) * | 2018-04-27 | 2019-11-05 | 贵州白山云科技股份有限公司 | 一种数据表水平拆分方法及装置 |
CN109325779A (zh) * | 2018-08-20 | 2019-02-12 | 北京数美时代科技有限公司 | 一种用于反欺诈的读写画像方法、系统和画像处理系统 |
CN110874383A (zh) * | 2018-08-30 | 2020-03-10 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及电子设备 |
CN110874383B (zh) * | 2018-08-30 | 2023-05-05 | 阿里云计算有限公司 | 数据处理方法、装置及电子设备 |
CN109902101A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 基于SparkSQL的透明分区方法及装置 |
CN109902126A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 支持hive自动分区的加载系统及其实现方法 |
CN109902126B (zh) * | 2019-02-18 | 2021-12-07 | 国家计算机网络与信息安全管理中心 | 支持hive自动分区的加载系统及其实现方法 |
CN111813772A (zh) * | 2019-04-12 | 2020-10-23 | 阿里巴巴集团控股有限公司 | 数据处理方法以及装置 |
CN112131215B (zh) * | 2019-06-25 | 2023-09-19 | 中国移动通信集团重庆有限公司 | 自底向上的数据库信息获取方法及装置 |
CN112131215A (zh) * | 2019-06-25 | 2020-12-25 | 中国移动通信集团重庆有限公司 | 自底向上的数据库信息获取方法及装置 |
CN110750515A (zh) * | 2019-09-25 | 2020-02-04 | 浙江大华技术股份有限公司 | 数据库查询方法及处理装置 |
CN110990400B (zh) * | 2019-11-20 | 2023-07-04 | 浙江大搜车软件技术有限公司 | 数据库查询方法、装置、计算机设备和存储介质 |
CN110990400A (zh) * | 2019-11-20 | 2020-04-10 | 浙江大搜车软件技术有限公司 | 数据库查询方法、装置、计算机设备和存储介质 |
CN113297164A (zh) * | 2020-04-07 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据库系统、数据查询方法及装置 |
CN111597160A (zh) * | 2020-04-21 | 2020-08-28 | 中国人民财产保险股份有限公司 | 分布式数据库系统、分布式数据处理方法和装置 |
CN114625798A (zh) * | 2020-12-14 | 2022-06-14 | 金篆信科有限责任公司 | 数据检索方法、装置、电子设备及存储介质 |
CN112860737B (zh) * | 2021-03-11 | 2022-08-12 | 中国平安财产保险股份有限公司 | 数据查询方法、装置、电子设备及可读存储介质 |
CN112860737A (zh) * | 2021-03-11 | 2021-05-28 | 中国平安财产保险股份有限公司 | 数据查询方法、装置、电子设备及可读存储介质 |
CN113590622A (zh) * | 2021-07-28 | 2021-11-02 | 中国人民银行清算总中心 | 分布式数据访问方法及装置 |
WO2023237120A1 (zh) * | 2022-06-10 | 2023-12-14 | 华为技术有限公司 | 一种数据处理系统及装置 |
CN117539962A (zh) * | 2024-01-09 | 2024-02-09 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN117539962B (zh) * | 2024-01-09 | 2024-05-14 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3333726A1 (en) | 2018-06-13 |
WO2017088358A1 (zh) | 2017-06-01 |
US20180225353A1 (en) | 2018-08-09 |
EP3333726A4 (en) | 2018-08-29 |
US10872101B2 (en) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105512200A (zh) | 一种分布式数据库处理的方法和设备 | |
US11182428B2 (en) | Handling semi-structured and unstructured data in a sharded database environment | |
CN107402992B (zh) | 一种分布式NewSQL数据库系统和全文检索建立方法 | |
CN108427684B (zh) | 数据查询方法、装置及计算设备 | |
CN103150394B (zh) | 面向高性能计算的分布式文件系统元数据管理方法 | |
CN101876983B (zh) | 数据库分区方法与系统 | |
CN108228817A (zh) | 数据处理方法、装置和系统 | |
CN104794249A (zh) | 一种数据库的实现方法和设备 | |
US11216516B2 (en) | Method and system for scalable search using microservice and cloud based search with records indexes | |
US10831737B2 (en) | Method and device for partitioning association table in distributed database | |
CN106802932A (zh) | 一种数据库的路由方法、装置及数据库系统 | |
US20090248616A1 (en) | Indexing technique to deal with data skew | |
US7162478B2 (en) | System and method for correlated fragmentations in databases | |
EP3376403A1 (en) | Method of accessing distributed database and device providing distributed data service | |
CN111221840B (zh) | 数据处理方法及装置、数据缓存方法、存储介质、系统 | |
CN110399368B (zh) | 一种定制数据表的方法、数据操作方法及装置 | |
EP3399440B1 (en) | Database partitioning on a table-per-partition basis | |
CN103902548A (zh) | 一种访问数据库的系统和方法及注册、订票、网购系统 | |
Wang et al. | On data staging algorithms for shared data accesses in clouds | |
US10482076B2 (en) | Single level, multi-dimension, hash-based table partitioning | |
US11914612B2 (en) | Selective synchronization of linked records | |
CN106339432A (zh) | 一种按查询内容进行负载均衡的系统及其方法 | |
CN110472167B (zh) | 数据管理方法、装置及计算机可读存储介质 | |
CA3123159A1 (en) | Method and system of performing an operation on a single-table, multi-tenant database and partition key format therefore | |
US20220398257A1 (en) | Creation and maintenance of hierarchical industrial asset datasets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160420 |