CN117093599A - 面向异构数据源的统一sql查询方法 - Google Patents
面向异构数据源的统一sql查询方法 Download PDFInfo
- Publication number
- CN117093599A CN117093599A CN202311065187.9A CN202311065187A CN117093599A CN 117093599 A CN117093599 A CN 117093599A CN 202311065187 A CN202311065187 A CN 202311065187A CN 117093599 A CN117093599 A CN 117093599A
- Authority
- CN
- China
- Prior art keywords
- sql
- query
- request
- module
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000004458 analytical method Methods 0.000 claims abstract description 58
- 238000006243 chemical reaction Methods 0.000 claims abstract description 31
- 230000006978 adaptation Effects 0.000 claims abstract description 29
- 238000012795 verification Methods 0.000 claims abstract description 23
- 238000005457 optimization Methods 0.000 claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 13
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 9
- 230000008030 elimination Effects 0.000 claims description 9
- 238000003379 elimination reaction Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000011161 development Methods 0.000 claims description 5
- 238000013461 design Methods 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 4
- 230000010354 integration Effects 0.000 claims description 4
- 230000003044 adaptive effect Effects 0.000 claims description 3
- 239000000284 extract Substances 0.000 claims description 3
- 230000036316 preload Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract 1
- 238000013500 data storage Methods 0.000 abstract 1
- 230000014509 gene expression Effects 0.000 description 13
- 230000018109 developmental process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004883 computer application Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000010195 expression analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据库系统技术领域,公开一种面向异构数据源的统一SQL查询方法,该框架包括访问适配、解析转换、优化验证、SQL执行等模块,访问适配模块接入配置客户端界面,配接口将查询请求发送至后台;然后解析转换模块根据接口配置信息解析查询请求,若解析失败直接进行异常处理返回错误信息,否则对请求的执行计划进行优化;根据查询请求中的传递参数和缓存需求,在底层数据库查询数据;最后,将查询获得数据转换为统一格式,返回至前台。本发明将查询语言与数据存储相互分离,使得多数据库系统能够透明访问底层数据,保证了不同数据源之间正确率较高的互操作,有效提高了异构源统一查询系统的扩展性和应用范围。
Description
技术领域
本发明属于数据库系统技术领域,具体的说是涉及一种面向异构数据源的统一SQL查询方法。
背景技术
SQL是目前使用最广泛的数据查询分析语言,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率,然而传统单一数据库技术难以适应当前复杂多变的海量数据处理业务。为了适应大数据时代海量数据处理,数据类型从传统结构化数据延伸到实时数据流以及各类非结构化数据,催生出一系列NoSQL和NewSQL技术,以处理关系数据库难以解决的问题,但在实际应用中仍不能完全抛开关系型数据库。对异构数据库、结构化半结构数据的多种数据源的跨平台、统一查询操作,成为了研究和应用的支撑技术。
随着数据处理业务的发展,企业开始根据自身业务特点,采用不同的数据库产品管理业务数据,以不同的数据模型描述数据,形成了不同技术解决不同场景应用的局面:如企业会以Oracle、MySQL、PostgreSQL等多个主流数据库管理数据;各部门的数据会以CSV、XML、JSON等不同文件类型分别存储;各类实时业务需要采用HBase,MongoDB等NoSQL分析处理。研究表明,每个企业应用程序平均都涉及至少两到三种不同类型的查询系统,许多现实的分析业务也提出了便捷、高效地执行跨平台查询的需求。
与数据库系统的快速发展相对的,已有的SQL统一査询的研究工作在易用性、统一性与高效性方面都存在一定的问题和不足:首先,现有工作尚未提供一个适用于跨平台查询的统一SQL查询语言,易用性不高;其次,由于异构数据库不同的特性和各异的语法规则,数据库之间的相互访问需要通过编写数据转换接口来实现,学习成本高且工作量大,扩展性不足;此外,现有工作大多只能针对单一的跨平台SQL査询进行优化,可能严重影响跨平台查询的性能。
发明内容
为了解决上述技术问题,本发明提供了一种通用的多数据库统一查询的访问框架,通过对SQL和NoSQL的查询操作进行适配,屏蔽底层异构数据库的细节,实现对SQL和NoSQL数据库的统一调度,同时保证查询方法具有良好的可扩展性。
为了达到上述目的,本发明是通过以下技术方案实现的:
本发明是一种面向异构数据源的统一SQL查询方法,该方法包括如下步骤:
步骤1、接收客户端发送的访问请求即SQL请求以及SQL请求对应的源数据库和目标数据库标识,并将SQL请求和源数据库标识传送给访问适配模块;
步骤2、访问适配模块接收步骤1的SQL请求以及SQL请求对应的源数据库标识,访问适配模块根据客户端获取的源数据库和目标数据库标识预加载相应API或JDBC,随后将查询请求发送至解析转换模块,其中所述解析转换模块包括SQL解析模块、语义分析模块和语法重写模块;
步骤3、解析转换模块将步骤2传输的SQL请求以及SQL请求对应的源数据库标识进行解析,通过SQL解析模块生成抽象语法树(AST)结构,得到目标SQL请求,再调用语义分析模块对AST进行语义提取和分析,获取对应的逻辑执行树,并保存更新元信息,若解析失败直接进行异常处理、返回错误信息,成功则通过语法重写模块将逻辑查询树重写为目标数据库平台所支持的访问格式;
步骤4、优化验证模块根据逻辑查询树储存的元信息对目标SQL请求进行正确性验证,若验证通过,根据基于规则计算,对目标SQL请求进一步优化,减少SQL请求在目标平台上的数据运算量,提升逻辑执行计划的整体效率;
步骤5、将步骤4输出的转换后SQL请求导入统一执行模块,连接目标数据库标识对应的底层数据库,查询数据,并将查询获得数据转换为统一格式,返回至前台。
进一步的,所述步骤2包括以下步骤:
步骤21、适配访问模块接收客户端的SQL请求,并记录下SQL请求对应的源数据库和目标数据库标识;
步骤22、根据源数据库和目标数据库标识,预加载相应API或JDBC,准备创建与底层数据库的连接(Connection);
步骤23、将待执行的SQL请求和SQL请求对应的源数据库标识发送给解析转换模块。
进一步的,所述步骤3具体包括以下步骤:
步骤31、为异构数据库的SQL请求设计统一的中间表示模型,为所有数据源提供统一的元数据存储格式,用于生成逻辑执行树;
步骤32、从适配访问模块获取接口信息,包括SQL请求和源数据库标识,加载相应的SQL语法解析器,SQL语法解析器由ANTLR工具生成的词法分析器(SqlLexer)和语法分析器(SqlParser)组成,首先词法分析器负责分析词法,通过拆分SQL,即将输入的字符序列分解成一系列词法符号(token),然后,语法分析器通过检查词法符号的序列结构是否符合语法规则,判断语句是否合法,并把词法符号按照语法规则组装成抽象语法树结构;
步骤33、SQL解析模块将SQL请求语句输入SQL语法解析器,经过词法分析和语法分析,把查询请求按照定义的语法规则转换成抽象语法树(AST)结构;
步骤34、语义分析模块获取抽象语法树结构,调用语义分析器对抽象语法树进行树形遍历,通过Visitor访问模式控制抽象语法树的语义分析过程,按自底向上的顺序提取分析抽象语法树节点信息,封装相应的元数据信息到中间表示模型,生成逻辑执行树;
步骤35、语法重写模块获取逻辑执行树后,调用语法重写器对逻辑执行树结构进行映射,将中间表示模型所代表的逻辑查询计划重写转换为能够在目标源执行的查询请求。
进一步的,所述步骤31设计中间表示模型为转换媒介,为所有的数据源提供种统一的元数据描述,将从源库到目标库的直接转换模式,变为从源库数据转换为中间模式、再由中间模式转换为目标库数据的模式,提升系统的可扩展性,减少多数据库集成处理过程中的开发成本。
进一步的,所述步骤4具体包括以下步骤:
步骤41、设计验证优化模块,分为设计查询验证器和查询优化器,查询验证器制定元数据验证规则,验证规则的适用范围为框架支持的所有异构数据库;查询优化器制定的规则对查询请求进行优化;
步骤42、从解析转换模块获取目标SQL请求,通过查询验证器,根据存储的元数据信息,验证目标请求的语法、语义正确性,若转换SQL请求验证错误,进行异常处理,直接返回错误信息;
步骤43、目标SQL请求通过语法、语义验证,则调用查询优化器对目标SQL请求进行优化。查询优化器采用基于规则的优化(RBO)方式,定义一系列优化规则,包括列剪裁、最大最小消除、投影消除、谓词下推、Join消除等。优化器搜索过程可视为根据指定的优先顺序,循环判断SQL各语块是否匹配优化格式(Pattern),若符合则按照优化规则(Rule)对SQL语句优化,并重新进入循环,直到没有可以匹配的语块,完成优化。
进一步的,所述步骤5具体包括以下步骤:
步骤51、统一执行模块根据步骤1获得的目标数据源标记,加载相应API或JDBC,并通过连接池建立相应的底层数据库连接,等待步骤4输入的目标SQL请求;
步骤52、获取目标SQL语句,通过连接器执行数据库查询操作:若访问数据库是关系型数据库,则查询数据直接返回到访问适配模块;若访问结果是非关系模式,则将底层返回结果转换为关系表结构;
步骤53、统一执行模块关闭底层数据库的连接,将关系形式的查询结果返回给访问适配模块,访问适配模块将查询结果整合。
所述步骤53、基于本系统面向业务环境,以及关系表格式的易于理解和维护,保持事务的完整性的优点,数据适配模块选择将NoSQL查询数据关系化,即将键值、文档以及图形等非关系型存储结构转化为关系表结构,最后将多数据库SQL查询结果合并输出到客户端。
本发明的有益效果是:
本发明设计实现一套高效、灵活的跨平台统一SQL查询系统,通过引入中间模型隐藏底层库的差异性,以实现对不同架构的数据库的统一管理。开发者可以通过调用统一访问接口,实现异构数据库的跨平台访问和互操作,从而减少系统开发中的重复工作开销,对多源异构数据的存储处理具有重要意义。
具体来说:
(1)本发明采用以关系型数据库为主,数据适配和访问适配皆以SQL查询实现的多数据库集成方案,充分发挥SQL语法可靠性和可移植性、以及NoSQL的灵活性优点,规避NoSQL缺乏统一标准、普适性差的缺点。
(2)本发明采用了数据库连接池对底层库连接进行统一管理,实现对多个异构数据库的共同访问。通过为数据库连接建立一个缓冲池,避免频繁地创建和关闭连接,提升了查询访问的连接速度和稳定性。
(3)本发明设计了一种中间表示格式,为关系型或非关系型的数据源提供种统一的元数据描述模型,将从源库到目标库的直接转换模式,变为从源库数据转换为中间模式、再由中间模式转换为目标库数据的模式,有助于屏蔽不同执行平台间的操作差异,提高框架的灵活性和可扩展性。
附图说明
图1是本发明SQL查询方法的流程图。
图2是多源异构数据库统一访问框架的总体架构图。
图3是SQL查询请求解析转换流程图。
具体实施方式
以下将以图式揭露本发明的实施方式,为明确说明起见,许多实务上的细节将在以下叙述中一并说明。然而,应了解到,这些实务上的细节不应用以限制本发明。也就是说,在本发明的部分实施方式中,这些实务上的细节是非必要的。
如图1-2所示,本发明是一种面向异构数据源的统一SQL查询方法,包括以下步骤:
步骤1、接收客户端发送的访问请求即SQL请求以及SQL请求对应的源数据库和目标数据库标识,并将SQL请求和源数据库标识传送给访问适配模块。基于SQL可靠性和可移植性,具有标准化模式,面向异构数据源的统一SQL查询方法以SQL语句查询为主,数据适配和访问适配皆以SQL查询实现。
步骤2、访问适配模块接收步骤1的SQL请求以及SQL请求对应的源数据库标识,访问适配模块根据客户端获取的源数据库和目标数据库标识预加载相应API或JDBC,随后将查询请求发送至解析转换模块,其中所述解析转换模块包括SQL解析模块、语义分析模块和语法重写模块;
所述步骤2包括以下步骤:
步骤21、适配访问模块接收客户端的SQL请求,并记录下SQL请求对应的源数据库和目标数据库标识;
步骤22、根据源数据库和目标数据库标识,预加载相应API或JDBC,准备创建与底层数据库的连接(Connection);
步骤23、将待执行的SQL请求和SQL请求对应的源数据库标识发送给解析转换模块。
步骤3、如图3所示,解析转换模块将步骤2传输的SQL请求以及SQL请求对应的源数据库标识进行解析,通过SQL解析模块生成抽象语法树(AST)结构,得到目标SQL请求,再调用语义分析模块对AST进行语义提取和分析,获取对应的逻辑执行树,并保存更新元信息,若解析失败直接进行异常处理、返回错误信息,成功则通过语法重写模块将逻辑查询树重写为目标数据库平台所支持的访问格式;
所述步骤3解析重构模块将步骤2传输的SQL请求以及SQL请求对应的源数据库标识进行解析,具体包括以下步骤:
步骤31、为异构数据库的SQL请求设计统一的中间表示模型,为所有数据源提供统一的元数据存储格式,用于生成逻辑执行树。
设计中间表示模型为转换媒介,为所有的数据源提供种统一的元数据描述,将从源库到目标库的直接转换模式,变为从源库数据转换为中间模式、再由中间模式转换为目标库数据的模式,提升系统的可扩展性,减少多数据库集成处理过程中的开发成本。
语义分析可以分为表达式(expression)分析和语句(statement)分析两类。表达式分析负责将AST中的代表逻辑关系式、计算表达式以及对象名、变量、常量的结构,作为元数据提取封装,并解析其数据类型,最后填充至statement属性中,为分析模型语义合法性及数据依赖关系;语句分析的主要任务是解析SQL语句对数据集合的计算操作,并以结构化形式描述SQL各个子句语法块。各语法块可用若干Entity实体组合描述,每个实体的统一形式化表述为:
Entity=<Type,Field,Expr,Relation>
其中Type为Entity类型名,表示实体的物理属性类型;Field表示实体所属的元素集合,所属元素可以是同类或子类实体;Expr以表达式形式存储Entity的数据或参数;实体关系Relation∈(Entity×Entity)用于描述实体间的语义关联,包括实体条件表达式或存储的关系数据;
步骤32、从适配访问模块获取接口信息,包括SQL请求和源数据库标识,加载相应的SQL语法解析器,SQL语法解析器由ANTLR工具生成的词法分析器(SqlLexer)和语法分析器(SqlParser)组成,首先词法分析器负责分析词法,通过拆分SQL,即将输入的字符序列分解成一系列词法符号(token),然后,语法分析器通过检查词法符号的序列结构是否符合语法规则,判断语句是否合法,并把词法符号按照语法规则组装成抽象语法树结构;
步骤33、SQL解析模块将SQL请求语句输入SQL语法解析器,经过词法分析和语法分析,把查询请求按照定义的语法规则转换成抽象语法树(AST)结构;
步骤34、语义分析模块获取抽象语法树结构,调用语义分析器对抽象语法树进行树形遍历,通过Visitor访问模式控制抽象语法树的语义分析过程,按自底向上的顺序提取分析抽象语法树节点信息,封装相应的元数据信息到中间表示模型,生成逻辑执行树。以 SELECT查询语句为例,其封装后的模型结构为:
SELECT[ALL|DISTINCT]<entity1[,entity2,...]>
FROM<entity[join:condition_expr],...>
WHERE<condition_expr>
ORDER BY<entity1[ASC|DESC][,entity2,...]>
具体步骤为:访问AST的根节点,判断SQL语句类型,生成相应statement逻辑结构,然后获取子节点集合,按DFS顺序向下访问;若当前节点是规则节点且以它为根的子树代表SQL子句,则生成对应SQL操作项并赋给statement,然后继续向下访问解析;若当前节点是规则节点且以它为根的子树代表表达式,则生成相应expression结构,并向下访问填充其操作数及属性;若当前节点是叶子节点,获取节点内容,若为常量或标识符,封装为基本表达式结构并填充到expression;否则结束当前访问。遍历结束,返回statement对象,抽象语法树即转换为逻辑执行树;
步骤35、语法重写模块获取逻辑执行树后,调用语法重写器对逻辑执行树结构进行映射,将中间表示模型所代表的逻辑查询计划重写转换为能够在目标源执行的查询请求。
经过语义分析和元数据提取绑定,抽象语法树转换为了封装SQL查询任务的统一中间表示模型,重构器的作用便是基于中间模型生成目标语句。对于关系型数据库的方言,可以根据其中间模型转换成语义一致的目标源形式;对于NoSQL数据库,可将其结构一一映射转换,例如关系型数据库的表、列、属性和数据对象,分别与NoSQL数据库MongoDB的集合、文档、字段、值等数据结构对应。在分析器生成SQL的逻辑查询树后,通过此映射关系将SQL数据转换为NoSQL形式,便最终实现了SQL到MongoDB语句的重构。以“SELECT*FROM peopleWHERE status="A"ORDER BY user_id DESC;”为例,分析可知查询实体为people表,以status="A"为筛选条件获取实体所有属性,并将结果集根据user_id列递减排序。对应重构后的MongoDB语句为“db.people.find({status:"A"}).sort({user_id:-1})”。
步骤4、优化验证模块根据逻辑查询树储存的元信息对目标SQL请求进行正确性验证,若验证通过,根据基于规则计算,对目标SQL请求进一步优化,减少SQL请求在目标平台上的数据运算量,提升逻辑执行计划的整体效率。
具体包括以下步骤:
步骤41、设计验证优化模块,分为设计查询验证器和查询优化器,查询验证器制定元数据验证规则,验证规则的适用范围为框架支持的所有异构数据库;查询优化器制定的规则对查询请求进行优化;
步骤42、从解析转换模块获取目标SQL请求,通过查询验证器,根据存储的元数据信息,验证目标请求的语法、语义正确性,若转换SQL请求验证错误,进行异常处理,直接返回错误信息;
步骤43、目标SQL请求通过语法、语义验证,则调用查询优化器对目标SQL请求进行优化。查询优化器采用基于规则的优化(RBO)方式,定义一系列优化规则,包括列剪裁、最大最小消除、投影消除、谓词下推、Join消除等。优化器搜索过程可视为根据指定的优先顺序,循环判断SQL各语块是否匹配优化格式(Pattern),若符合则按照优化规则(Rule)对SQL语句优化,并重新进入循环,直到没有可以匹配的语块,完成优化。
以“获得满分成绩的学生查询”为例,常用SQL写法为:SELECT*FROM Student t,Grade g WHERE t.S_id=g.S_id AND g.grade=100。
该Select语句对应的关系代数为:
根据代数式可知,语句在执行时数据库会先全表扫描全部的Student学生信息表和Grade学生成绩表,然后才根据where条件筛选,加重了查询计算量。这种情况可以通过谓词下推,将过滤条件表达式(如=、!=、like、in、between等)尽量靠近待过滤的数据源(Student表和Grade表),即先将“grade=100”限制应用于Grade,再进行连接操作,达到优先过滤无用数据、提升SQL执行效率的目的。对应关系代数为:
转换成对应语句为:SELECT*FROM Student RIGHT JOIN t1(SELECT*FROM GradeWHERE grade=100)t2 ON t1.S_id=t2.S_id。经过优化,数据库在内查询时就先过滤了Grade表中大部分无用数据,极大减少临时表空间开销,提高了查询效率。
步骤5、将步骤4输出的转换后SQL请求导入统一执行模块,连接目标数据库标识对应的底层数据库,查询数据,并将查询获得数据转换为统一格式,返回至前台。
具体包括以下步骤:
步骤51、统一执行模块根据步骤1获得的目标数据源标记,加载相应API或JDBC,并通过连接池建立相应的底层数据库连接,等待步骤4输入的目标SQL请求;
步骤52、获取目标SQL语句,通过连接器执行数据库查询操作:若访问数据库是关系型数据库,则查询数据直接返回到访问适配模块;若访问结果是非关系模式,则将底层返回结果转换为关系表结构;
步骤53、统一执行模块关闭底层数据库的连接,将关系形式的查询结果返回给访问适配模块,访问适配模块将查询结果整合。
所述步骤53,基于本系统面向业务环境,以及关系表格式的易于理解和维护,保持事务的完整性的优点,数据适配模块选择将NoSQL查询数据关系化,即将键值、文档以及图形等非关系型存储结构转化为关系表结构,最后将多数据库SQL查询结果合并输出到客户端。
以上所述仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理的内所作的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。
Claims (6)
1.一种面向异构数据源的统一SQL查询方法,其特征在于:所述异构数据源的统一SQL查询包括如下步骤:
步骤1、接收客户端发送的访问请求即SQL请求以及SQL请求对应的源数据库和目标数据库标识,并将SQL请求和源数据库标识传送给访问适配模块;
步骤2、访问适配模块接收步骤1的SQL请求以及SQL请求对应的源数据库标识,访问适配模块根据客户端获取的源数据库和目标数据库标识预加载相应API或JDBC,随后将查询请求发送至解析转换模块,其中所述解析转换模块包括SQL解析模块、语义分析模块和语法重写模块;
步骤3、解析转换模块将步骤2传输的SQL请求以及SQL请求对应的源数据库标识进行解析,通过SQL解析模块生成抽象语法树(AST)结构,得到目标SQL请求,再调用语义分析模块对AST进行语义提取和分析,获取对应的逻辑执行树,并保存更新元信息,若解析失败直接进行异常处理、返回错误信息,成功则通过语法重写模块将逻辑查询树重写为目标数据库平台所支持的访问格式;
步骤4、优化验证模块根据逻辑查询树储存的元信息对目标SQL请求进行正确性验证,若验证通过,根据基于规则计算,对目标SQL请求进一步优化,减少SQL请求在目标平台上的数据运算量,提升逻辑执行计划的整体效率;
步骤5、将步骤4输出的转换后SQL请求导入统一执行模块,连接目标数据库标识对应的底层数据库,查询数据,并将查询获得数据转换为统一格式,返回至前台。
2.根据权利要求1所述的面向异构数据源的统一SQL查询方法,其特征在于:所述步骤2包括以下步骤:
步骤21、适配访问模块接收客户端的SQL请求,并记录下SQL请求对应的源数据库和目标数据库标识;
步骤22、根据源数据库和目标数据库标识,预加载相应API或JDBC,准备创建与底层数据库的连接;
步骤23、将待执行的SQL请求和SQL请求对应的源数据库标识发送给解析转换模块。
3.根据权利要求1所述的面向异构数据源的统一SQL查询方法,其特征在于:所述步骤3解析重构模块将步骤2传输的SQL请求以及SQL请求对应的源数据库标识进行解析,具体包括以下步骤:
步骤31、为异构数据库的SQL请求设计统一的中间表示模型,为所有数据源提供统一的元数据存储格式,用于生成逻辑执行树;
步骤32、从适配访问模块获取接口信息,包括SQL请求和源数据库标识,加载相应的SQL语法解析器,SQL语法解析器由ANTLR工具生成的词法分析器(SqlLexer)和语法分析器(SqlParser)组成,首先词法分析器负责分析词法,通过拆分SQL,即将输入的字符序列分解成一系列词法符号(token),然后,语法分析器通过检查词法符号的序列结构是否符合语法规则,判断语句是否合法,并把词法符号按照语法规则组装成抽象语法树结构;
步骤33、SQL解析模块将SQL请求语句输入SQL语法解析器,经过词法分析和语法分析,把查询请求按照定义的语法规则转换成抽象语法树(AST)结构;
步骤34、语义分析模块获取抽象语法树结构,调用语义分析器对抽象语法树进行树形遍历,通过Visitor访问模式控制抽象语法树的语义分析过程,按自底向上的顺序提取分析抽象语法树节点信息,封装相应的元数据信息到中间表示模型,生成逻辑执行树;
步骤35、语法重写模块获取逻辑执行树后,调用语法重写器对逻辑执行树结构进行映射,将中间表示模型所代表的逻辑查询计划重写转换为能够在目标源执行的查询请求。
4.根据权利要求3所述的面向异构数据源的统一SQL查询方法,其特征在于:所述步骤31设计中间表示模型为转换媒介,为所有的数据源提供种统一的元数据描述,将从源库到目标库的直接转换模式,变为从源库数据转换为中间模式、再由中间模式转换为目标库数据的模式,提升系统的可扩展性,减少多数据库集成处理过程中的开发成本。
5.根据权利要求1所述的面向异构数据源的统一SQL查询方法,其特征在于:所述步骤4具体包括以下步骤:
步骤41、设计验证优化模块,分为设计查询验证器和查询优化器,查询验证器制定元数据验证规则,验证规则的适用范围为框架支持的所有异构数据库;查询优化器制定的规则对查询请求进行优化;
步骤42、从解析转换模块获取目标SQL请求,通过查询验证器,根据存储的元数据信息,验证目标请求的语法、语义正确性,若转换SQL请求验证错误,进行异常处理,直接返回错误信息;
步骤43、目标SQL请求通过语法、语义验证,则调用查询优化器对目标SQL请求进行优化,查询优化器采用基于规则的优化(RBO)方式,定义一系列优化规则,包括列剪裁、最大最小消除、投影消除、谓词下推、Join消除,优化器搜索过程可视为根据指定的优先顺序,循环判断SQL各语块是否匹配优化格式(Pattern),若符合则按照优化规则(Rule)对SQL语句优化,并重新进入循环,直到没有可以匹配的语块,完成优化。
6.根据权利要求1所述的面向异构数据源的统一SQL查询方法,其特征在于:所述步骤5具体包括以下步骤:
步骤51、统一执行模块根据步骤1获得的目标数据源标记,加载相应API或JDBC,并通过连接池建立相应的底层数据库连接,等待步骤4输入的目标SQL请求;
步骤52、获取目标SQL语句,通过连接器执行数据库查询操作:若访问数据库是关系型数据库,则查询数据直接返回到访问适配模块;若访问结果是非关系模式,则将底层返回结果转换为关系表结构;
步骤53、统一执行模块关闭底层数据库的连接,将关系形式的查询结果返回给访问适配模块,访问适配模块将查询结果整合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311065187.9A CN117093599A (zh) | 2023-08-23 | 2023-08-23 | 面向异构数据源的统一sql查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311065187.9A CN117093599A (zh) | 2023-08-23 | 2023-08-23 | 面向异构数据源的统一sql查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117093599A true CN117093599A (zh) | 2023-11-21 |
Family
ID=88771221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311065187.9A Pending CN117093599A (zh) | 2023-08-23 | 2023-08-23 | 面向异构数据源的统一sql查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117093599A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349332A (zh) * | 2023-12-06 | 2024-01-05 | 宁波港信息通信有限公司 | 一种应用程序编程接口api的生成方法、装置和电子设备 |
CN117407457A (zh) * | 2023-12-14 | 2024-01-16 | 中国人民解放军国防科技大学 | 基于可配置规则的多源数据融合方法、系统及设备 |
CN117648362A (zh) * | 2024-01-29 | 2024-03-05 | 北京谷器数据科技有限公司 | 一种第三方数据库的链接方法及系统 |
CN117971706A (zh) * | 2024-04-01 | 2024-05-03 | 天津南大通用数据技术股份有限公司 | 一种GBase数据库模糊测试用例生成方法及装置 |
CN118035985A (zh) * | 2024-04-11 | 2024-05-14 | 深圳市中壬银兴信息技术有限公司 | 一种基于数据模块化的mis系统 |
CN117648362B (zh) * | 2024-01-29 | 2024-06-04 | 北京谷器数据科技有限公司 | 一种第三方数据库的链接方法及系统 |
-
2023
- 2023-08-23 CN CN202311065187.9A patent/CN117093599A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349332A (zh) * | 2023-12-06 | 2024-01-05 | 宁波港信息通信有限公司 | 一种应用程序编程接口api的生成方法、装置和电子设备 |
CN117349332B (zh) * | 2023-12-06 | 2024-03-01 | 宁波港信息通信有限公司 | 一种应用程序编程接口api的生成方法、装置和电子设备 |
CN117407457A (zh) * | 2023-12-14 | 2024-01-16 | 中国人民解放军国防科技大学 | 基于可配置规则的多源数据融合方法、系统及设备 |
CN117407457B (zh) * | 2023-12-14 | 2024-02-27 | 中国人民解放军国防科技大学 | 基于可配置规则的多源数据融合方法、系统及设备 |
CN117648362A (zh) * | 2024-01-29 | 2024-03-05 | 北京谷器数据科技有限公司 | 一种第三方数据库的链接方法及系统 |
CN117648362B (zh) * | 2024-01-29 | 2024-06-04 | 北京谷器数据科技有限公司 | 一种第三方数据库的链接方法及系统 |
CN117971706A (zh) * | 2024-04-01 | 2024-05-03 | 天津南大通用数据技术股份有限公司 | 一种GBase数据库模糊测试用例生成方法及装置 |
CN118035985A (zh) * | 2024-04-11 | 2024-05-14 | 深圳市中壬银兴信息技术有限公司 | 一种基于数据模块化的mis系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9767147B2 (en) | Method of converting query plans to native code | |
CN107515887B (zh) | 一种适用于多种大数据管理系统的交互式查询方法 | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN109614432B (zh) | 一种基于语法分析的获取数据血缘关系的系统及方法 | |
CN105868204B (zh) | 一种转换Oracle脚本语言SQL的方法及装置 | |
CN111400297B (zh) | 基于Hadoop的海量数据数据质量校验方法 | |
CN106934062A (zh) | 一种查询elasticsearch的实现方法及系统 | |
US20110161352A1 (en) | Extensible indexing framework using data cartridges | |
US11194802B2 (en) | Generating SQL queries from declarative queries for semi-structured data | |
US20210209098A1 (en) | Converting database language statements between dialects | |
Li et al. | An integration approach of hybrid databases based on SQL in cloud computing environment | |
CN112579626A (zh) | 多源异构sql查询引擎的构建方法及装置 | |
CN110019314B (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
US20180365294A1 (en) | Artificial intelligence driven declarative analytic platform technology | |
Steer et al. | Cytosm: Declarative property graph queries without data migration | |
CN111914534A (zh) | 构建知识图谱语义映射方法及系统 | |
CN113297212A (zh) | 一种基于物化视图的Spark查询方法、装置及电子设备 | |
CN107818181A (zh) | 基于Plcient交互式引擎的索引方法及其系统 | |
CN116483850A (zh) | 数据处理方法、装置、设备以及介质 | |
CN111694846B (zh) | 一种基于Type 2 JDBC驱动的分离模式分布式存储过程实现方法 | |
CN117421302A (zh) | 一种数据处理方法及相关设备 | |
CN110008448B (zh) | 将SQL代码自动转换为Java代码的方法和装置 | |
US20050060307A1 (en) | System, method, and service for datatype caching, resolving, and escalating an SQL template with references | |
US20190303460A1 (en) | Transaction-based pseudo-script generation for scheduling and implementing database schema changes | |
CN113221528B (zh) | 基于openEHR模型的临床数据质量评估规则的自动生成与执行方法 |
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 |