CN111125199A - 一种数据库访问方法、装置及电子设备 - Google Patents
一种数据库访问方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111125199A CN111125199A CN201911393430.3A CN201911393430A CN111125199A CN 111125199 A CN111125199 A CN 111125199A CN 201911393430 A CN201911393430 A CN 201911393430A CN 111125199 A CN111125199 A CN 111125199A
- Authority
- CN
- China
- Prior art keywords
- database
- database query
- target
- decision tree
- query request
- 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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据库访问方法、装置及电子设备,获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征,获取数据库查询决策树,在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库,访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。即通过本发明,可以使用数据库查询决策树路由到相应的数据库,实现了不同数据库查询请求路由到与之对应的目标数据库的目的。
Description
技术领域
本发明涉及数据库访问领域,更具体的说,涉及一种数据库访问方法、装置及电子设备。
背景技术
目前在实际应用开发中,经常会在同一个应用或服务中同时访问多种数据源,如大数据领域的Impala、Hbase、Kylin等,也可以是关系型数据库,如Oracle、Mysql等。各种数据库都有自身的优缺点,适用的查询场景也各不相同。对于应用开发者来说,当接收到数据库SQL((Structured Query Language),结构化查询语言)查询时,如何根据该数据库SQL查询定位到相应的数据库并进行数据查询是本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本发明提供一种数据库访问方法、装置及电子设备,以解决当接收到数据库SQL查询时,如何根据该数据库SQL查询定位到相应的数据库并进行数据查询的问题。
为解决上述技术问题,本发明采用了如下技术方案:
一种数据库访问方法,包括:
获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征;
获取数据库查询决策树;所述数据库查询决策树表征数据库查询请求对应的数据库查询特征与数据库之间的路由关系;
在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库;
访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。
可选地,所述目标数据库的数量至少为一个;所述目标数据库按照优先级由高到低的顺序进行排列;
访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据,包括:
访问第i个优先级的目标数据库;其中,i为正整数;
获取所述目标数据库的访问运行结果数据;
若所述访问运行结果数据为指定数据,使i=i+1,直至获取到的访问运行结果数据为与数据库查询请求对应的目标数据或所有的目标数据库均访问完成时停止;
其中,所述指定数据为表征本次未成功访问到所述目标数据库的数据。
可选地,获取访问运行结果数据之后,还包括:
获取历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据;
依据数据库查询请求以及所述数据库查询请求对应的访问运行结果数据、历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据,生成新的数据库查询决策树;
依据所述新的数据库查询决策树,更新所述数据库查询决策树。
可选地,访问的多个目标数据库的优先级从高到低排序。
可选地,数据库查询决策树基于CART算法生成。
一种数据库访问装置,包括:
请求处理模块,用于获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征;
决策树获取模块,用于获取数据库查询决策树;所述数据库查询决策树表征数据库查询请求对应的数据库查询特征与数据库之间的路由关系;
数据库查询模块,用于在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库;
数据查询模块,用于访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。
可选地,所述目标数据库的数量至少为一个;所述目标数据库按照优先级由高到低的顺序进行排列;
相应的,所述数据查询模块包括:
访问子模块,用于访问第i个优先级的目标数据库;其中,i为正整数;
结果获取子模块,用于获取所述目标数据库的访问运行结果数据;
调整子模块,用于若所述访问运行结果数据为指定数据,使i=i+1,直至获取到的访问运行结果数据为与数据库查询请求对应的目标数据或所有的目标数据库均访问完成时停止;
其中,所述指定数据为表征本次未成功访问到所述目标数据库的数据。
可选地,还包括:
数据获取子模块,用于获取历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据;
决策树生成模块,用于依据数据库查询请求以及所述数据库查询请求对应的访问运行结果数据、历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据,生成新的数据库查询决策树;
决策树更新模块,用于依据所述新的数据库查询决策树,更新所述数据库查询决策树。
可选地,访问的多个目标数据库的优先级从高到低排序;数据库查询决策树基于CART算法生成。
一种电子设备,包括:存储器和处理器;
其中,所述存储器用于存储程序;
处理器调用程序并用于:
获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征;
获取数据库查询决策树;所述数据库查询决策树表征数据库查询请求对应的数据库查询特征与数据库之间的路由关系;
在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库;
访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。
相较于现有技术,本发明具有以下有益效果:
本发明提供了一种数据库访问方法、装置及电子设备,获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征,获取数据库查询决策树,在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库,访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。即通过本发明,可以使用数据库查询决策树路由到相应的数据库,实现了不同数据库查询请求路由到与之对应的目标数据库的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种数据库访问方法的逻辑架构图;
图2为本发明实施例提供的一种数据库访问方法的方法流程图;
图3为本发明实施例提供的一种决策树的结构示意图;
图4为本发明实施例提供的另一种数据库访问方法的方法流程图;
图5为本发明实施例提供的一种数据库访问装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前在实际开发过程中,我们经常会在同一个应用或服务中同时访问多种数据源,包括大数据领域的Impala、Hbase、Kylin等,也包括传统的关系型数据库,例如Oracle、MySql等。各种数据源都有自身的优缺点,适用的查询场景也各不相同,具体参照表1。对于应用开发者来说,只有学习并掌握了每种数据源的原理和特点才能在实际开发过程中正确的使用各种数据源,这就无形中增加了开发成本。
表1不同数据库的适用场景和性能指标
针对这种多数据源的混合查询场景,可以采用基于固定规则的数据查询,如某一类型的数据库SQL查询均定为到一个数据库,另一类型的数据库SQL查询均定位到另一个数据库,但是这种基于固定规则的数据查询并不能选择出与数据库SQL查询对应的最优的数据库。为此,发明人进一步发现,可以通过收集大量SQL执行数据(SQL画像),利用决策树集中的适当的分类算法,自动实时的选择出最优的数据源引擎,同时具有动态自适应和容错性强等特点,自适应是指本装置可以根据每个数据源引擎的数据量变化或者负载变化实时调整路由,容错是指当一个SQL执行时超时或者出错那么本装置就会自动重新选择合适的数据源引擎。
在上述思路的基础上,进一步开发了一种SQL路由装置,前端所有查询SQL都提交给这个SQL路由装置,它负责对SQL进行解析,并判断应该将SQL发送到哪个数据源执行,同时提供SQL转换、负载均衡、路由降级等功能。对其中的专业术语进行解释,具体的:
SQL路由:根据每个SQL的不同特征进行判断,将SQL转发到当前最合适的数据源执行。
决策树集:一系列分类算法的统称,同时支持线性特征与非线性特征,可以很好的处理高维空间的大数据量样本。
路由降级:基于前期训练结果对匹配某一SQL的数据源进行排序,当第一选择数据源由于负载、网络等原因执行SQL超时或失败时,本装置会自动选择第二数据源。
参照图1,上述的SQL路由装置位于路由层中可以实现包括但不限于SQL路由、SQL转换、权限控制、负载均衡、查询任务监控、引擎动态切换、支持动态数据源的MyBatis等功能。图1中的应用层包括各种应用程序,如**信贷应用、**数据应用等等。查询引擎中包括各种数据库,如Impala、Phoenix+HBase、kylin、Oracle等等。数据加工层用于对数据进行加工,数据加工工具包括但与限于Hive(数据仓库工具)、Spark(计算引擎)、HDFS(HadoopDistributed File System,Hadoop分布式文件系统)、Sqoop等。
上述介绍了本发明实施例中的逻辑结构,现对其SQL路由的实现过程进行介绍,具体的,本发明实施例提供了一种数据库访问方法,应用于上述的SQL路由装置,参照图2,可以包括:
S11、获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征。
数据库查询请求即为上述的数据库SQL查询,该数据库SQL查询由前端(如用户终端)生成,数据库查询请求中携带的内容包括但不限于表名、字段名、过滤条件、多表关联复杂度、聚合计算复杂度、排序、去重等。其中,排序、去重是指对该表名对应的表执行的操作,以使数据库按照这个操作执行。
获取到数据库查询请求之后,可以对该数据库查询请求进行语法解析,解析得到数据库查询特征,数据库查询特征也可以称为SQL画像数据,SQL画像数据是指对一次SQL查询特征的精确描述,包括但不限于以下特征要素:
1)查询的表、分区归属于哪个引擎;
2)读入数据量(读入数据的行数、占用空间大小),一般大数据量选择Hbase、Impala;
3)各类Join复杂度、次数;
4)聚合复杂度,高复杂度建议选择Kylin;
5)查询字段多少、关联字段多少;
6)过滤条件。
通过上述的特征要素可以看出,SQL画像数据作为特征值,可以是连续的也可以是不连续的。
此外,需要说明的是,在得到SQL画像数据之前,还可以连接元数据服务器,获取到与该数据库查询请求对应的待查找的目标数据的基本属性信息,举例来说,若查找的目标数据为表格的内容,则该基本属性数据可以是表的行数、列数等等。进而依据该SQL画像数据和基本属性信息生成执行计划,若执行计划正常,则下一步鸡西数据库查询请求,得到SQL画像数据,若执行计划异常,则推出并报错。
S12、获取数据库查询决策树。
所述数据库查询决策树表征数据库查询请求对应的数据库查询特征与数据库之间的路由关系。本实施例中的数据库查询决策树可以基于CART算法生成,则数据库查询决策树为CART决策树。
具体的,本发明的发明人发现,决策树是一种用于对实例进行分类的树形结构。如图3所示,决策树由节点(node)和有向边(directededge)组成。节点的类型有两种:内部节点(包括非叶子节点、根部节点)和叶子节点(也可以称为叶节点)。其中,内部节点表示一个特征或属性的测试条件(用于分开具有不同特性的记录),叶子节点表示一个分类。一旦我们构造了一个决策树模型,以它为基础来进行分类将是非常容易的。具体做法是,从根节点开始,对实例的某一特征进行测试,根据测试结构将实例分配到其子节点(也就是选择适当的分支,分支代表测试的结果);沿着该分支可能达到叶子节点或者到达另一个内部节点时,那么就使用新的测试条件递归执行下去,直到抵达一个叶子节点。当到达叶子节点时,我们便得到了最终的分类结果。
目前比较流行的决策树分类算法包括ID3、C4.5、C5.0以及CART。其中,ID3算法对于具有很多值的属性是非常敏感的,例如我们SQL画像数据中某个特征值对不同SQL基本上是不相同的,甚至有可能对每个SQL都是唯一的,如果我们用这个特征来划分SQL画像数据集就会得到相当大的信息增益,显然这不是我们想要的,此外ID3算法也不支持处理连续值或者缺失值特征。而C4.5和C5.0算法用增益率(Gain ratio)解决了ID3算法的不足,并且能够通过构建更小的规则集来得到更加准确的结果。CART算法跟C4.5很相似,并且还支持预测连续的值(回归),CART构建二叉树,而C4.5和C5.0则不一定,CART使用训练集和交叉验证集不断地评估决策树的性能来修剪决策树,从而使训练误差和测试误差达到平衡。
另外,SQL画像数据作为特征值,可以是连续的也可以是不连续的,这种类型的特征训练集就比较适用CART算法。
综上所述原因,我们决定使用CART算法来实现本装置的SQL路由功能。
下面介绍下CART算法的整体步骤:
一、决策树生成:基于SQL画像数据集生成决策树,生成的决策树要尽量大;
二、决策树剪枝:用验证SQL画像数据集对已生成的树进行剪枝并选择最优子树,这时损失函数最小作为剪枝的标准。
具体的,CART生成决策树算法如下:
输入:训练数据集D;(CART算法需要大量的特征训练集,此处可以把历史SQL查询的SQL画像数据作为算法输入的特征值)
输出:CART决策树。
根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉决策树:
1、设结点的训练数据集为D,计算现有特征对该数据集的Gini系数(基尼系数)。此时,对每一个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1和D2两部分,计算A=a时的Gini系数;
2、在所有可能的特征A以及它们所有可能的切分点a中,选择Gini系数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去;
3、对两个子结点递归地调用步骤l和2,直至满足停止条件。
注意:算法停止计算的条件是结点中的样本个数小于预定阈值,或样本集的Gini系数小于预定阈值(样本基本属于同一类),或者没有更多特征。
在上面的算法中,终止递归的条件中已经加入了"预剪枝"工作。这些在构建决策树过程中的剪枝操作通常被称为预剪枝。这是很有必要的,经过预剪枝的树几乎就是没有预剪枝树大小的百分之一甚至更小,以便于尽快找到目标数据库。而在决策树建立完毕之后,基于训练集和测试集能做更多更高效的剪枝工作,这些工作叫做"后剪枝"。后剪枝过程的伪代码如下:
1、基于已有的树切分测试SQL画像数据;
2、如果存在任一子集是一棵树,则在该子集上递归该过程;
3、计算将当前两个叶节点合并后的误差;
4、计算不合并的误差;
5、如果合并会降低误差,则将叶节点合并。
在生成决策树并且优化剪枝之后,剩下的工作就是通过递归遍历决策树来判断每一个SQL的最佳路由,这部分工作还涉及到决策树的存储以及动态回归。存储是指将训练集和测试集生成的决策树固化到底层存储上,这样可以为后续SQL路由提供复用的决策树;而动态回归则是指将路由后每一个SQL的运行数据回传给SQL路由装置,通过适当的回归算法(CART也支持回归)去动态更新SQL路由决策树分支,这种动态回归可以解决各个数据源数据不断变化造成的SQL执行效果不一致的情况。
由于本SQL路由装置采用决策树作为数据源选择的决策引擎,而决策树本身具有剪枝优化特性,可以对数据源的变化(包括但不限于数据源的增加或减少、数据分布变化)进行及时的路由调整,在没有人工干预的情况下,就可以使SQL执行效果达到最优。
S13、在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库。
将该数据库查询特征输入到该数据库查询决策树中,即可输出相应的目标数据库。本实施例中的数据库查询决策树为多个,不同的数据库查询决策树中包括的数据库的数量不同,并且按照包括的数据库的数量进行优先级排序,包括的数据库的数量多的数据库查询决策树的优先级高,包括的数据库的数量少的数据库查询决策树的优先级低。
将数据库查询特征输入到每一数据库查询决策树中,每一数据库查询决策树就可以得到一目标数据库,目标数据库的优先级与数据库查询决策树的优先级相同,进而多个目标数据库可以按照优先级高低进行顺序排列。
S14、访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。
在实际应用中,优先访问优先级高的数据库,若能够成功访问,则直接获取到相应的目标数据,若不能够成功访问,则路由降级,访问低等级的目标数据库。
具体的,步骤S14可以包括:
S21、访问第i个优先级的目标数据库。
其中,i为正整数。目标数据库按照优先级从高到底排序,所以先访问的是优先级最高的目标数据库。
S22、获取所述目标数据库的访问运行结果数据。
访问运行结果数据的内容为本次访问的访问过程,如可以包括访问时间长短、反馈了多少条数据、能否正常查询到数据、访问是否超时等等。
若目标数据库能够正常访问,则反馈回上述的数据,若目标数据库不能够正常访问,则会反馈访问失败的数据,该访问失败的数据即为本实施例中表征本次未成功访问到所述目标数据库的指定数据。
S23、判断所述访问运行结果数据是否为指定数据;若是,执行步骤S24;若否,结束。
S24、使i=i+1。
S25、判断所有的目标数据库均访问完成;若是,则结束,此时可以反馈访问失败的消息至前端,若否,则返回执行步骤S21。
具体的,本实施例通过决策树选择的目标数据库(也即数据源)并不一定是一个,可以是多个(按优先级排列),本SQL路由装置支持试错重新选择机制(引擎降级),当第一选择的数据源由于负载、网络等原因执行SQL超时或失败时,本装置会自动选择第二数据源,直至获取到的访问运行结果数据为与数据库查询请求对应的目标数据或所有的目标数据库均访问完成时停止。
上述查询过程结束之后,会得到本次的数据库查询请求以及访问运行结果数据,此时可以结合历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据来更新数据库查询决策树,具体的:
1)获取历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据。
2)依据数据库查询请求以及所述数据库查询请求对应的访问运行结果数据、历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据,生成新的数据库查询决策树。
本实施例中,仍采用上述的CART算法生成数据库查询决策树。
3)依据所述新的数据库查询决策树,更新所述数据库查询决策树。
本实施例中,可以直接使用新的数据库查询决策树替换原有的数据库查询决策树。此外,若新的数据库查询决策树与原有的数据库查询决策树相同,则可以不对数据库查询决策树进行修改,若新的数据库查询决策树与原有的数据库查询决策树不相同,则可以使用新的数据库查询决策树替换原有的数据库查询决策树,保证最终的数据库查询决策树是最优的。
本实施例中,获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征,获取数据库查询决策树,在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库,访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。即通过本发明,可以使用数据库查询决策树路由到相应的数据库,实现了不同数据库查询请求路由到与之对应的目标数据库的目的。
可选地,在上述数据库访问方法的实施例的基础上,本发明的另一实施例提供了一种数据库访问装置,参照图5,可以包括:
请求处理模块11,用于获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征;
决策树获取模块12,用于获取数据库查询决策树;所述数据库查询决策树表征数据库查询请求对应的数据库查询特征与数据库之间的路由关系;
数据库查询模块13,用于在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库;
数据查询模块14,用于访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。
进一步,所述目标数据库的数量至少为一个;所述目标数据库按照优先级由高到低的顺序进行排列;
相应的,所述数据查询模块包括:
访问子模块,用于访问第i个优先级的目标数据库;其中,i为正整数;
结果获取子模块,用于获取所述目标数据库的访问运行结果数据;
调整子模块,用于若所述访问运行结果数据为指定数据,使i=i+1,直至获取到的访问运行结果数据为与数据库查询请求对应的目标数据或所有的目标数据库均访问完成时停止;
其中,所述指定数据为表征本次未成功访问到所述目标数据库的数据。
进一步,还包括:
数据获取子模块,用于获取历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据;
决策树生成模块,用于依据数据库查询请求以及所述数据库查询请求对应的访问运行结果数据、历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据,生成新的数据库查询决策树;
决策树更新模块,用于依据所述新的数据库查询决策树,更新所述数据库查询决策树。
进一步,访问的多个目标数据库的优先级从高到低排序;数据库查询决策树基于CART算法生成。
本实施例中,获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征,获取数据库查询决策树,在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库,访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。即通过本发明,可以使用数据库查询决策树路由到相应的数据库,实现了不同数据库查询请求路由到与之对应的目标数据库的目的。
需要说明的是,本实施例中的各个模块和子模块的工作过程,请参照上述实施例中的相应说明,在此不再赘述。
可选地,在上述数据库访问方法的实施例的基础上,本发明的另一实施例提供了一种电子设备,包括:存储器和处理器;
其中,所述存储器用于存储程序;
处理器调用程序并用于:
获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征;
获取数据库查询决策树;所述数据库查询决策树表征数据库查询请求对应的数据库查询特征与数据库之间的路由关系;
在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库;
访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。
进一步,所述目标数据库的数量至少为一个;所述目标数据库按照优先级由高到低的顺序进行排列;
访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据,包括:
访问第i个优先级的目标数据库;其中,i为正整数;
获取所述目标数据库的访问运行结果数据;
若所述访问运行结果数据为指定数据,使i=i+1,直至获取到的访问运行结果数据为与数据库查询请求对应的目标数据或所有的目标数据库均访问完成时停止;
其中,所述指定数据为表征本次未成功访问到所述目标数据库的数据。
进一步,获取访问运行结果数据之后,还包括:
获取历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据;
依据数据库查询请求以及所述数据库查询请求对应的访问运行结果数据、历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据,生成新的数据库查询决策树;
依据所述新的数据库查询决策树,更新所述数据库查询决策树。
进一步,访问的多个目标数据库的优先级从高到低排序。
进一步,数据库查询决策树基于CART算法生成。
本实施例中,获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征,获取数据库查询决策树,在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库,访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。即通过本发明,可以使用数据库查询决策树路由到相应的数据库,实现了不同数据库查询请求路由到与之对应的目标数据库的目的。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据库访问方法,其特征在于,包括:
获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征;
获取数据库查询决策树;所述数据库查询决策树表征数据库查询请求对应的数据库查询特征与数据库之间的路由关系;
在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库;
访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。
2.根据权利要求1所述的数据库访问方法,其特征在于,所述目标数据库的数量至少为一个;所述目标数据库按照优先级由高到低的顺序进行排列;
访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据,包括:
访问第i个优先级的目标数据库;其中,i为正整数;
获取所述目标数据库的访问运行结果数据;
若所述访问运行结果数据为指定数据,使i=i+1,直至获取到的访问运行结果数据为与数据库查询请求对应的目标数据或所有的目标数据库均访问完成时停止;
其中,所述指定数据为表征本次未成功访问到所述目标数据库的数据。
3.根据权利要求2所述的数据库访问方法,其特征在于,获取访问运行结果数据之后,还包括:
获取历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据;
依据数据库查询请求以及所述数据库查询请求对应的访问运行结果数据、历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据,生成新的数据库查询决策树;
依据所述新的数据库查询决策树,更新所述数据库查询决策树。
4.根据权利要求3所述的数据库访问方法,其特征在于,访问的多个目标数据库的优先级从高到低排序。
5.根据权利要求1所述的数据库访问方法,其特征在于,数据库查询决策树基于CART算法生成。
6.一种数据库访问装置,其特征在于,包括:
请求处理模块,用于获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征;
决策树获取模块,用于获取数据库查询决策树;所述数据库查询决策树表征数据库查询请求对应的数据库查询特征与数据库之间的路由关系;
数据库查询模块,用于在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库;
数据查询模块,用于访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。
7.根据权利要求6所述的数据库访问装置,其特征在于,所述目标数据库的数量至少为一个;所述目标数据库按照优先级由高到低的顺序进行排列;
相应的,所述数据查询模块包括:
访问子模块,用于访问第i个优先级的目标数据库;其中,i为正整数;
结果获取子模块,用于获取所述目标数据库的访问运行结果数据;
调整子模块,用于若所述访问运行结果数据为指定数据,使i=i+1,直至获取到的访问运行结果数据为与数据库查询请求对应的目标数据或所有的目标数据库均访问完成时停止;
其中,所述指定数据为表征本次未成功访问到所述目标数据库的数据。
8.根据权利要求7所述的数据库访问装置,其特征在于,还包括:
数据获取子模块,用于获取历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据;
决策树生成模块,用于依据数据库查询请求以及所述数据库查询请求对应的访问运行结果数据、历史数据库查询请求以及所述历史数据库查询请求对应的历史访问运行结果数据,生成新的数据库查询决策树;
决策树更新模块,用于依据所述新的数据库查询决策树,更新所述数据库查询决策树。
9.根据权利要求8所述的数据库访问装置,其特征在于,访问的多个目标数据库的优先级从高到低排序;数据库查询决策树基于CART算法生成。
10.一种电子设备,其特征在于,包括:存储器和处理器;
其中,所述存储器用于存储程序;
处理器调用程序并用于:
获取数据库查询请求,并对所述数据库查询请求进行语法解析,得到数据库查询特征;
获取数据库查询决策树;所述数据库查询决策树表征数据库查询请求对应的数据库查询特征与数据库之间的路由关系;
在所述数据库查询决策树中查询与所述数据库查询特征相对应的目标数据库;
访问所述目标数据库,并在所述目标数据库中查询与所述数据库查询请求对应的目标数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911393430.3A CN111125199B (zh) | 2019-12-30 | 2019-12-30 | 一种数据库访问方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911393430.3A CN111125199B (zh) | 2019-12-30 | 2019-12-30 | 一种数据库访问方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111125199A true CN111125199A (zh) | 2020-05-08 |
CN111125199B CN111125199B (zh) | 2023-06-13 |
Family
ID=70504919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911393430.3A Active CN111125199B (zh) | 2019-12-30 | 2019-12-30 | 一种数据库访问方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111125199B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111709647A (zh) * | 2020-06-18 | 2020-09-25 | 辽宁振兴银行股份有限公司 | 一种基于策略引擎控制的数据源动态管理方法 |
CN112115125A (zh) * | 2020-09-27 | 2020-12-22 | 北京人大金仓信息技术股份有限公司 | 数据库访问对象名称解析方法、装置及电子设备 |
CN112612809A (zh) * | 2020-12-18 | 2021-04-06 | 南京南瑞信息通信科技有限公司 | 一种数据访问组件及数据访问方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080270346A1 (en) * | 2007-04-30 | 2008-10-30 | Abhay Mehta | Estimating the static execution time of a database query |
CN105229633A (zh) * | 2013-03-13 | 2016-01-06 | 萨勒斯福斯通讯有限公司 | 用于实现数据上传、处理和预测查询api公开的系统、方法和装置 |
US20180218038A1 (en) * | 2017-01-30 | 2018-08-02 | International Business Machines Corportation | Database optimization based on forecasting hardware statistics using data mining techniques |
CN110515990A (zh) * | 2019-07-23 | 2019-11-29 | 华信永道(北京)科技股份有限公司 | 数据查询展示方法及查询展示系统 |
-
2019
- 2019-12-30 CN CN201911393430.3A patent/CN111125199B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080270346A1 (en) * | 2007-04-30 | 2008-10-30 | Abhay Mehta | Estimating the static execution time of a database query |
CN105229633A (zh) * | 2013-03-13 | 2016-01-06 | 萨勒斯福斯通讯有限公司 | 用于实现数据上传、处理和预测查询api公开的系统、方法和装置 |
US20180218038A1 (en) * | 2017-01-30 | 2018-08-02 | International Business Machines Corportation | Database optimization based on forecasting hardware statistics using data mining techniques |
CN110515990A (zh) * | 2019-07-23 | 2019-11-29 | 华信永道(北京)科技股份有限公司 | 数据查询展示方法及查询展示系统 |
Non-Patent Citations (2)
Title |
---|
孟祥福;马宗民;张霄雁;王星;: "基于改进决策树算法的Web数据库查询结果自动分类方法" * |
杨一展;李小平;段霞霞;: "一种基于数据库查询的改进的决策树算法" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111709647A (zh) * | 2020-06-18 | 2020-09-25 | 辽宁振兴银行股份有限公司 | 一种基于策略引擎控制的数据源动态管理方法 |
CN112115125A (zh) * | 2020-09-27 | 2020-12-22 | 北京人大金仓信息技术股份有限公司 | 数据库访问对象名称解析方法、装置及电子设备 |
CN112115125B (zh) * | 2020-09-27 | 2024-04-26 | 北京人大金仓信息技术股份有限公司 | 数据库访问对象名称解析方法、装置及电子设备 |
CN112612809A (zh) * | 2020-12-18 | 2021-04-06 | 南京南瑞信息通信科技有限公司 | 一种数据访问组件及数据访问方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111125199B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11971890B2 (en) | Database management system for optimizing queries via multiple optimizers | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
US8700605B1 (en) | Estimating rows returned by recursive queries using fanout | |
US7472108B2 (en) | Statistics collection using path-value pairs for relational databases | |
US9747349B2 (en) | System and method for distributing queries to a group of databases and expediting data access | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN110019384B (zh) | 一种血缘数据的获取方法、提供血缘数据的方法及装置 | |
US9418092B2 (en) | Index selection in a multi-system database management system | |
US20150006509A1 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
CN112988782B (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
US10268749B1 (en) | Clustering sparse high dimensional data using sketches | |
CN110688393A (zh) | 查询语句优化方法、装置、计算机设备及存储介质 | |
Weidner et al. | Fast OLAP query execution in main memory on large data in a cluster | |
US9117005B2 (en) | Statistics collection using path-value pairs for relational databases | |
US8548980B2 (en) | Accelerating queries based on exact knowledge of specific rows satisfying local conditions | |
CN114328612A (zh) | 查询优化器的数据处理方法、装置及电子设备 | |
US8229924B2 (en) | Statistics collection using path-identifiers for relational databases | |
CN117807091A (zh) | 数据的关联方法及装置 | |
US11625399B2 (en) | Methods and devices for dynamic filter pushdown for massive parallel processing databases on cloud | |
US11386155B2 (en) | Filter evaluation in a database system | |
Papanikolaou | Distributed algorithms for skyline computation using apache spark | |
CN111949686B (zh) | 一种数据处理方法、装置及设备 | |
CN117609303A (zh) | 多表联合查询方法、装置、设备及存储介质 | |
CN116304398A (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 |