2] 圖4的裝置400包括(多個(gè))處理器402、存儲(chǔ)器404和存儲(chǔ)406,該存儲(chǔ)406可 以包括一個(gè)或多個(gè)光學(xué)、固態(tài)和/或磁性存儲(chǔ)組件。存儲(chǔ)406可以處于該裝置本地或與之 遠(yuǎn)離。裝置400可以(永久或臨時(shí)地)耦合至鍵盤412、定向設(shè)備414和顯示器416。多個(gè) 裝置400可以協(xié)同操作以存儲(chǔ)并遍歷分布式圖,或者裝置400可以包含以類似方式進(jìn)行操 作的多個(gè)單獨(dú)的邏輯和/或物理組件。
[0073] 存儲(chǔ)406存儲(chǔ)節(jié)點(diǎn)數(shù)據(jù)422,后者包括分布式圖中一定數(shù)量的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包括 該節(jié)點(diǎn)的標(biāo)識(shí)符和/或該節(jié)點(diǎn)所表示的實(shí)體(例如,職業(yè)或社交網(wǎng)絡(luò)的成員)、節(jié)點(diǎn)的邊或 第一級連接的標(biāo)識(shí)(例如,相對應(yīng)成員的第一級連接),并且可能包括該節(jié)點(diǎn)的一個(gè)或多個(gè) 屬性。例如,如果節(jié)點(diǎn)表示職業(yè)或社交網(wǎng)絡(luò)的成員,則該屬性可以包括該成員的任意數(shù)量的 個(gè)人、職業(yè)、社交和/或教育屬性。
[0074] 存儲(chǔ)406可選地可以存儲(chǔ)一個(gè)或多個(gè)反向索引424,在一些實(shí)施方式中,后者包括 直接連接至(即,經(jīng)由分布式圖的單條邊)節(jié)點(diǎn)數(shù)據(jù)422中所包括的節(jié)點(diǎn)的所有節(jié)點(diǎn)的索 弓丨。索引424中所標(biāo)識(shí)的節(jié)點(diǎn)可以在節(jié)點(diǎn)數(shù)據(jù)422中包括任意節(jié)點(diǎn)。特別地,該節(jié)點(diǎn)數(shù)據(jù) 內(nèi)的一些節(jié)點(diǎn)將具有去往該節(jié)點(diǎn)數(shù)據(jù)內(nèi)的其它節(jié)點(diǎn)的直接連接,并且反向索引424可以對 它們有所反映或并不有所反映。
[0075] 存儲(chǔ)406還存儲(chǔ)可以被加載到存儲(chǔ)器404中而供(多個(gè))處理器402執(zhí)行的邏輯。 這樣的邏輯包括搜索邏輯426和控制邏輯428。在其它實(shí)施例中,這些邏輯模塊和/或其它 內(nèi)容可以被組合或劃分以按照需要對其功能進(jìn)行匯總或分割。
[0076] 搜索邏輯426包括用于如所保證的針對查詢或搜索請求進(jìn)行接收、執(zhí)行、傳播和 響應(yīng)的計(jì)算機(jī)可執(zhí)行指令,上述查詢或搜索請求涉及到存儲(chǔ)在該裝置的分布式圖的節(jié)點(diǎn)。 例如,作為寬度優(yōu)先搜索的一部分,節(jié)點(diǎn)和相對應(yīng)的屬性(例如,邊、與相對應(yīng)成員相關(guān)聯(lián) 的數(shù)據(jù))可以被檢查以找出兩個(gè)節(jié)點(diǎn)之間的路徑(例如,最短路徑、說明路徑、路徑長度)、 找出直接連接至特定目的地節(jié)點(diǎn)的節(jié)點(diǎn)的成員,找出第一節(jié)點(diǎn)通過其連接至第二節(jié)點(diǎn)的一 個(gè)或多個(gè)中間節(jié)點(diǎn),將第一節(jié)點(diǎn)連接至第二節(jié)點(diǎn)并且包括(或省略)具體中間節(jié)點(diǎn)的路徑, 等等。如果標(biāo)識(shí)出響應(yīng)數(shù)據(jù)(例如,如果標(biāo)識(shí)出所請求的路徑),則該數(shù)據(jù)被直接返回至該 查詢或搜索請求的發(fā)起方(例如,控制器)。如果沒有標(biāo)識(shí)出響應(yīng)數(shù)據(jù),則該搜索可以被直 接傳播至其它裝置或裝置400的其它組件。
[0077] 控制邏輯428包括用于控制、改變或終止查詢或搜索請求的執(zhí)行的處理器可執(zhí)行 指令。例如,控制邏輯428可以包括一個(gè)或多個(gè)參數(shù)或者與之相關(guān)聯(lián),當(dāng)被觸發(fā)時(shí),改變搜 索如何進(jìn)行、終止搜索、終止一個(gè)或多個(gè)結(jié)果或候選結(jié)果被報(bào)告,等等。
[0078] 在本發(fā)明的一些實(shí)施例中,裝置400執(zhí)行歸于圖2的數(shù)據(jù)服務(wù)器226-并且可能歸 于控制器216-的大多數(shù)或全部功能。因此,該裝置可以包括其它組件和/或邏輯以促成節(jié) 點(diǎn)分片圖的維護(hù)和搜索。
[0079] 雖然以上處理已經(jīng)以特定應(yīng)用為背景進(jìn)行了描述,但是將要意識(shí)到的是,該處理 并不取決于該特定的應(yīng)用背景。相反,這里所描述的處理可以被用來促成具有節(jié)點(diǎn)和邊的 圖結(jié)構(gòu)的任意分布式數(shù)據(jù)集合的搜索。該結(jié)構(gòu)一般應(yīng)用于關(guān)系數(shù)據(jù)庫系統(tǒng),后者能夠關(guān)于 具有實(shí)體之間的關(guān)系(連接)的實(shí)體(節(jié)點(diǎn))進(jìn)行定義。可能使用這里所描述的方法進(jìn)行 搜索的數(shù)據(jù)集合的示例包括計(jì)算機(jī)或通信網(wǎng)絡(luò)的表示形式、組件和路由以及半導(dǎo)體設(shè)備的 表示形式、專利同族、流行病學(xué)數(shù)據(jù)集合、任意物理或邏輯系統(tǒng)中的從屬性映射、產(chǎn)品數(shù)據(jù) 庫等,但是并不局限于此。
[0080] 以上所描述的一個(gè)或多個(gè)實(shí)施例在其中執(zhí)行的環(huán)境可以結(jié)合有通用計(jì)算機(jī)或?qū)?用計(jì)算機(jī),諸如手持計(jì)算機(jī)或通信設(shè)備。這樣的設(shè)備的一些細(xì)節(jié)(例如,處理器、存儲(chǔ)器、數(shù) 據(jù)存儲(chǔ)、顯示器)出于清楚的原因可以被省略。諸如一個(gè)或多個(gè)任務(wù)或功能所屬的處理器 或存儲(chǔ)器之類的組件可以是被臨時(shí)配置為執(zhí)行所指定的任務(wù)或功能的通用組件,或者可以 是被制造為執(zhí)行該任務(wù)或功能的具體組件。如這里所使用的術(shù)語"處理器"是指被配置為 處理數(shù)據(jù)和/或計(jì)算機(jī)程序代碼的一個(gè)或多個(gè)電子電路、設(shè)備、芯片、處理核心和/或其它 組件。
[0081] 該詳細(xì)描述中所描述的數(shù)據(jù)結(jié)構(gòu)和程序代碼通常存儲(chǔ)在非瞬態(tài)的計(jì)算機(jī)可讀存 儲(chǔ)介質(zhì)上,其可以是能夠存儲(chǔ)代碼和/或數(shù)據(jù)以供計(jì)算機(jī)系統(tǒng)使用的任意設(shè)備或介質(zhì)。非 瞬態(tài)的計(jì)算機(jī)可讀存儲(chǔ)媒體包括但并不局限于易失性存儲(chǔ)器、非易失性存儲(chǔ)器、磁性和光 學(xué)存儲(chǔ)設(shè)備,諸如磁盤驅(qū)動(dòng)器、磁帶、⑶(高疏密程度光碟)和DVD(數(shù)字多功能盤或數(shù)字視 頻盤)、固態(tài)驅(qū)動(dòng)器和/或目前已知或日后研發(fā)的其它非瞬態(tài)的計(jì)算機(jī)可讀介質(zhì)。
[0082] 詳細(xì)描述中所描述的方法和處理能夠被體現(xiàn)為代碼和/或數(shù)據(jù),其可以存儲(chǔ)在如 以上所描述的非瞬態(tài)的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。當(dāng)處理器或計(jì)算機(jī)系統(tǒng)讀取并執(zhí)行該代碼 并且操控存儲(chǔ)在該介質(zhì)上的數(shù)據(jù)時(shí),該處理器或計(jì)算機(jī)系統(tǒng)執(zhí)行被體現(xiàn)為代碼和數(shù)據(jù)結(jié)構(gòu) 并存儲(chǔ)在該介質(zhì)內(nèi)的方法和處理。
[0083] 此外,該方法和處理可以被編程到硬件模塊之中,后者諸如但并不局限于應(yīng)用特 定集成電路(ASIC)芯片、現(xiàn)場可編程門陣列(FPGA)以及目前已知或日后研發(fā)的其它可編 程邏輯設(shè)備。當(dāng)這樣的硬件模塊被激活時(shí),其執(zhí)行該模塊中包括的方法和處理。
[0084] 已經(jīng)僅出于說明和描述的目的給出了上述實(shí)施例。它們并非意在是窮舉的或者將 本公開限制為所公開的形式。因此,任何修改和變化對于本領(lǐng)域技術(shù)人員都將是顯而易見 的。其范圍由所附權(quán)利要求而非之前的描述所限定。
【主權(quán)項(xiàng)】
1. 一種搜索由節(jié)點(diǎn)所分片的分布式圖的方法,該方法包括: 在存儲(chǔ)有所述分布式圖的第一分片的第一節(jié)點(diǎn)存儲(chǔ)庫處接收有關(guān)第一節(jié)點(diǎn)和第二節(jié) 點(diǎn)的搜索請求; 操作所述第一節(jié)點(diǎn)存儲(chǔ)庫的處理器以確定所述第一分片是否包括所述第一節(jié)點(diǎn)和所 述第二節(jié)點(diǎn)之間的直接連接;以及 如果所述第一分片不包括所述第一節(jié)點(diǎn)和所述第二節(jié)點(diǎn)之間的直接連接,則直接向存 儲(chǔ)有所述分布式圖的其他分片的一個(gè)或多個(gè)其他節(jié)點(diǎn)存儲(chǔ)庫傳播所述搜索請求。2. 根據(jù)權(quán)利要求1所述的方法,其中: 所述第一分片包括所述分布式圖的第一節(jié)點(diǎn)集合;并且 所述第一節(jié)點(diǎn)集合中的每個(gè)節(jié)點(diǎn)包括至少一條將所述節(jié)點(diǎn)連接至所述分布式圖的另 一節(jié)點(diǎn)的邊。3. 根據(jù)權(quán)利要求1或2所述的方法,其中在以下情況下所述第一分片包括從所述第一 節(jié)點(diǎn)到所述第二節(jié)點(diǎn)的直接連接: 所述第一分片包括所述第一節(jié)點(diǎn);并且 所述第一節(jié)點(diǎn)包括將所述第一節(jié)點(diǎn)直接連接至所述第二節(jié)點(diǎn)的邊。4. 根據(jù)之前任一項(xiàng)權(quán)利要求所述的方法,其中在以下情況下所述第一分片包括從所述 第一節(jié)點(diǎn)到所述第二節(jié)點(diǎn)的直接連接: 所述第一分片包括多個(gè)節(jié)點(diǎn),從而所述多個(gè)節(jié)點(diǎn)包括定義所述第一節(jié)點(diǎn)和所述第二節(jié) 點(diǎn)之間的路徑的多條邊,所述多個(gè)節(jié)點(diǎn)包括所述第一節(jié)點(diǎn)。5. 根據(jù)之前任一項(xiàng)權(quán)利要求所述的方法,其中: 所述搜索請求是針對從所述第一節(jié)點(diǎn)到所述第二節(jié)點(diǎn)的路徑的請求;并且 所述搜索請求從被配置為管理所述分布式圖的搜索的控制器被接收; 其中在所述第一分片不包括所述第一節(jié)點(diǎn)和所述第二節(jié)點(diǎn)之間的直接連接的情況下, 不從所述第一節(jié)點(diǎn)存儲(chǔ)庫向所述控制器返回針對所述搜索請求的響應(yīng)。6. 根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的方法,其中: 所述搜索請求是針對從起始節(jié)點(diǎn)到所述第二節(jié)點(diǎn)的路徑的請求,所述起始節(jié)點(diǎn)不同于 所述第一節(jié)點(diǎn); 所述搜索請求包括從所述起始節(jié)點(diǎn)到所述第二節(jié)點(diǎn)的部分路徑,所述部分路徑在所述 第一節(jié)點(diǎn)處終止;并且 所述搜索請求從另一節(jié)點(diǎn)存儲(chǔ)庫被接收。7. -種搜索由節(jié)點(diǎn)所分片的分布式圖的方法,所述方法包括: (a)在存儲(chǔ)有所述分布式圖的第一節(jié)點(diǎn)的第一節(jié)點(diǎn)存儲(chǔ)庫處操作第一處理器以: (i) 從搜索控制器接收有關(guān)所述第一節(jié)點(diǎn)和第二節(jié)點(diǎn)的搜索請求; (ii) 確定所述第一節(jié)點(diǎn)是否直接連接至所述第二節(jié)點(diǎn);以及 (iii) 如果所述第一節(jié)點(diǎn)未直接連接至所述第二節(jié)點(diǎn),則將所述搜索請求轉(zhuǎn)發(fā)至存儲(chǔ) 有直接連接至所述第一節(jié)點(diǎn)的其它節(jié)點(diǎn)的一個(gè)或多個(gè)附加節(jié)點(diǎn)存儲(chǔ)庫,轉(zhuǎn)發(fā)的所述搜索請 求包括: (1)從所述第一節(jié)點(diǎn)到所述