CN107515887B - 一种适用于多种大数据管理***的交互式查询方法 - Google Patents
一种适用于多种大数据管理***的交互式查询方法 Download PDFInfo
- Publication number
- CN107515887B CN107515887B CN201710515380.6A CN201710515380A CN107515887B CN 107515887 B CN107515887 B CN 107515887B CN 201710515380 A CN201710515380 A CN 201710515380A CN 107515887 B CN107515887 B CN 107515887B
- Authority
- CN
- China
- Prior art keywords
- document
- data
- association
- query
- model
- 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
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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种适用于多种大数据管理***的交互式查询方法,其步骤包括:1)建立关联文档模型,其包括文档集与关联集,所述关联集是文档之间的关联构成的集合;2)将不同的原始数据模型转换为关联文档模型,通过关联文档模型将不同的数据源连接为一体;3)基于关联文档模型,建立适合于多元数据的统一查询语言;4)利用适合于多元数据的统一查询语言,实现对关系型数据库、图数据库以及文件***的统一查询。本发明首次提出了适合于多元数据管理***的统一查询语言,可以实现对关系型数据库、图数据库,以及文件***的统一查询。
Description
技术领域
本发明涉及一种查询语言,具体涉及一种适用于大数据管理***的交互式查询语言及查询方法,属于大数据、数据库技术领域。
背景技术
随着计算机的不断普及,数据的管理与处理需求日益迫切,人们针对不同的数据形态和特征提出了不同的数据模型,并实现了相应的数据管理***来实现数据的管理和分析。比较有影响力的数据模型如E-R模型,自上个世纪70年代提出以来,E-R模型基本统治了数据库世界长达40多年。近十年以来,随着互联网和物联网应用的深入,大规模的结构化、半结构化、非结构数据的产生引发了NoSQL运动[Cattell R.Scalable SQL and NoSQLdata stores[J].ACM SIGMOD Record,2010,39(4):12-27]。数据库世界由最初的SQL垄断的局面转变成传统SQL、NoSQL、NewSQL分治的局面。
构建一个完善的大数据应用***,需要充分考虑到来自4V[Gupta R,Gupta H,Mohania M.Cloud computing and big data analytics:what is new from databasesperspective?[C]//Proc of 1st BDA.,New Delhi,India:,Springer BerlinHeidelberg,2012:42–61.]的挑战,对大数据进一步分析、关联挖掘,甚至科学发现。以生物学科的科学数据为例,既有通过测序、质谱、核磁共振等仪器每天产生的大量基因序列文件、蛋白质序列文件、蛋白质的结构和功能等微观数据,也有传统的采用MongoDB或者SQL数据库来进行保存的物种信息、生理生化性状、反应条件信息等宏观数据,还有大量的文献、专利等知识信息。为了更好的实现知识发现,科研人员往往还会引进生物本体,通过RDF关联网络的方式来管理物种、蛋白质、基因等数据之间的大规模的关联。这些微观与宏观层面的信息最终形成了一个有机的数据库,从而从整体的层面对生命来进行理解和研究。以数据驱动的科学发现往往需要调度一系列的数据流水线完成,可以看出,这些流水线会跨越数据的采集、批量写入、查询、分析以及可视化等多个过程,这其中就存在着一个巨大的问题:如何让流水线编程人员不再考虑底层数据存储模型的差异性,而能以一种统一的方式访问和操作数据?这个问题映射到数据管理技术中,即如何跨越SQL、NoSQL、NewSQL数据库的边界,实现多元数据模型的统一数据访问,并为Hadoop、Spark这样的计算框架提供统一的数据操作接口。
目前关系数据库涵盖分布式数据库到内存数据库,主要有MySQL、PostgreSQL、Oracle、SQLite等,通过ACID和事务确保数据访问的一致性,使用表、列、关键字对数据进行处理,适用于结构固定、强一致性的应用场合。1986年10月,美国ANSI采用SQL作为关系数据库管理***的标准语言(ANSI X3.135-1986),后为ISO采纳为国际标准。SQL从而成为目前使用最广泛的关系数据库查询语言。
NoSQL数据库包括Key-Value数据库、列式数据库、文档数据库、图数据库。由于NoSQL数据库目前还缺乏一套统一的查询语言,有部分研究致力于针对NoSQL数据库封装出SQL查询的接口,如Hive提供类似于SQL的HQL查询语言,简化了NoSQL数据库的使用难度。Spark SQL是一种基于Spark DataFrame大数据处理框架的SQL实现,支持基于SQL的大数据处理和分析。基于DataFrame,Spark能够为目前大量数据库如MySQL、HBase、Cassandra、MongoDB提供基于大数据的SQL查询分析能力。
作为NoSQL数据库中的一个重要分支,图数据库往往用来管理大规模的关联信息,如物种与基因之间的关联,人们的社交关系,亚马逊仓库零售主数据***等,支持基于属性图模型的快速关联检索。目前典型的图数据库有Neo4j、Titan、Virtuoso等。针对图数据库,Neo4J提出Cypher查询语言,采用类似于SQL的语法简洁表达图数据模型的关联查询,简化图数据库使用难度。TinkerPop项目面向属性图提出Gremlin图遍历分析语言,支持多种图数据库,如Titan、OrientDB、TinkerGraph等,被称为图数据库界的Perl。此外,RDF模型是基于图模型的一种语义描述框架,适合表达语义信息及其关联,目前典型的RDF数据库有Jena、Virtuoso等。2004年RDF数据访问工作组发布了第一个RDF查询语言SPARQL,2008年SPARQL协议和查询语言正式成为一项W3C推荐标准。SPARQL采用结构化查询方式,通过where子图匹配实现关联查询,目前,大部分RDF数据库都支持标准的SPARQL查询。
不难看出,目前针对SQL、NoSQL数据库还缺乏一套统一的查询语言,其中图数据库由于其特殊的查询和分析方式,通常被推到了SQL查询语言的另一面。因此,人们在选择数据模型的时候,往往需要作出抉择:是选择SQL数据库(包括支持SQL的NoSQL数据库),还是图数据库?这种抉择往往会带来上层应用的差异性,是采用关联分析能力强大的Gremlin、SPARQL查询语言,还是采用传统的基于二维表的SQL查询语言?
基于以上背景,本发明提出一种新型的查询语言Simba,用以实现对关系型数据库、图数据库,以及文件***的统一查询。
发明内容
本发明的目的在于提供一种适用于多种大数据管理***的交互式查询方法,通过统一的查询语言Simba,可以针对关系型数据库、图数据库,以及文件***实现查询。
本发明采用的技术方案如下:
一种适用于多种大数据管理***的交互式查询方法,其步骤包括:
1)建立关联文档模型,其包括文档集与关联集,所述关联集是文档之间的关联构成的集合;
2)将不同的原始数据模型转换为关联文档模型,通过关联文档模型将不同的数据源连接为一体;
3)基于关联文档模型,建立适合于多元数据的统一查询语言;
4)利用适合于多元数据的统一查询语言,实现对关系型数据库、图数据库以及文件***的统一查询。
进一步地,所述适合于多元数据管理***的统一查询语言包括FIND、WITH、WHERE、RETURN四个子句;FIND语句确定查询的基本变量,这些变量必须代表文档;WITH语句确定在匹配条件语法中使用的中间变量;WHERE语句确定返回结果需要满足的条件;RETURN语句包含了需要返回给用户的数据引用。
进一步地,FIND语句中的基本查询空间由一类文档或多类文档构成,并且要求关联文档模型不能进行无关联的两类文档之间的比较;WITH语句中隐式的定义了将基本查询空间中的文档以及关联进行的拓展;WHERE语句中不仅能够隐式地定义拓展查询空间的文档、关联,还能进行关联文档中间模型的选择运算;RETURN语句中包含文档、链接、属性层次的URL,或者代表URL的变量,该语句主要执行关联文档模型的投影运算,返回的结果是一个关联文档。
进一步地,所述统一查询语言的执行过程分为四步:确定文档、建立文档之间关系、选择、投影。
进一步地,通过所述关联文档模型将不同的数据源连接为一体,形成一个网络,并使用类似URL的形式形成所述统一查询语言的数据引用语法,来统一访问网络中的数据。
进一步地,所述统一查询语言中的中间变量代表与基本搜索空间相关的文档集合、数值、字符串,中间变量在匹配语法中使用,根据中间变量的类型进行相应的条件匹配操作。
本发明提出的一套中间语言,不依赖于特定的操作***和编程语言。由于Simba语言包含了多种数据模型的操作,其中某些操作并不能由数据库直接完成,因此在实际应用中,可以针对Simba语言开发数据库***的SDK(Software Development Kit,软件开发工具包),在本地数据库查询语言基础上进行一些补偿运算。比如:针对MongoDB数据库开发可理解并执行Simba语言的Java程序包(或者C++程序包),这样客户程序就可以通过调用SDK中的API(Application Programming Interface,应用程序编程接口)采用Simba语言来操作MongoDB,即通过SimbaQL翻译器对数据管理***进行查询,这种模式如图1所示。
另外一种方式是,数据库直接基于Simba语言设计通信协议,客户端程序可以通过发送Simba命令的网络请求,得到需要的查询结果,该模式如图2所示。
如图3所示,本发明的Simba查询语言包含以下几个部分:
1.SimbaQL语法结构:提供SimbaQL的总体结构及FIND、WITH、WHERE、RETURN等各子句的语法。
2.数据引用语法:说明如何在SimbaQL中引用数据源中的数据;
3.中间变量语法:说明如何在SimbaQL中定义并使用中间变量;
4.匹配条件语法:说明如何在SimbaQL中书写匹配条件;
5.SimbaQL解析程序:提供基于Java的SimbaQL解析程序,用以编写SimbaQL客户端程序,或者查询引擎执行程序;
与现有技术相比,本发明的优点如下:
(1)首次提出了适合于多元数据管理***的统一查询语言,该语言可以实现对关系型数据库、图数据库,以及文件***的统一查询。可以检索关系表中满足指定属性条件的记录,也可以检索到图数据库中满足指定关联条件的多个顶点,同时也可以检索到文件***中特定的文件。在目前的开发技术中,应用程序必须通过SQL查询语言、Cypger/gremlin语言,以及API的方式分别实现对关系型数据库、图数据库、文件***的检索,这种差异性的做法带来了掌握多种语言的困难、以及编程的不通用性。而通过SimbaQL,则需要一套统一的语法格式即可。这种区别如图4、图5所示。
(2)对大数据管理***的典型查询方式进行了归纳,对复杂的SQL查询功能和图查询功能进行了简化,SimbaQL的目标是能覆盖大部分查询需求,并且让主流的数据管理***很方便的支持该语言,因此抛弃了SQL查询以及图查询中的复杂功能,如:子查询,或者查询结果的UNION等操作。SimbaQL建议这些二次操作,可以让大数据计算框架来做,SimbaQL本身只完成简单的数据查询提取的功能。
(3)SimbaQL语言针对的多种数据模型数据库的查询,其中包括了多种数据模型的运算。因此如果某个模型的查询语言不能完成其它模型的运算,SimbaQL语言的实现可以帮助该模型完成。比如,MongoDB的查询语言无法完成文档的JOIN运算,而SimbaQL支持JOIN运算,因此SimbaQL的实现就会补偿这些运算。
(4)SimbaQL引入了中间变量的特性,用以表达并隐藏用户不感兴趣的信息。以查找两个具有关联的实体为例:
FIND x,y WITH$m=x.child WHERE$m.child=y RETURN x,y
该语句引入了中间变量$m,该变量所代表的对象是x的孩子,且y是他的孩子。该查询用以返回所有的祖孙俩,但提出该查询的应用并不需要关心$m具体是谁。
同时这种方式避免了拼写重复,实现了快捷写法。
(5)SimbaQL引入了多级引用属性的表达方式,如:x.knows.knows.name代表x认识的某个人y认识的某个人z的姓名。在传统的查询语言中,不支持多级引用。这种方式有效的减少了代码的重复,并具有直观的效果。
附图说明
图1示出通过SimbaQL翻译器对数据管理***进行查询的方式。
图2示出通过SimbaQL网络协议直接对数据管理***进行查询的方式。
图3示出本发明内容的结构图。
图4示出现有技术中需要采用不同的语言查询不同的管理***。
图5示出本发明采用SimbaQL语言统一查询不同的管理***。
图6是LDM模型的结构示意图。
具体实施方式
下面通过具体实施例和附图,对本发明做进一步说明。
本发明的SimbaQL的设计以LinkedDocument中间模型(关联文档模型,LinkedDocument Model,简称LDM)为基础,经过LDM运算与其它模型运算的映射以及SDK的补偿运算,达到多种数据模型数据库统一查询的目的。
1、Linked Document模型
1)Linked Document模型定义
文档是由一组属性构成的集合,属性是同一种类型数据构成的集合。每个文档默认包含一个唯一标识的主码属性。主码属性与IP地址的功能类似,必须是全局的唯一标识;其它属性的类型可以是任意的,包括一个文档、关联、自定义类型等。关联是一个特殊的文档,其中必须包含(from:主码,to:主码)两个属性,用来表示文档之间的关联,所述关联是指两条数据之间的关系,比如一个person文档与另一个person文档之间的knows关联代表第一个人认识第二个人。文档集与关联集都必须拥有一个名称标识符来说明集合中文档和关联的语义。同一类文档或关联中属性个数可以不同,这就意味着{‘id’:’fffff0’,‘name’:‘bluejoe’,‘age’:30}既可以作为person类文档的一员,也可以作为teacher类文档的一员。
LDM模型是一个由文档集和关联集构成的二元组(文档集,关联集),其中关联集是两类文档之间的多种关系集合。LDM模型的大致结构如图6所示。其中,Documents表示文档集,Links表示关联集,PersonDocument表示人这类文档集合,SoftwareDocument表示软件类文档集合,InventLink表示人发明软件这类关联的集合,1、2表示文档唯一标识符主码,attr1、attr2…表示文档的属性。
2)LDM转换规则
LDM针对的是数据的查询与分析,它提供两种类型的转换规则:原始数据模型到LDM的转换、LDM到现有编程模型要求格式的转换。
a)原始数据模型→LDM
数据模型转换的形式化定义是(G,L,M),其中G代表全局模型的Schema也即是LDM,L代表局部数据模型(关系模型、key-value模型、文档模型、属性图模型),M代表从L到G的映射规则。原始数据模型到LDM的转换主要考虑的是数据的语义,而数据类型层面的转换则可以根据***要求由开发人员自己确定。以下给出的转换包括的原始数据模型有关系模型、key-value模型、文档模型和属性图模型,主要的转换规则如表1所示。其中自定义的转换规则是按照原数据模型的特性,提取出满足某些特征的数据集合。比如提取key-value模型中包含person的key的数据作为Person类文档集合;提取属性图模型中lable为Person的顶点作为Person类文档;将文档模型中Person类文档的personid与Software文档中personid相等这个关系提取为连接集合invent。
表1.原始数据模型到LDM的转换规则
LDM | 关系模型 | Key-value模型 | 文档模型 | 属性图模型 |
属性 | 属性 | Key | 属性 | 属性 |
文档 | 记录 | Pair | 文档 | 顶点 |
文档集合 | 表 | 自定义 | 集合 | 自定义 |
连接 | 外键 | 自定义 | 自定义 | 边 |
连接集合 | 外键 | 自定义 | 自定义 | 自定义 |
需要注意的是,在LDM中不论是文档集还是关联集都必须拥有一个name,因此对于关系模型的外键、以及其它自定义部分的转换过程中,必须由转换人员提供一个name作为集合元素的语义。比如在属性图模型中,可以令lable为‘person’的节点作为LDM中的person类文档;也可以令包含属性‘teacher’的节点作为LDM中的teacher类文档,而事实上这两类文档可能对应着同样的节点。
此外,原始模型到LDM的转换可以不限于以上模型,开发人员可以根据需求定义其它数据模型到LDM的转换规则,比如文件***、列数据库等。
b)LDM→编程模型
LDM到编程模型的转换主要考虑的是数据结构上的关系。目前流行的编程模型如map/reduce、spark SQL、Pergel等能够接受的数据结构主要有数组、表、图。因此以下给出LDM到这三种数据结构的转换规则,如表2所示。
表2.LDM到数组、表、图的转换规则
3)LDM运算规则
LDM的运算规则是基于关系模型、key-value模型、文档模型和属性图模型的运算定义的。其中包括关系模型的集合运算、连接运算、选择运算、投影运算;key-value模型的get运算;文档模型的选择、投影运算;属性图模型的遍历以及选择运算。LDM模型的运算法则主要分为三类:集合运算、关联运算、文档运算,具体的运算规则如表3所示。
表3.LDM的运算规则
4)LDM数据访问规则
由于LDM将数据库连接为了一个网络,我们可以使用类似URL的形式来引用网络中的数据。这个URL的形式如下:
<datasource>.<document>.<link>.<identity>.<propertyName>
其中,datasource表示数据源,比如MySQL,MongoDB等,document表示数据源向LDM映射的文档,link表示数据源向LDM映射的关联,identity表示文档的主码,propertyName表示文档的属性名。
数据可以在不同层次上进行引用,比如对MySQL数据库中person文档的name属性的引用可以表达成:
MySQL.person.name
对MongoDB数据库中person文档的father关联进行应用可以表示成:
MongoDB.person.father
关联代表的是该关联对应的文档集合,我们还可以继续深入进行引用,比如
MongoDB.person.father.name
数据引用URL对应的数据实际上是LDM的建立关系运算和投影运算之后的结果。比如MongoDB.person.father代表的数据是将两个Person类文档建立father关联,并向father关系进行投影运算的结果。
2、SimbaQL语法结构
与SQL和关系模型一样,基于Linked Document模型,每条SimbaQL语句可以转换成Linked Document的运算公式,运算公式由表2中的以下运算构成:“关联运算”中的“建立关联”、“选择运算”;“文档运算”中的“选择运算”、“投影运算”。SimbaQL查询语句主要包括FIND、WITH、WHERE、RETURN四个子句,语法结构如下:
FIND<documents>
WITH<variables>
WHERE<conditions>
RETURN<urls>
其中,FIND子句确定查询的基本变量,每个变量必须对应于Linked Doument中的一类文档;WITH语句确定在匹配条件语法中使用的中间变量,这些中间变量可以是多种数据类型,不限于文档;WHERE确定返回结果需要满足的条件;RETURN语句包含了需要返回给用户的数据引用。下面给出SimbaQL对应的LDM运算过程。
首先,FIND中的基本查询空间由一类文档或多类文档构成,并且SimbaQL要求LDM不能进行无关联的两类文档之间的比较。比如,对person对象和software对象的数据进行查询可以表示成:
FIND MySQL.person p,MySQL.software s
如果person文档与software文档之间没有关联,那么我们只能对person和software分别进行选择运算,而不能进行类似p.inventid=s.id这样的选择运算。
WITH中定义的变量隐式的定义了将基本查询空间中的文档以及关联进行的拓展,比如:
FIND person p WITH$soft=p.invent
以上语句表示我们搜索的Linked Document中包含了Software文档,以及关联invent。它与
Find person p,software s WITH$soft=p.invent
是等价的。
WHERE语句中不仅能够隐式地定义拓展查询空间的文档、关联,还能进行LDM的选择运算。比如:
FIND person p WHERE p.invent.name=’simba’
则隐式的确定了LDM中包括文档集(person,software)、关联集(invent),并且要求software文档满足name属性为‘simba’的条件。
RETURN语句中可以包含文档、链接、属性层次的URL,或者代表URL的变量。该语句主要执行LDM的投影运算,返回的结果是一个Linked Document。
综上所述,SimbaQL的执行分为四步:确定文档、建立文档之间关系、选择、投影。假设FIND中的基本搜索空间为A,B;WHERE语句中隐式确定的文档为C,以及A与C之间的关联L1,选择条件为condition;RETURN语句中的投影空间为space,其它经过运算得到文档为doc;那么SimbaQL语句对应的LDM运算为:
result=σspaceπcondition((A×dB)A×L1C)
比如SimbaQL语句:
FIND person p,software s WHERE p.name=’bluejoe’and p.invent.name=’simbaql’return p.name
对应的LDM运算为:
result=σp.nameπp.name=′bluejoe′and software=′simbaql′(Person×inventSoftware)
3、数据引用语法(也可称为属性表达语法,如图3所示)
由于LDM将数据库连接为了一个网络,我们可以使用类似URL的形式来引用网络中的数据。这个URL的形式如下:
<datasource>.<document>.<link*>.<identity>.<propertyName>
其中,datasource表示在关联文档中注册的数据源,document表示关联文档中的文档类,link表示关联文档中的连接集合,URL中可以包含多个link,identity表示文档的id,propertyName表示文档的属性。
数据可以在不同层次上进行引用,比如对MySQL数据库中person文档的name属性的引用可以表达成:
MySQL.person.name
对MongoDB数据库中person文档的father关联进行应用可以表示成:
MongoDB.person.father
关联代表的是该关联对应的文档集合,我们还可以继续深入进行引用,比如
MongoDB.person.father.name
数据引用URL对应的数据实际上是LDM的建立关系运算和投影运算之后的结果。比如MongoDB.person.father代表的数据是将两个Person类文档建立father关联,并向father关系进行投影运算的结果。
4、中间变量语法
中间变量可以代表与基本搜索空间相关的文档集合、数值、字符串。变量的表示由$符号与标识符构成,其定义使用WITH语句:
如:
WITH$c1=p.knows.knows(文档集合)
WITH$c2=123(数值)
WITH$c3=’bluejoe’(字符串)
中间变量在匹配语法中使用,根据中间变量的类型进行相应的条件匹配操作。当中间变量是文档集合时,它的主要作用是替换数据引用URL的一部分内容。
5、匹配条件语法
匹配条件是一个由WHERE语句引导的返回值为bool类型的表达式。表达式的语法规则如下:
1)文档集合A,B的聚合筛选:(<文档A>.link|<文档A>)=<文档B>
2)文档集合筛选:(<文档>.attribute|<关联>.attribute)operator基本数据类型
3)<表达式>AND|OR<表达式>
其中目前支持的operator运算符包括:><=>=<=。对于<关联>.attribute或<文档A>.link代表一个文档集合的情况,“=”运算符的意思为“存在”,例如:p.knows.name=’bluejoe’代表在知道的人中存在一个名为“bluejoe”的人,而p.knows=p1表示p知道的人中存在p1这个人的意思。
需要注意的是,虽然WHERE语句对应LDM的选择运算,但是SimbaQL中的选择运算只对文档的属性取值进行选择。比如:
FIND person p,software s WHERE p.invent=s AND s.name=’SimbaQL’RETURN p.name
虽然选择条件中包含p.invent=s,但实际上真正的选择条件是s.name=’SimbaQL’.
6、SimbaQL解析程序
SimbaQL解析程序主要包括如下几个类:
整个语法结构相关类:Statement、SearchSpace、VariableDefines、Conditions、SubSpace,其含义见下面的表1。
语法树抽象类和接口:Node(节点)、Condition(条件)、Variable(变量)、Document(文档)、AttributeDocument(由属性引出的文档,如p.knows,$p.knows等)、ValueExprecession(表达式的值类型)。
语法树具体类:RawDocument、RawAttribute、RawVarible、WithVarible、StringValue、IntegerValue、TerminalCondition、And、Or、Not、VaribleAttribute、DocumentRefference、Operator。其中RawDocument用来表示FIND Person p中Person p这样的文档;RawAttribute用来表示p.name这样的属性;VaribleAttribute表示$k.name这样由变量引出的属性;WithVarible表示WITH$k=p.knows中$k这样的变量;RawVarible表示p这样由FIND定义的文档变量;StringValue、IntegerValue分别表示字符串和整数;And、Or、Not用来表示表达式中的介词and,or,not;DocumentRefference表示p.knows.p.knows.name中的knows连接;Operator用来表示比较运算符,TerminalCondition表示如p.age>30这种无法再分割的表达式。
以上类的基本信息如表4所示:
表4.抽象语法树基本信息
除了以上抽象语法树的相关JAVA类,解析程序还包含ANTLR4的词法语法解析类:SimbaQLLexer、SimbaQLParser、SimbaQLBaseListener、SimbaQLBaseVisitor、SimbaQLVisitor。其中SimbaQLLexer是由ANTLR4生成的SimbaQL语句的词法解析器,用来判断语句中的词是否符合语法;SimbaQLParser是SimbaQL的句法解析器;SimbaQLBaseListener、SimbaQLBaseVisitor分别是以listener和visitor访问语法树的基类;SimbaQLVisitor是继承自SimbaQLBaseVisitor用于visitor方式访问语法树。
抽象语法树构建类:AstBuilder,用于构建抽象语法树,该类提供了一个输入SimbaQL语句,输出一个由Statement引导的语法树。
语法错误检查类:AstChecker、DBchecker。其中AstChecker可以检测出不符合语法的查询语句;DBchecker用于检测查询语句中的与数据源冲突的内容,比如查询语句中包含p.knows,而数据源中并没有knows连接。
语法解析案例(输出语法解析树):SimbaParser、Treeprinter。SimbaParser是一个构建查询语句句法解析树并打印出解析树结构的案例程序;Treeprinter是打印语法解析树的程序。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (6)
1.一种适用于多种大数据管理***的交互式查询方法,其步骤包括:
1)建立关联文档模型,其包括文档集与关联集,所述关联集是文档之间的关联构成的集合;
2)将不同的原始数据模型转换为关联文档模型,通过关联文档模型将不同的数据源连接为一体;
3)基于关联文档模型,建立适合于多元数据的统一查询语言;
4)利用适合于多元数据的统一查询语言,实现对关系型数据库、图数据库以及文件***的统一查询;
所述关联文档模型的文档集中的文档是一组属性构成的集合,所述属性是同一种类型数据构成的集合;每个文档默认包含一个主码属性,所述主码属性是全局的唯一标识;所述文档集与关联集拥有一个名称标识符来说明集合中文档和关联的语义;
所述适合于多元数据管理***的统一查询语言包括FIND、WITH、WHERE、RETURN四个子句;FIND语句确定查询的基本变量,这些变量必须代表文档;WITH语句确定在匹配条件语法中使用的中间变量;WHERE语句确定返回结果需要满足的条件;RETURN语句包含了需要返回给用户的数据引用;
FIND语句中的基本查询空间由一类文档或多类文档构成,并且要求关联文档模型不能进行无关联的两类文档之间的比较;WITH语句中隐式的定义了将基本查询空间中的文档以及关联进行的拓展;WHERE语句中不仅能够隐式地定义拓展查询空间的文档、关联,还能进行关联文档中间模型的选择运算;RETURN语句中包含文档、链接、属性层次的URL,或者代表URL的变量,该语句主要执行关联文档模型的投影运算,返回的结果是一个关联文档;
通过所述关联文档模型将不同的数据源连接为一体,形成一个网络,并使用类似URL的形式形成所述统一查询语言的数据引用语法,来统一访问网络中的数据;URL的形式如下:
<datasource>.<document>.<link>.<identity>.<propertyName>
其中,datasource表示数据源,document表示数据源向关联文档模型映射的文档,link表示数据源向关联文档模型映射的关联,identity表示文档的主码,propertyName表示文档的属性名。
2.如权利要求1所述的方法,其特征在于,所述统一查询语言的执行过程分为四步:确定文档、建立文档之间关系、选择、投影。
3.如权利要求1所述的方法,其特征在于,所述统一查询语言中的中间变量代表与基本搜索空间相关的文档集合、数值、字符串,中间变量在匹配语法中使用,根据中间变量的类型进行相应的条件匹配操作。
4.如权利要求1所述的方法,其特征在于,所述统一查询语言中的匹配条件是一个由WHERE语句引导的返回值为bool类型的表达式,表达式的语法规则如下:
1)文档集合A,B的聚合筛选:(<文档A>.link|<文档A>)=<文档B>;
2)文档集合筛选:(<文档>.attribute|<关联>.attribute)operator基本数据类型;
3)<表达式>AND|OR<表达式>。
5.如权利要求1所述的方法,其特征在于,所述统一查询语言中的解析程序包括:整个语法结构相关类,语法树抽象类和接口,语法树具体类。
6.如权利要求1所述的方法,其特征在于,在实际应用中针对所述统一查询语言开发数据库***的SDK,并在本地数据库查询语言基础上进行一些补偿运算,然后客户端程序通过调用SDK中的API来使用所述统一查询语言操作数据库;或者对数据库直接基于所述统一查询语言设计通信协议,客户端程序通过发送网络请求得到需要的查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710515380.6A CN107515887B (zh) | 2017-06-29 | 2017-06-29 | 一种适用于多种大数据管理***的交互式查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710515380.6A CN107515887B (zh) | 2017-06-29 | 2017-06-29 | 一种适用于多种大数据管理***的交互式查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107515887A CN107515887A (zh) | 2017-12-26 |
CN107515887B true CN107515887B (zh) | 2021-01-08 |
Family
ID=60721837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710515380.6A Active CN107515887B (zh) | 2017-06-29 | 2017-06-29 | 一种适用于多种大数据管理***的交互式查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107515887B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110109951B (zh) * | 2017-12-29 | 2022-12-06 | 华为技术有限公司 | 一种关联查询的方法、数据库应用***及服务器 |
CN109033260B (zh) * | 2018-07-06 | 2021-08-31 | 天津大学 | 基于rdf的知识图谱交互式可视化查询方法 |
CN110765151A (zh) * | 2018-07-27 | 2020-02-07 | 北京国双科技有限公司 | 一种计算公式处理方法及装置 |
CN109241054A (zh) * | 2018-08-02 | 2019-01-18 | 成都松米科技有限公司 | 一种多模型数据库***、实现方法以及服务器 |
CN111221785A (zh) * | 2018-11-27 | 2020-06-02 | 中云开源数据技术(上海)有限公司 | 一种多源异构数据的语义数据湖构建方法 |
CN112148925B (zh) * | 2019-06-27 | 2024-03-01 | 北京百度网讯科技有限公司 | 用户标识关联查询方法、装置、设备及可读存储介质 |
CN111475534B (zh) * | 2020-05-12 | 2023-04-14 | 北京爱笔科技有限公司 | 一种数据查询方法及相关设备 |
CN112084248A (zh) * | 2020-09-11 | 2020-12-15 | 党丹 | 基于图数据库的智能数据检索查阅与模型获取方法 |
CN112632037B (zh) * | 2020-12-24 | 2023-04-07 | 浪潮通用软件有限公司 | 一种图形化定义查询数据集的方法及装置 |
CN113761290A (zh) * | 2021-03-10 | 2021-12-07 | 中科天玑数据科技股份有限公司 | 一种基于sql实现全文检索图数据库的查询方法及查询*** |
CN113282625B (zh) * | 2021-05-31 | 2022-10-04 | 重庆富民银行股份有限公司 | 一种基于sql的api数据查询和处理***及方法 |
CN113515610B (zh) * | 2021-06-21 | 2022-09-13 | 中盾创新数字科技(北京)有限公司 | 一种基于面向对象语言处理的档案管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073701A (zh) * | 2010-12-30 | 2011-05-25 | 浪潮集团山东通用软件有限公司 | 一种基于语义定义的多数据源的数据查询方法 |
CN105468702A (zh) * | 2015-11-18 | 2016-04-06 | 中国科学院计算机网络信息中心 | 一种大规模rdf数据关联路径发现方法 |
CN106294402A (zh) * | 2015-05-21 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种异构数据源的数据搜索方法及其装置 |
CN106372177A (zh) * | 2016-08-30 | 2017-02-01 | 东华大学 | 支持混合数据类型的关联查询及模糊分组的查询扩展方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7702625B2 (en) * | 2006-03-03 | 2010-04-20 | International Business Machines Corporation | Building a unified query that spans heterogeneous environments |
-
2017
- 2017-06-29 CN CN201710515380.6A patent/CN107515887B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073701A (zh) * | 2010-12-30 | 2011-05-25 | 浪潮集团山东通用软件有限公司 | 一种基于语义定义的多数据源的数据查询方法 |
CN106294402A (zh) * | 2015-05-21 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种异构数据源的数据搜索方法及其装置 |
CN105468702A (zh) * | 2015-11-18 | 2016-04-06 | 中国科学院计算机网络信息中心 | 一种大规模rdf数据关联路径发现方法 |
CN106372177A (zh) * | 2016-08-30 | 2017-02-01 | 东华大学 | 支持混合数据类型的关联查询及模糊分组的查询扩展方法 |
Non-Patent Citations (3)
Title |
---|
OpenCSDB关联数据在科学数据库中的应用研究;沈志宏 等;《中国图书馆学报》;20120915;全文 * |
基于NoSQL的RDF数据存储与查询技术综述;王林彬 等;《计算机应用研究》;20150531;第32卷(第5期);全文 * |
基于数据库集群的海量RDF数据联合查询***的研究与实现;徐仕超 等;《科研信息化技术与应用》;20160120;第7卷(第1期);摘要、第25页第1-6段,第2-3节、图5 * |
Also Published As
Publication number | Publication date |
---|---|
CN107515887A (zh) | 2017-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107515887B (zh) | 一种适用于多种大数据管理***的交互式查询方法 | |
Mena et al. | OBSERVER: An approach for query processing in global information systems based on interoperation across pre-existing ontologies | |
US20100017395A1 (en) | Apparatus and methods for transforming relational queries into multi-dimensional queries | |
CN106934062A (zh) | 一种查询elasticsearch的实现方法及*** | |
JP6720641B2 (ja) | 多言語データティアのデータ制約 | |
US20110161352A1 (en) | Extensible indexing framework using data cartridges | |
Unbehauen et al. | Knowledge extraction from structured sources | |
US11914631B2 (en) | Systems and methods for using an ontology to generate database entries and access and search a database | |
CN107491476B (zh) | 一种适用于多种大数据管理***的数据模型转换及查询分析方法 | |
Abbes et al. | MongoDB-based modular ontology building for big data integration | |
Scharffe et al. | Correspondence patterns for ontology alignment | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
Michel et al. | Translation of Heterogeneous Databases into RDF, and Application to the Construction of a SKOS Taxonomical Reference | |
Michel et al. | A generic mapping-based query translation from SPARQL to various target database query languages | |
Natarajan et al. | [Retracted] Schema‐Based Mapping Approach for Data Transformation to Enrich Semantic Web | |
CN116108194A (zh) | 基于知识图谱的搜索引擎方法、***、存储介质和电子设备 | |
Michel et al. | Bridging the semantic web and NoSQL worlds: generic SPARQL query translation and application to MongoDB | |
Feng et al. | Geoqamap-geographic question answering with maps leveraging LLM and open knowledge base (short paper) | |
Palopoli et al. | Experiences using DIKE, a system for supporting cooperative information system and data warehouse design | |
CN113221528B (zh) | 基于openEHR模型的临床数据质量评估规则的自动生成与执行方法 | |
CN113032366A (zh) | 基于Flex和Bison的SQL语法树解析方法 | |
Su-Cheng et al. | Mapping of extensible markup language-to-ontology representation for effective data integration | |
Alaoui et al. | Semantic Oriented Data Modeling for Enterprise Application Engineering Using Semantic Web Languages | |
Kalna et al. | MDA transformation process of a PIM logical decision-making from NoSQL database to big data NoSQL PSM | |
Malik et al. | Technique for transformation of data from RDB to XML then to RDF |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |