在关系数据库上支持命令式图形查询的方法和系统的制作方法

文档序号:9471402阅读:509来源:国知局
在关系数据库上支持命令式图形查询的方法和系统的制作方法
【技术领域】
[0001]本公开涉及一种数据库技术,且更具体地,涉及在关系数据库上支持命令式图形查询的方法和系统。
【背景技术】
[0002]随着对存储和查询图形结构化数据的需求的增加,越来越多地开发了图形数据库以及图形查询语言,其中一些已经广泛用于工业中,尤其是在所谓NoSQUNot OnlyStructured Query Language,不仅结构化查询语言)家族的图形数据库,例如Neo4J、Infinite Graph、DEX> InfoGricU HyperGraphDB0图形数据库有两种基本的图形查询语言:命令式查询(imperative queries)(例如,Gremlin语言、JRuby等)和说明式查询(declarative queries)(例如,Cypher> SPARQL (Simple Protocol and RDF QueryLanguage),简单协议和RDF查询语言)等)。
[0003]而关系数据库是建立在以二维表结构为基础的关系模型基础上的,其已经广泛使用了很长时间,且发展得较为成熟,目前主流的关系数据库有ORACLE、DB2、SQLSERVER、SYBASE、MYSQL等。然而,如何利用关系数据库来高效地管理和查询图形数据,尤其是在关系数据库上支持图形数据库的命令式查询,仍然是个未解决的问题。
[0004]传统的技术仅将说明式的查询(例如结构化查询语言(Structured QueryLanguage, SQL)整合到命令式代码(例如 JDBC (Java Data Base Connectivity, java 数据库连接))中,或者仅支持说明式的查询语言(例如Cypher、SPARQL)。前一种方法通常导致对于一个图形查询转换为太多的原语查询(primitive queries)(例如具有JDBC的JAVA代码),这极大地降低了查询性能。而后一种方法也导致劣等的表达。
[0005]因此,需要一种在关系数据库上支持命令式图形查询的技术。

【发明内容】

[0006]根据本发明的一个方面,提供了一种在关系数据库上支持命令式图形查询的方法,包括:将命令式图形查询解析为执行计划;将所述关系数据库支持的执行计划的操作翻译为公共表表达式查询;在关系数据库上执行所述翻译后的公共表表达式查询。
[0007]根据本发明的另一个方面,提供了一种在关系数据库上支持命令式图形查询的系统,包括:将命令式图形查询解析为执行计划的装置;将所述关系数据库支持的执行计划的操作翻译为公共表表达式查询的装置;在关系数据库上执行所述翻译后的公共表表达式查询的装置。
【附图说明】
[0008]通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0009]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
[0010]图2示出了根据本发明的一个实施例的在关系数据库上支持命令式图形查询的方法的示例流程图。
[0011]图3示出了根据本发明的另一个实施例的在关系数据库上支持命令式图形查询的方法的示例流程图。
[0012]图4示出了根据本发明的再一个实施例的在关系数据库上支持命令式图形查询的系统的示例方框图。
[0013]图5示出了根据本发明的又一个实施例的在关系数据库上支持命令式图形查询的系统的示例方框图。
[0014]图6A-6F示出了根据图5所示的系统执行的具体步骤的过程的示意图。
[0015]图7示出了根据图5所示的系统的查询优化器所进行的优化的步骤的流程图。
[0016]图8A-8C示出了根据图5所示的系统的查询优化器所进行的优化的过程示意图。
【具体实施方式】
[0017]下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0018]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0019]如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0020]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0021]计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0022]系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM) 30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如⑶-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0023]具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0024]计算机系统/服务器12也可以与一个或多个外部设备14 (例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口 22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0025]现在参看图2,图2示出了根据本发明的一个实施例的在关系数据库上支持命令式图形查询的方法200的示例流程图。
[0026]图2所示的在关系数据库上支持命令式图形查询的方法200包括:步骤S201,将命令式图形查询解析为执行计划的操作(execut1n plan);步骤S202,将所述关系数据库支持的执行计划的操作翻译为公共表表达式(Common Table Express1n, CTE)查询;步骤S203,在关系数据库上执行所述翻译后的公共表表达式CTE查询。
[0027]如此,相比于传统的将命令式图形查询直接分解为在关系数据库上能够执行的大量原语操作,本实施例通过利用在关系数据库上能够执行的公共表表达式CTE来翻译图形数据库所支持的命令式图形查询,使得在关系数据库上能够用图形数据库所支持的命令式图形查询来进行功能基本相同的查询,得到基本相同的执行结果,同时由于所翻译的公共表表达式CTE的代码数量相比于传统地分解的原语操作更少(因为一个CTE中可能完成了多个原语操作的功能),因此使得查询的运行速度更快。
[0028]图3示出了根据本发明的另一个实施例的在关系数据库上支持命令式图形查询的方法300的示例流程图。
[0029]如图3所示,该方法300包括:步骤S201,将命令式图形查询解析为执行计划(execut1n plan);步骤S202,将所述关系数据库支持的执行计划的操作翻译为公共表表达式(CTE)查询;步骤S203,在关系数据库上执行所述翻译后的公共表表达式查询;步骤S204,将关系数据库不支持的执行计划的操作翻译为用户自定义函数(User-DefinedFunct1n, UDF)查询和/或存储过程(Stored Procedure,SP)查询;步骤S205,在关系数据库上执行所述翻译后的用户自定义函数UDF查询和/或存储过程SP查询。
[0030]如此,在命令式图形查询所解析的执行计划的操作不能被关系数据库现有的函数和查询语言直接支持的情况下,可以采用关系数据库同样支持的用户自定
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1