CN106202441A - 基于关系型数据库的数据处理方法、装置和系统 - Google Patents
基于关系型数据库的数据处理方法、装置和系统 Download PDFInfo
- Publication number
- CN106202441A CN106202441A CN201610552873.2A CN201610552873A CN106202441A CN 106202441 A CN106202441 A CN 106202441A CN 201610552873 A CN201610552873 A CN 201610552873A CN 106202441 A CN106202441 A CN 106202441A
- Authority
- CN
- China
- Prior art keywords
- statement
- data processing
- word bank
- processing request
- point
- 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
-
- 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
-
- 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/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- 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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/2255—Hash tables
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/256—Integrating or interfacing systems involving database management systems in federated or virtual databases
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种基于关系型数据库的数据处理方法、装置和系统;本发明实施例在接收到客户端发送的数据处理请求后,可以根据该数据处理请求获取预设的路由表,其中,该路由表保存有关系型数据库的结构信息,(该关系型数据库包括多个子库,该子库包括多个分表,这些多个分表之间存在外键关联关系,该分表包括多个分片),然后,根据该数据处理请求中携带的分片字段和该路由表确定目标子库,并将该数据处理请求发送给该目标子库,以便该目标子库根据数据处理请求进行处理;该方案不仅实现简单,而且可以支持跨表的联合查询等功能,大大改善其性能。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种基于关系型数据库的数据处理方法、装置和系统。
背景技术
随着互联网的蓬勃发展,互联网应用所面对的用户和访问量也急剧上升,传统的mysql(一种关系型数据库)数据库已经不能满足其需求,为此,现有技术提出了mysql分布式数据库,即将一张大表分成多个分表,并将分表分别存储在分库中,然后,由业务客户端通过某个特定的字段,再结合相应的路由规则来判断使用哪个分表,从而使得存储和性能的压力分散到各个分库中,在一定程度上提高数据库的存储能力和性能。
但是,在对现有技术的研究和实践过程中,本发明的发明人发现,现有方案需要有特定的应用程序来管理分库分表及其路由规则,若分库分表较多,则该应用程序的开发难度较大,实现较为复杂,而且,现有方案所支持的功能也十分有限,比如不能有效支持跨表的联合查询(join)等。
发明内容
本发明实施例提供一种基于关系型数据库的数据处理方法、装置和系统,不仅实现简单,而且可以支持跨表的联合查询(join)等功能,大大改善其性能。
本发明实施例提供一种基于关系型数据库的数据处理方法,包括:
接收客户端发送的数据处理请求,所述数据处理请求携带分片字段;
根据所述数据处理请求获取预设的路由表,所述路由表保存有关系型数据库的结构信息,所述关系型数据库包括多个子库,所述子库包括多个分表,所述多个分表之间存在外键关联关系,所述分表包括多个分片;
根据所述分片字段和路由表确定目标子库;
将所述数据处理请求发送给所述目标子库,以便所述目标子库根据所述数据处理请求进行处理。
相应的,本发明实施例还提供一种基于关系型数据库的数据处理装置,包括:
接收单元,用于接收客户端发送的数据处理请求,所述数据处理请求携带分片字段;
获取单元,用于根据所述数据处理请求获取预设的路由表,所述路由表保存有关系型数据库的结构信息,所述关系型数据库包括多个子库,所述子库包括多个分表,所述多个分表之间存在外键关联关系,所述分表包括多个分片;
确定单元,用于根据所述分片字段和路由表确定目标子库;
发送单元,用于将所述数据处理请求发送给所述目标子库,以便所述目标子库根据所述数据处理请求进行处理。
此外,本发明实施例还提供一种数据处理系统,包括本发明实施例提供的任一种基于关系型数据库的数据处理装置。
本发明实施例在接收到客户端发送的数据处理请求后,可以根据该数据处理请求获取预设的路由表,其中,该路由表保存有关系型数据库的结构信息,(该关系型数据库包括多个子库,该子库包括多个分表,这些多个分表之间存在外键关联关系,该分表包括多个分片),然后,根据该数据处理请求中携带的分片字段和该路由表确定目标子库,并将该数据处理请求发送给该目标子库,以便该目标子库根据数据处理请求进行处理;由于在该方案中,子库和分表的路由无需客户端来查找,因此,用户无需知晓各个子库和分表之间的逻辑,也就是说,从用户的角度看,就只是一个关系型数据库,所以,相对于现有技术需要有特定的应用程序来管理分库分表及其路由规则的方案而言,该方案只需在代理层设置简单的路由即可,实现较为简单;而且,由于在该方案中,每个子库的多个分表之间均存在外键关联关系,因此,可以有效支持跨表的联合查询(join)等操作,大大改善其性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的基于关系型数据库的数据处理方法的场景示意图;
图1b是本发明实施例提供的基于关系型数据库的数据处理方法的流程图;
图2a是本发明实施例提供的基于关系型数据库的数据处理方法中插入操作的流程图;
图2b是本发明实施例提供的方法中插入操作的场景示意图;
图2c是本发明实施例提供的方法中建表操作的场景示意图;
图3a是本发明实施例提供的基于关系型数据库的数据处理方法中查询操作的流程图;
图3b是本发明实施例提供的方法中查询(带分片字段)的场景示意图;
图3c是本发明实施例提供的方法中查询(不带分片字段)的场景示意图;
图4a是本发明实施例提供的基于关系型数据库的数据处理方法中联合查询操作的流程图;
图4b是本发明实施例提供的方法中联合查询的场景示意图;
图5a是本发明实施例提供的基于关系型数据库的数据处理装置的结构示意图;
图5b是本发明实施例提供的基于关系型数据库的数据处理装置的另一结构示意图;
图6是本发明实施例提供的代理服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种基于关系型数据库的数据处理方法、装置和系统。
其中,该数据处理系统可以包括本发明实施例所提供的任一种基于关系型数据库的数据处理装置(简称数据处理装置),该数据处理装置具体可以集成在网络侧设备,如网关或代理服务器等设备中。此外,该数据处理系统还可以包括其他的设备,比如客户端设备、以及关系型数据库等。在建立关系型数据库时,可以将数据划分为多个分片(shard),并分别存储在不同的分表中,此外,还可以将存在外键关联关系的分表归为同一组,比如,多个分表如果具有相同的分片字段(shard key,用于对分片进行标识),则为一个组,等等;其中,为了描述方便,在本发明实施例中,将每一组称为一个子库,一个关系型数据库可以包括多个子库,比如DB1、DB2和DB3,等等。数据处理装置中保存有相应的路由表,用于保存该关系型数据库的结构信息,从而使得在接收到数据处理请求时,可以基于该路由表进行路由。
例如,以该数据处理装置具体集成在代理服务器中为例,如图1a所示,当代理服务器接收到客户端发送的携带分片字段的数据处理请求时,比如接收到关系型数据库的插入语句、查询语句、删除语句、更改语句或联合查询语句等结构化查询语言(SQL,StructuredQuery Language)语句时,便可以根据该数据处理请求获取预设的路由表,然后,根据该分片字段和路由表确定目标子库,并将该数据处理请求发送给该目标子库,以便该目标子库根据该数据处理请求进行处理。
以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优先顺序的限定。
实施例一、
本发明实施例将从数据处理装置的角度进行描述,该数据处理装置具体可以集成在网络侧设备,如网关或代理服务器等设备中。
一种基于关系型数据库的数据处理方法,包括:接收客户端发送的数据处理请求,该数据处理请求携带分片字段;根据该数据处理请求获取预设的路由表,该路由表保存有关系型数据库的结构信息,该关系型数据库包括多个子库,该子库包括多个分表,该多个分表之间存在外键关联关系,该分表包括多个分片;根据该分片字段和路由表确定目标子库;将该数据处理请求发送给该目标子库,以便该目标子库根据该数据处理请求进行处理。
如图1b所示,该数据处理方法的具体流程可以如下:
101、接收客户端发送的数据处理请求,该数据处理请求可以携带分片字段等信息。
其中,该数据处理请求可以包括多种SQL语句,比如,具体可以为关系型数据库的插入语句、查询语句、删除语句、更改语句或联合查询语句等。
其中,该数据处理请求所携带的分片字段的类型可以根据实际应用的需求而定,可以是字符串,也可以是一个具体的数值,在进行路由表查询时,具体可以对该分片字段进行哈希运算后取余,然后,根据得到的运算结果在路由表中进行查询,在此不再赘述。
102、根据该数据处理请求获取预设的路由表。
其中,该路由表保存有关系型数据库的结构信息,该结构信息包括该关系型数据库的数据结构、以及数据结构中各个组成部分的关联关系,比如,子库、分表和各个分片之间的关联关系,等等。
其中,该关系型数据库具体可以为mysql或其他具有类似数据结构的数据库。该关系型数据库可以包括多个子库,该子库可以包括多个分表,该多个分表之间存在外键关联关系,每个分表可以包括多个分片。该关系型数据库可以由维护人员预先进行建立,或者,也可以由系统自行进行建立,即在步骤“接收客户端发送的数据处理请求”之前,该数据处理方法还可以包括:
(1)接收客户端发送的关系型数据库的建表语句,该建表语句指示需要建立的分表名称;
(2)对该建表语句进行语法分析,以确定该建表语句中是否指定了分片字段的字段名,若是,则执行步骤(3),若否,则执行步骤(4)。
(3)在确定该建表语句中指定了分片字段的字段名时,建立该分表名称与字段名之间的关联关系,将该关联关系记录到预设的路由表中,并将该建表语句发送给关系型数据库,以进行建表操作。
其中,为了便于后续建立各个分表之间的外键关联关系,可以将具有相同分片字段的建表语句归为同一子库,即步骤“将该建表语句发送给关系型数据库”可以包括:
确定路由表中是否存在以该字段名为分片字段的其他分表,若存在,则将该建表语句发送给该其他分表所属的子库,以进行建表操作;若不存在,则将该建表语句发送给关系型数据库中的所有子库,以进行建表操作。
这样,在建表之后,后续便可以根据该分片字段还建立各个分表之间的外键关联关系,即在进行建表操作之后,该数据处理方法还可以包括:
根据该字段名设置建立的分表与该其他分表之间的外键关联关系。
比如,可以由该数据处理装置直接根据该字段名设置建立的分表与该其他分表之间的外键关联关系,或者,也可以由该数据处理装置发送相应的外键设置请求给关系型数据库,由关系型数据库根据该字段名设置建立的分表与该其他分表之间的外键关联关系,等等,在此不再赘述。
(4)在确定该建表语句中没有指定分片字段的字段名时,拒绝该建表语句。
此外,可选的,该方案还可以支持单后端事务,比如,当开始一个事务时,可以对每一条数据处理请求进行分析,若其中某一条数据处理请求对应的关系型数据库与上一条不同,则拒绝该数据处理请求,即根据该数据处理请求获取预设的路由表(即步骤102)之前,该数据处理方法还可以包括:
判断该数据处理请求所对应的关系型数据库是否与上一条数据处理请求所对应的关系型数据库一致;若一致,才执行根据该数据处理请求获取预设的路由表的步骤,否则,若不一致,则拒绝该数据处理请求。
可选的,在拒绝该数据处理请求时,还可以进行报错,比如生成错误提示信息,并将该错误提示信息发送给客户端,等等。
可选的,在判断该数据处理请求所对应的关系型数据库是否与上一条数据处理请求所对应的关系型数据库一致之前,还可以判断该数据处理请求是否为事务结束语句,若是,则结束当前事务,否则,如果不是事务结束语句,才执行判断该数据处理请求所对应的关系型数据库是否与上一条数据处理请求所对应的关系型数据库一致的步骤。
103、根据该分片字段和路由表确定目标子库。
其中,根据不同的数据处理请求,确定目标子库的方式也有所不同,例如,以插入、查询、删除、更改和联合查询(join)为例,具体可以如下:
(1)插入;
若该数据处理请求为关系型数据库的插入语句,则步骤“根据该分片字段和路由表确定目标子库”包括:
对该插入语句进行语法分析,以确定该插入语句中是否存在该路由表已记录的分片字段;若存在,则根据该插入语句中携带的分片字段查找路由表,以确定目标子库;若不存在,则拒绝该插入语句。
(2)查询;
若该数据处理请求为关系型数据库的查询语句,则步骤“根据该分片字段和路由表确定目标子库”包括:
对该查询语句进行语法分析,以确定该查询语句中是否存在该路由表已记录的分片字段;若存在,则根据该查询语句中携带的分片字段查找路由表,以确定目标子库;若不存在,则将关系型数据库中的所有子库确定为目标子库。
删除和更改与查询类似,详见以下的(3)和(4)。
(3)删除;
若该数据处理请求为关系型数据库的删除语句,则步骤“根据该分片字段和路由表确定目标子库”包括:
对该删除语句进行语法分析,以确定该删除语句中是否存在该路由表已记录的分片字段;若存在,则根据该删除语句中携带的分片字段查找路由表,以确定目标子库;若不存在,则将关系型数据库中的所有子库确定为目标子库。
(4)更改;
若该数据处理请求为关系型数据库的更改语句,则步骤“根据该分片字段和路由表确定目标子库”包括:
对该更改语句进行语法分析,以确定该更改语句中是否存在该路由表已记录的分片字段;若存在,则根据该更改语句中携带的分片字段查找路由表,以确定目标子库;若不存在,则将关系型数据库中的所有子库确定为目标子库。
(5)联合查询;
若该数据处理请求为关系型数据库的联合查询语句,该联合查询语句指示需要进行联合查询的分表的名称,则步骤“根据该分片字段和路由表确定目标子库”包括:
对该联合查询语句进行语法分析,以确定该联合查询语句是否满足第一条件或第二条件,其中,该第一条件为该联合查询语句中携带值为常量的分片字段,该第二条件为该联合查询语句中携带所有需要进行联合查询的分表的分片字段,且分片字段之间的比较运算符为等号;若满足第一条件或第二条件,则根据该联合查询语句中携带的分片字段查找路由表,以确定目标子库;若不满足第一条件和第二条件,则拒绝该联合查询语句。
104、将该数据处理请求发送给该目标子库,以便该目标子库根据该数据处理请求进行处理。
例如,如果该数据处理请求为插入语句,则此时,目标子库可以根据该插入语句进行插入操作;同理,若该数据处理请求为查询语句、删除语句、更改语句或联合查询语句,则此时,目标子库可以根据这些语句进行查询、删除、更改或联合查询等操作,在此不再赘述。
可选的,在进行联合查询时,该数据处理装置除了可以将联合查询结果直接提供给客户端之外,还可以对联合查询结果进行聚合后,才提供给客户端,即在步骤“将该数据处理请求发送给该目标子库”之后,该数据处理装置还可以包括:
接收该目标子库返回的联合查询结果,对该联合查询结果进行聚合,得到聚合结果,将该聚合结果发送给客户端。
由上可知,本实施例在接收到客户端发送的数据处理请求后,可以根据该数据处理请求获取预设的路由表,其中,该路由表保存有关系型数据库的结构信息,(该关系型数据库包括多个子库,该子库包括多个分表,这些多个分表之间存在外键关联关系,该分表包括多个分片),然后,根据该数据处理请求中携带的分片字段和该路由表确定目标子库,并将该数据处理请求发送给该目标子库,以便该目标子库根据数据处理请求进行处理;由于在该方案中,子库和分表的路由无需客户端来查找,因此,用户无需知晓各个子库和分表之间的逻辑,也就是说,从用户的角度看,就只是一个关系型数据库,所以,相对于现有技术需要有特定的应用程序来管理分库分表及其路由规则的方案而言,该方案只需在代理层设置简单的路由即可,实现较为简单;而且,由于在该方案中,每个子库的多个分表之间均存在外键关联关系,因此,可以有效支持跨表的联合查询(join)等操作,大大改善其性能。
据实施例一所描述的方法,以下将在实施例二至五中分别举例作进一步详细说明。
实施例二、
在本实施例中,将以该数据处理装置具体集成在代理服务器中,该关系型数据库具体为mysql,其该数据处理请求具体为mysql的插入语句为例进行说明。
如图2a所示,一种基于关系型数据库的数据处理方法,具体流程可以如下:
201、客户端向代理服务器发送mysql的插入语句。
其中,该插入语句可以携带分片字段,比如,以指定字段名为“a1”的分片作为分片字段为例,则此时,可以在插入语句中携带“a1”等信息。
202、代理服务器接收到该插入语句后,根据该插入语句获取预设的路由表。
其中,该路由表保存有mysql的结构信息,该mysql可以包括多个子库,该子库可以包括多个分表,该多个分表之间存在外键关联关系,每个分表可以包括多个分片。
例如,参见图2b,以该mysql包括三个子库:DB1、DB2和DB3为例,则该路由表中的部分信息具体可以如下:
其中,每个子库可以多个分表,比如,可以包括分表t1和分表t2等,而每个分表则可以包括32个分片,比如,子库DB1中的每个分表可以包括分片字段的哈希值为0~31的分片,而子库DB2中的每个分表可以包括分片字段的哈希值为31~63的分片,而子库DB3中的每个分表可以包括分片字段的哈希值为63~95的分片,等等。可以根据实际应用的需求指定相应的字段为分片字段,比如,在上述路由表中,则指定了字段名为“a1”的分片作为t1分表的分片字段(即shard key:a1),以及指定了字段名为“a2”的分片作为t2分表的分片字段(即shard key:a2)。
其中,该mysql除了可以由维护人员预先进行建立之外,也可以由系统自行进行建立,例如,以该mysql包括三个子库:DB1、DB2和DB3为例,则参见图2c,其建表流程具体可以如下:
S1、客户端向代理服务器发送mysql的建表语句,该建表语句指示需要建立的分表名称。
例如,如果需要建立分表t1,则此时,可以在该建表语句指示需要建立的分表为“t1”,同理,如果需要建立分表t2,则可以在该建表语句指示需要建立的分表为“t2”,等等。
S2、代理服务器在接收到该建表语句后,对该建表语句进行语法分析,以确定该建表语句中是否指定了分片字段的字段名,若是,则执行步骤S3,若否,则拒绝该建表语句。
例如,以建立分表t1为例,若建表语句为:
mysql>create table t1(a int,b int,c char(20));
则由于该建表语句中没有指定分片字段的字段名,因此,此时可以拒绝该建表语句。可选的,可以生成相应的错误提示信息,如下:
ERROR 1005(07000):proxy Warning-sql is not legal,tokenizer_gram wentwrong。
又例如,还是以建立分表t1为例,若建表语句为:
mysql>create table t1(a int,b int,c char(20))shard key=a1;
则由于该建表语句中指定了分片字段的字段名“shard key=a1”,因此,此时可以执行步骤S3,可选的,还可以生成相应的提示信息,以表示允许建立,比如,可以生成如下语句:
Querv OK,0rows affected(1.56sec)。
S3、代理服务器在确定该建表语句中指定了分片字段的字段名时,建立该分表名称与字段名之间的关联关系,将该关联关系记录到预设的路由表中,并将该建表语句发送给mysql。
其中,为了便于后续建立各个分表之间的外键关联关系,可以将具有相同分片字段的建表语句归为同一子库,即步骤“将该建表语句发送给mysql”可以包括:
确定路由表中是否存在以该字段名为分片字段的其他分表,若存在,则将该建表语句发送给该其他分表所属的子库,以进行建表操作;若不存在,则将该建表语句发送给mysql中的所有子库。
S4、mysql在接收到建表语句后,根据该建表语句进行建表操作。
比如,如果子库DB1、DB2和DB3均接收到该建表语句,其该建表语句指示建立分表t1,则此时,可以分别在各个子库(即DB1、DB2和DB3)中对分表t1进行建表操作,而如果该建表语句指示建立分表t2,则此时,可以分表在各个子库中对分表t2进行建表操作,等等。
S5、可选的,mysql在建表之后,可以返回指示建表成功的响应给代理服务器。
S6、代理服务器根据该字段名设置建立的分表与该其他分表之间的外键关联关系。
比如,可以由该代理服务器直接根据该字段名设置建立的分表与该其他分表之间的外键关联关系,或者,也可以由该代理服务器发送相应的外键设置请求给mysql,由mysql根据该字段名设置建立的分表与该其他分表之间的外键关联关系,比如,可以建立分表t1和分表t2之间的外键关联关系,等等,在此不再赘述。
203、代理服务器对该插入语句进行语法分析,以确定该插入语句中是否存在该路由表已记录的分片字段;若存在,则执行步骤204,若不存在,则拒绝该插入语句,比如,可以向客户端发送错误提示信息,等等。
例如,若该插入语句为:
mysql>inser into t1(b1,c1)values(4,“record3”);
则由于该插入语句中不存在该路由表已记录的分片字段(分表t1所指定的分片字段为a1),因此,此时代理服务器可以拒绝该插入语句。可选的,可以生成相应的错误提示信息,如下:
ERROR 1005(07000):proxy Warning-sql is no shard key。
又例如,若该插入语句为:
mysql>inser into t1(a1,c1)values(4,“record3”);
则由于该插入语句中存在该路由表已记录的分片字段“a1”(分表t1所指定的分片字段为a1),因此,此时可以执行步骤204。可选的,还可以生成相应的提示信息,以表示允许插入,比如,可以生成如下语句:
Querv OK,1rows affected(0.01sec)。
204、代理服务器根据该插入语句中携带的分片字段查找路由表,以确定目标子库。
例如,还是以如下插入语句为例:
mysql>inser into t1(a1,c1)values(4,“record3”);
根据路由表可知,子库DB1、DB2和DB3中均存在分表t1,因此,可以根据a1的具体值,从DB1、DB2和DB3中确定目标子库,比如若a1的哈希值为0~31中的任意一个值,则目标子库为DB1;若a1的哈希值为31~63中的任意一个值,则目标子库为DB2;若a1的哈希值为63~95中的任意一个值,则目标子库为DB3。
205、代理服务器将该插入语句发送给该目标子库,并执行步骤206。
例如,如果在步骤204中,确定目标子库为DB1、DB2或DB3,则此时,代理服务器可以将该插入语句发送给DB1、DB2或DB3。
206、目标子库根据该插入语句进行插入操作。
可选的,在插入操作执行完毕后,目标子库还可以返回相应的执行结果给代理服务器,由代理服务器发送给客户端,以通知用户,等等。
由上可知,本实施例在接收到客户端发送的插入语句后,可以根据该插入语句获取预设的路由表,然后,根据该插入语句中携带的分片字段和该路由表确定目标子库,并将该插入语句发送给该目标子库,以便该目标子库根据插入语句进行插入操作;由于在该方案中,子库和分表的路由无需客户端来查找,因此,用户无需知晓各个子库和分表之间的逻辑,也就是说,从用户的角度看,就只是一个mysql,所以,相对于现有技术需要有特定的应用程序来管理分库分表及其路由规则的方案而言,该方案只需在代理层设置简单的路由即可,实现较为简单;而且,由于该方案在建表的时候,将具有相同分片字段的分表归为同一子库,因此,每个子库的多个分表之间均存在外键关联关系,所以,可以有效支持跨表的join等操作,大大改善其性能。
实施例三、
与实施例二相同的是,本实施例同样以该数据处理装置具体集成在代理服务器中,且该关系型数据库具体为mysql为例进行说明。与实施例二不同的是,在本实施例中,将以该数据处理请求具体为mysql的查询语句为例进行说明。
如图3a所示,一种基于关系型数据库的数据处理方法,具体流程可以如下:
301、客户端向代理服务器发送mysql的查询语句。
其中,该查询语句可以携带分片字段,比如,以指定字段名为“a1”的分片作为分片字段为例,则此时,可以在插入语句中携带“a1=xxx”等信息,其中,“xxx”可以是字符串,也可以是一个具体的数值,比如1、2或86,等等;后续在进行路由表查询时,可以对该“xxx”进行哈希运算后取余,然后,根据得到的运算结果在路由表中进行查询,在此不再赘述。
302、代理服务器接收到该查询语句后,根据该查询语句获取预设的路由表。
其中,该路由表保存有mysql的结构信息,该mysql可以包括多个子库,该子库可以包括多个分表,该多个分表之间存在外键关联关系,每个分表可以包括多个分片。
例如,参见图3b和图3c,以该mysql包括三个子库:DB1、DB2和DB3为例,则该路由表中的部分信息具体可以如下:
其中,每个子库可以多个分表,比如,可以包括分表t1和分表t2等,而每个分表则可以包括32个分片,比如,子库DB1中的每个分表可以包括分片字段的哈希值为0~31的分片,而子库DB2中的每个分表可以包括分片字段的哈希值为31~63的分片,而子库DB3中的每个分表可以包括分片字段的哈希值为63~95的分片,等等。可以根据实际应用的需求指定相应的字段为分片字段,比如,在上述路由表中,则指定了字段名为“a1”的分片作为t1分表的分片字段(即shard key:a1),以及指定了字段名为“a2”的分片作为t2分表的分片字段(即shard key:a2)。
其中,该mysql除了可以由维护人员预先进行建立之外,也可以由系统自行进行建立,具体可参见实施例二,在此不再赘述。
303、代理服务器对该查询语句进行语法分析,以确定该查询语句中是否存在该路由表已记录的分片字段;若存在,则执行步骤304,若不存在,则执行步骤305。
例如,若该查询语句为:
mysql>select*from t1where a1=19;
则由于该查询语句的限定条件中存在该路由表已记录的分片字段“a1”,因此,可以执行步骤304。
又例如,若该查询语句为:
mysql>select*from t1where uname=‘xxx’;
则由于该查询语句的限定条件中只是指示查询“uname”为“xxx”的数据,而不存在该路由表已记录的分片字段“a1”,因此,可以执行步骤305。
304、代理服务器根据该查询语句中携带的分片字段查找路由表,以确定目标子库,然后执行步骤306。
例如,还是以如下查询语句为例:
mysql>select*from t1where a1=19;
由于该查询语句中指示查询a1=19的分片,而根据路由表可知,“19”位于子库DB1中,因此,可以确定子库DB1为目标子库,具体可参见图3b。
305、代理服务器将mysql中的所有子库确定为目标子库,然后执行步骤306。
例如,以该mysql中包括子库DB1、DB2和DB3为例,则此时,代理服务器可以将DB1、DB2和DB3确定为目标子库,具体可参见图3c。
306、代理服务器将该查询语句发送给该目标子库,并执行步骤307。
例如,代理服务器具体可以将该查询语句发送给目标子库中相应的分表,比如,如果查询语句指示对分表t1进行查询,则此时,可以将该查询语句发送给目标子库中的分表t1。
比如,参见图3b,由于查询语句指示查询分表t1中的“a1=19”的分片,因此,此时,代理服务器可以将该查询语句发送给DB1中的分表t1。
又比如,参见图3c,由于查询语句指示查询分表t1中的名称为“xxx”的分片,因此,此时,代理服务器可以将该查询语句分表发送给DB1、DB2和DB3中的分表t1,等等。
307、目标子库根据该插查询语句进行插查询操作。
例如,若目标子库为DB1,则DB1可以根据该插查询语句对a1=19”的分片进行查询。
又例如,若目标子库为DB1、DB2和DB3,则DB1、DB2和DB3可以根据该插查询语句在t1中对“uname”为“xxx”的数据进行查询,等等。
可选的,在查询操作执行完毕后,目标子库还可以返回相应的执行结果给代理服务器,由代理服务器发送给客户端,以通知用户,等等。
由上可知,本实施例在接收到客户端发送的查询语句后,可以根据该查询语句获取预设的路由表,然后,根据该查询语句中携带的分片字段和该路由表确定目标子库,并将该查询语句发送给该目标子库,以便该目标子库根据查询语句进行查询操作;由于在该方案中,子库和分表的路由无需客户端来查找,因此,用户无需知晓各个子库和分表之间的逻辑,也就是说,从用户的角度看,就只是一个mysql,所以,相对于现有技术需要有特定的应用程序来管理分库分表及其路由规则的方案而言,该方案只需在代理层设置简单的路由即可,实现较为简单;而且,由于该方案在建表的时候,将具有相同分片字段的分表归为同一子库,因此,每个子库的多个分表之间均存在外键关联关系,所以,可以有效支持跨表的join等操作,大大改善其性能。
需说明的是,由于删除语句和更改语句等操作与查询语句类似,因此,删除语句和更改语句等操作的具体实施、以及有益效果可参见实施例三,在此不再赘述。
实施例四、
与实施例二和三相同的是,本实施例同样以该数据处理装置具体集成在代理服务器中,且该关系型数据库具体为mysql为例进行说明。与实施例二和三不同的是,在本实施例中,将以该数据处理请求具体为mysql的联合查询(join)语句为例进行说明。
如图4a所示,一种基于关系型数据库的数据处理方法,具体流程可以如下:
401、客户端向代理服务器发送mysql的联合查询语句。
其中,该联合查询句指示需要进行联合查询的分表的名称,此外,该联合查询还可以携带分片字段。
402、代理服务器接收到该联合查询语句后,根据该联合查询语句获取预设的路由表。
其中,该路由表保存有mysql的结构信息,该mysql可以包括多个子库,该子库可以包括多个分表,该多个分表之间存在外键关联关系,每个分表可以包括多个分片,该路由表和mysql的结构具体可参见实施例二和三,在此不再赘述。
其中,该mysql除了可以由维护人员预先进行建立之外,也可以由系统自行进行建立,具体可参见实施例二,在此不再赘述。
403、代理服务器对该联合查询语句进行语法分析,以确定该联合查询语句中是否携带值为常量的分片字段,若是,则执行步骤405;若否,则执行步骤404。
例如,若该联合查询语句为:
mysql>select t1.b1from t1inner join t2on t1.a1=t2.a2;
由于该联合查询语句中,没有携带值为常量的分片字段,因此,此时可以执行步骤404。
404、代理服务器确定该联合查询语句中是否携带所有需要进行联合查询的分表的分片字段,且分片字段之间的比较运算符为等号,若是,则执行步骤405;若否,则拒绝该联合查询语句,比如,可以向客户端发送错误提示信息,等等。
例如,还是以如下联合查询语句为例:
mysql>select t1.b1from t1inner join t2on t1.a1=t2.a2;
由于该联合查询语句中,携带所有需要进行联合查询的分表的分片字段,且分片字段之间的比较运算符为等号,即“t1.a1=t2.a2”因此,此时可以执行步骤405。
需说明的是,除了先进行步骤403中的判断,再进行步骤404中的判断之外,也可以进行步骤404中的判断,再进行步骤403中的判断,即先判断该联合查询语句中是否携带所有需要进行联合查询的分表的分片字段,且分片字段之间的比较运算符为等号,若是,则执行步骤405,若否,则判断该联合查询语句中是否携带值为常量的分片字段,若携带了值为常量的分片字段,则执行步骤405,否则,若没有携带值为常量的分片字段,则拒绝该联合查询语句。
405、代理服务器根据该联合查询语句中携带的分片字段查找路由表,以确定目标子库。
例如,还是以步骤404中的例子为例,由于该联合查询语句中指示需要进行联合查询的分表为t1和t2,而根据路由表可知,分库DB1、DB2和DB3中均存在t1和t2,因此,此时,可以确定目标子库为DB1、DB2和DB3。
406、代理服务器将该联合查询语句发送给该目标子库,并执行步骤407。
例如,如果在步骤405中,确定目标子库为DB1、DB2和DB3,则此时,代理服务器可以将该联合查询语句分表发送给DB1、DB2和DB3。
407、目标子库根据该联合查询语句进行联合查询操作。
例如,可以对t1和t2进行join操作。
可选的,在插入操作执行完毕后,目标子库还可以返回相应的执行结果给代理服务器,即该方案还可以包括步骤408至410。
408、目标子库向代理服务器返回联合查询结果。
409、代理服务器接收到该联合查询结果后,对该联合查询结果进行聚合,得到聚合结果。
410、代理服务器将该聚合结果发送给客户端。
由上可知,本实施例在接收到客户端发送的联合查询(join)语句后,可以根据该联合查询语句获取预设的路由表,然后,根据该联合查询语句中携带的分片字段和该路由表确定目标子库,并将该联合查询语句发送给该目标子库,以便该目标子库根据联合查询语句进行联合查询操作;由于在该方案中,子库和分表的路由无需客户端来查找,因此,用户无需知晓各个子库和分表之间的逻辑,也就是说,从用户的角度看,就只是一个mysql,所以,相对于现有技术需要有特定的应用程序来管理分库分表及其路由规则的方案而言,该方案只需在代理层设置简单的路由即可,实现较为简单;而且,由于该方案在建表的时候,将具有相同分片字段的分表归为同一子库,因此,每个子库的多个分表之间均存在外键关联关系,所以,可以有效支持跨表的join等操作,大大改善其性能。
实施例五、
可选的,在实施例二、三和四的基础上,本发明实施例所提供的数据处理方法还可以支持单后端事务操作,比如,当开始一个事务时,可以对每一条数据处理请求,如对插入语句或查询语句等进行分析,若其中某一条数据处理请求对应的关系型数据库与上一条不同,则拒绝该数据处理请求,等等。即在根据数据处理请求(如插入语句、查询语句、删除语句、更改语句、或联合查询语句等)获取预设的路由表之前,该数据处理方法还可以包括:
代理服务器判断该数据处理请求所对应的mysql是否与上一条数据处理请求所对应的mysql一致,若一致,才执行根据该数据处理请求获取预设的路由表的步骤,否则,若不一致,则拒绝该数据处理请求,比如,拒绝该插入请求、查询请求、删除请求、更改请求、或联合查询请求,等等。
可选的,在拒绝该数据处理请求请求时,还可以进行报错,比如生成错误提示信息,并将该错误提示信息发送给客户端,等等。
可选的,在判断该数据处理请求所对应的mysql是否与上一条数据处理请求所对应的mysql一致之前,还可以判断该查询语句是否为事务结束语句,若是,则结束当前事务,否则,如果不是事务结束语句,才执行判断该数据处理请求所对应的mysql是否与上一条数据处理请求所对应的mysql一致的步骤。
可见,本实施例除了可以实现如实施例二至四所能实现的有益效果之外,还可以支持单后端事务操作,有利于提高灵活性和处理效率。
实施例六、
为了更好地实现以上方法,本发明实施例还提供一种基于关系型数据库的数据处理装置,简称数据处理装置,如图5a所示,该数据处理装置包括接收单元501、获取单元502、确定单元503和发送单元504,如下:
(1)接收单元501;
接收单元501,用于接收客户端发送的数据处理请求,该数据处理请求携带分片字段。
其中,该数据处理请求可以包括多种SQL语句,比如,具体可以为关系型数据库的插入语句、查询语句、删除语句、更改语句或联合查询语句等。
其中,该数据处理请求所携带的分片字段的类型可以根据实际应用的需求而定,可以是字符串,也可以是一个具体的数值,在进行路由表查询时,具体可以对该分片字段进行哈希运算后取余,然后,根据得到的运算结果在路由表中进行查询,在此不再赘述。
(2)获取单元502;
获取单元502,用于根据该数据处理请求获取预设的路由表,该路由表保存有关系型数据库的结构信息,该关系型数据库包括多个子库,该子库包括多个分表,该多个分表之间存在外键关联关系,该分表包括多个分片。
该关系型数据库可以由维护人员预先进行建立,或者,也可以由系统自行进行建立,即如图5b所示,该数据处理装置还可以包括建表单元505,如下:
接收单元501,还可以用于接收客户端发送的关系型数据库的建表语句,该建表语句指示需要建立的分表名称。
建表单元505,对该建表语句进行语法分析,以确定该建表语句中是否指定了分片字段的字段名;若是,则建立该分表名称与字段名之间的关联关系,将该关联关系记录到预设的路由表中,将该建表语句发送给关系型数据库,以进行建表操作;若否,则拒绝该建表语句。
其中,为了便于后续建立各个分表之间的外键关联关系,可以将具有相同分片字段的建表语句归为同一子库,即:
该建表单元505,具体可以用于在确定该建表语句中指定了分片字段的字段名时,确定路由表中是否存在以该字段名为分片字段的其他分表;若存在,则将该建表语句发送给该其他分表所属的子库,以进行建表操作;若不存在,则将该建表语句发送给关系型数据库中的所有子库,以进行建表操作。
这样,在建表之后,后续便可以根据该分片字段还建立各个分表之间的外键关联关系,即:
该建表单元505,还可以用于根据该字段名设置建立的分表与该其他分表之间的外键关联关系。
(3)确定单元503;
确定单元503,用于根据该分片字段和路由表确定目标子库。
(4)发送单元504;
发送单元504,用于将该数据处理请求发送给该目标子库,以便该目标子库根据该数据处理请求进行处理。
其中,根据不同的数据处理请求,确定单元503确定目标子库的方式也有所不同,例如,以插入、查询、删除、更改和联合查询(join)为例,具体可以如下:
(A)插入;
若该数据处理请求为关系型数据库的插入语句,则数据处理请求为关系型数据库的插入语句,则该确定单元503,具体可以用于:
对该插入语句进行语法分析,以确定该插入语句中是否存在该路由表已记录的分片字段;若存在,则根据该插入语句中携带的分片字段查找路由表,以确定目标子库;若不存在,则拒绝该插入语句。
(B)查询、删除或更改;
若该数据处理请求为关系型数据库的查询语句,则该数据处理请求为关系型数据库的查询语句、删除语句或更改语句,则该确定单元503,具体可以用于:
对该查询语句、删除语句或更改语句进行语法分析,以确定该查询语句、删除语句或更改语句中是否存在该路由表已记录的分片字段;若存在,则根据该查询语句、删除语句或更改语句中携带的分片字段查找路由表,以确定目标子库;若不存在,则将关系型数据库中的所有子库确定为目标子库。
(C)联合查询;
若该数据处理请求为关系型数据库的联合查询语句,该联合查询语句指示需要进行联合查询的分表的名称,则该确定单元503,具体可以用于:
对该联合查询语句进行语法分析,以确定该联合查询语句是否满足第一条件或第二条件;若满足第一条件或第二条件,则根据该联合查询语句中携带的分片字段查找路由表,以确定目标子库;若不满足第一条件和第二条件,则拒绝该联合查询语句。
其中,该第一条件为该联合查询语句中携带值为常量的分片字段,该第二条件为该联合查询语句中携带所有需要进行联合查询的分表的分片字段,且分片字段之间的比较运算符为等号
可选的,在进行联合查询时,该数据处理装置除了可以将联合查询结果直接提供给客户端之外,还可以对联合查询结果进行聚合后,才提供给客户端,即如图5b所示,该数据处理装置还可以包括聚合单元506,如下:
该接收单元501,还可以用于接收该目标子库返回的联合查询结果。
该聚合单元506,可以用于对该联合查询结果进行聚合,得到聚合结果。
发送单元504,还可以用于将该聚合结果发送给客户端。
此外,可选的,该方案还可以支持单后端事务,比如,当开始一个事务时,可以对每一条数据处理请求进行分析,若其中某一条数据处理请求对应的关系型数据库与上一条不同,则拒绝该数据处理请求,即如图5b所示,该数据处理装置还可以包括判断单元507,如下:
该判断单元507,可以用于判断该数据处理请求所对应的关系型数据库是否与上一条数据处理请求所对应的关系型数据库一致;若一致,则触发获取单元502执行根据该数据处理请求获取预设的路由表的操作,若不一致,则拒绝该数据处理请求。
可选的,在拒绝该数据处理请求时,该判断单元507还可以进行报错,比如生成错误提示信息,并由发送单元504将该错误提示信息发送给客户端,等等。
可选的,在判断该数据处理请求所对应的关系型数据库是否与上一条数据处理请求所对应的关系型数据库一致之前,判断单元507还可以判断该数据处理请求是否为事务结束语句,若是,则结束当前事务,否则,如果不是事务结束语句,才执行判断该数据处理请求所对应的关系型数据库是否与上一条数据处理请求所对应的关系型数据库一致的操作。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
该数据处理装置具体可以集成在网络侧设备,如网关或代理服务器等设备中。
由上可知,本实施例在接收到客户端发送的数据处理请求后,可以由获取单元502根据该数据处理请求获取预设的路由表,其中,该路由表保存有关系型数据库的结构信息,(该关系型数据库包括多个子库,该子库包括多个分表,这些多个分表之间存在外键关联关系,该分表包括多个分片),然后,由确定单元503根据该数据处理请求中携带的分片字段和该路由表确定目标子库,并由发送单元504将该数据处理请求发送给该目标子库,以便该目标子库根据数据处理请求进行处理;由于在该方案中,子库和分表的路由无需客户端来查找,因此,用户无需知晓各个子库和分表之间的逻辑,也就是说,从用户的角度看,就只是一个关系型数据库,所以,相对于现有技术需要有特定的应用程序来管理分库分表及其路由规则的方案而言,该方案只需在代理层设置简单的路由即可,实现较为简单;而且,由于在该方案中,每个子库的多个分表之间均存在外键关联关系,因此,可以有效支持跨表的联合查询(join)等操作,大大改善其性能。
实施例七、
相应的,本发明实施例还提供一种数据处理系统,可以包括本发明实施例所提供的任一种数据处理装置(即基于关系型数据库的数据处理装置),具体可参见实施例六,该数据处理装置具体可以集成在网络侧设备,如网关或代理服务器等设备中,例如,以该数据处理装置具体集成在代理服务器中为例,则具体可以如下:
代理服务器,用于接收客户端发送的数据处理请求,该数据处理请求携带分片字段;根据该数据处理请求获取预设的路由表,该路由表保存有关系型数据库的结构信息,该关系型数据库包括多个子库,该子库包括多个分表,该多个分表之间存在外键关联关系,该分表包括多个分片;根据该分片字段和路由表确定目标子库;将该数据处理请求发送给该目标子库,以便该目标子库根据该数据处理请求进行处理。
该数据处理请求可以包括多种SQL语句,比如,具体可以为关系型数据库的插入语句、查询语句、删除语句、更改语句或联合查询语句等。
其中,该代理服务器,还可以用于建立该代理服务器,具体可参见前面的实施例,在此不再赘述。
可选的,该数据处理系统还可以包括其他的设备,比如客户端、以及关系型数据库等,例如,具体可以如下:
客户端,用于向代理服务器发送数据处理请求。
关系型数据库,用于接收代理服务器发送的据处理请求,并根据该数据处理请求进行处理,比如,如果该数据处理请求为插入语句,则进行插入操作;如果该数据处理请求为查询语句,则进行查询操作;如果该数据处理请求为联合查询(join)语句,则进行联合查询操作,等等。
该关系型数据库,还可以用于返回相应的数据处理结果给应用服务器。
则此时,代理服务器,还可以用于接收关系型数据库发送的数据处理结果,并将该数据处理结果发送给客户端。
该客户端,还可以用于接收代理服务器返回的数据处理结果,比如插入结果或查询结果,等等。
以上各个设备的具体实施可参见前面的实施例,在此不再赘述。
由于该数据处理系统可以包括本发明实施例所提供的任一种数据处理装置,因此,可以实现本发明实施例所提供的任意一种数据处理装置所能实现的有益效果,具体可参见前面的实施例,在此不再赘述。
实施例八、
本发明实施例还提供一种服务器,具体可以为代理服务器,如图6所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器601、一个或一个以上计算机可读存储介质的存储器602、射频(Radio Frequency,RF)电路603、电源604、输入单元605、以及显示单元606等部件。本领域技术人员可以理解,图6中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器601是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器601可包括一个或多个处理核心;优选的,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。
存储器602可用于存储软件程序以及模块,处理器601通过运行存储在存储器602的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器602还可以包括存储器控制器,以提供处理器601对存储器602的访问。
RF电路603可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器601处理;另外,将涉及上行的数据发送给基站。通常,RF电路603包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路603还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobilecommunication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband CodeDivision Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
服务器还包括给各个部件供电的电源604(比如电池),优选的,电源604可以通过电源管理系统与处理器601逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源604还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元605,该输入单元605可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元605可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器601,并能接收处理器601发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元605还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
该服务器还可包括显示单元606,该显示单元606可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元606可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器601以确定触摸事件的类型,随后处理器601根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图6中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
尽管未示出,服务器还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,服务器中的处理器601会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器602中,并由处理器601来运行存储在存储器602中的应用程序,从而实现各种功能,如下:
接收客户端发送的数据处理请求,该数据处理请求携带分片字段;根据该数据处理请求获取预设的路由表,该路由表保存有关系型数据库的结构信息,该关系型数据库包括多个子库,该子库包括多个分表,该多个分表之间存在外键关联关系,该分表包括多个分片;根据该分片字段和路由表确定目标子库;将该数据处理请求发送给该目标子库,以便该目标子库根据该数据处理请求进行处理。
其中,该数据处理请求可以包括多种SQL语句,比如,具体可以为关系型数据库的插入语句、查询语句、删除语句、更改语句或联合查询语句等。
其中,该关系型数据库可以由维护人员预先进行建立,或者,也可以由系统自行进行建立,即处理器601还可以实现如下功能:
接收客户端发送的关系型数据库的建表语句,该建表语句指示需要建立的分表名称;对该建表语句进行语法分析,以确定该建表语句中是否指定了分片字段的字段名,若是,则建立该分表名称与字段名之间的关联关系,将该关联关系记录到预设的路由表中,并将该建表语句发送给关系型数据库,以进行建表操作;若否,则拒绝该建表语句。
此外,可选的,该方案还可以支持单后端事务,即该处理器601还可以实现如下功能:
判断该数据处理请求所对应的关系型数据库是否与上一条数据处理请求所对应的关系型数据库一致;若一致,才执行根据该数据处理请求获取预设的路由表的步骤,否则,若不一致,则拒绝该数据处理请求。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本实施例的服务器在接收到客户端发送的数据处理请求后,可以根据该数据处理请求获取预设的路由表,其中,该路由表保存有关系型数据库的结构信息,(该关系型数据库包括多个子库,该子库包括多个分表,这些多个分表之间存在外键关联关系,该分表包括多个分片),然后,根据该数据处理请求中携带的分片字段和该路由表确定目标子库,并将该数据处理请求发送给该目标子库,以便该目标子库根据数据处理请求进行处理;由于在该方案中,子库和分表的路由无需客户端来查找,因此,用户无需知晓各个子库和分表之间的逻辑,也就是说,从用户的角度看,就只是一个关系型数据库,所以,相对于现有技术需要有特定的应用程序来管理分库分表及其路由规则的方案而言,该方案只需在代理层设置简单的路由即可,实现较为简单;而且,由于在该方案中,每个子库的多个分表之间均存在外键关联关系,因此,可以有效支持跨表的联合查询(join)等操作,大大改善其性能。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种基于关系型数据库的数据处理方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (19)
1.一种基于关系型数据库的数据处理方法,其特征在于,包括:
接收客户端发送的数据处理请求,所述数据处理请求携带分片字段;
根据所述数据处理请求获取预设的路由表,所述路由表保存有关系型数据库的结构信息,所述关系型数据库包括多个子库,所述子库包括多个分表,所述多个分表之间存在外键关联关系,所述分表包括多个分片;
根据所述分片字段和路由表确定目标子库;
将所述数据处理请求发送给所述目标子库,以便所述目标子库根据所述数据处理请求进行处理。
2.根据权利要求1所述的方法,其特征在于,所述接收客户端发送的数据处理请求之前,还包括:
接收客户端发送的关系型数据库的建表语句,所述建表语句指示需要建立的分表名称;
对所述建表语句进行语法分析,以确定所述建表语句中是否指定了分片字段的字段名;
若是,则建立所述分表名称与字段名之间的关联关系,将所述关联关系记录到预设的路由表中,将所述建表语句发送给关系型数据库,以进行建表操作;
若否,则拒绝所述建表语句。
3.根据权利要求2所述的方法,其特征在于,所述将所述建表语句发送给关系型数据库,以进行建表操作,包括:
确定路由表中是否存在以所述字段名为分片字段的其他分表;
若存在,则将所述建表语句发送给所述其他分表所属的子库,以进行建表操作;
若不存在,则将所述建表语句发送给关系型数据库中的所有子库,以进行建表操作。
4.根据权利要求3所述的方法,其特征在于,在进行建表操作之后,还包括:
根据所述字段名设置建立的分表与所述其他分表之间的外键关联关系。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述数据处理请求为关系型数据库的插入语句,则所述根据所述分片字段和路由表确定目标子库,包括:
对所述插入语句进行语法分析,以确定所述插入语句中是否存在所述路由表已记录的分片字段;
若存在,则根据所述插入语句中携带的分片字段查找路由表,以确定目标子库;
若不存在,则拒绝所述插入语句。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述数据处理请求为关系型数据库的查询语句、删除语句或更改语句,则所述根据所述分片字段和路由表确定目标子库,包括:
对所述查询语句、删除语句或更改语句进行语法分析,以确定所述查询语句、删除语句或更改语句中是否存在所述路由表已记录的分片字段;
若存在,则根据所述查询语句、删除语句或更改语句中携带的分片字段查找路由表,以确定目标子库;
若不存在,则将关系型数据库中的所有子库确定为目标子库。
7.根据权利要求1至4任一项所述的方法,其特征在于,所述数据处理请求为关系型数据库的联合查询语句,则所述根据所述分片字段和路由表确定目标子库,包括:
对所述联合查询语句进行语法分析,以确定所述联合查询语句是否满足第一条件或第二条件,所述第一条件为所述联合查询语句中携带值为常量的分片字段,所述第二条件为所述联合查询语句中携带所有需要进行联合查询的分表的分片字段,且分片字段之间的比较运算符为等号;
若满足第一条件或第二条件,则根据所述联合查询语句中携带的分片字段查找路由表,以确定目标子库;
若不满足第一条件和第二条件,则拒绝所述联合查询语句。
8.根据权利要求7所述的方法,其特征在于,所述将所述数据处理请求发送给所述目标子库之后,还包括:
接收所述目标子库返回的联合查询结果;
对所述联合查询结果进行聚合,得到聚合结果;
将所述聚合结果发送给客户端。
9.根据权利要求1至4任一项所述的方法,其特征在于,所述根据所述数据处理请求获取预设的路由表之前,还包括:
判断所述数据处理请求所对应的关系型数据库是否与上一条数据处理请求所对应的关系型数据库一致;
若一致,则执行根据所述数据处理请求获取预设的路由表的步骤;
若不一致,则拒绝所述数据处理请求。
10.一种基于关系型数据库的数据处理装置,其特征在于,包括:
接收单元,用于接收客户端发送的数据处理请求,所述数据处理请求携带分片字段;
获取单元,用于根据所述数据处理请求获取预设的路由表,所述路由表保存有关系型数据库的结构信息,所述关系型数据库包括多个子库,所述子库包括多个分表,所述多个分表之间存在外键关联关系,所述分表包括多个分片;
确定单元,用于根据所述分片字段和路由表确定目标子库;
发送单元,用于将所述数据处理请求发送给所述目标子库,以便所述目标子库根据所述数据处理请求进行处理。
11.根据权利要求10所述的装置,其特征在于,还包括建表单元;
所述接收单元,还用于接收客户端发送的关系型数据库的建表语句,所述建表语句指示需要建立的分表名称;
所述建表单元,对所述建表语句进行语法分析,以确定所述建表语句中是否指定了分片字段的字段名;若是,则建立所述分表名称与字段名之间的关联关系,将所述关联关系记录到预设的路由表中,将所述建表语句发送给关系型数据库,以进行建表操作;若否,则拒绝所述建表语句。
12.根据权利要求11所述的装置,其特征在于,
所述建表单元,具体用于在确定所述建表语句中指定了分片字段的字段名时,确定路由表中是否存在以所述字段名为分片字段的其他分表;若存在,则将所述建表语句发送给所述其他分表所属的子库,以进行建表操作;若不存在,则将所述建表语句发送给关系型数据库中的所有子库,以进行建表操作。
13.根据权利要求12所述的装置,其特征在于,
所述建表单元,还用于根据所述字段名设置建立的分表与所述其他分表之间的外键关联关系。
14.根据权利要求10至13任一项所述的装置,其特征在于,所述数据处理请求为关系型数据库的插入语句,则所述确定单元,具体用于:
对所述插入语句进行语法分析,以确定所述插入语句中是否存在所述路由表已记录的分片字段;
若存在,则根据所述插入语句中携带的分片字段查找路由表,以确定目标子库;
若不存在,则拒绝所述插入语句。
15.根据权利要求10至13任一项所述的装置,其特征在于,所述数据处理请求为关系型数据库的查询语句、删除语句或更改语句,则所述确定单元,具体用于:
对所述查询语句、删除语句或更改语句进行语法分析,以确定所述查询语句、删除语句或更改语句中是否存在所述路由表已记录的分片字段;
若存在,则根据所述查询语句、删除语句或更改语句中携带的分片字段查找路由表,以确定目标子库;
若不存在,则将关系型数据库中的所有子库确定为目标子库。
16.根据权利要求10至13任一项所述的装置,其特征在于,所述数据处理请求为关系型数据库的联合查询语句,则所述确定单元,具体用于:
对所述联合查询语句进行语法分析,以确定所述联合查询语句是否满足第一条件或第二条件,所述第一条件为所述联合查询语句中携带值为常量的分片字段,所述第二条件为所述联合查询语句中携带所有需要进行联合查询的分表的分片字段,且分片字段之间的比较运算符为等号;
若满足第一条件或第二条件,则根据所述联合查询语句中携带的分片字段查找路由表,以确定目标子库;
若不满足第一条件和第二条件,则拒绝所述联合查询语句。
17.根据权利要求16所述的装置,其特征在于,还包括聚合单元;
所述接收单元,还用于接收所述目标子库返回的联合查询结果;
所述聚合单元,用于对所述联合查询结果进行聚合,得到聚合结果;
所述发送单元,还用于将所述聚合结果发送给客户端。
18.根据权利要求10至13任一项所述的装置,其特征在于,还包括判断单元;
所述判断单元,用于判断所述数据处理请求所对应的关系型数据库是否与上一条数据处理请求所对应的关系型数据库一致;若一致,则触发获取单元执行根据所述数据处理请求获取预设的路由表的操作,若不一致,则拒绝所述数据处理请求。
19.一种数据处理系统,其特征在于,包括权利要求10至18任一项所述的基于关系型数据库的数据处理装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610552873.2A CN106202441A (zh) | 2016-07-13 | 2016-07-13 | 基于关系型数据库的数据处理方法、装置和系统 |
PCT/CN2017/089308 WO2018010527A1 (zh) | 2016-07-13 | 2017-06-21 | 数据处理方法、装置、系统及存储介质 |
US15/955,483 US10915550B2 (en) | 2016-07-13 | 2018-04-17 | Data processing method, apparatus, system, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610552873.2A CN106202441A (zh) | 2016-07-13 | 2016-07-13 | 基于关系型数据库的数据处理方法、装置和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106202441A true CN106202441A (zh) | 2016-12-07 |
Family
ID=57477339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610552873.2A Pending CN106202441A (zh) | 2016-07-13 | 2016-07-13 | 基于关系型数据库的数据处理方法、装置和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10915550B2 (zh) |
CN (1) | CN106202441A (zh) |
WO (1) | WO2018010527A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107222523A (zh) * | 2017-05-04 | 2017-09-29 | 北京京电电网维护集团有限公司 | 终端的数据处理方法、装置和系统 |
CN107451201A (zh) * | 2017-07-06 | 2017-12-08 | 联动优势科技有限公司 | 一种数据访问方法及设备 |
CN107491700A (zh) * | 2017-07-06 | 2017-12-19 | 联动优势科技有限公司 | 一种数据访问方法及设备 |
CN107506369A (zh) * | 2017-07-06 | 2017-12-22 | 联动优势科技有限公司 | 一种数据访问方法及设备 |
WO2018010527A1 (zh) * | 2016-07-13 | 2018-01-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、系统及存储介质 |
CN110365723A (zh) * | 2018-03-26 | 2019-10-22 | 广东神马搜索科技有限公司 | 非对称服务发现方法及设备 |
CN110633331A (zh) * | 2019-09-12 | 2019-12-31 | 金蝶蝶金云计算有限公司 | 一种关系数据库中数据提取方法、系统及相关设备 |
CN112860802A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | 数据库操作语句的处理方法、装置及电子设备 |
CN113420024A (zh) * | 2021-06-02 | 2021-09-21 | 浪潮软件股份有限公司 | 一种业务表单数据分表存储方法 |
CN117591705A (zh) * | 2024-01-19 | 2024-02-23 | 北京志翔科技股份有限公司 | 基于图搜索的分表关联方法及设备 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107124278B (zh) * | 2017-03-30 | 2021-03-30 | 腾讯科技(深圳)有限公司 | 业务处理方法、装置以及数据共享系统 |
CN110874370B (zh) * | 2018-08-10 | 2022-09-09 | 广州弘度信息科技有限公司 | 数据查询方法、装置、计算机设备和可读存储介质 |
CN110928945B (zh) * | 2018-09-04 | 2023-06-20 | 阿里巴巴集团控股有限公司 | 一种针对数据库的数据处理方法及装置,数据处理系统 |
CN110209728B (zh) * | 2019-04-22 | 2023-10-20 | 凯通科技股份有限公司 | 一种分布式异构数据库同步方法、电子设备及存储介质 |
CN112084827B (zh) * | 2019-06-14 | 2024-02-23 | 杭州海康威视数字技术股份有限公司 | 数据处理方法及装置 |
CN111782632B (zh) * | 2020-06-28 | 2024-07-09 | 百度在线网络技术(北京)有限公司 | 数据处理方法、装置、设备和存储介质 |
CN111984659B (zh) * | 2020-07-28 | 2023-07-21 | 招联消费金融有限公司 | 数据更新方法、装置、计算机设备和存储介质 |
CN111984745B (zh) * | 2020-08-18 | 2024-04-16 | 平安国际智慧城市科技股份有限公司 | 数据库字段动态扩展方法、装置、设备及存储介质 |
CN112231398B (zh) * | 2020-09-25 | 2024-07-23 | 北京金山云网络技术有限公司 | 数据存储方法、装置、设备及存储介质 |
KR20220056656A (ko) * | 2020-10-28 | 2022-05-06 | 삼성에스디에스 주식회사 | 메타 데이터 공유 서비스 제공 방법 및 장치 |
CN113392125A (zh) * | 2021-07-05 | 2021-09-14 | 北京沃东天骏信息技术有限公司 | 一种数据处理方法和装置 |
CN114116777A (zh) * | 2021-12-06 | 2022-03-01 | 深圳前海微众银行股份有限公司 | 一种数据处理方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100094882A1 (en) * | 2008-10-09 | 2010-04-15 | International Business Machines Corporation | Automated data conversion and route tracking in distributed databases |
CN104871153A (zh) * | 2012-10-29 | 2015-08-26 | 华为技术有限公司 | 用于灵活的分布式大规模并行处理(mpp)数据库的系统和方法 |
CN105426396A (zh) * | 2015-10-28 | 2016-03-23 | 深圳市万姓宗祠网络科技股份有限公司 | 一种基于路由算法的数据库分片方法、系统和中间件系统 |
CN105512200A (zh) * | 2015-11-26 | 2016-04-20 | 华为技术有限公司 | 一种分布式数据库处理的方法和设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6453314B1 (en) * | 1999-07-30 | 2002-09-17 | International Business Machines Corporation | System and method for selective incremental deferred constraint processing after bulk loading data |
GB0921851D0 (en) * | 2009-12-15 | 2010-01-27 | Geniedb | Record operation mode setting |
CN101916261B (zh) * | 2010-07-28 | 2013-07-17 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
CN102831120B (zh) * | 2011-06-15 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及系统 |
US9430550B2 (en) * | 2012-09-28 | 2016-08-30 | Oracle International Corporation | Clustering a table in a relational database management system |
CN103714097B (zh) * | 2012-10-09 | 2017-08-08 | 阿里巴巴集团控股有限公司 | 一种访问数据库的方法和装置 |
US9195701B2 (en) * | 2012-10-29 | 2015-11-24 | Futurewei Technologies, Inc. | System and method for flexible distributed massively parallel processing (MPP) database |
CN106202441A (zh) * | 2016-07-13 | 2016-12-07 | 腾讯科技(深圳)有限公司 | 基于关系型数据库的数据处理方法、装置和系统 |
-
2016
- 2016-07-13 CN CN201610552873.2A patent/CN106202441A/zh active Pending
-
2017
- 2017-06-21 WO PCT/CN2017/089308 patent/WO2018010527A1/zh active Application Filing
-
2018
- 2018-04-17 US US15/955,483 patent/US10915550B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100094882A1 (en) * | 2008-10-09 | 2010-04-15 | International Business Machines Corporation | Automated data conversion and route tracking in distributed databases |
CN104871153A (zh) * | 2012-10-29 | 2015-08-26 | 华为技术有限公司 | 用于灵活的分布式大规模并行处理(mpp)数据库的系统和方法 |
CN105426396A (zh) * | 2015-10-28 | 2016-03-23 | 深圳市万姓宗祠网络科技股份有限公司 | 一种基于路由算法的数据库分片方法、系统和中间件系统 |
CN105512200A (zh) * | 2015-11-26 | 2016-04-20 | 华为技术有限公司 | 一种分布式数据库处理的方法和设备 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10915550B2 (en) | 2016-07-13 | 2021-02-09 | Tencent Technology (Shenzhen) Company Limited | Data processing method, apparatus, system, and storage medium |
WO2018010527A1 (zh) * | 2016-07-13 | 2018-01-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、系统及存储介质 |
CN107222523A (zh) * | 2017-05-04 | 2017-09-29 | 北京京电电网维护集团有限公司 | 终端的数据处理方法、装置和系统 |
CN107222523B (zh) * | 2017-05-04 | 2021-03-26 | 北京京电电网维护集团有限公司 | 终端的数据处理方法、装置和系统 |
CN107491700A (zh) * | 2017-07-06 | 2017-12-19 | 联动优势科技有限公司 | 一种数据访问方法及设备 |
CN107506369A (zh) * | 2017-07-06 | 2017-12-22 | 联动优势科技有限公司 | 一种数据访问方法及设备 |
CN107451201A (zh) * | 2017-07-06 | 2017-12-08 | 联动优势科技有限公司 | 一种数据访问方法及设备 |
CN107491700B (zh) * | 2017-07-06 | 2020-07-14 | 联动优势科技有限公司 | 一种数据访问方法及设备 |
CN110365723B (zh) * | 2018-03-26 | 2022-02-11 | 阿里巴巴(中国)有限公司 | 非对称服务发现方法及设备 |
CN110365723A (zh) * | 2018-03-26 | 2019-10-22 | 广东神马搜索科技有限公司 | 非对称服务发现方法及设备 |
CN110633331A (zh) * | 2019-09-12 | 2019-12-31 | 金蝶蝶金云计算有限公司 | 一种关系数据库中数据提取方法、系统及相关设备 |
CN112860802A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | 数据库操作语句的处理方法、装置及电子设备 |
CN112860802B (zh) * | 2021-03-29 | 2024-06-11 | 中信银行股份有限公司 | 数据库操作语句的处理方法、装置及电子设备 |
CN113420024A (zh) * | 2021-06-02 | 2021-09-21 | 浪潮软件股份有限公司 | 一种业务表单数据分表存储方法 |
CN117591705A (zh) * | 2024-01-19 | 2024-02-23 | 北京志翔科技股份有限公司 | 基于图搜索的分表关联方法及设备 |
CN117591705B (zh) * | 2024-01-19 | 2024-05-24 | 北京志翔科技股份有限公司 | 基于图搜索的分表关联方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
US10915550B2 (en) | 2021-02-09 |
WO2018010527A1 (zh) | 2018-01-18 |
US20180232430A1 (en) | 2018-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106202441A (zh) | 基于关系型数据库的数据处理方法、装置和系统 | |
CN106202367B (zh) | 一种对象信息的处理方法及装置 | |
CN107741937A (zh) | 一种数据查询方法及装置 | |
CN103942113B (zh) | 系统重启原因的检测方法、装置及终端设备 | |
US10791074B2 (en) | Information pushing method, apparatus, and system, and computer storage medium | |
CN106453692B (zh) | 一种域名解析方法、装置和系统 | |
CN106250837A (zh) | 一种视频的识别方法、装置和系统 | |
CN104518953A (zh) | 删除消息的方法、即时通信终端及系统 | |
CN104901805B (zh) | 一种身份鉴权方法、装置和系统 | |
CN104516888B (zh) | 多维数据的权限查询方法及装置 | |
CN107357725A (zh) | 应用测试方法及装置 | |
CN108763887A (zh) | 数据库操作请求验证方法、装置、服务器及存储介质 | |
CN104992342A (zh) | 推广信息投放有效性确定方法、监测服务器及终端 | |
CN107025225A (zh) | 一种终端数据库的并行执行方法和装置 | |
CN103678502B (zh) | 信息收藏方法和装置 | |
CN107040610A (zh) | 数据同步方法、装置、存储介质、终端以及服务器 | |
CN106502703A (zh) | 一种函数调用方法和装置 | |
CN105302452A (zh) | 一种基于手势交互的操作方法及装置 | |
CN104063400B (zh) | 数据搜索方法和装置 | |
US20190223141A1 (en) | Device positioning method and apparatus | |
CN105847446A (zh) | 一种网络数据的获取方法、装置和系统 | |
CN106681884B (zh) | 一种系统调用的监控方法和装置 | |
CN105095161A (zh) | 一种显示富文本信息的方法及装置 | |
CN103533139B (zh) | 多卡用户的数据管理方法、装置及移动终端 | |
CN105471888B (zh) | 基于生物特征信息的业务验证方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for 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: 20161207 |