CN109656943A - 屏蔽异构数据库查询复杂度的数据服务方法 - Google Patents

屏蔽异构数据库查询复杂度的数据服务方法 Download PDF

Info

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
Application number
CN201811516331.5A
Other languages
English (en)
Inventor
李巍
王鸥
于亮亮
郑善奇
杨明钰
张文杰
吴昕昀
刚毅凝
王东东
邵施岐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Liaoning Electric Power Energy Development Group Co Ltd
Information and Telecommunication Branch of State Grid Liaoning Electric Power Co Ltd
Original Assignee
Liaoning Electric Power Energy Development Group Co Ltd
Information and Telecommunication Branch of State Grid Liaoning Electric Power Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Liaoning Electric Power Energy Development Group Co Ltd, Information and Telecommunication Branch of State Grid Liaoning Electric Power Co Ltd filed Critical Liaoning Electric Power Energy Development Group Co Ltd
Priority to CN201811516331.5A priority Critical patent/CN109656943A/zh
Publication of CN109656943A publication Critical patent/CN109656943A/zh
Pending legal-status Critical Current

Links

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条件语句。
CN201811516331.5A 2018-12-12 2018-12-12 屏蔽异构数据库查询复杂度的数据服务方法 Pending CN109656943A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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调用中间件数据库特有功能的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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