[发明专利]异步流水线式的图查询方法及系统有效
申请号: | 201510423353.7 | 申请日: | 2015-07-17 |
公开(公告)号: | CN105260374B | 公开(公告)日: | 2019-03-15 |
发明(设计)人: | 程学旗;朱海帆;张敬亮;张铁赢;林思明 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | G06F16/27 | 分类号: | G06F16/27;G06F16/2455 |
代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 祁建国;刘健 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 异步 流水线 查询 方法 系统 | ||
本发明适用于分布式信息处理技术领域,提供了一种异步流水线式的图查询方法,应用于分布式图数据库,包括:根据查询请求创建包含多个查询步骤的流水线;检测所述查询步骤的缓存队列,根据所述缓存队列的剩余元素的容量唤醒多个预取线程;创建异步化管理后端数据层的连接和查询的线程池,为所述流水线配置所述线程池容量,所述流水线末端获得查询的结果。借此,本发明提高了查询速度和客户端的吞吐率。
技术领域
本发明涉及分布式信息处理技术领域,尤其涉及图数据库系统的查询引擎。
背景技术
目前业界主流的图数据库查询引擎大致可分为两种:
1)以Neo4j为代表的原生单机版数据库查询引擎,这种引擎一般自带某种查询语言,要经过一次语法解析才能生成查询计划。代码如下所示:
MATCH
(company)<-[:WORKS_FOR]-(me:Person)-[:HAS_SKILL]->(skill),
(company)<-[:WORKS_FOR]-(colleague)-[:HAS_SKILL]->(skill)
WHERE me.name={name}
RETURN
colleague.name AS name,
count(skill)AS score,
collect(skill.name)AS skills
ORDER BY score DESC
图9A、图9B展现的就是Neo4j在执行这个查询样例时进行的工作:首先对查询语句进行词法分析和语法分析,生成查询树,然后在原图中寻找完全匹配这个图模式的子图。查询中的WHERE字句标识了查询的起点。在实际的查询过程中,遍历从起点开始,再根据邻点和关系的模式匹配出符合要求的单元,沿着查询树不断匹配,当执行完所有匹配时,就找到了一个可行解
2)以TinkerPop为主的通用图查询框架,如图8所示,继承其接口后可用于满足属性图模型的任意图数据库。执行过程主要依赖其流水线引擎Pipes。查询语言的每一个命令都可以看作流水线中的一个Step,任意两个命令都相互独立,由数据流驱动整个流水线的执行。每个Step只会读取前一个Step的输出,处理查询并让后一个Step拉取自己产生的结果。为了能避免无谓计算,且使查询可随时中止,这一流水线引擎采用惰性求值的方式来获取结果值。具体说来,就是当查询语句末端出现next(),count(),hasNext()等需要后继值的指令时,才会开始执行查询:每一个Step从前一个Step拉取下一个取值,深度优先遍历整个查询空间。在获得满意结果后,查询流水线即可停止,而不用获得全部的解再返回。
单机图数据库查询引擎存在的最大问题是:在大规模数据集上的表现不佳,单机存储的局限性导致其在亿级规模图数据上的处理速度很慢,且不具有扩展性。
通用图查询框架把存储层和计算层完全隔离带来了较大的性能损失,例如Titan完全利用TinkerPop进行计算时,就没有考虑其后端分布式存储的高并发能力,造成单个查询的延迟比较大,同时后端存储层的压力却很轻。现有技术中该项缺陷是由查询引擎与后端分布式存储系统不友好导致的。在使用了高扩展性的系统存储后端存储图数据后,现有的查询引擎并没有利用这类系统的优点,依然是按照单机的处理方式进行数据读取和计算。
综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510423353.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种快速高效删除质粒上基因片段的方法
- 下一篇:一种海盐收集车