CN109656943A - 屏蔽异构数据库查询复杂度的数据服务方法 - Google Patents
屏蔽异构数据库查询复杂度的数据服务方法 Download PDFInfo
- Publication number
- CN109656943A CN109656943A CN201811516331.5A CN201811516331A CN109656943A CN 109656943 A CN109656943 A CN 109656943A CN 201811516331 A CN201811516331 A CN 201811516331A CN 109656943 A CN109656943 A CN 109656943A
- Authority
- CN
- China
- Prior art keywords
- condition
- syntax
- user
- query
- field
- 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 17
- 238000004458 analytical method Methods 0.000 claims abstract description 5
- 230000010354 integration Effects 0.000 claims abstract description 4
- 238000006243 chemical reaction Methods 0.000 claims description 14
- 238000000354 decomposition reaction Methods 0.000 claims description 3
- 238000005215 recombination Methods 0.000 claims description 3
- 230000006798 recombination Effects 0.000 claims description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000005314 correlation function Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了屏蔽异构数据库查询复杂度的数据服务方法,具体步骤如下;首先用户选择好想要查询的字段、表、以及筛选数据的条件;然后通过抽象语法树的方式,统一将用户输入的文法进行分析操作,并将用户输入的文法转换为SQL语句或者是NoSQL语句;用户输入的文法语句格式为:表名::=<字段>::=<条件>[,<条件>]|query:最后将查询到的数据整合成Json文件,返回统一结果集,本数据服务方法能够屏蔽异构数据库查询的复杂度,可以省去学习非关系型数据库这一步骤,通过统一的文法去操作异构数据库,返回统一的Json结果,这样不但能够省去复杂的数据库查询语句,并且能够统一规范数据源,提高数据质量,能够使用户获取数据的过程更简单、快速、全面。
Description
技术领域
本发明涉及一种既可以在软件开发时应用,也可以在后期运维中应的数据库的查询方法,尤其是屏蔽异构数据库查询复杂度的数据服务方法。
背景技术
随着云技术、大数据的广泛应用,非关系型数据库逐渐开始流行起来。虽然当今互联网市场上存在着各种数据处理软件和方法,但是对于异构数据库还没有一种好的统一的处理方法,异构数据库的数据安全得不到保障,熟悉非关系型数据库的人才却又少之又少,对于非关系型数据库开发时开发成本较高,影响开发进度,因此能够屏蔽掉异构数据库复杂度的数据查询方法正是市场所需要的。
发明内容
本发明的技术任务是针对以上现有技术的不足,而提供屏蔽异构数据库查询复杂度的数据服务方法。
本发明解决其技术问题所采用的技术方案是:屏蔽异构数据库查询复杂度的数据服务方法,其特征在于:具体步骤如下;
步骤一:用户通过图形化界面选择好想要查询的字段、表、以及筛选数据的条件,其中用户选择的字段、表、条件作为用户输入的文法;
步骤二:通过抽象语法树的方式,统一将用户输入的文法进行分析操作,并将用户输入的文法转换为SQL语句或者是NoSQL语句;
在进行SQL转换时:通过抽象语法树将文法中的字段、表名、以及条件提取出来,然后利用结构化数据库的固定语法格式将字段、表名、以及条件,按照固定的顺序添加到SQL语句中,得到规范的SQL语句;
在进行NoSQL转换时:首先,会对想要转换的数据库类型进行判断,是MongoDB数据库还是Neo4j数据库。然后通过抽象语法树将文法中的字段、表名、以及条件提取出来,对提取出来的条件按照MongoDB数据库或者Neo4j数据库的规则进行分解重组;
步骤三:通过用户输入的文法语句来实现对异构数据库的统一操作,其中用户输入的文法语句格式为:表名::=<字段>::=<条件>[,<条件>]|query;
步骤四:将查询到的数据整合成Json文件,返回统一结果集。
进一步改进:在步骤二中,在进行NoSQL转换时,在条件这个环节上使用符号代换,利用用户输入的文法中符号对应的ACSII码来转换对应的NoSQL条件语句。
本发明的优点:本数据服务方法能够屏蔽异构数据库查询的复杂度,可以省去学习非关系型数据库这一步骤,支持现在使用较多的MongoDB数据库和Neo4j数据库,通过统一的文法去操作异构数据库,返回统一的Json结果,这样不但能够省去复杂的数据库查询语句,并且能够统一规范数据源,提高数据质量,能够使用户获取数据的过程更简单、快速、全面,适用于大部分主流编程语言,因为市场上使用率排名靠前的编程语言都支持Json文件,都集成了操作Json文件的相关函数。
附图说明
图1是本发明的结构框架图。
具体实施方式
下面结合说明书附图对本发明做以下详细说明。
如图所示,屏蔽异构数据库查询复杂度的数据服务方法,其特征在于:具体步骤如下;
步骤一:用户通过图形化界面选择好想要查询的字段、表、以及筛选数据的条件,其中用户选择的字段、表、条件作为用户输入的文法;
步骤二:通过抽象语法树的方式,统一将用户输入的文法进行分析操作,并将用户输入的文法转换为SQL语句或者是NoSQL语句;
在进行SQL转换时:通过抽象语法树将文法中的字段、表名、以及条件提取出来,然后利用结构化数据库的固定语法格式将字段、表名、以及条件,按照固定的顺序添加到SQL语句中,得到规范的SQL语句;
在进行NoSQL转换时:首先,通过抽象语法树将文法中的字段、表名、以及条件提取出来,对提取出来的条件按照MongoDB数据库和Neo4j数据库的规则进行分解重组;
步骤三:通过用户输入的文法语句来实现对异构数据库的统一操作,其中用户输入的文法语句格式为:表名::=<字段>::=<条件>[,<条件>]|query;
步骤四:将查询到的数据整合成Json文件,返回统一结果集。
进一步改进:在步骤二中,在进行NoSQL转换时,在条件这个环节上使用符号代换,利用用户输入的文法中符号对应的ACSII码来转换对应的NoSQL条件语句。
其工作原理是:实施例一:表名::=<字段>::=<条件>[,<条件>]|query;
用户输入的文法为,Stu::=son::=son=’8’|query;这是一个简单的查询文法语句,第一个字段便是想要查询的表名,然后再重新组合SQL或者是NoSQL。
关系型数据库,转换为select son from stu where son=8;
非关系型数据库MongoDB,转换为db.getCollection(stu).find({sno:8});
非关系型数据库Neo4j,转换为MATCH(stu)WHERE son=8RETURN son;;
实施例二用户输入的文法为,Stu::=age,name::=age!=’18’,name=’张三’|query;
关系型数据库,转换为select age,name from stu where age!=18,name=’张三’;
非关系型数据库MongoDB,转换为:db.getCollection(stu).find({age:{$ne:18},{name:’张三’});
非关系型数据库Neo4j,转换为MATCH(stu)WHERE age!=18,name=‘张三’RETURNage,name;;
实施例三用户输入的文法为,products::=ProductName,UnitPrice::=ProductName LIKE'C%'AND UnitPrice>100;
关系型数据库,转换为SELECT p.ProductName,p.UnitPrice FROM products ASp WHERE p.ProductName LIKE'C%'AND p.UnitPrice>100;
非关系型数据库MongoDB,转换为db.products.find({"ProductName":"C%","UnitPrice":{"$gt":100}},{"ProductName":1,"UnitPrice":1});
非关系型数据库Neo4j,转换为MATCH(p:Product)WHERE p.productName STARTSWITH"C"AND p.unitPrice>100RETURN p.productName,p.unitPrice;
所有::=号左边的都是非终结符,所以“son”是非终结符,解析“Stu”时遇到了“son”将会进入“son”产生式,而解析到普通query单词就不会继续解析。解析到query就代表着语句结束,终结符就是语句的终结,读到它表示产生式分析结束,相反,非终结符就是一个新产生式的开始。
MongoDB的转换,首先按照文法的解析顺序,会解析到表名,将表名部分替换成db.getCollection(stu)。然后会解析到字段,但是由于MongoDB查询不涉及到字段部分,所以直接跳到条件阶段,文法条件为son=8,首先使用ACSII码替换,将“=”替换为“:”,条件的格式为find({<条件>}),然后将替换好的“son:8”填入<条件>处,MongoDB中关键词自动使用“.”连接,替换完成。
Neo4j的转换,首先按照文法的解析顺序,会解析到表名,将表名部分替换成MATCH(stu)。然后会解析到字段,Neo4j的语法会将字段的位置放到语句末尾,用RETURN<字段名>[,<字段名>]的形式表示,将字段按照顺序填写在RETURN后,用逗号隔开,即“RETURNson;”。最后解析的是条件,Neo4j的条件书写格式与SQL一样,在WHERE后添加条件语句,Neo4j的对于条件无需转换,直接使用“WHERE son=8”即可。
当读取到条件中的不等于符号时,编译器会返回它的ACSII码,“!=”的ACSII码为33和61,我们会将判断这两个ACSII码,并设置对应的返回值为NoSQL的{字段:{$ne:值}的格式来表示这个条件。
当得到对应数据库的SQL语句时对数据库进行查询,因为可能使用不同的开发语言,所以查询结束时想要输出Json结果就需要不同的脚本语言来转换,转换完成后便输出最终的查询结果Json文件。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (2)
1.屏蔽异构数据库查询复杂度的数据服务方法,其特征在于:具体步骤如下;
步骤一:用户通过图形化界面选择好想要查询的字段、表、以及筛选数据的条件,其中用户选择的字段、表、条件作为用户输入的文法;
步骤二:通过抽象语法树的方式,统一将用户输入的文法进行分析操作,并将用户输入的文法转换为SQL语句或者是NoSQL语句;
在进行SQL转换时:通过抽象语法树将文法中的字段、表名、以及条件提取出来,然后利用结构化数据库的固定语法格式将字段、表名、以及条件,按照固定的顺序添加到SQL语句中,得到规范的SQL语句;
在进行NoSQL转换时:首先,通过抽象语法树将文法中的字段、表名、以及条件提取出来,对提取出来的条件按照MongoDB数据库和Neo4j数据库的规则进行分解重组;
步骤三:通过用户输入的文法语句来实现对异构数据库的统一操作,其中用户输入的文法语句格式为:表名::=<字段>::=<条件>[,<条件>]|query;
步骤四:将查询到的数据整合成Json文件,返回统一结果集。
2.根据权利要求1所述的屏蔽异构数据库查询复杂度的数据服务方法,其特征在于:在步骤二中,在进行NoSQL转换时,在条件这个环节上使用符号代换,利用用户输入的文法中符号对应的ACSII码来转换对应的NoSQL条件语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811516331.5A CN109656943A (zh) | 2018-12-12 | 2018-12-12 | 屏蔽异构数据库查询复杂度的数据服务方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811516331.5A CN109656943A (zh) | 2018-12-12 | 2018-12-12 | 屏蔽异构数据库查询复杂度的数据服务方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109656943A true CN109656943A (zh) | 2019-04-19 |
Family
ID=66113222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811516331.5A Pending CN109656943A (zh) | 2018-12-12 | 2018-12-12 | 屏蔽异构数据库查询复杂度的数据服务方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109656943A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486998A (zh) * | 2020-12-14 | 2021-03-12 | 北京航空航天大学 | 一种基于bpmn的微服务工作流程导入方法 |
CN112667662A (zh) * | 2020-12-25 | 2021-04-16 | 银盛支付服务股份有限公司 | 一种基于json键值的解析sql和nosql的通用方法 |
CN112860713A (zh) * | 2021-04-23 | 2021-05-28 | 脉策(上海)智能科技有限公司 | 用于获取图层数据的方法、电子设备和存储介质 |
CN113254519A (zh) * | 2021-05-28 | 2021-08-13 | 北京奇岱松科技有限公司 | 多源异构数据库的访问方法、装置、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN102982075A (zh) * | 2012-10-30 | 2013-03-20 | 北京京东世纪贸易有限公司 | 支持访问异构数据源的系统和方法 |
CN104794247A (zh) * | 2015-05-14 | 2015-07-22 | 东南大学 | 一种多结构数据库集成查询方法 |
CN106407302A (zh) * | 2016-08-30 | 2017-02-15 | 东华大学 | 支持通过简单sql调用中间件数据库特有功能的方法 |
-
2018
- 2018-12-12 CN CN201811516331.5A patent/CN109656943A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN102982075A (zh) * | 2012-10-30 | 2013-03-20 | 北京京东世纪贸易有限公司 | 支持访问异构数据源的系统和方法 |
CN104794247A (zh) * | 2015-05-14 | 2015-07-22 | 东南大学 | 一种多结构数据库集成查询方法 |
CN106407302A (zh) * | 2016-08-30 | 2017-02-15 | 东华大学 | 支持通过简单sql调用中间件数据库特有功能的方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486998A (zh) * | 2020-12-14 | 2021-03-12 | 北京航空航天大学 | 一种基于bpmn的微服务工作流程导入方法 |
CN112486998B (zh) * | 2020-12-14 | 2023-07-14 | 北京航空航天大学 | 一种基于bpmn的微服务工作流程导入方法 |
CN112667662A (zh) * | 2020-12-25 | 2021-04-16 | 银盛支付服务股份有限公司 | 一种基于json键值的解析sql和nosql的通用方法 |
CN112860713A (zh) * | 2021-04-23 | 2021-05-28 | 脉策(上海)智能科技有限公司 | 用于获取图层数据的方法、电子设备和存储介质 |
CN113254519A (zh) * | 2021-05-28 | 2021-08-13 | 北京奇岱松科技有限公司 | 多源异构数据库的访问方法、装置、设备和存储介质 |
CN113254519B (zh) * | 2021-05-28 | 2021-10-08 | 北京奇岱松科技有限公司 | 多源异构数据库的访问方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109656943A (zh) | 屏蔽异构数据库查询复杂度的数据服务方法 | |
CN105138501B (zh) | 一种可配置的动态报表生成方法及系统 | |
CN108121542B (zh) | 一种基于MyBatis的SQL语句的配置方法、系统 | |
CN105868204B (zh) | 一种转换Oracle脚本语言SQL的方法及装置 | |
CN104965735B (zh) | 用于生成升级sql脚本的装置 | |
US8417512B2 (en) | Method, used by computers, for developing an ontology from a text in natural language | |
CN108446289A (zh) | 一种支持异构数据库的数据检索方法 | |
CN106934062A (zh) | 一种查询elasticsearch的实现方法及系统 | |
CN104881469B (zh) | 一种数据导出方法和装置 | |
US10789049B2 (en) | Recipe program code generation method and recipe compiling cloud platform system | |
CN104598635B (zh) | 一种基于xml描述的复杂文档自动生成方法 | |
CN106547729B (zh) | 一种数据报表的动态生成方法及系统 | |
CN101788992A (zh) | 一种数据库查询语句的转换方法和转换系统 | |
CN109446221A (zh) | 一种基于语义分析的交互式数据探查方法 | |
CN103902269B (zh) | 一种通过xml文件生成mib文件的系统及方法 | |
US20160342628A1 (en) | Textual query editor for graph databases that performs semantic analysis using extracted information | |
CN103729463A (zh) | 基于Lucene和Solr实现全文检索的方法 | |
CN107133027A (zh) | 一种语法树层次化表示方法 | |
CN106780656A (zh) | 图表输出方法及装置 | |
CN109522008A (zh) | 一种区块链智能合约构建方法 | |
CN106933869A (zh) | 一种操作数据库的方法和装置 | |
CN111695002B (zh) | 一种基于xml语句的数据库无关的查询方法 | |
CN109656951A (zh) | 基于表达式查询数据的方法及查询系统 | |
CN107291522A (zh) | 一种面向自定义规则文件的编译优化方法及系统 | |
CN103092973B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190419 |