CN111897891A - 数据处理方法及装置 - Google Patents
数据处理方法及装置 Download PDFInfo
- Publication number
- CN111897891A CN111897891A CN202010849567.1A CN202010849567A CN111897891A CN 111897891 A CN111897891 A CN 111897891A CN 202010849567 A CN202010849567 A CN 202010849567A CN 111897891 A CN111897891 A CN 111897891A
- Authority
- CN
- China
- Prior art keywords
- query statement
- data processing
- type
- tree
- database
- 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.)
- Granted
Links
Images
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/24—Querying
- G06F16/242—Query formulation
-
- 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
- G06F16/24537—Query rewriting; Transformation of operators
-
- 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
- G06F16/24542—Plan optimisation
- G06F16/24545—Selectivity estimation or determination
-
- 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/2455—Query execution
- G06F16/24568—Data stream processing; Continuous 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
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供数据处理方法及装置,其中,所述方法包括接收携带有查询语句的数据处理请求;基于所述数据处理请求将所述查询语句转换为对应的关系代数树,且基于所述关系代数树确定所述查询语句对应的操作类型;在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求。
Description
本申请为申请号202010567428.X,申请日2020年06月19日,发明名称为“数据处理方法及装置”的分案申请。
技术领域
本说明书实施例涉及数据处理技术领域,特别涉及一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
在互联网数据库解决方案中,一般会采用读写分离的技术实现数据的读操作和写操作,而传统的读写分离提供一个读写分离连接串,针对非事务读请求按照用户配置的读权重比例将读请求下发到只读数据库,但是事务内的读请求会直接下发至主实例(即主库,提供完整的服务,包括读写链路)上,如果事务中包含了(OLAP,On-Line AnalyticalProcessing)在线分析处理类型的读请求,则会导致OLAP的读请求占用主实例过多的资源,从而影响主实例的性能及稳定性。
因此,急需提供一种可以减少和避免OLAP类型的读请求针对主实例的资源抢占,从而保证数据库的稳定性的数据处理方法。
发明内容
有鉴于此,本说明书施例提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种数据处理方法,包括:
接收携带有查询语句的数据处理请求;
基于所述数据处理请求将所述查询语句转换为对应的关系代数树,且基于所述关系代数树确定所述查询语句对应的操作类型;
在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求。
可选的,所述将所述查询语句转换为对应的关系代数树包括:
将所述查询语句解析为对应的抽象语法树,且将所述抽象语法树转换为对应的关系代数树,其中,所述关系代数树由树节点和边组成。
可选的,所述基于所述关系代数树确定所述查询语句对应的操作类型包括:
基于所述关系代数树确定所述查询语句的结构信息;
在所述查询语句的结构信息满足第一预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述基于所述关系代数树确定所述查询语句对应的操作类型包括:
基于所述关系代数树确定所述查询语句的逻辑信息;
在所述查询语句的逻辑信息满足第二预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述基于所述关系代数树确定所述查询语句的结构信息之后,还包括:
在所述查询语句的结构信息不满足第一预设规则的情况下,基于所述关系代数树确定所述查询语句的逻辑信息;
在所述查询语句的逻辑信息满足第二预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述基于所述关系代数树确定所述查询语句对应的操作类型包括:
基于所述关系代数树确定所述查询语句的结构信息以及逻辑信息;
在所述查询语句的结构信息不满足第一预设规则,以及所述查询语句的逻辑信息不满足第二预设规则的情况下,基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价;
在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述基于所述关系代数树确定所述查询语句对应的操作类型包括:
基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价;
在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价包括:
确定所述关系代数树的树节点,基于所述树节点确定所述查询语句的执行计划;
基于所述查询语句的执行计划计算所述查询语句对应的每个树节点的物理执行代价;
将每个树节点的物理执行代价进行加权相加,以获得所述查询语句的物理执行代价。
可选的,所述在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型包括:
在所述查询语句对应的任意一个树节点的物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述方法,还包括:
在所述物理执行代价大于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第二类型。
可选的,所述确定所述查询语句对应的操作类型为第二类型之后,还包括:
在所述查询语句对应的操作类型为第二类型的情况下,将所述查询语句下发至第二数据库,基于所述查询语句在所述第二数据库完成所述数据处理请求。
可选的,所述第一数据库为处理第一类型的查询语句的分布式读写数据库,所述第二数据库为处理第二类型的查询语句的分布式只读数据库。
可选的,所述第一类型为OLTP类型(On-Line Transaction Processing,在线事务处理类型);
相应的,所述在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库包括:
在所述操作类型为OLTP类型的情况下,将所述查询语句下发至所述分布式读写数据库。
可选的,所述第二类型为OLAP类型(On-Line Analytical Processing,在线分析处理类型);
相应的,所述在所述查询语句对应的操作类型为第二类型的情况下,将所述查询语句下发至第二数据库包括:
在所述查询语句对应的操作类型为OLAP类型的情况下,将所述查询语句下发至所述分布式只读数据库。
根据本说明书实施例的第二方面,提供了一种数据处理装置,包括:
处理请求接收模块,被配置为接收携带有查询语句的数据处理请求;
操作类型确定模块,被配置为基于所述数据处理请求将所述查询语句转换为对应的关系代数树,且基于所述关系代数树确定所述查询语句对应的操作类型;
数据库确定模块,被配置为在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求。
根据本说明书实施例的第三方面,提供了一种数据处理系统,包括:
路由模块、读写分布式数据节点以及只读分布式数据节点,其中,
所述路由模块,被配置为接收携带查询语句的数据处理请求,且基于所述数据处理请求确定所述查询语句对应的所述操作类型,
在所述操作类型为OLTP类型的情况下,将所述查询语句下发至所述读写分布式数据节点,且基于所述查询语句在所述读写分布式数据节点完成所述数据处理请求,
在所述操作类型为OLAP类型的情况下,将所述查询语句下发至所述只读分布式数据节点,且基于所述查询语句在所述只读分布式数据节点完成所述数据处理请求。
根据本说明书实施例的第四方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,其中,所述处理器执行所述计算机可执行指令时实现所述数据处理方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述数据处理方法的步骤。
本说明书一个实施例实现了一种数据处理方法及装置,其中,所述方法包括接收携带有查询语句的数据处理请求;基于所述数据处理请求将所述查询语句转换为对应的关系代数树,且基于所述关系代数树确定所述查询语句对应的操作类型;在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求;所述数据处理方法能够智能识别出客户端发送的SQL语句对应的操作类型为第一类型,即(OLTP)在线事务处理类型还是第二类型,即(OLAP)在线分析处理类型,且在确定SQL语句对应的操作类型为(OLTP)在线事务处理类型的情况下,才会将该SQL语句下发至主实例上进行处理,保证了OLTP负载流量的低延迟和高吞吐,保证了数据库的稳定性。
附图说明
图1是本说明书一个实施例提供的一种数据处理装置的架构示意图;
图2是本说明书一个实施例提供的一种数据处理方法的流程图;
图3是本说明书一个实施例提供的一种数据处理方法在HTAP分布式数据库的应用流程图;
图4是本说明书一个实施例提供的一种数据处理方法中智能路由对SQL语句对应的操作类型的具体分析流程图;
图5是本说明书一个实施例提供的一种数据处理装置的结构示意图;
图6是本说明书一个实施例提供的一种数据处理系统的结构示意图;
图7是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
负载:数据库中的负载主要分为(OLTP)在线事务处理类型负载和(OLAP)在线分析处理类型负载。
OLTP:On-Line Transaction Processing,在线事务处理类型,主要包含如涉及少范围数据的增删改查等SQL。
OLAP:On-Line Analytical Processing,在线分析处理类型,主要包含如涉及大范围数据的复杂查询分析型SQL。
HTAP混合负载:(OLTP)在线事务处理类型负载和(OLAP)在线分析处理类型负载同时共存的负载。
读写实例:可以进行读和写操作的数据库实例。
只读实例:只能进行读操作的数据库实例。
SQL:结构化查询语言(Structured Query Language),简称SQL,是一种特殊目的的编程语言,是一种数据库查询的程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
执行计划:一条SQL会对应多个等价执行计划,执行计划包含了如何实际执行一条SQL。
Cost:执行计划的代价,包含CPU,Memory,IO等信息。
RT:Response Time,事务从请求到系统处理完成后返回结果的时间,即响应时间。
在本说明书中,提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1,图1示出了本说明书一个实施例提供的一种数据处理装置的架构示意图,包括:客户端102、智能路由104(即读写分离链接串),第一数据库106,第二数据库108,其中,第一数据库106可以理解为分布式读写数据库,第二数据库108可以理解为分布式只读数据库,实际应用中,第一数据库106也可以看作分布式读写数据库的读写分布式数据节点,即RW节点,第二数据库108也可以看作分布式只读数据库的只读分布式数据节点,即RO节点。
具体实施时,客户端102发送针对第一数据库106或第二数据库108的查询语句以进行数据处理,智能路由104接收客户端102发送的查询语句后,对该查询语句进行解析,确定该查询语句对应的执行计划,然后基于该执行计划计算出该查询语句的物理执行代价,例如执行该查询语句时CPU要执行的指令的数量,执行这些数量的指令需要的内存(Memory),IO访问次数以及需要多少个网络(Net)交互等,最后根据该查询语句的物理执行代价确定该查询语句对应的操作类型,在该操作类型为OLTP类型的情况下,将查询语句下发至第一数据库106,而在该操作类型为OLAP类型的情况下,将查询语句下发至第二数据库108,以在第一数据库106或第二数据库108完成客户端的数据处理请求,其中,所述查询语句为SQL语句。
下面对所述数据处理方法的具体处理过程进行详细说明,具体实施时,所述数据处理方法应用于HTAP分布式数据库中,且下述数据处理方法均以智能路由104的为执行主体进行描述。
参见图2,图2示出了根据本说明书一个实施例提供的一种数据处理方法的流程图,包括以下步骤:
步骤202:接收携带有查询语句的数据处理请求。
其中,数据处理请求包括但不限于数据查询请求、数据更新请求、数据读取请求、以及数据写入请求等;所述查询语句为SQL语句。
而该数据处理请求中携带的查询语句,即为数据处理请求的具体数据要求,例如数据处理请求为数据插入请求,而该数据处理请求中携带的查询语句则可以具体体现出将哪些数据从哪个数据库的表读取出来插入到哪个数据库的哪个表中。
举例说明,客户端发送的数据处理请求为数据插入请求,对应该数据插入请求中携带的查询语句则可以为:insert into T select name from S,即从S表中选择name字段插入到T表中。
步骤204:基于所述数据处理请求将所述查询语句转换为对应的关系代数树,且基于所述关系代数树确定所述查询语句对应的操作类型。
其中,基于所述数据处理请求将所述查询语句转换为对应的关系代数树可以理解为,基于所述数据处理请求对所述查询语句进行解析,而具体对所述查询语句的解析过程则是将所述查询语句转换为对应的关系代数树的过程。
具体的,所述将所述查询语句转换为对应的关系代数树包括:
将所述查询语句解析为对应的抽象语法树,且将所述抽象语法树转换为对应的关系代数树,其中,所述关系代数树由树节点和边组成。
其中,抽象语法树的英文全称为:Abstract Syntax Tree,英文简称为:AST,而将查询语句解析为对应的抽象语法树,则是将查询语句进行解析,以树状的形式表现出其语法结构。
仍以上述数据插入请求中携带的查询语句:insert into T select name from S为例,将所述查询语句解析为对应的抽象语法树,则是将查询语句以树状的形式表现出来,例如将“insert”作为树的第一个节点,该节点下面再分为两个输入分支节点,其中,一个节点为“T”,另一个节点为“select name from S”,而“select name from S”节点下又可以有两个分支节点:“S”节点和“name”节点。
而在将查询语句解析为对应的抽象语法树后,再将ATS抽象语法树转换为对应的关系代数树,而关系代数树由树节点和边组成,仍以上述数据插入请求中携带的查询语句为例,该关系代数树的树节点至少包括表扫描节点、映射节点以及写入节点,通过该关系代数树的树节点以及连接各树节点的边连接关系,可以确定出该查询语句:需要扫描S表,然后将S表中的name字段映射出来,然后将映射出的name字段写入到T表。
具体的,在将查询语句具体转换为对应的关系代数树之后,即可基于该关系代数树确定查询语句对应的操作类型。
本说明书实施例中,所述数据处理方法通过将查询语句转换为关系代数树结构的优化策略,使得基于关系代数树结构的查询语句针对数据库进行数据处理时,极大的提高了数据处理效率。
具体实施时,为了快速的确定查询语句的操作类型,可以通过查询语句对应的关系代数树确定的查询语句的结构信息来实现,具体实现方式如下所述:
所述基于所述关系代数树确定所述查询语句对应的操作类型包括:
基于所述关系代数树确定所述查询语句的结构信息;
在所述查询语句的结构信息满足第一预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
其中,第一预设规则为预设的满足第一类型的查询语句对应的结构信息的要求。
具体的,查询语句的关系代数树可以体现出对应的SQL的具体结构信息,例如SQL中有没有主键、主键有没有索引、索引有没有等值条件等,若第一预设规则为查询语句中要存在主键、主键有对应索引以及索引有等值条件,那么通过查询语句对应的关系代数树中确定到该查询语句的结构信息中包括:主键、主键有对应索引,且索引也存在等值条件,那么则可以确定该查询语句的结构信息满足第一预设规则,此时,则可以确定该查询语句对应的操作类型为第一类型;而第一类型则为上述的OLTP类型。
本说明书实施例中,所述数据处理方法通过基于关系代数树结构的查询语句的结构信息与预设规则的匹配,可以快速的确定出查询语句对应的操作类型,后续可以基于准确的操作类型将该查询语句下发到合适的数据库中进行数据处理,极大的提高了数据处理的工作效率。
而具体应用时,每个查询语句对应的关系代数树均有树节点进行表达,即每个查询语句均可以由对应的树节点表达,因此为了更加快速的确定查询语句对应的操作类型,可以通过查询语句对应的树节点进行确定,具体实现方式如下所述:
所述基于所述关系代数树确定所述查询语句的结构信息包括:
基于所述关系代数树确定所述查询语句的结构信息;
相应的,所述在所述查询语句的结构信息满足第一预设规则的情况下,确定所述查询语句对应的操作类型为第一类型包括:
在所述查询语句的结构信息中的树节点满足第一预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
其中,查询语句对应的关系代数树的树节点可以表达每个查询语句的具体含义,在确定关系代数树的树节点之后,根据该树节点即可以看出对应的查询语句的结构信息,即可以理解为该查询语句的结构信息中包括多个树节点。
仍以上述数据插入请求中携带的查询语句为例,将该查询语句解析后可以确定该查询语句对应的关系代数树包括至少3个树节点:表扫描节点、映射节点以及写入节点等,此时则可以确定该查询语句的结构信息中至少包括:表扫描节点、映射节点以及写入节点等;若第一预设规则为查询语句的结构信息中的树节点的数量小于等于预设数量阈值,如3个的情况下,确定该查询语句对应的操作类型为第一类型;则根据上述可知该查询语句的结构信息中包括3个树节点,因此满足第一预设规则,此时则可以确定该查询语句对应的操作类型为第一类型。
本说明书实施例提供的所述数据处理方法,通过基于关系代数树结构的查询语句的结构信息的树节点与预设规则的匹配方法,可以更快速的确定出查询语句对应的操作类型,后续可以基于准确的操作类型将该查询语句下发到合适的数据库中进行数据处理,极大的提高了数据处理的工作效率。
此外,基于查询语句对应的关系代数树还可以确定查询语句对应的逻辑信息,在另外一种可实现的情况下,还可以基于对查询语句对应的逻辑信息的匹配,对查询语句对应的操作类型进行确定,具体实现方式如下所述:
所述基于所述关系代数树确定所述查询语句对应的操作类型包括:
基于所述关系代数树确定所述查询语句的逻辑信息;
在所述查询语句的逻辑信息满足第二预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
其中,第二预设规则为预设的满足第一类型的查询语句对应的逻辑信息的要求,例如通过第二预设规则对表的行数目、过滤后的行数目的要求。
具体的,基于关系代数树可以确定出查询语句的逻辑信息,仍以上述数据插入请求中携带的查询语句为例,基于该查询语句的关系代数树可以确定出该查询语句的逻辑信息为:S表中的总行数目为1000行,若该查询语句后面有个where条件:where age=20,按照该where条件过滤后的S表中的name字段的行数为300行。
此时,若第二预设规则为:查询语句中表的行数目小于等于第一预设行数阈值,例如1000,过滤后的行数据小于等于第二预设行数阈值,例如500,那么可以确定上述查询语句的逻辑信息与第二预设规则匹配,此时则可以确定该查询语句对应的操作类型为第一类型。
本说明书实施例提供的所述数据处理方法,通过将查询语句的逻辑信息与预设逻辑信息进行匹配的方式,快速便捷的确定出查询语句对应的操作类型,提升用户体验。
在另一种可实现的实施例中,为了保证对第一类型的查询语句判断的准确性,即使在查询语句的结构信息不满足第一预设规则的情况下,也不会直接将该查询语句定义为第二类型,而会通过查询语句的逻辑信息再进行一次判断,具体实现方式如下:
所述基于所述关系代数树确定所述查询语句的结构信息之后,还包括:
在所述查询语句的结构信息不满足第一预设规则的情况下,基于所述关系代数树确定所述 查询语句的逻辑信息;
在所述查询语句的逻辑信息满足第二预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
具体的,在基于关系代数树确定的查询语句的结构信息不满足第一预设规则,但是确定该查询语句的逻辑信息满足第二预设规则的情况下,依然会将该查询语句对应的操作类型定义为第一类型,以便后续可以在该第一类型对应的第一数据库进行该查询语句的数据处理,提高对第一类型的查询语句的低延时和高吞吐的处理。
实际应用中,即使在查询语句的结构信息不满足第一预设规则,且该查询语句的逻辑信息也不满足第二预设规则的情况下,为了对第一类型的查询语句的无遗漏筛选,还会对该查询语句进行再一次的判断,具体实现方式如下:
所述基于所述关系代数树确定所述查询语句对应的操作类型包括:
基于所述关系代数树确定所述查询语句的结构信息以及逻辑信息;
在所述查询语句的结构信息不满足第一预设规则,以及所述查询语句的逻辑信息不满足第二预设规则的情况下,基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价;
在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
其中,执行计划可以理解为实际执行一条SQL语句的计划,例如先执行该SQL语句中的表的字段的读取,再执行该SQL语句中的读取字段的写入等,而物理执行代价则为Cost,即执行一条SQL语句计划CPU要执行的指令数量,执行这些数量的指令需要的Memory,IO访问次数以及需要多少个网络(Net)交互等。
而预设代价阈值可以根据实际应用进行设置,在此不做任何限定,例如设置为2万、3万等等。
具体的,首先基于关系代数树确定对应的查询语句的执行计划,然后根据执行计划计算出执行该SQL语句时所要付出的物理执行代价,然后在物理执行代价小于等于预设代价阈值,例如2万的情况下,确定该查询语句对应的操作类型为第一类型。
在本说明书另一个可实施的方案中,也可以在接收到查询语句之后,直接基于上述的代价规则实现对查询语句对应的操作类型的判断,以提高数据处理效率,具体实现方式如下所述:
所述基于所述关系代数树确定所述查询语句对应的操作类型包括:
基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价;
在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
而具体的,所述基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价包括:
确定所述关系代数树的树节点,基于所述树节点确定所述查询语句的执行计划;
基于所述查询语句的执行计划计算所述查询语句对应的每个树节点的物理执行代价;
将每个树节点的物理执行代价进行加权相加,以获得所述查询语句的物理执行代价。
具体实施时,可以根据查询语句的执行计划计算出查询语句中每个树节点的物理执行代价,然后将该查询语句中所有树节点的物理执行代价加权相加,以获得最终的查询语句的物理执行代价。
实际应用中,每个物理执行代价的权重均不相同,因此在进行查询语句的物理执行代价计算时,每个物理执行代价会乘以对应的权重后相加,以确保最终的查询语句的物理执行代价的精确性。
而具体应用时,物理执行代价和预设代价阈值的比较一般会存在两种情况,第一种:
所述在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型包括:
在所述查询语句对应的任意一个树节点的物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
即在计算出查询语句的每个树节点的物理执行代价后,即可基于每个树节点的物理执行代价确定对应的查询语句对应的操作类型,例如每个树节点的物理执行代价均有一个对应的预设代价阈值,如查询语句包括树节点1和树节点2,树节点1对应的预设代价阈值为2000,树节点2的预设代价阈值为3000,那么无论是该查询语句中的树节点1或者是树节点2小于等于其对应的预设代价阈值,均可以认为该查询语句对应的操作类型为第一类型。
第二种:所述在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型包括:
在所述查询语句对应的所有树节点的物理执行代价的总和小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
即是在将所有树节点的物理执行代价进行加权相加后,获得查询语句的总的物理执行代价,在总的物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
本说明书实施例提供的所述数据处理方法,在根据查询语句的执行计划确定出每个树节点的物理执行代价后,在该查询语句对应的任意一个树节点的物理执行代价小于等于预设代价阈值的情况下,就可以确定该查询语句对应的操作类型为第一类型,可以极大的提高第一类型的查询语句的筛选率,保证OLTP类型的查询语句后续可以在第一数据库执行,提高其数据处理执行率。
步骤206:在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求。
具体的,在通过上述多种方式确定了查询语句对应的操作类型为第一类型的情况下,就可以将该查询语句下发至第一数据库,在第一数据库根据该查询语句执行数据处理请求。
具体实施时,所述第一类型为OLTP类型,此时,所述第一数据库则为分布式读写数据库;
相应的,所述在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库包括:
在所述操作类型为OLTP类型的情况下,将所述查询语句下发至所述分布式读写数据库。
本说明书另一实施例中,在通过上述所有的方式对查询语句进行了判断之后,若该查询语句的物理执行代价大于预设代价阈值,才可以确定该查询语句对应的操作类型为第二类型,具体实现方式如下所述:
所述方法,还包括:
在所述物理执行代价大于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第二类型。
其中,第二类型为OLAP类型,即在该查询语句的结构信息不满足第一预设规则,逻辑信息不满足第二预设规则,且物理执行代价大于预设代价阈值的情况下,才可以确定该查询语句对应的操作类型为OLAP类型,以实现数据处理的读写分离,保证数据库的稳定性。
而在查询语句对应的操作类型为第二类型的情况下,则是要将查询语句下发至第二数据库,基于该查询语句在第二数据库完成数据处理请求,具体实现方式如下:
所述确定所述查询语句对应的操作类型为第二类型之后,还包括:
在所述查询语句对应的操作类型为第二类型的情况下,将所述查询语句下发至第二数据库,基于所述查询语句在所述第二数据库完成所述数据处理请求。
具体实施时,所述第二类型为OLAP类型,此时,第二数据库则为分布式只读数据库;
相应的,所述在所述查询语句对应的操作类型为第二类型的情况下,将所述查询语句下发至第二数据库包括:
在所述查询语句对应的操作类型为OLAP类型的情况下,将所述查询语句下发至所述分布式只读数据库。
具体的,OLAP类型的查询语句一般为复杂分析的查询语句,若将OLAP类型和OLTP类型的查询语句均下发至同一个数据库进行数据处理,则会造成资源抢占,而为了保证数据库的稳定性,采用本说明书实施例的所述数据处理方法实现的良好的读写分离策略能够减少和避免OLAP类型的负载对OLTP类型负载的资源的抢占,从而使得数据库更为稳定性。
而具体的,所述第一数据库为处理第一类型的查询语句的分布式读写数据库,所述第二数据库为处理第二类型的查询语句的分布式只读数据库,即可以理解为第一数据库为主库,第二数据库为备库,其中,主库中的数据会同步到备库中,但是备库中的数据会有一定的延时,由于OLTP类型的查询语句的数据处理一般会对数据库中的数据进行变化,而OLAP类型的查询语句的数据处理一般是对数据库中数据的查询、探索等,为了保证数据的完整性以及数据处理的效率,即将OLTP类型的查询语句的数据处理分发到第一数据库执行,以保证数据的读写完整性,将QLAP类型的查询语句的数据处理分发到第二数据库执行,以避免OLAP类型的负载对OLTP类型负载的资源的抢占,从而使得数据库更为稳定性,以及提高数据处理的工作效率。
参见图3,以本说明书提供的数据处理方法在HTAP分布式数据库的应用为例,对所述数据处理方法中的SQL语句对应的操作类型为事务处理类型的情况进行进一步说明,具体包括以下步骤:
步骤302:客户端(Client)发送携带有SQL语句的数据处理请求至HTAP分布式数据库。
步骤304:分布式数据库中的智能路由对SQL语句进行解析,确定SQL语句对应的操作类型。
步骤306:分布式数据库中的智能路由确定SQL语句对应的操作类型为OLTP类型的情况下,将SQL语句下发至对应的RDS1数据节点。
其中,RDS数据节点即为读写数据库的分布式数据节点,例如图3中的RDS1和RDS2均为读写数据库的分布式数据节点,区别仅在于RDS1与RDS2中存放的数据是不同的,例如RDS1对应存储的是字段name、age的数据,RDS2中对应存储的是字段duty、address的数据,那么对SQL语句进行解析后,将需要针对RDS1中的字段进行数据处理的SQL语句下发至RDS1,将需要针对RDS2中的字段进行数据处理的SQL语句下发至RDS2。
步骤308:RDS1接收SQL语句,并在其数据节点上执行该SQL语句。
步骤310:RDS1将对SQL语句的执行结果返回至分布式数据库。
步骤312:分布式数据库将SQL语句下发至对应的RD2数据节点。
步骤314:RDS2接收SQL语句,并在其数据节点上执行该SQL语句。
步骤316:RDS2将对SQL语句的执行结果返回至分布式数据库。
步骤318:分布式数据库对RDS1和RDS2返回的结果进行整合计算。
步骤320:分布式数据库将整合计算的结果返回至Client。
具体的,步骤306、步骤308、步骤310与步骤312、步骤314、步骤316的执行无先后顺序要求,实际使用中可以并行执行,根据实际应用设置执行顺序即可。
此外,一个SQL语句可能会同时下发至分布式数据库的多个RDS数据节点进行执行,具体需要多少数量的RDS数据节点执行该SQL语句,则是要根据解析后的SQL语句的具体待执行内容进行确定,在此不做任何限定,例如该SQL语句中待执行的数据分别存放在5个RDS数据节点,则执行该SQL语句需要同时将该SQL语句下发至对应的5个RDS数据节点进行数据处理。
本说明书实施例提供的所述数据处理方法,在智能路由模块接收到用户的SQL语句的数据处理请求后,对SQL语句进行负载类型分析,根据分析结果确定SQL语句的负载类型为OLTP类型负载的情况下,在读写数据库的分布式数据节点执行该SQL语句,以提高数据处理的低延迟和高吞吐。
参见图4,图4示出了本说明书一个实施例提供的一种数据处理方法中智能路由对SQL语句对应的操作类型的具体分析流程图,具体包括以下步骤:
步骤402:SQL解析为AST抽象语法树。
具体的,在接收客户端发送的SQL语句之后,将SQL语句解析为AST抽象语法树。
步骤404:AST抽象语法树转化为关系代数树。
步骤406:前置规则根据结构信息及逻辑信息判断路由。
其中,前置规则可以理解为上述实施例的第一预设规则以及第二预设规则。
具体的,前置规则根据结构信息及逻辑信息判断路由,即可以理解为,判断SQL语句的结构信息及逻辑信息是否与前置规则匹配,若是,则执行步骤412,若否,则执行步骤408。
步骤408:通过基于代价的优化器优化出物理执行计划。
具体的,基于代价的优化器优化出物理执行计划,即基于代价的优化器为待执行的SQL语句制定的物理执行计划,该物理执行计划包含了如何实际执行该SQL语句。
步骤410:代价规则根据代价信息判断路由。
具体的,根据上述SQL语句制定的物理执行计划计算出执行该SQL语句的物理执行代价,其中,物理执行代价可以参见上述实施例,在此不再赘述;然后根据计算得到的物理执行代价判断该SQL语句需要路由到哪个数据库。
步骤412:路由结果。
具体的,在SQL语句的结构信息及逻辑信息与前置规则匹配的情况下,可以确定该SQL语句需要路由到读写数据库的分布式数据节点上,而在SQL语句的结构信息及逻辑信息与前置规则不匹配,然后可以根据SQL语句的物理执行代价确定该SQL语句需要路由到读写数据库还是只读数据库中,实现SQL语句的读写分离,使得最终OLTP类型的请求会被路由至RW(读写)节点,而OLAP类型的请求会被路由至RO(只读)节点,从而保证了高并发的OLTP类型的SQL有稳定的RT和吞吐,且不会被消耗大量资源的OLAP类型的SQL请求影响,保证数据库的稳定性。
本说明书实施例提供的所述数据处理方法设计了一种能够智能识别出OLTP和OLAP类型的负载的读写分离路由算法,用于读写分离,能够做到OLAP负载流量不影响OLTP负载流量,保证OLTP负载流量低延迟和高吞吐,无需人工干预,就可以很好地解决OLAP负载与OLTP负载相互影响的问题。
与上述方法实施例相对应,本说明书还提供了数据处理装置实施例,图5示出了本说明书一个实施例提供的一种数据处理装置的结构示意图。如图5所示,该装置包括:
处理请求接收模块502,被配置为接收携带有查询语句的数据处理请求;
操作类型确定模块504,被配置为基于所述数据处理请求将所述查询语句转换为对应的关系代数树,且基于所述关系代数树确定所述查询语句对应的操作类型;
数据库确定模块506,被配置为在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求。
可选的,所述操作类型确定模块504,进一步被配置为:
将所述查询语句解析为对应的抽象语法树,且将所述抽象语法树转换为对应的关系代数树,其中,所述关系代数树由树节点和边组成。
可选的,所述操作类型确定模块504,进一步被配置为:
基于所述关系代数树确定所述查询语句的结构信息;
在所述查询语句的结构信息满足第一预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述操作类型确定模块504,进一步被配置为:
基于所述关系代数树确定所述查询语句的逻辑信息;
在所述查询语句的逻辑信息满足第二预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述装置,还包括:
逻辑信息确定模块,被配置为在所述查询语句的结构信息不满足第一预设规则的情况下,基于所述关系代数树确定所述查询语句的逻辑信息;
事务类型确定模块,被配置为在所述查询语句的逻辑信息满足第二预设规则的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述操作类型确定模块504,进一步被配置为:
基于所述关系代数树确定所述查询语句的结构信息以及逻辑信息;
在所述查询语句的结构信息不满足第一预设规则,以及所述查询语句的逻辑信息不满足第二预设规则的情况下,基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价;
在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述操作类型确定模块504,进一步被配置为:
基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价;
在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述操作类型确定模块504,进一步被配置为:
确定所述关系代数树的树节点,基于所述树节点确定所述查询语句的执行计划;
基于所述查询语句的执行计划计算所述查询语句对应的每个树节点的物理执行代价;
将每个树节点的物理执行代价进行加权相加,以获得所述查询语句的物理执行代价。
可选的,所述操作类型确定模块504,进一步被配置为:
在所述查询语句对应的任意一个树节点的物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
可选的,所述装置,还包括:
第二类型确定模块,被配置为在所述物理执行代价大于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第二类型。
可选的,所述装置,还包括:
数据处理模块,被配置为在所述查询语句对应的操作类型为第二类型的情况下,将所述查询语句下发至第二数据库,基于所述查询语句在所述第二数据库完成所述数据处理请求。
可选的,所述第一数据库为处理第一类型的查询语句的分布式读写数据库,所述第二数据库为处理第二类型的查询语句的分布式只读数据库。
可选的,所述第一类型为OLTP类型;
相应的,所述数据库确定模块,进一步被配置为:
在所述操作类型为OLTP类型的情况下,将所述查询语句下发至所述分布式读写数据库。
可选的,所述第二类型为OLAP类型;
相应的,所述数据处理模块,进一步被配置为:
在所述查询语句对应的操作类型为OLAP类型的情况下,将所述查询语句下发至所述分布式只读数据库。
本说明书一个实施例实现了一种数据处理装置,能够智能识别出客户端发送的SQL语句对应的操作类型为(OLTP)在线事务处理类型还是(OLAP)在线分析处理类型,且在确定SQL语句对应的操作类型为(OLTP)在线事务处理类型的情况下,才会将该SQL语句下发至主实例(即读写数据库)上进行处理,保证了OLTP负载流量的低延迟和高吞吐,保证了数据库的稳定性。
上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
参见图6,图6示出了根据本说明书一个实施例提供的一种数据处理系统的结构示意图。
所述数据处理系统包括:路由模块602、读写分布式数据节点604以及只读分布式数据节点606,其中,
所述路由模块602,被配置为接收携带查询语句的数据处理请求,且基于所述数据处理请求确定所述查询语句对应的所述操作类型,
在所述操作类型为OLTP类型的情况下,将所述查询语句下发至所述读写分布式数据节点604,且基于所述查询语句在所述读写分布式数据节点604完成所述数据处理请求,
在所述操作类型为OLAP类型的情况下,将所述查询语句下发至所述只读分布式数据节点606,且基于所述查询语句在所述只读分布式数据节点606完成所述数据处理请求。
本说明书实施例提供的所述数据处理系统中,路由模块602在接收客户端发送的携带有查询语句的数据处理请求后,基于所述数据处理请求将所述查询语句转换为对应的关系代数树,且基于所述关系代数树确定所述查询语句对应的操作类型;在所述操作类型为OLTP类型的情况下,将所述查询语句下发至所述读写分布式数据节点604,且基于所述查询语句在所述读写分布式数据节点604完成所述数据处理请求;或者在所述操作类型为OLAP类型的情况下,将所述查询语句下发至所述只读分布式数据节点606,且基于所述查询语句在所述只读分布式数据节点606完成所述数据处理请求,所述路由模块602能够智能识别出客户端发送的查询语句对应的操作类型为OLTP类型还是OLAP类型,且在确定查询语句对应的操作类型为OLTP类型的情况下,才会将该查询语句下发至主实例上进行处理,保证了OLTP负载流量的低延迟和高吞吐,保证了数据库的稳定性。
图7示出了根据本说明书一个实施例提供的一种计算设备700的结构框图。该计算设备700的部件包括但不限于存储器710和处理器720。处理器720与存储器710通过总线730相连接,数据库750用于保存数据。
计算设备700还包括接入设备740,接入设备740使得计算设备700能够经由一个或多个网络760通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备740可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备700的上述部件以及图7中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图7所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备700可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备700还可以是移动式或静止式的服务器。
其中,处理器720用于执行如下计算机可执行指令:
接收携带有查询语句的数据处理请求;
基于所述数据处理请求将所述查询语句转换为对应的关系代数树,且基于所述关系代数树确定所述查询语句对应的操作类型;
在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
接收客户端发送的携带有查询语句的数据处理请求;
基于所述数据处理请求将所述查询语句转换为对应的关系代数树,且基于所述关系代数树确定所述查询语句对应的操作类型;
在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (12)
1.一种数据处理方法,包括:
接收携带有查询语句的数据处理请求;
基于所述数据处理请求将所述查询语句解析为对应的抽象语法树,且将所述抽象语法树转换为对应的关系代数树,其中,所述关系代数树由树节点和边组成;
基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价;
在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型;
在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求。
2.根据权利要求1所述的数据处理方法,所述基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价包括:
确定所述关系代数树的树节点,基于所述树节点确定所述查询语句的执行计划;
基于所述查询语句的执行计划计算所述查询语句对应的每个树节点的物理执行代价;
将每个树节点的物理执行代价进行加权相加,以获得所述查询语句的物理执行代价。
3.根据权利要求2所述的数据处理方法,所述在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型包括:
在所述查询语句对应的任意一个树节点的物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型。
4.根据权利要求2所述的数据处理方法,所述方法,还包括:
在所述物理执行代价大于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第二类型。
5.根据权利要求4所述的数据处理方法,所述确定所述查询语句对应的操作类型为第二类型之后,还包括:
在所述查询语句对应的操作类型为第二类型的情况下,将所述查询语句下发至第二数据库,基于所述查询语句在所述第二数据库完成所述数据处理请求。
6.根据权利要求5所述的数据处理方法,所述第一数据库为处理第一类型的查询语句的分布式读写数据库,所述第二数据库为处理第二类型的查询语句的分布式只读数据库。
7.根据权利要求6所述的数据处理方法,所述第一类型为OLTP类型;
相应的,所述在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库包括:
在所述操作类型为OLTP类型的情况下,将所述查询语句下发至所述分布式读写数据库。
8.根据权利要求7所述的数据处理方法,所述第二类型为OLAP类型;
相应的,所述在所述查询语句对应的操作类型为第二类型的情况下,将所述查询语句下发至第二数据库包括:
在所述查询语句对应的操作类型为OLAP类型的情况下,将所述查询语句下发至所述分布式只读数据库。
9.一种数据处理装置,包括:
处理请求接收模块,被配置为接收携带有查询语句的数据处理请求;
操作类型确定模块,被配置为基于所述数据处理请求将所述查询语句解析为对应的抽象语法树,且将所述抽象语法树转换为对应的关系代数树,其中,所述关系代数树由树节点和边组成,基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价,在所述物理执行代价小于等于预设代价阈值的情况下,确定所述查询语句对应的操作类型为第一类型;
数据库确定模块,被配置为在所述操作类型为第一类型的情况下,将所述查询语句下发至第一数据库,基于所述查询语句在所述第一数据库完成所述数据处理请求。
10.一种数据处理系统,包括:路由模块、读写分布式数据节点以及只读分布式数据节点,其中,
所述路由模块,被配置为接收携带查询语句的数据处理请求,且基于所述数据处理请求将所述查询语句解析为对应的抽象语法树,且将所述抽象语法树转换为对应的关系代数树,其中,所述关系代数树由树节点和边组成,基于所述关系代数树确定所述查询语句的执行计划,且根据所述执行计划计算所述查询语句的物理执行代价,基于所述物理执行代价确定所述查询语句对应的操作类型,
在所述操作类型为OLTP类型的情况下,将所述查询语句下发至所述读写分布式数据节点,且基于所述查询语句在所述读写分布式数据节点完成所述数据处理请求,
在所述操作类型为OLAP类型的情况下,将所述查询语句下发至所述只读分布式数据节点,且基于所述查询语句在所述只读分布式数据节点完成所述数据处理请求。
11.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,其中,所述处理器执行所述计算机可执行指令时实现权利要求1至8任意一项所述数据处理方法的步骤。
12.一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利要求1至8任意一项所述数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010849567.1A CN111897891B (zh) | 2020-06-19 | 2020-06-19 | 数据处理方法及装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010567428.XA CN111475588B (zh) | 2020-06-19 | 2020-06-19 | 数据处理方法及装置 |
CN202010849567.1A CN111897891B (zh) | 2020-06-19 | 2020-06-19 | 数据处理方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010567428.XA Division CN111475588B (zh) | 2020-06-19 | 2020-06-19 | 数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111897891A true CN111897891A (zh) | 2020-11-06 |
CN111897891B CN111897891B (zh) | 2023-06-13 |
Family
ID=71764146
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010567428.XA Active CN111475588B (zh) | 2020-06-19 | 2020-06-19 | 数据处理方法及装置 |
CN202010849567.1A Active CN111897891B (zh) | 2020-06-19 | 2020-06-19 | 数据处理方法及装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010567428.XA Active CN111475588B (zh) | 2020-06-19 | 2020-06-19 | 数据处理方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230082563A1 (zh) |
CN (2) | CN111475588B (zh) |
WO (1) | WO2021254240A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475588B (zh) * | 2020-06-19 | 2020-12-08 | 阿里云计算有限公司 | 数据处理方法及装置 |
CN113505132A (zh) * | 2021-08-03 | 2021-10-15 | 杭州普数软件有限公司 | 基于逻辑代数的sql查询语句优化方法 |
CN114281550A (zh) * | 2021-12-29 | 2022-04-05 | 北京极致嬴图科技有限公司 | 请求处理方法、装置、计算机设备及计算机可读存储介质 |
CN115049444B (zh) * | 2022-08-15 | 2023-06-30 | 深圳市星卡软件技术开发有限公司 | 一种数据处理方法、装置、设备及介质 |
CN117349332B (zh) * | 2023-12-06 | 2024-03-01 | 宁波港信息通信有限公司 | 一种应用程序编程接口api的生成方法、装置和电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345518A (zh) * | 2013-07-11 | 2013-10-09 | 清华大学 | 基于数据块的自适应数据存储管理方法及系统 |
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和系统 |
WO2016078423A1 (zh) * | 2014-11-17 | 2016-05-26 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
US20180089268A1 (en) * | 2016-09-28 | 2018-03-29 | Electronics And Telecommunications Research Institute | Method and apparatus for optimizing query in data engine |
CN110059103A (zh) * | 2019-04-28 | 2019-07-26 | 南京大学 | 一种跨平台统一的大数据sql查询方法 |
CN110263105A (zh) * | 2019-05-21 | 2019-09-20 | 北京百度网讯科技有限公司 | 查询处理方法、查询处理系统、服务器和计算机可读介质 |
CN110309196A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 区块链数据存储和查询方法、装置、设备及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021874B (zh) * | 2007-03-21 | 2010-05-26 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
CN102609451B (zh) * | 2012-01-11 | 2014-12-17 | 华中科技大学 | 面向流式数据处理的sql查询计划生成方法 |
US10262002B2 (en) * | 2016-08-11 | 2019-04-16 | International Business Machines Corporation | Consistent execution of partial queries in hybrid DBMS |
US10311047B2 (en) * | 2016-10-19 | 2019-06-04 | Salesforce.Com, Inc. | Streamlined creation and updating of OLAP analytic databases |
CN106844545A (zh) * | 2016-12-30 | 2017-06-13 | 江苏瑞中数据股份有限公司 | 一种基于标准sql的双引擎数据库系统的实现方法 |
CN110020006B (zh) * | 2017-07-27 | 2021-04-27 | 北京国双科技有限公司 | 查询语句的生成方法及相关设备 |
CN108628972B (zh) * | 2018-04-25 | 2020-11-06 | 咪咕音乐有限公司 | 一种数据表的处理方法、装置及存储介质 |
CN110019251A (zh) * | 2019-03-22 | 2019-07-16 | 深圳市腾讯计算机系统有限公司 | 一种数据处理系统、方法及设备 |
CN111475588B (zh) * | 2020-06-19 | 2020-12-08 | 阿里云计算有限公司 | 数据处理方法及装置 |
-
2020
- 2020-06-19 CN CN202010567428.XA patent/CN111475588B/zh active Active
- 2020-06-19 CN CN202010849567.1A patent/CN111897891B/zh active Active
-
2021
- 2021-06-10 WO PCT/CN2021/099343 patent/WO2021254240A1/zh active Application Filing
-
2022
- 2022-11-18 US US18/056,936 patent/US20230082563A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345518A (zh) * | 2013-07-11 | 2013-10-09 | 清华大学 | 基于数据块的自适应数据存储管理方法及系统 |
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和系统 |
WO2016078423A1 (zh) * | 2014-11-17 | 2016-05-26 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
US20180089268A1 (en) * | 2016-09-28 | 2018-03-29 | Electronics And Telecommunications Research Institute | Method and apparatus for optimizing query in data engine |
CN110059103A (zh) * | 2019-04-28 | 2019-07-26 | 南京大学 | 一种跨平台统一的大数据sql查询方法 |
CN110263105A (zh) * | 2019-05-21 | 2019-09-20 | 北京百度网讯科技有限公司 | 查询处理方法、查询处理系统、服务器和计算机可读介质 |
CN110309196A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 区块链数据存储和查询方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
谢恒;王梅;乐嘉锦;孙莉;: "基于Hive的计算结果特征提取与重用策略" * |
Also Published As
Publication number | Publication date |
---|---|
US20230082563A1 (en) | 2023-03-16 |
CN111475588A (zh) | 2020-07-31 |
WO2021254240A1 (zh) | 2021-12-23 |
CN111475588B (zh) | 2020-12-08 |
CN111897891B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475588B (zh) | 数据处理方法及装置 | |
US20140172914A1 (en) | Graph query processing using plurality of engines | |
EP2369506B1 (en) | System and method of optimizing performance of schema matching | |
CN113297320B (zh) | 分布式数据库系统及数据处理方法 | |
Vyawahare et al. | A hybrid database approach using graph and relational database | |
US11580147B2 (en) | Conversational database analysis | |
CN103336790A (zh) | 基于Hadoop的邻域粗糙集快速属性约简方法 | |
CN111475584B (zh) | 数据处理方法、系统以及装置 | |
CN114357276A (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
CN103336791A (zh) | 基于Hadoop的粗糙集快速属性约简方法 | |
CN111444220A (zh) | 规则驱动和数据驱动相结合的跨平台sql查询优化方法 | |
WO2023125718A1 (zh) | 基于知识图谱的数据查询方法、系统、设备及存储介质 | |
CN109885585A (zh) | 支持存储过程、触发器与视图的分布式数据库系统和方法 | |
EP3776343A1 (en) | Systems and methods of generating datasets from heterogeneous sources for machine learning | |
CN112970011B (zh) | 记录查询优化中的谱系 | |
CN113505278B (zh) | 图匹配方法、装置、电子设备及存储介质 | |
CN113239063A (zh) | 一种图数据库更新方法及装置 | |
CN113806376B (zh) | 索引构建方法及装置 | |
CN113297165A (zh) | 数据处理方法、装置及数据库操作系统 | |
CN111563178A (zh) | 规则逻辑图对比方法、装置、介质及电子设备 | |
CN114817315B (zh) | 数据处理方法以及系统 | |
KR20140104544A (ko) | 의미 데이터 구축을 위한 시스템 및 방법 | |
CN111159218B (zh) | 数据处理方法、装置及可读存储介质 | |
CN113297199B (zh) | 时空数据引擎的使用方法、装置及Cassandra数据库系统 | |
CN114090627B (zh) | 一种数据查询方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |