使用多個(gè)引擎來(lái)進(jìn)行圖查詢處理的制作方法
【專利說(shuō)明】使用多個(gè)引擎來(lái)進(jìn)行圖查詢處理
[0001] 背景
[0002] 圖數(shù)據(jù)庫(kù)是其中一個(gè)或多個(gè)圖被用來(lái)對(duì)數(shù)據(jù)集中的各數(shù)據(jù)對(duì)象之間的結(jié)構(gòu)關(guān)系 進(jìn)行建模的數(shù)據(jù)結(jié)構(gòu)類型。這些圖中的每一個(gè)采用節(jié)點(diǎn)(也被稱為頂點(diǎn))、邊和屬性(也被 稱為性質(zhì))來(lái)表示并存儲(chǔ)數(shù)據(jù)對(duì)象。一般來(lái)說(shuō),給定圖中的節(jié)點(diǎn)表示實(shí)體實(shí)例,諸如人、公 司、賬戶或任何其他感興趣的項(xiàng)。圖中的邊表示各節(jié)點(diǎn)對(duì)之間存在的連接。圖中的屬性是 涉及節(jié)點(diǎn)的相關(guān)數(shù)據(jù)。取決于正在實(shí)現(xiàn)的特定圖類型(例如,特定類型的數(shù)據(jù)模型),圖中 的屬性還可以是涉及邊的相關(guān)數(shù)據(jù)。使用圖數(shù)據(jù)庫(kù)來(lái)對(duì)各種應(yīng)用域(諸如,生物信息學(xué)應(yīng) 用、化學(xué)信息學(xué)應(yīng)用、業(yè)務(wù)過(guò)程模型的儲(chǔ)存庫(kù)、社交網(wǎng)絡(luò)應(yīng)用、書目網(wǎng)絡(luò)應(yīng)用和知識(shí)庫(kù)應(yīng)用) 中的復(fù)雜的大型數(shù)據(jù)集進(jìn)行建模正變得越來(lái)越流行。
[0003] 概述
[0004] 提供本
【發(fā)明內(nèi)容】
是為了以簡(jiǎn)化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一 些概念。本概述并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于 幫助確定所要求保護(hù)的主題的范圍。
[0005] 本文中描述的各圖查詢處理技術(shù)實(shí)施例一般涉及對(duì)圖查詢作出響應(yīng)。在一示例性 實(shí)施例中,接收被提交給由屬性圖進(jìn)行建模的圖數(shù)據(jù)庫(kù)的圖查詢。隨后將圖查詢分解成多 個(gè)查詢分量。隨后,對(duì)于這些查詢分量中的每一者,標(biāo)識(shí)出多個(gè)獨(dú)立查詢執(zhí)行引擎中可用于 處理該查詢分量的一個(gè)查詢執(zhí)行引擎,生成表示該查詢分量的子查詢,將該子查詢發(fā)送給 標(biāo)識(shí)出的查詢執(zhí)行引擎以供處理,以及從標(biāo)識(shí)出的查詢執(zhí)行引擎接收該子查詢的結(jié)果。隨 后組合接收到的結(jié)果以生成對(duì)該圖查詢的響應(yīng)。
[0006] 附圖簡(jiǎn)述
[0007] 參考以下描述、所附權(quán)利要求書以及附圖,將更好地理解此處所描述的圖查詢處 理技術(shù)實(shí)施例的具體特征、方面和優(yōu)點(diǎn),附圖中:
[0008] 圖1是以簡(jiǎn)化形式示出對(duì)書目網(wǎng)絡(luò)數(shù)據(jù)集進(jìn)行建模的屬性圖的片段的示例性實(shí) 施例的示圖。
[0009] 圖2是示出用于查詢屬性圖的圖查詢語(yǔ)言的示例性實(shí)施例的語(yǔ)法的列表。
[0010] 圖3是以簡(jiǎn)化形式示出查詢執(zhí)行引擎的混合引擎實(shí)現(xiàn)的示例性實(shí)施例的示圖。
[0011] 圖4是以簡(jiǎn)化形式示出圖1中示出的屬性圖的片段的關(guān)系表示的示例性實(shí)施例的 示圖。
[0012] 圖5是以簡(jiǎn)化形式示出用于實(shí)現(xiàn)本文描述的圖查詢處理技術(shù)實(shí)施例的體系結(jié)構(gòu) 框架的示例性實(shí)施例的示圖。
[0013] 圖6是以簡(jiǎn)化形式示出用于對(duì)圖查詢作出響應(yīng)的過(guò)程的一個(gè)實(shí)施例的流程圖。
[0014] 圖7是示出可以在圖查詢語(yǔ)言中使用的一組代數(shù)運(yùn)算符的示例性實(shí)施例的列表。
[0015] 圖8A-8P是以簡(jiǎn)化形式示出基于圖1中示出的屬性圖的片段以及圖4中示出的其 相應(yīng)關(guān)系表示的、圖7中示出的代數(shù)運(yùn)算符的行為的示例性實(shí)施例的示圖。
[0016] 圖9是示出對(duì)可被轉(zhuǎn)換成一種模式的常規(guī)關(guān)系運(yùn)算符的代數(shù)運(yùn)算符的映射的示 例性實(shí)施例的列表。
[0017]圖10A和10B是示出代數(shù)運(yùn)算符的SQL(結(jié)構(gòu)化查詢語(yǔ)言)轉(zhuǎn)換模板的推斷規(guī)則 的示例性實(shí)施例的列表。
[0018]圖11是以簡(jiǎn)化形式示出用于使用基于元組的代數(shù)方言來(lái)將圖查詢轉(zhuǎn)換成代數(shù)查 詢計(jì)劃的過(guò)程的示例性實(shí)施例的流程圖。
[0019] 圖12A-12D是示出用于將圖查詢的三元組模式映射到代數(shù)運(yùn)算符集合上的推斷 規(guī)則的示例性實(shí)施例的列表。
[0020] 圖13A和13B是示出可在圖查詢的前端編譯期間應(yīng)用的一組查詢重寫規(guī)則的示例 性實(shí)施例的列表。
[0021]圖14是以簡(jiǎn)化形式示出將示例性圖查詢前端編譯成包括關(guān)系運(yùn)算符和非關(guān)系圖 運(yùn)算符的示例性查詢計(jì)劃的示例性實(shí)施例的示圖。
[0022] 圖15是以簡(jiǎn)化形式示出用于對(duì)代數(shù)查詢計(jì)劃進(jìn)行后端編譯以生成表示圖查詢的 查詢分量的多個(gè)子查詢的過(guò)程的示例性實(shí)施例的流程圖。
[0023] 圖16是以簡(jiǎn)化的形式示出用于對(duì)圖查詢作出響應(yīng)的過(guò)程的另一實(shí)施例的流程 圖。
[0024] 圖17是以簡(jiǎn)化形式示出解決其中需要一個(gè)或多個(gè)子查詢的結(jié)果來(lái)執(zhí)行另外的一 個(gè)或多個(gè)子查詢的情況的查詢執(zhí)行管理過(guò)程的示例性實(shí)施例的流程圖。
[0025] 圖18是示出其上可實(shí)現(xiàn)本文所述的圖查詢處理技術(shù)的各實(shí)施例和元素的通用計(jì) 算機(jī)系統(tǒng)的簡(jiǎn)化示例的示圖。
[0026] 詳細(xì)描述
[0027] 在以下對(duì)各圖查詢處理技術(shù)實(shí)施例的描述中,對(duì)附圖進(jìn)行了參考,附圖構(gòu)成了實(shí) 施例的一部分且在其中作為說(shuō)明示出了可在其中實(shí)施該圖查詢處理技術(shù)的具體實(shí)施例。可 以理解,可以使用其它實(shí)施例并且可以做出結(jié)構(gòu)上的改變而不背離圖查詢處理技術(shù)實(shí)施例 的范圍。
[0028] 還應(yīng)注意,出于清楚的目的,將采取具體的術(shù)語(yǔ)來(lái)描述此處所描述的各圖查詢處 理技術(shù)實(shí)施例,但并不意味著這些實(shí)施例被限制于所選擇的具體術(shù)語(yǔ)。此外,應(yīng)當(dāng)理解的 是,每個(gè)具體術(shù)語(yǔ)包括以寬泛地類似方式工作以實(shí)現(xiàn)類似目的的所有其技術(shù)等同物。此處 提及" 一個(gè)實(shí)施例"、或"另一實(shí)施"、或"示例性實(shí)施例"、或"替代實(shí)施例"、或"一個(gè)實(shí)施方 式"、或"另一實(shí)施方式"、或"示例性實(shí)施方式"、或"替代實(shí)施方式"意味著結(jié)合實(shí)施例或?qū)?施方式描述的特定特征、特定結(jié)構(gòu)或特定特性可被包括在圖查詢處理技術(shù)的至少一個(gè)實(shí)施 例中。在本說(shuō)明書中各個(gè)地方出現(xiàn)短語(yǔ)"在一個(gè)實(shí)施例中"、"在另一實(shí)施例中"、"在示例性 實(shí)施例中"、"在替代實(shí)施例中"、"在一個(gè)實(shí)施方式中"、在"另一實(shí)施方式中"、在"示例性實(shí) 施方式中"、在"替代實(shí)施方式中"不一定全都指同一實(shí)施例或?qū)嵤┓绞?,也不是與其他實(shí)施 例/實(shí)施方式互斥的單獨(dú)或替換實(shí)施例/實(shí)施方式。此外,表示圖查詢處理技術(shù)的一個(gè)或 多個(gè)實(shí)施例或?qū)崿F(xiàn)的過(guò)程流的次序并不固有地指示任何特定次序,也不暗示對(duì)圖查詢處理 技術(shù)的任何限制。
[0029] 術(shù)語(yǔ)"路徑"在本文中用于指代圖中通過(guò)節(jié)點(diǎn)互連的邊的序列。術(shù)語(yǔ)"屬性圖數(shù)據(jù) 模型"(在本文中有時(shí)被簡(jiǎn)稱為屬性圖)在本文中用于指代特定類型的圖,該特定類型的圖 可以在圖中包括每一個(gè)節(jié)點(diǎn)的一個(gè)或個(gè)屬性,并且還可以在圖中包括每一條邊的一個(gè)或多 個(gè)屬性。術(shù)語(yǔ)"輔助存儲(chǔ)設(shè)備"在本文中用于指代諸如一個(gè)或多個(gè)硬盤驅(qū)動(dòng)器等存儲(chǔ)設(shè)備。
[0030] 1.0使用多個(gè)引擎來(lái)進(jìn)行圖查詢處理
[0031 ] -般來(lái)說(shuō),本文中描述的各圖查詢處理技術(shù)實(shí)施例涉及對(duì)由實(shí)體向由屬性圖來(lái)建 模的圖庫(kù)提交的查詢(這樣的查詢?cè)诒疚闹杏袝r(shí)被簡(jiǎn)稱為圖查詢)作出響應(yīng)(例如,評(píng)估 和回答這些查詢,在文本中有時(shí)也被稱為執(zhí)行這些查詢)。該實(shí)體可以是終端用戶或計(jì)算設(shè) 備等等。
[0032] 出于包括但不限于以下各種原因,此處所描述的圖查詢處理技術(shù)實(shí)施例是有利 的。如將從后面的更詳細(xì)描述領(lǐng)會(huì)的,各圖查詢處理技術(shù)實(shí)施例提供針對(duì)屬性圖的可縮放 索引機(jī)制,其優(yōu)化了搜索/分析大型屬性圖的效率。這些圖查詢處理技術(shù)實(shí)施例還加速了 對(duì)許多不同類型的圖查詢的處理,而無(wú)需構(gòu)建并維護(hù)該圖數(shù)據(jù)庫(kù)的不同類型的索引(這會(huì) 消耗大量存儲(chǔ)器)。換言之,這些圖查詢處理技術(shù)實(shí)施例優(yōu)化了圖查詢處理的性能,并使圖 查詢處理期間所消耗的存儲(chǔ)器量最小化。該存儲(chǔ)器消耗最小化允許這些圖查詢處理技術(shù)實(shí) 施例伸縮并使用給定的固定存儲(chǔ)器大小來(lái)支持對(duì)由更大且更復(fù)雜的屬性圖來(lái)建模的更大 且更復(fù)雜的圖數(shù)據(jù)庫(kù)的查詢。
[0033] 本文中描述的各圖查詢處理技術(shù)實(shí)施例還支持查詢屬性圖的拓?fù)浣Y(jié)構(gòu)以及圖中 的數(shù)據(jù)對(duì)象(例如,圖中的節(jié)點(diǎn)和邊的屬性)兩者。由此,這些圖查詢處理技術(shù)實(shí)施例可高 效地評(píng)估并回答組合了基于屬性圖的拓?fù)浣Y(jié)構(gòu)的謂語(yǔ)和基于圖中的節(jié)點(diǎn)和邊的屬性的謂 語(yǔ)兩者的圖查詢。因此,這些圖查詢處理技術(shù)實(shí)施例支持對(duì)可包括兩個(gè)或更多個(gè)不同類型 的圖查詢分量(諸如,模式匹配分量、可達(dá)性分量和最短路徑分量等等)的組合的復(fù)雜圖查 詢的處理。這些圖查詢處理技術(shù)實(shí)施例還支持交互式、在線圖查詢處理(例如,這些實(shí)施例 不限于只以批量模式工作)。
[0034] 本文中描述的圖查詢處理技術(shù)實(shí)施例還利用以下試探法。由于關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)存 在強(qiáng)有力的索引和復(fù)雜的查詢優(yōu)化技術(shù),關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)一般對(duì)于執(zhí)行圖查詢及其查詢分 量(其表示屬性圖中的節(jié)點(diǎn)和/或邊的屬性上的結(jié)構(gòu)謂語(yǔ)或基于值的謂語(yǔ))而言非常高 效。此外,關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)對(duì)于找到執(zhí)行起來(lái)非常好的圖查詢執(zhí)行計(jì)劃而言一般非常高效, 因?yàn)殛P(guān)系數(shù)據(jù)庫(kù)系統(tǒng)支持考慮不同的可能執(zhí)行計(jì)劃變型(諸如,不同的聯(lián)接實(shí)現(xiàn)和不同的 聯(lián)接排序)。相反,關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)對(duì)于執(zhí)行涉及遞歸性質(zhì)的操作(例如,在屬性圖的拓?fù)?結(jié)構(gòu)上的遍歷操作)的圖查詢及其查詢分量而言一般是低效的。然而,并且將從以下更詳 細(xì)的描述中領(lǐng)會(huì)的,存在對(duì)于執(zhí)行這樣的遞歸操作而言是高效的各種圖引擎。
[0035] 1.1圖數(shù)據(jù)庫(kù)圖數(shù)據(jù)庫(kù)可以用各種方式來(lái)分類。作為示例而非限制,圖數(shù)據(jù)庫(kù)可 根據(jù)本文中使用的圖的數(shù)目和大小來(lái)分類。更具體地,可將由大量小圖組成的圖數(shù)據(jù)庫(kù)指 派給第一圖數(shù)據(jù)庫(kù)類別。落入該第一類別的圖數(shù)據(jù)庫(kù)有時(shí)被稱為事務(wù)圖數(shù)據(jù)庫(kù),并且通常 被用于對(duì)與生物信息學(xué)應(yīng)用、化學(xué)信息學(xué)應(yīng)用和業(yè)務(wù)處理模型的儲(chǔ)存庫(kù)等等相關(guān)聯(lián)的前述 數(shù)據(jù)集進(jìn)行建模??蓪H由單個(gè)大型圖或非常小數(shù)目的大型圖組成的圖數(shù)據(jù)庫(kù)指派給第二 圖數(shù)據(jù)庫(kù)類別。落入該第二類別的圖數(shù)據(jù)庫(kù)通常被用于對(duì)與社交網(wǎng)絡(luò)應(yīng)用、書目網(wǎng)絡(luò)應(yīng)用 和知識(shí)庫(kù)應(yīng)用等等相關(guān)聯(lián)的前述數(shù)據(jù)集進(jìn)行建模。
[0036] 存在三種常見類型的通常被用于查詢第二類別的圖數(shù)據(jù)庫(kù)的圖查詢,即模式匹配 圖查詢、可達(dá)性圖查詢和最短路徑圖查詢。模式匹配圖查詢嘗試找出大型圖中圖模式(例 如,路徑、或星形、或子圖等等)的存在性??蛇_(dá)性圖查詢驗(yàn)證在大型圖中的任何兩個(gè)節(jié)點(diǎn) 之間是否存在連接/路徑。最短路徑圖查詢是可達(dá)性圖查詢的變型,其返回大型圖中連接 著的任何兩個(gè)節(jié)點(diǎn)之間的最短路徑距離(以邊數(shù)為單位)??蛇_(dá)性查詢和最短路徑查詢兩 者都可返回查詢到的連接/路徑。由實(shí)體向第二類別的圖數(shù)據(jù)庫(kù)提交的給定的復(fù)雜圖查詢 可包括多個(gè)不同類型的查詢分量。更具體地并且作為示例而非限制,該復(fù)雜圖查詢可包括 一個(gè)或多個(gè)模式匹配分量或一個(gè)或多個(gè)可達(dá)性分量或一個(gè)或多個(gè)最短路徑分量。該復(fù)雜圖 查詢一般還可包括這些不同分量的任何組合。更具體地,該復(fù)雜圖查詢可包括以下中的一 者或多者:一個(gè)或多個(gè)模式匹配分量、或一個(gè)或多個(gè)可達(dá)性分量、或一個(gè)或多個(gè)最短路徑分 量。
[0037] 在許多現(xiàn)實(shí)世界應(yīng)用中,圖中的每一個(gè)節(jié)點(diǎn)可能都標(biāo)記有指定與該節(jié)點(diǎn)有關(guān)的相 關(guān)數(shù)據(jù)的一個(gè)或多個(gè)屬性。取決于正被實(shí)現(xiàn)的特定類型的圖數(shù)據(jù)庫(kù),圖中的每一邊還可標(biāo) 記有指定通過(guò)該邊連接的兩個(gè)節(jié)點(diǎn)之間存在的關(guān)系的類型的一個(gè)或多個(gè)屬性。作為示例而 非限制,在用于對(duì)社交網(wǎng)絡(luò)進(jìn)行建模的圖中,圖中的給定節(jié)點(diǎn)可表示網(wǎng)絡(luò)中的給定人,節(jié)點(diǎn) 可標(biāo)記有指定人的年齡的屬性,并且圖的拓?fù)浣Y(jié)構(gòu)可表示網(wǎng)絡(luò)中的人與其他人之間存在的 關(guān)系的不同類型(有時(shí)被稱為直接邊)。在其中圖被實(shí)現(xiàn)為屬性圖的情況下,這些關(guān)系中每 一個(gè)都可標(biāo)記有開始日期屬性。這種可包括圖中的各節(jié)點(diǎn)的屬性以及圖中的各邊的屬性的 圖在本文中被稱為屬性圖。將領(lǐng)會(huì),屬性圖的拓?fù)浣Y(jié)構(gòu)以及其中的節(jié)點(diǎn)和邊的屬性兩者都 表示有價(jià)值的信息。
[0038] 屬性圖可在形式上表示為(¥3,1^,1^^¥,匕,¥, 6),其中¥是圖中的節(jié)點(diǎn)的集合, gFXF是該圖中聯(lián)接兩個(gè)不同的節(jié)點(diǎn)的邊的集合,1^是V的標(biāo)記的集合,是E的標(biāo) 記的集合,F(xiàn)v是將標(biāo)記指派給每一個(gè)節(jié)點(diǎn)的函數(shù)V-Lv,并且^是將標(biāo)記指派給每一條邊 的函數(shù)E-LyAv= ,…,am}是可與V中的任何節(jié)點(diǎn)相關(guān)聯(lián)的m個(gè)屬性的集合。節(jié) 點(diǎn)vGV中的每一個(gè)節(jié)點(diǎn)都可標(biāo)記有屬性矢量[ai (v),…,am(v)],其中a.j(v)是節(jié)點(diǎn)v的 關(guān)于屬性a_j的屬性值。{bpb2,…,bj是可與E中的任何邊相關(guān)聯(lián)的n個(gè)屬性的集 合。類似地,邊eGE中的每一條邊都可標(biāo)記有屬性矢量[bde),…,bn(e)],其中bk(e)是 邊e的關(guān)于屬性bk的屬性值。
[0039] 圖1以簡(jiǎn)化形式示出了對(duì)書目網(wǎng)絡(luò)數(shù)據(jù)集進(jìn)行建模的屬性圖段(此后有時(shí)被簡(jiǎn)稱 為圖片段)的示例性實(shí)施例。如圖1所例示的,圖片段1〇〇中的每一個(gè)節(jié)點(diǎn)(例如,102、 104)均表示實(shí)體實(shí)例,諸如作者、或論文、或會(huì)議,等等。圖片段100中的每一條邊(例如, 106)均表示通過(guò)該邊連接的兩個(gè)節(jié)點(diǎn)(例如,102、104)之間存在的結(jié)構(gòu)關(guān)系(例如,其作 者、或隸屬于或發(fā)表于,等等)。每一個(gè)節(jié)點(diǎn)(例如,110)均可標(biāo)記有描述該節(jié)點(diǎn)的一個(gè)或 多個(gè)屬性(例如,108);這樣的屬性的示例包括年齡、關(guān)鍵詞和位置等等。每一條邊(例如, 106)均可標(biāo)記有描述該邊的一個(gè)或多個(gè)屬性(例如,112);這樣的屬性的示例包括次序、頭 銜和月份等等。存儲(chǔ)部