或多個附加 的數(shù)據(jù)服務(wù)器轉(zhuǎn)發(fā)了所指定次數(shù)之后自動終止。
[0048] 在不同實現(xiàn)中,如果在MHC或TTL參數(shù)被觸發(fā)時還沒有標(biāo)識出路徑,則搜索也可以 終止。可替換地,搜索可以繼續(xù)進(jìn)行直至標(biāo)識出至少一條路徑,可以繼續(xù)進(jìn)行直至另一個參 數(shù)被觸發(fā),等等。
[0049] 另一個說明性參數(shù)是目標(biāo)跳數(shù)(或THC)參數(shù)。目標(biāo)跳數(shù)參數(shù)包括一個或兩個整 數(shù)值。單個值將導(dǎo)致僅在長度上與所指定的跳數(shù)相等的路徑被返回,而兩個值則使得僅具 有處于這兩個數(shù)值之間(包含性或排斥性)的長度的路徑被返回。
[0050] 在其它實施例中,一個或多個執(zhí)行參數(shù)可以被配置為基于分布式圖的節(jié)點和/或 邊的屬性對搜索進(jìn)行修改或整形。例如,可能期望僅標(biāo)識遍歷一個或多個具有特定屬性的 節(jié)點或邊的路徑,或者相反地,拒絕包括具有該屬性的節(jié)點或邊的路徑。
[0051] 作為說明而非限制,執(zhí)行參數(shù)可以用來刪減(省略)不包括至少一個對應(yīng)于影響 力人物(例如,有影響力的成員)的節(jié)點的路徑,包括對應(yīng)于為不同雇主工作的成員的節(jié)點 的路徑(即,僅期望連接具有指定雇主的成員的路徑),具有同類邊的路徑,包括具有小于 閾值數(shù)的第一級連接的節(jié)點的路徑,等等。分布式圖的任何節(jié)點屬性或邊屬性或者節(jié)點屬 性和邊屬性的任意組合可以被用作執(zhí)行參數(shù)。
[0052] 在操作306中,控制器標(biāo)識維護(hù)對應(yīng)于成員176的第一節(jié)點的第一數(shù)據(jù)服務(wù)器 (或數(shù)據(jù)服務(wù)器的第一協(xié)作集群)。在圖2的環(huán)境中,這是數(shù)據(jù)服務(wù)器226b。如圖2所示, 控制器可以維護(hù)節(jié)點圖、路由表或者將節(jié)點(或成員)映射至進(jìn)行負(fù)責(zé)的數(shù)據(jù)服務(wù)器的其 它數(shù)據(jù)。
[0053] 在操作308中,控制器向第一數(shù)據(jù)服務(wù)器發(fā)出寬度優(yōu)先搜索。在所圖示的方法中, 該搜索請求標(biāo)識出第一節(jié)點(成員176)和第二節(jié)點(成員802),并且在操作304中接收到 任何操作參數(shù)的情況下包括該操作參數(shù)。該請求還可以包括時間戳,其指示該請求何時被 控制器所發(fā)出,并且可以標(biāo)識出該控制器從而使得數(shù)據(jù)服務(wù)器將知道將其結(jié)果(如果有任 何結(jié)果產(chǎn)生)要發(fā)送至何處。
[0054] 在操作310中,第一數(shù)據(jù)服務(wù)器檢查其節(jié)點數(shù)據(jù),而確定其是否包括從第一節(jié)點 到第二節(jié)點的直接連接(例如,單條邊)。如圖2中的節(jié)點數(shù)據(jù)所示,成員176的節(jié)點并未 通過單條邊而直接連接至成員802的節(jié)點。然而,成員176的節(jié)點176具有到若干其它成 員的節(jié)點的邊,并且因此到成員802的最短路徑將通過它們中的一個或多個(如果從成員 176到成員802的確存在任何路徑)。
[0055] 在一些實施例中,如果所有中間節(jié)點都被存儲在相同數(shù)據(jù)服務(wù)器上,則兩個節(jié)點 之間的"直接連接"可以包含多于一條的邊。因此,如果第一數(shù)據(jù)服務(wù)器存儲了具有定義了 從節(jié)點176到節(jié)點802的相對應(yīng)的邊的多個節(jié)點,則這可以是數(shù)據(jù)服務(wù)器將返回至控制器 的有效結(jié)果(如果其在有任何可應(yīng)用的執(zhí)行參數(shù)的情況下滿足了可應(yīng)用的執(zhí)行參數(shù))。
[0056] 在操作312中,如果當(dāng)前(例如,第一)數(shù)據(jù)服務(wù)器的節(jié)點數(shù)據(jù)揭示出指向目的地 節(jié)點的直接連接,則該方法在操作320繼續(xù)進(jìn)行。否則,所圖示的方法前進(jìn)至操作330。
[0057] 在操作320中,當(dāng)前數(shù)據(jù)服務(wù)器確定其是否應(yīng)當(dāng)報告其已經(jīng)標(biāo)識出的(多個)直 接連接。一個或多個可應(yīng)用的執(zhí)行參數(shù)可能導(dǎo)致該數(shù)據(jù)服務(wù)器使得其所發(fā)現(xiàn)的一個或多個 連接無效,在這種情況下,那些結(jié)果被刪減(即,被丟棄)。
[0058] 作為說明,直接連接可能由于其比最小長度更短或者比最大長度更長、由于操作 參數(shù)指示并不返回包括特定節(jié)點(例如,節(jié)點13)的結(jié)果、由于該連接不包括所要求的中間 節(jié)點、或者出于一些其它原因而被刪減。
[0059] 如果其所標(biāo)識的所有直接連接都被刪減,則所圖示的方法前進(jìn)至操作330 ;否則, 其在操作322繼續(xù)進(jìn)行。
[0060] 在操作322,當(dāng)前(例如,第一)數(shù)據(jù)服務(wù)器將其(有效)結(jié)果直接報告給發(fā)出寬 度優(yōu)先搜索請求的控制器。如以上所描述的,所報告的結(jié)果可能并不包括該數(shù)據(jù)服務(wù)器所 標(biāo)識的所有直接連接,但是將包括滿足可應(yīng)用執(zhí)行參數(shù)的那些直接連接。
[0061] 在操作330中,當(dāng)前數(shù)據(jù)服務(wù)器確定其是否應(yīng)當(dāng)終止搜索。例如,如果該請求伴隨 有TTL參數(shù),則所伴隨的時間值將被應(yīng)用以確定該請求是否已經(jīng)過期??商鎿Q地,該請求可 以包括將通過添加另一跳(例如,通過將搜索請求轉(zhuǎn)發(fā)至另一數(shù)據(jù)服務(wù)器)而被觸發(fā)或違 背的MHC參數(shù),操作322中所遇到的最大數(shù)量的結(jié)果參數(shù),等等。
[0062] 如果TTL參數(shù)、MHC參數(shù)或者其它參數(shù)觸發(fā)了搜索的終止,則該方法結(jié)束。否則, 該方法在操作332繼續(xù)進(jìn)行。操作330是可選的,因為該請求可能并不包括觸發(fā)搜索終止 的參數(shù)。在一些實施例中,有關(guān)終止搜索還是以其它方式對其進(jìn)行調(diào)節(jié)的決策可以在該搜 索的不同點(或多個點)進(jìn)行。
[0063] 在操作332,當(dāng)前(例如,第一)數(shù)據(jù)服務(wù)器(服務(wù)器226b)將向一些或所有其它 數(shù)據(jù)服務(wù)器一至少是存儲通過單條邊直接連接至節(jié)點176的節(jié)點的數(shù)據(jù)服務(wù)器一重新發(fā) 出或轉(zhuǎn)發(fā)該請求。如果第一數(shù)據(jù)服務(wù)器具有標(biāo)識出哪些數(shù)據(jù)服務(wù)器存儲了哪些切分或者哪 些個體節(jié)點的信息,則其能夠僅將該請求發(fā)送至那些數(shù)據(jù)服務(wù)器。可替換地,其可以簡單地 將該請求廣播至一些或全部的其它數(shù)據(jù)服務(wù)器。
[0064] 可以注意到的是,數(shù)據(jù)中心自身傳播搜索請求,而不是簡單地向控制器標(biāo)識所連 接的節(jié)點并且要求控制器進(jìn)行該傳播。
[0065] 利用所重新發(fā)出或轉(zhuǎn)發(fā)的請求或在其內(nèi)部,數(shù)據(jù)服務(wù)器標(biāo)識出該請求的發(fā)起方 (即,該控制器)、目的地節(jié)點(節(jié)點802)、該請求的時間戳以及任意操作參數(shù)。該請求還標(biāo) 識出當(dāng)前(例如,第一)數(shù)據(jù)服務(wù)器已經(jīng)形成或增加的指向目的地節(jié)點的一條或多條(部 分)路徑。在這種情況下,如果該搜索僅針對初始節(jié)點的邊進(jìn)行,則說明性路徑可以被表示 為{176}。由于另外的數(shù)據(jù)服務(wù)器代表其它節(jié)點處理該搜索請求,所以該部分路徑將被延 長。并且,當(dāng)搜索分叉時(如果其分叉),則多條部分路徑可以在每一跳被生成并更新。
[0066] 作為說明,隨搜索請求所轉(zhuǎn)發(fā)的存活時間參數(shù)可以減小以當(dāng)前數(shù)據(jù)服務(wù)器處理該 搜索結(jié)果所花費的時間量?;蛘?,后續(xù)數(shù)據(jù)服務(wù)器可以簡單地將TTL參數(shù)和時間戳與當(dāng)前 時間之間的差異進(jìn)行比較以便決定TTL參數(shù)是否已經(jīng)被觸發(fā)。類似地,最大跳計數(shù)或目標(biāo) 跳數(shù)參數(shù)可以被第一數(shù)據(jù)服務(wù)器減去1。或者,后續(xù)數(shù)據(jù)服務(wù)器可以將MHC或THC參數(shù)與伴 隨所轉(zhuǎn)發(fā)的請求的(多條)部分路徑的長度進(jìn)行比較以確定跳數(shù)參數(shù)是否已經(jīng)被觸發(fā)。
[0067] 在操作334中,搜索接收到所轉(zhuǎn)發(fā)的搜索請求的數(shù)據(jù)服務(wù)器的節(jié)點數(shù)據(jù)以搜尋從 所轉(zhuǎn)發(fā)的搜索請求中所標(biāo)識的路徑或部分路徑中的最終節(jié)點(例如,該搜索請求的第一次 轉(zhuǎn)發(fā)之后的節(jié)點176)到目的地節(jié)點(節(jié)點802)的之間連接。操作334和后續(xù)操作可以由 接收到所轉(zhuǎn)發(fā)的搜索請求的多個不同數(shù)據(jù)服務(wù)器(并行)執(zhí)行。
[0068] 該方法隨后返回至操作312,并且更多數(shù)據(jù)服務(wù)器被涉及到該搜索之中。最終,節(jié) 點176和802之間的一條或多條有效路徑會被發(fā)現(xiàn)并且直接報告給控制器,或者所有可能 路徑都將被發(fā)掘但是將找不到路徑(或者沒有滿足執(zhí)行參數(shù)的路徑),或者該搜索可能在 發(fā)現(xiàn)任何路徑之前超時。
[0069] 在一些實施例中,搜索可以在操作330或者在該處理中的一些其它點進(jìn)行修改 (而不是被終止)。例如,如果伴隨該搜索請求的執(zhí)行參數(shù)包括THC參數(shù),并且所要求的路 徑長度(針對單值參數(shù)而言)或最小路徑長度(針對雙值參數(shù)而言)還沒有被滿足,則數(shù) 據(jù)服務(wù)器可以簡單地標(biāo)識出出邊并且相應(yīng)地傳播搜索請求(而不是針對直接連接而搜索 其節(jié)點數(shù)據(jù))。或者,其可以僅針對滿足其余路徑長度要求的直接連接來搜索其節(jié)點數(shù)據(jù)。
[0070] 在其它實施例中,圖3中所描繪的操作可以以一些其它順序來進(jìn)行,或者所描述 的方法可以表征提供相同或相當(dāng)?shù)慕Y(jié)果的更少或額外的操作而并不超出本發(fā)明的范圍。
[0071] 圖4是根據(jù)一些實施例的用于搜索已經(jīng)由節(jié)點所分片的分布式圖的裝置的框圖。
[007