CN105260403B - 通用跨数据库访问方法 - Google Patents
通用跨数据库访问方法 Download PDFInfo
- Publication number
- CN105260403B CN105260403B CN201510605990.6A CN201510605990A CN105260403B CN 105260403 B CN105260403 B CN 105260403B CN 201510605990 A CN201510605990 A CN 201510605990A CN 105260403 B CN105260403 B CN 105260403B
- Authority
- CN
- China
- Prior art keywords
- vsql
- database
- syntax
- statement
- grammar
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000010354 integration Effects 0.000 title claims abstract description 7
- 230000006870 function Effects 0.000 claims abstract description 49
- 238000004458 analytical method Methods 0.000 claims abstract description 21
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000005192 partition Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 2
- 230000008520 organization Effects 0.000 claims 1
- 238000011161 development Methods 0.000 abstract description 8
- 238000012545 processing Methods 0.000 description 9
- 230000018109 developmental process Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000008676 import Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及通用跨数据库访问方法,基于结构化查询语言SQL的包括数据操纵语言DML和数据库模式定义语言DDL语法,结合各类数据库增加预定义的函数及语法,定义和/或构建VSQL语句语法解析引擎对VSQL语句进行VSQL词法和VSQL语法解析,对VSQL进行分词,并根据定义的语法对VSQL分词组织得到对应的语法树;对象解析引擎对VSQl语法树进行构造解析及对应各数据库的包括字段、函数、分页的SQL语法进行对象解析,得到原生SQL语句;发送数据库执行,得到结果。本发明的通用跨数据库访问方法,能有效实现与各类数据库的无缝结合,具有丰富的二次开发接口,良好的用户体验和扩展性。
Description
技术领域
本发明属于计算机信息技术领域,特别涉及通用跨数据库访问方法。
背景技术
随着计算机和软件技术的不断发展,软件领域的分工也越发精细,不同的行业、不同的项目甚至同一个项目的不同阶段的侧重点完全可能不一样,所采取的技术工具、数据模型和数据库管理系统都可能完全不尽相同。同时,大家熟知的各类数据库SQLServer、Oracle、DB2、Mysql、Postgresq在同一管理系统里面,需要进行跨数据库的通讯,在不同数据库之间方法,现有技术的访问语句及方法,存在通用性不强,必须关注各类数据库的字段类型等复杂对应,也同时必须关注各类数据库的函数及参数差异以及函数返回结果的一致性,造成了语句语法繁杂,进一步地,还必须考虑考虑同一数据库不同版本的差异,难于实现与各类数据库的无缝结合,开发学习成本高,用户要求高,造成用户体验差,扩展性差。
发明内容
基于此,针对现有技术,本发明的所要解决的技术问题就是提供一种具有广泛通用性、与各类数据库实现无缝结合、零编码能快速开发、成本低的跨数据库访问方法。
本发明的技术方案如下:
一种通用跨数据库访问方法,其特征在于,包括如下步骤:
1)、基于结构化查询语言SQL的包括数据操纵语言DML和数据库模式定义语言DDL语法,结合各类数据库增加预定义的函数及语法,定义和/或构建V Structured QuevyLanguage(以下简称VSQL)语句;
2)、语法解析引擎对VSQL语句进行VSQL词法和VSQL语法解析,对VSQL进行分词,并根据定义的语法对VSQL分词组织得到对应的语法树;
3)、对象解析引擎对VSQL语法树进行构造解析及对应各数据库的包括字段、函数、分页的SQL语法进行对象解析,得到原生SQL语句;
4)、发送数据库执行,得到结果;
其中,
在步骤a)中,所述预定义的函数及语法包括临时表、存储过程调用、自定义函数调用、分页、分区统计函数;
在步骤b)中,所述VSQL语句支持集成使用临时表、语法提示功能,并能提供VSQL查询分析插件、客户端数据库查询工具;所述VSQL语句提供应用程序编程接口API,所述API能对所述VSQL语句行解析及二次加工;
可访问支持的数据库类型包括SQLServer、Oracle、DB2、Mysql、Postgresql、Mongodb、H2、neo4j、达梦、南通。
在其中一个实施例中,在步骤1)中,所述数据操纵语言DML的指令包括新增、查询、更新、删除表数据、基本的函数,所述数据库模式定义语言DDL的指令包括新建表结构、修改表结构、更新表结构、删除表结构、存储过程、自定义函数调用、临时表使用。
在其中一个实施例中,所述VSQL语句的表达式采用二叉树结构,并支持计算优先级查询。
在其中一个实施例中,在步骤2)中,所述VSQL词法包括关键词、字段、条件和函数,所述关键词包括select、from和where,所述字段包括f1和f2,所述条件包括f1、=和1,所述函数包括LENGTH和f1。
在其中一个实施例中,所述VSQL语句采用统一的表结构、索引定义、更新语法标准,统一的函数定义标准、多标关联更新语法标准、分页语法标准,统一的自定义函数、存储过程调用语法标准、运算符及注释格式标准。
本发明的另一目的是提供一种使用上述访问方法的通用跨数据库平台。
一种通用跨数据库平台,使用如上面所述的通用跨数据库访问方法。
相对现有技术,本发明的有益效果如下:
1、语法与各类数据库无缝结合,屏蔽各类数据库及版本的差异,减少学习成本
统一的表结构、索引定义、更新语法标准,无需关注各类数据库的字段类型等复杂对应;
统一的函数定义标准,无需关注各类数据库的函数及参数差异以及函数返回结果的一致性,例如精度、日期格式等。
2、提供丰富的二次开发接口
提供API接口对VSQL进行解析及二次加工支持二次开发;支持集成使用临时表,提高查询性能;提供VSQL查询分析插件智能分析VSQL的复杂度,为软件项目统计复杂度提供数据支持。
3、良好的用户体验
提供VSQL语法提示功能支持,完善VSQL错误提示,让编写VSQL有好的体验;提供客户端数据库查询工具支持数据查询、导入导出。
4、良好的扩展性
支持新数据库,只需要实现相应的接口就能快速支持,支持SQLServer、Oracle、DB2、Mysql、Postgresql、Mongodb、H2、neo4j、达梦、南通等数据库。
附图说明
图1为本发明的通用跨数据库访问方法的对应的VSQL的逻辑结构设计;
图2为本发明的VSQL对象的整体结构;
图3为本发明的VSQL的表达式结构;
图4为本发明的VSQL支持计算优先级示例;
图5为本发明的VSQL对象解析器。
具体实施方式
下面参考附图并结合实施例对本发明进行详细说明。
SQL语言为结构化查询语言(Structured Query Language),较为广泛使用的一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。但单一的SQL语言无法实现与各类数据库的无缝结合,其必须关注各类数据库的字段类型、各类数据库的函数及参数差异以及函数返回结果的一致性,影响了效率。
本发明构建了V Structured Quevy Language(简称VSQL)语言,该语言设计采用统一的表结构、索引定义、更新语法标准,统一的函数定义标准,统一的多表关联更新语法标准、分页语法标准,统一的自定义函数、存储过程调用语法标准,统一的运算符及注释格式标准,并提供API结构进行解析和二次加工,支持集成使用临时表,能提供查询分析插件分析语句的复杂度,提供语法提示功能,提供客户端数据库查询工具,进行数据查询、导入导出。
图1给出了对应的访问VSQL逻辑结构,首先是根据设计进行生成VSQL指令,例如Select length(f1),f2from table1 where f1=1的VSQL语句。再次,生成的VSQL语句送语法解析引擎进行词法和语法解析,VSQL词法解析从,对VSQL进行分词:如关键字(select、from、where),字段(f1、f2),条件(f1、=、1),函数(LENGTH,f1);VSQL语法解析,根据定义的语法对VSQL分词组织成语法树。接着,送VSQL对象解析引擎进行对象解析,VSQL对象构造器解析语法树构造,VSQL对象解析器进行解析对应各数据库的字段、函数、分页等SQL语法得到原生SQL语句,比如如sqlserver数据库,Select len(f1),f2from table1 where f1=1。最后是发送数据库DB进行执行,得到结果。
图2、图3和图4分别给出了VSQL的对象整体结构、表达式结构、支持计算优先级示例,结合图2-4可知,VSQL抽取了SQL92的大部分语法,主要包括数据操纵语言DML(新增、查询、更新、删除表数据、基本的函数),及数据库模式定义语言DDL(新建、修改、更新、删除表结构)等;并结合各数据库的特性增加了特定的函数及语法,包括临时表、存储过程调用、自定义函数调用、分页、分区统计函数等。VSQL语句表达式采用二叉树结构,并支持计算优先级查询。
VSQL对象解析器如图5所示,能对VSQL语句进行各对象的解析处理,包括附件条件处理、查询参数处理、字段处理、排序处理、函数处理等。
VSQL语句支持集成使用临时表、语法提示功能,并能提供VSQL查询分析插件、客户端数据库查询工具,还提供应用程序编程接口API,API能对所述进VSQL语句行解析及二次加工。VSQL语句能访问支持的数据库类型包括SQLServer、Oracle、DB2、Mysql、Postgresql、Mongodb、H2、neo4j、达梦、南通等。
由以上可知,本发明的通用跨数据库访问方法,能有效实现与各类数据库的无缝结合,具有丰富的二次开发接口,良好的用户体验和扩展性,具体如下:
统一的表结构、索引定义、更新语法标准,无需关注各类数据库的字段类型等复杂对应;统一的函数定义标准,无需关注各类数据库的函数及参数差异以及函数返回结果的一致性,例如精度、日期格式等。统一的多表关联更新语法标准统一的分页语法标准、统一的自定义函数、存储过程调用语法标准,统一的运算符及注释格式标准,保证了能够无缝结合各类数据库,屏蔽各类数据库及版本的差异,学习成本低。
提供API接口对VSQL进行解析及二次加工支持二次开发;支持集成使用临时表,提高查询性能;提供VSQL查询分析插件智能分析VSQL的复杂度,为软件项目统计复杂度提供数据支持。从而满足丰富的二次开发接口要求。
提供VSQL语法提示功能支持,完善VSQL错误提示,让编写VSQL有好的体验;提供客户端数据库查询工具支持数据查询、导入导出。使得用户具有良好的体验性。
只需要实现相应的接口就能快速支持各类数据库,比如国际数据库SQLServer、Oracle、DB2、Mysql、Postgresql、Mongodb、H2、neo4j,国产数据库达梦、南通数据库。从而具有良好的扩展性。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种通用跨数据库访问方法,其特征在于,包括如下步骤:
a)、基于结构化查询语言SQL的包括数据操纵语言DML和数据库模式定义语言DDL语法,结合各类数据库增加预定义的函数及语法,定义和/或构建VSQL(V Structured QuevyLanguage)语句;
b)、语法解析引擎对VSQL语句进行VSQL词法和VSQL语法解析对VSQL进行分词,并根据定义的语法对VSQL分词组织得到对应的语法树;
c)、对象解析引擎对VSQL语法树进行构造解析及对应各数据库的包括字段、函数、分页的SQL语法进行对象解析,得到原生SQL语句;
d)、发送数据库执行,得到结果;
其中,
在步骤a)中,所述预定义的函数及语法包括临时表、存储过程调用、自定义函数调用、分页、分区统计函数;
在步骤b)中,所述VSQL语句支持集成使用临时表、语法提示功能,并能提供VSQL查询分析插件、客户端数据库查询工具;所述VSQL语句提供应用程序编程接口API,所述API能对所述VSQL语句行解析及二次加工;
可访问支持的数据库类型包括SQLServer、Oracle、DB2、Mysql、Postgresql、Mongodb、H2、neo4j、达梦、南通。
2.根据权利要求1所述的通用跨数据库访问方法,其特征在于,在步骤a)中,所述数据操纵语言DML的指令包括新增、查询、更新、删除表数据、基本的函数,所述数据库模式定义语言DDL的指令包括新建表结构、修改表结构、更新表结构、删除表结构、存储过程、自定义函数调用、临时表使用。
3.根据权利要求2所述的通用跨数据库访问方法,其特征在于,所述VSQL语句的表达式采用二叉树结构,并支持计算优先级查询。
4.根据权利要求1所述的通用跨数据库访问方法,其特征在于,在步骤b)中,所述VSQL词法包括关键词、字段、条件和函数),所述关键词包括select、from和where,所述字段包括f1和f2,所述条件包括f1、=和1,所述函数包括LENGTH和f1。
5.根据权利要求3或4所述的通用跨数据库访问方法,其特征在于,所述VSQL语句采用统一的表结构、索引定义、更新语法标准,统一的函数定义标准、多标关联更新语法标准、分页语法标准,统一的自定义函数、存储过程调用语法标准、运算符及注释格式标准。
6.一种通用跨数据库平台,其特征在于,使用如权利要求1~5任一项所述通用跨数据库访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510605990.6A CN105260403B (zh) | 2015-09-22 | 2015-09-22 | 通用跨数据库访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510605990.6A CN105260403B (zh) | 2015-09-22 | 2015-09-22 | 通用跨数据库访问方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260403A CN105260403A (zh) | 2016-01-20 |
CN105260403B true CN105260403B (zh) | 2019-05-31 |
Family
ID=55100095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510605990.6A Active CN105260403B (zh) | 2015-09-22 | 2015-09-22 | 通用跨数据库访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260403B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844490B (zh) * | 2016-09-19 | 2020-12-08 | 华为技术有限公司 | 一种数据库的分库方法及装置 |
CN106528797A (zh) * | 2016-11-10 | 2017-03-22 | 上海轻维软件有限公司 | 基于Elasticsearch的DSL查询方法 |
CN108121709A (zh) * | 2016-11-28 | 2018-06-05 | 中兴通讯股份有限公司 | 一种搜索处理方法及装置 |
IT201700082320A1 (it) * | 2017-07-19 | 2019-01-19 | Nuovo Pignone Tecnologie Srl | Sistema di ricerca per banche dati e metodo |
CN108427699B (zh) * | 2017-09-22 | 2021-08-24 | 平安科技(深圳)有限公司 | 快速初始化系统数据库的方法、装置及存储介质 |
CN108446289A (zh) * | 2017-09-26 | 2018-08-24 | 北京中安智达科技有限公司 | 一种支持异构数据库的数据检索方法 |
CN110109893A (zh) * | 2018-02-02 | 2019-08-09 | 北京京东尚科信息技术有限公司 | 数据建模和操作的方法和装置 |
CN110309171B (zh) * | 2018-02-26 | 2021-08-20 | 华为技术有限公司 | 数据库查询方法、服务器和系统 |
CN108959591A (zh) * | 2018-07-11 | 2018-12-07 | 物数(上海)信息科技有限公司 | 数据库与区块链集成的方法、系统、设备及存储介质 |
CN109684097B (zh) * | 2018-12-21 | 2023-03-31 | 浪潮软件股份有限公司 | 一种基于cmsp的json数据解析与存储方法 |
CN110046163A (zh) * | 2019-04-12 | 2019-07-23 | 网宿科技股份有限公司 | 一种数据检索方法及系统 |
CN110262969B (zh) * | 2019-06-13 | 2022-03-22 | 泰康保险集团股份有限公司 | 报表测试方法、装置、电子设备及计算机可读存储介质 |
CN110688397B (zh) * | 2019-07-30 | 2022-05-17 | 民生科技有限责任公司 | 一种基于sql的分布式数据统一访问系统及方法 |
CN110674110B (zh) * | 2019-09-09 | 2022-07-05 | 中国建设银行股份有限公司 | 银行分布式数据库的构建方法及装置 |
CN112541001A (zh) * | 2019-09-23 | 2021-03-23 | 北京国双科技有限公司 | 数据查询方法、装置、存储介质及设备 |
CN110674162A (zh) * | 2019-09-23 | 2020-01-10 | 税友软件集团股份有限公司 | 一种数据库语句执行方法及相关装置 |
CN111143330B (zh) * | 2019-12-27 | 2023-10-03 | 湖南亚信软件有限公司 | 一种多模态数据库解析引擎的实现方法及装置 |
CN113688176A (zh) * | 2020-05-19 | 2021-11-23 | 阿里巴巴集团控股有限公司 | 数据查询方法和数据查询装置 |
CN113836164A (zh) * | 2020-06-24 | 2021-12-24 | 中兴通讯股份有限公司 | 统一sql的方法、系统、设备及介质 |
CN112231374A (zh) * | 2020-09-04 | 2021-01-15 | 北京南天软件有限公司 | 一种通用数据库驱动适配接口系统 |
CN113641745B (zh) * | 2021-08-18 | 2024-01-26 | 上海通联金融服务有限公司 | 跨语言平台操作数据库的方法 |
CN113672781A (zh) * | 2021-08-20 | 2021-11-19 | 平安国际智慧城市科技股份有限公司 | 数据查询方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158975A (zh) * | 2007-11-21 | 2008-04-09 | 金蝶软件(中国)有限公司 | 一种访问不同类型数据库的方法和系统 |
CN101645074A (zh) * | 2009-09-07 | 2010-02-10 | 浪潮集团山东通用软件有限公司 | 一种访问不同类型关系型数据库的方法 |
CN102521254A (zh) * | 2011-11-17 | 2012-06-27 | 广东电网公司电力科学研究院 | 异构数据库的统一访问方法 |
-
2015
- 2015-09-22 CN CN201510605990.6A patent/CN105260403B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158975A (zh) * | 2007-11-21 | 2008-04-09 | 金蝶软件(中国)有限公司 | 一种访问不同类型数据库的方法和系统 |
CN101645074A (zh) * | 2009-09-07 | 2010-02-10 | 浪潮集团山东通用软件有限公司 | 一种访问不同类型关系型数据库的方法 |
CN102521254A (zh) * | 2011-11-17 | 2012-06-27 | 广东电网公司电力科学研究院 | 异构数据库的统一访问方法 |
Non-Patent Citations (1)
Title |
---|
分布式异构数据库透明访问系统的研究与实现;王亚兰 等;《计算机与现代化》;20130531(第5期);第47-51页 |
Also Published As
Publication number | Publication date |
---|---|
CN105260403A (zh) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260403B (zh) | 通用跨数据库访问方法 | |
CN106934062B (zh) | 一种查询elasticsearch的实现方法及系统 | |
CN109299102B (zh) | 一种基于Elastcisearch的HBase二级索引系统及方法 | |
CN109614432B (zh) | 一种基于语法分析的获取数据血缘关系的系统及方法 | |
CN105868204B (zh) | 一种转换Oracle脚本语言SQL的方法及装置 | |
CN102799644B (zh) | 基于元数据的数据库动态查询系统和数据库动态查询方法 | |
CN107038222B (zh) | 数据库缓存实现方法及其系统 | |
JP2018014096A (ja) | 階層ウィンドウデータベースクエリ実行 | |
CN110019314B (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
CN105718593A (zh) | 一种数据库查询优化方法及系统 | |
CN106933869B (zh) | 一种操作数据库的方法和装置 | |
US20210209098A1 (en) | Converting database language statements between dialects | |
CN113467785B (zh) | 一种拟态数据库的sql转译方法和系统 | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN111198898B (zh) | 大数据查询方法及大数据查询装置 | |
US20230401210A1 (en) | Just-In-Time Injection In A Distributed Database | |
CN112765209A (zh) | 一种数据库间的sql语句语法迁移方法及系统 | |
CN116795859A (zh) | 数据分析方法、装置、计算机设备和存储介质 | |
CN117033418A (zh) | 语句重写方法、系统及装置 | |
CN108766507A (zh) | 一种基于CQL与标准信息模型openEHR的临床质量指标计算方法 | |
US10409815B2 (en) | SQLScript compilation tracing system | |
WO2021022180A1 (en) | Query optimization | |
CN116610697A (zh) | 数据库查询语句的查询方法、存储介质及设备 | |
CN111078728A (zh) | 一种数据库归档模式下跨库查询方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 519085 No. 19 Science and Technology Fifth Road, Tangjiawan Town, Zhuhai City, Guangdong Province Applicant after: Tongwang Technology Co., Ltd. Address before: 519085 Tongwang Science Park, No. 19 Science and Technology Fifth Road, Harbour Avenue, Tangjiawan Town, Zhuhai City, Guangdong Province Applicant before: GUANGDONG TOONE TECHNOLOGY CO., LTD. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |