CN105955999B - 一种大规模RDF图的ThetaJoin查询处理方法 - Google Patents
一种大规模RDF图的ThetaJoin查询处理方法 Download PDFInfo
- Publication number
- CN105955999B CN105955999B CN201610247087.1A CN201610247087A CN105955999B CN 105955999 B CN105955999 B CN 105955999B CN 201610247087 A CN201610247087 A CN 201610247087A CN 105955999 B CN105955999 B CN 105955999B
- Authority
- CN
- China
- Prior art keywords
- data
- star
- subquery
- mode
- variable
- 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
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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
- 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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种大规模RDF图的ThetaJoin查询处理方法,包括了以下步骤:(1)采用伙伴内存分配的方式分配ID空间,对RDF常量数据进行保序编码。(2)建立数据字典,将RDF三元组数据转化为ID三元组,压缩存储并建立索引。(3)解析含ThetaJoin的SPARQL查询请求,将已知量转化为ID并将变量编码。(4)利用扩展的查询图模型对查询进行表示,查询分解划分星型子查询,为各星型子查询生成执行计划。(5)并行执行各个星型子查询,利用数据的分块和流水线提高并行度,并尽可能早的处理ThetaJoin。(6)将星型子查询内部的变量约束传递给相邻星型子查询,利用连接调度对中间结果执行连接运算,削减中间结果。(7)执行全连接,按照投影变量的顺序将查询结果返回给用户。
Description
技术领域
本发明属于大数据处理领域,更具体地,涉及一种大规模RDF图数据的ThetaJoin查询处理方法。
背景技术
过去的一些年,语义网和RDF的研究与应用都得到了飞速发展。一些重要的应用领域如社交网络、生命科学、商业智能都更倾向于使用RDF数据模型。越来越多的机构如纽约时报、维基百科(Wikipedia)等,在互联网上发布RDF形式的数据。与此同时,RDF的数据规模也以惊人的速度爆发式增长。目前LOD(Linked Open Data)项目已从2011年的294个数据集增长到2014年的1091个数据集,数据总规模量早在2012年便超过了520亿条三元组。
对于RDF数据的存储与查询,国内外专家提出了许多思路和方法,也涌现出了许多不同类型的RDF数据存储查询引擎。按照存储方式大体上可以分为:基于三元组表的存储引擎、基于属性表的存储引擎、基于垂直划分的存储引擎以及基于数据图的存储引擎。在查询处理上,也出现了各种各样的方式。将SPARQL查询转化为SQL语句利用关系数据库是处理查询最直接简单的方式,但更有效的处理方式是利用自有存储结合针对RDF数据的查询优化来处理SPARQL查询。
SPARQL作为W3C推荐的语义数据标准查询语句,2013年发布的SPARQL1.1查询语言规则,包括了数据的更新、ThetaJoin等一系列复杂的操作。而已有的一部分RDF查询引擎,如RDF-3X,TripleBit等,仅能够处理简单的三元组模式匹配查询,涉及到的连接处理都是Equi-Join,将查询的优化工作集中在了等值连接的查询优化上,而不能处理含不等符号(<,>,>=,<=)的ThetaJoin查询。但在RDF的数据分析和数据挖掘领域,会涉及很多复杂的查询,包括ThetaJoin查询。ThetaJoin查询可以更丰富地表达用户的查询需求。关于ThetaJoin查询的优化技术,随着数据库技术尤其是关系数据库技术的发展已经被国内外学者研究的较多,但是如何高效处理RDF图数据上的SPARQL ThetaJoin查询,却很少被人提及。为了能够处理RDF图数据上的ThetaJoin查询,有些专家利用分布式MapReduce并行框架来实现Multi-Way ThetaJoin等,但这些研究工作在处理RDF图时将RDF数据转化为(Key,Value)对的形式,利用Hadoop本身的特性来进行处理。有些研究选择利用关系数据库能够利用SQL引擎处理ThetaJoin查询。也有一些研究在处理SPARQL查询时,实质是将SPARQL转化为SQL或通过修改SQL编译器来支持SPARQL,利用SQL优化的方式进行处理,但都借助于已有数据库的优化策略,未能针对RDF数据本身的特性进行优化,效率都比较低,开销较大。
发明内容
针对以上现有技术缺陷或改进需求,本发明提供一种大规模RDF图数据的ThetaJoin查询处理方法,其目的在于为已有的RDF存储系统提供处理ThetaJoin查询的方法,提升ThetaJoin查询的处理效率,同时使得对于数据规模的增加,具有良好的扩展性。
为实现上述目的,本发明提供了一种大规模RDF图数据的ThetaJoin查询处理方法,具体包括了以下步骤:
(1)采用类似于伙伴内存分配的方式分配ID空间,对RDF常量数据进行保序编码,对分配的ID空间建立索引。
(2)建立数据字典,将RDF三元组数据转化为ID三元组数据,采用压缩的位图矩阵进行存储,并建立索引。
(3)用户提交SPARQL查询语句,将用户提交的查询语句交给SPARQL解析器进行解析,并将查询语句中的已知量转化为ID,并对变量进行编码。
(4)构建查询图,对查询图进行优化,将复杂的关系模式及表达式模式进行分解,使得查询图得以简化。将查询图分解为若干以连接变量为中心的星型子查询,计算模式、变量以及连接的选择度,并为每个子查询生成相应的查询执行计划。
(5)并行的执行各个星型子查询,星型子查询内部利用数据的分块和基于块的流水线scan提高并行度,同时尽可能早的执行星型子查询内部的ThetaJoin。
(6)将星型子查询中间结果的变量约束信息传递给相邻的星型子查询,利用数据的分块将模式之间的连接转化为块之间的连接,采用面向块的连接调度执行,削减中间结果。
(7)执行全连接,按照循环嵌套连接的方式执行ThetaJoin,将满足条件的元组按照投影变量的顺序转化为字符串形式,并输出最终结果返回给用户。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
(1)节省I/O开销。与直接存储原始数据相比,利用保序ID编码压缩存储的方式,大大减少数据的存储空间。针对ThetaJoin查询存在比较操作符的特性,与普通编码方式相比,保序编码能够将原始数据的比较转化为ID的比较,省去了频繁查找ID对应的原始数据的过程,减少了I/O代价。
(2)节省执行开销。对查询进行分解,仅为简单的星型子查询生成查询计划,比为整个查询生成查询计划更简单。采用基于块的流水线scan和面向块的连接调度,将一个大的范围分割为多个小的间隔区间,同时将模式的连接转化为块的连接,并行度大,中间结果更小。
附图说明
图1为本发明的大规模RDF图的ThetaJoin查询处理方法的流程图;
图2为本发明的保序ID分配的流程图;
图3为本发明实施例的星型子查询内部基于块的流水线scan处理的子图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提出了一种大规模RDF图的ThetaJoin查询处理方法,包括对RDF图数据实行保序ID编码、查询处理等,其中查询处理流程图如图1所示,包括以下步骤:
步骤1常量数据的保序ID分配,流程图如图2所示,具体包括以下几个子步骤:
(1-1)对RDF数据进行预处理,收集RDF常量数据,划分为字符串和数值型数据,并分别排序;
(1-2)依据实体的数目将ID空间大小设为232,ID空间允许分裂和回收,同时分配与回收的ID空间大小为2的幂次方;
(1-3)为每一段数据分配一段连续的ID空间,大小为2的幂次方且大于数据段的长度;
(1-4)对数据段内的每一个常量数据,找到对应分配的ID空间,依据分配的连续ID空间大小及常量值数据的大小顺序,在已分配的ID空间中为常量数据分配一个保持大小关系一致性的ID;
(1-5)若对应的ID空间中无法继续分配与其保持大小一致性的ID,则回收该ID空间,撤销该段数据已分配的ID并重新分配,重复(1-3)和(1-4)直至所有数据编码结束。
步骤2建立RDF数据原始字符串与ID相互映射的数据字典。将原始数据转化为ID,从而将RDF数据的三元组转化为ID三元组,并压缩存储。建立用于数据定位的块索引以及有助于查询执行的实体谓词索引和统计信息索引。
步骤3用户将查询请求利用SPARQL语句表示。将用户提交的查询语句交给SPARQL解析器进行解析,将查询语句中的变量编码,利用数据字典,将查询语句中的已知量转化为ID。
步骤4构建查询图并进行优化,查询分解,生成查询计划。具体包括了以下几个子步骤:
(4-1)将查询语句中的复杂表达式模式(含有逻辑预算与、或和非)进行分解简化;
(4-2)构建查询图,其中变量(包括连接变量和约束变量)以及模式(包括三元组模式、关系模式和表达式模式)为顶点。若变量出现在模式中,则变量顶点与模式顶点之间形成一条边。若两个模式之间具有共同的连接变量,则两个模式顶点之间形成一条边;
(4-3)将查询图分解成多个以变量为中心的星型子查询;
(4-4)计算模式、变量的选择度,将以低选择度变量为中心的星型子查询中的公共模式标记为不执行,避免重复计算;
(4-5)根据变量选择度和模式选择度的大小顺序,将部分值约束表达式模式与三元组模式合并,使得查询执行过程中模式的scan与过滤操作同时执行;调整模式的执行顺序,为每个星型子查询生成查询计划。
步骤5并行的执行各星型子查询,星型子查询采用基于块的流水线scan,如图3所示,具体包括以下子步骤:
(5-1)各星型子查询并行执行;
(5-2)在星型子查询内部采用基于块的流水线scan。依据模式选择度大小顺序,利用索引,定位星型子查询最大选择度的模式对应的数据块范围,并行的读取;
(5-3)当最大选择度模式的一个数据块scan结束,将数据块的边界值传递给星型子查询内其他低选择度模式;
(5-4)星型子查询内低选择度模式利用得到的边界值及索引,定位需要读取的数据块范围,并行读取;
(5-5)将星型子查询内的星型模式连接转化为数据块的连接,利用连接调度并行执行。
步骤6将星型子查询内部中间结果的变量约束信息传递给相邻的星型子查询,采用面向块的连接调度并发执行,对中间结果继续削减。
步骤7执行全连接,按照循环嵌套连接的方式执行ThetaJoin,将满足条件的元组按照投影变量的顺序转化为原始数据并返回给用户。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种大规模RDF图的ThetaJoin查询处理方法,其特征在于,包括以下步骤:
步骤1采用伙伴内存分配的方式分配ID空间,对RDF常量数据进行保序编码,使得数据的ID大小顺序与原始数据的大小顺序保持一致,并对分配的ID空间建立索引;
步骤2建立原始数据与ID相互映射的数据字典,将RDF图数据转化为ID三元组数据进行压缩存储并建立索引;
步骤3将用户提交的SPARQL查询语句交给SPARQL解析器,将查询语句中的已知量转化为ID,并对变量进行编码;
步骤4将解析后查询语句中的变量、三元组模式、关系模式、表达式模式表示成查询图,对查询图进行优化,将查询图分解为多个星型子查询,为每个星型子查询生成相应的执行计划;
步骤5并行的执行各个星型子查询,星型子查询内部利用数据的分块和基于块的流水线scan提高并行度,同时执行星型子查询内部的ThetaJoin;
步骤6将星型子查询内部中间结果的变量约束信息传递给相邻的星型子查询,将模式的连接转化为块的连接,采用面向块的连接调度并发执行,削减中间结果;
步骤7执行全连接,按照循环嵌套连接的方式执行ThetaJoin,按照查询变量的顺序收集结果集ID,转化为字符串,并输出最终结果返回给用户。
2.如权利要求1所述的大规模RDF图的ThetaJoin查询处理方法,其特征在于,所述步骤1具体包括以下子步骤:
(1-1)对RDF数据进行预处理,收集RDF常量数据,划分为字符串和数值型数据,并分别排序;
(1-2)依据实体的数目将ID空间大小设为232,ID空间允许分配和回收,分配与回收的ID空间大小为2的幂次方;
(1-3)为每一段数据分配一段连续的ID空间,大小为2的幂次方且大于数据段的长度;
(1-4)对段内每一个常量数据,找到其对应分配的ID空间,依据分配的连续ID空间大小及常量值数据大小顺序,在已分配的ID空间中为常量数据分配一个保持大小关系一致性的ID;
(1-5)若对应的ID空间中无法继续分配与其保持大小一致性的ID,则回收该ID空间,撤销该段数据已分配的ID并重新分配,重复(1-3)和(1-4)直至所有数据编码结束。
3.如权利要求1或2所述的大规模RDF图的ThetaJoin查询处理方法,其特征在于,所述步骤4具体包括以下子步骤:
(4-1)将查询语句中的复杂表达式模式进行分解简化,所述复杂表达式模式包含了逻辑运算符与、或和非;
(4-2)构建查询图,其中变量以及模式为顶点,所述变量包括连接变量和约束变量,所述模式包括三元组模式、关系模式和表达式模式;若变量出现在模式中,则该变量顶点与模式顶点之间形成一条边;若两个模式之间具有共同的连接变量,则两个模式顶点之间形成一条边;
(4-3)将查询分解成多个以变量为中心的星型子查询;
(4-4)计算模式、变量的选择度,将以低选择度变量为中心的星型子查询中的公共模式标记为不执行,避免重复计算;
(4-5)根据变量选择度和模式选择度的大小顺序,将部分值约束表达式模式与三元组模式合并,使得查询执行过程中模式的scan与过滤操作同时执行;调整模式的执行顺序,为每个星型子查询生成查询计划。
4.如权利要求1或2所述的大规模RDF图的ThetaJoin查询处理方法,其特征在于,所述步骤5具体包括以下子步骤:
(5-1)各星型子查询并行执行;
(5-2)在星型子查询内部采用基于块的流水线scan,依据模式选择度大小顺序,利用索引,定位星型子查询最大选择度的模式对应的数据块范围,并行的读取;
(5-3)当最大选择度模式的一个数据块scan结束,将数据块的边界值传递给星型子查询内其他低选择度模式;
(5-4)星型子查询内低选择度模式利用得到的边界值及索引,定位需要读取的数据块范围,并行读取;
(5-5)将星型子查询内的星型模式连接转化为数据块的连接,利用连接调度并行执行,削减中间结果大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610247087.1A CN105955999B (zh) | 2016-04-20 | 2016-04-20 | 一种大规模RDF图的ThetaJoin查询处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610247087.1A CN105955999B (zh) | 2016-04-20 | 2016-04-20 | 一种大规模RDF图的ThetaJoin查询处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105955999A CN105955999A (zh) | 2016-09-21 |
CN105955999B true CN105955999B (zh) | 2019-04-23 |
Family
ID=56917816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610247087.1A Active CN105955999B (zh) | 2016-04-20 | 2016-04-20 | 一种大规模RDF图的ThetaJoin查询处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105955999B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106709006B (zh) * | 2016-12-23 | 2020-10-30 | 武汉科技大学 | 一种对查询友好的关联数据压缩方法 |
CN110309334B (zh) * | 2018-04-20 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 图数据库的查询方法、系统、计算机设备和可读存储介质 |
CN108711136B (zh) * | 2018-04-28 | 2020-10-30 | 华中科技大学 | 一种rdf图数据的cpu-gpu协同查询处理系统和方法 |
CN109344259B (zh) * | 2018-07-20 | 2022-02-22 | 西安交通大学 | 一种基于多层划分框架的rdf分布式存储方法 |
CN109308300B (zh) * | 2018-09-27 | 2021-11-12 | 上海达梦数据库有限公司 | 一种逻辑运算的处理方法、装置、转换插件及存储介质 |
CN110990426B (zh) * | 2019-12-05 | 2022-10-14 | 桂林电子科技大学 | 一种基于树搜索的rdf查询方法 |
CN112615910B (zh) * | 2020-12-10 | 2021-10-29 | 中国科学院深圳先进技术研究院 | 一种数据流连接优化方法、系统、终端以及存储介质 |
CN112948442B (zh) * | 2021-03-26 | 2022-06-21 | 深圳先进技术研究院 | 数据流θ连接优化方法、系统、终端以及存储介质 |
CN116451278A (zh) * | 2023-06-19 | 2023-07-18 | 杭州世平信息科技有限公司 | 星型连接工作负载查询隐私保护方法、系统、设备及介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101593180A (zh) * | 2008-05-30 | 2009-12-02 | 国际商业机器公司 | 将sparql查询转化成sql查询的方法和装置 |
DE102009017082A1 (de) * | 2009-04-15 | 2010-11-04 | Siemens Aktiengesellschaft | Verfahren und Vorrichtung zum Generieren einer Datenbank für eine Datenbankabfrage, sowie ein Suchverfahren und eine Suchvorrichtung zur Datenbankabfrage |
US8244768B2 (en) * | 2009-12-17 | 2012-08-14 | International Business Machines Corporation | Implementing service oriented architecture industry model repository using semantic web technologies |
CN102722542B (zh) * | 2012-05-23 | 2016-07-27 | 无锡成电科大科技发展有限公司 | 一种资源描述框架图模式匹配方法 |
CN104834754A (zh) * | 2015-05-29 | 2015-08-12 | 武汉大学 | 一种基于连接代价的sparql语义数据查询优化方法 |
CN105447156A (zh) * | 2015-11-30 | 2016-03-30 | 北京航空航天大学 | 资源描述框架分布式引擎及增量式更新方法 |
-
2016
- 2016-04-20 CN CN201610247087.1A patent/CN105955999B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105955999A (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105955999B (zh) | 一种大规模RDF图的ThetaJoin查询处理方法 | |
CN103064875B (zh) | 一种服务化空间数据分布式查询方法 | |
JP6885813B2 (ja) | 階層ウィンドウデータベースクエリ実行 | |
CN107291807B (zh) | 一种基于图遍历的sparql查询优化方法 | |
CN105718593B (zh) | 一种数据库查询优化方法及系统 | |
CN107169033A (zh) | 基于数据模式转换和并行框架的关系数据查询优化方法 | |
CN102609451A (zh) | 面向流式数据处理的sql查询计划生成方法 | |
CN109325029A (zh) | 基于稀疏矩阵的rdf数据存储和查询方法 | |
Fegaras et al. | An optimization framework for map-reduce queries | |
CN104462351B (zh) | 一种面向MapReduce范型的数据查询模型与方法 | |
Cornacchia et al. | Flexible and efficient IR using array databases | |
CN104408134A (zh) | 一种sql到云环境的映射方法及系统 | |
Curé et al. | LiteMat: a scalable, cost-efficient inference encoding scheme for large RDF graphs | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN111881160A (zh) | 一种基于关系代数的等价展开方法的分布式查询优化方法 | |
Li et al. | A padded encoding scheme to accelerate scans by leveraging skew | |
Zhou | Exposing relational database as RDF | |
CN103617265A (zh) | 一种基于本体语义信息的本体查询引擎优化系统 | |
CA2674332A1 (en) | Method and system for using queries for multidimensional databases with databases of other types | |
CN110032676A (zh) | 一种基于谓词关联的sparql查询优化方法及系统 | |
WO2021022180A1 (en) | Query optimization | |
CN103049506A (zh) | 移动设备的数据缓存方法及其系统 | |
Yuan et al. | Study on distributed complex event processing in Internet of Things based on query plan | |
Mulay et al. | SPOVC: a scalable RDF store using horizontal partitioning and column oriented DBMS | |
CN111966727A (zh) | 基于Spark和Hive的分布式OLAP即席查询方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |