用于搜索分布式節(jié)點分片圖的系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001] 本公開內(nèi)容涉及數(shù)據(jù)庫和計算機系統(tǒng)的領(lǐng)域。更具體地,提供了用于搜索分布式 圖、數(shù)據(jù)庫或者其它數(shù)據(jù)集合的系統(tǒng)和方法。
【背景技術(shù)】
[0002] 大型數(shù)據(jù)庫經(jīng)常通過(一般在單個服務(wù)器上)存儲單一模式的數(shù)據(jù)庫行的不同集 合而在水平上進(jìn)行分區(qū)。水平分區(qū)的一種好處是對應(yīng)于分區(qū)的索引的大小有所減小。分片 (sharding)通過跨一種模式的多個實例對數(shù)據(jù)庫行進(jìn)行分區(qū)而延伸了這一概念,由此允許 大數(shù)據(jù)庫表得以跨多個服務(wù)器而被劃分;使用單獨的索引來管理每個分區(qū)。
[0003] 例如,包括數(shù)百萬節(jié)點以及連接那些節(jié)點的邊的大型圖可能過大而無法被存儲在 單個存儲庫中,并且因此可能跨多個存儲庫或者在多個存儲庫之中進(jìn)行分布。
【附圖說明】
[0004] 圖1是描繪可以在其中實施一個或多個實施例的計算環(huán)境的框圖。
[0005] 圖2是依據(jù)一些實施例的描繪用于執(zhí)行分布式圖的寬度優(yōu)先搜索的裝置和方法 的框圖。
[0006] 圖3是依據(jù)一些實施例的演示執(zhí)行分布式圖的寬度優(yōu)先搜索的方法的流程圖。
[0007] 圖4是依據(jù)一些實施例的用于搜索已經(jīng)由節(jié)點所分片的分布式圖的裝置的框圖。
【具體實施方式】
[0008] 以下描述被給出以使得本領(lǐng)域的任何技術(shù)人員都能夠制造并使用所公開的實施 例,并且以一個或多個特定應(yīng)用及其要求為背景而提供。針對所公開實施例的各種修改對 于本領(lǐng)域技術(shù)人員將是輕易顯而易見的,并且這里所定義的一般原則可以被應(yīng)用于其它實 施例和應(yīng)用而并不背離所公開的那些實施例和應(yīng)用的范圍。因此,與本公開相關(guān)聯(lián)的一項 或多項發(fā)明并非意在被局限于所示出的實施例,而是要以與本公開相符的最為寬泛的范圍 為依據(jù)。
[0009] 在一些實施例中,提供了用于對已經(jīng)由節(jié)點跨多個邏輯或物理數(shù)據(jù)服務(wù)器進(jìn)行分 片或水平分區(qū)的分布式圖來執(zhí)行搜索或查詢的系統(tǒng)和方法。根據(jù)以下描述,能夠容易研發(fā) 出其它實施例以便隨以有利于進(jìn)行分片或水平分區(qū)的方式進(jìn)行配置的其它類型的數(shù)據(jù)而 使用。
[0010] 該系統(tǒng)包括多個數(shù)據(jù)服務(wù)器以及附加的用于接收查詢并對其作出響應(yīng)的邏輯,并 且該方法提供了查詢響應(yīng)從個體服務(wù)器的快速返回,同時允許對查詢進(jìn)行動態(tài)調(diào)節(jié)以提早 終止查詢、刪減結(jié)果,或者影響查詢的執(zhí)行和/或針對查詢的響應(yīng)。
[0011] 圖1是根據(jù)一些實施例的用于搜索水平分區(qū)或分片的數(shù)據(jù)集合(諸如分布圖)的 系統(tǒng)的框圖。系統(tǒng)110可以被說明性地實施為一個組織的數(shù)據(jù)中心或者在該數(shù)據(jù)中心內(nèi)實 施,該數(shù)據(jù)中心托管維護(hù)數(shù)據(jù)的在線應(yīng)用或服務(wù)。
[0012] 在一些特定實現(xiàn)中,系統(tǒng)lio在由例如Linked丨n?公司所提供的專業(yè)或社交聯(lián) 網(wǎng)服務(wù)或系統(tǒng)內(nèi)進(jìn)行操作,上述服務(wù)或系統(tǒng)幫助成員創(chuàng)建、開發(fā)并維護(hù)專業(yè)(和個人)關(guān) 系。作為說明,在這些實現(xiàn)中,數(shù)據(jù)可以表示成員以及它們針對彼此的連接。
[0013] 系統(tǒng)110所提供的服務(wù)或應(yīng)用的成員或用戶經(jīng)由客戶端設(shè)備連接至該系統(tǒng),該客 戶端設(shè)備可以是靜態(tài)的(例如,臺式計算機、工作站)和/或移動的(例如,智能電話、平板 電腦、膝上電腦)。該客戶端設(shè)備操作諸如瀏覽器程序或者專門被設(shè)計為訪問系統(tǒng)lio所提 供的(多種)服務(wù)的應(yīng)用之類的適當(dāng)?shù)目蛻舳藨?yīng)用。系統(tǒng)110的用戶可以被稱作成員,因 為他們可能被要求向系統(tǒng)進(jìn)行注冊以便完全訪問可用服務(wù)。
[0014] 用戶連接通常通過端口 112來形成,后者可以包括應(yīng)用服務(wù)器、web服務(wù)器和/或 一些其它網(wǎng)關(guān)或入口點。系統(tǒng)110還包括內(nèi)容服務(wù)器114、(多個)控制器116、內(nèi)容存儲 124和數(shù)據(jù)服務(wù)器126。
[0015] 作為其所提供的服務(wù)的一部分,系統(tǒng)110供應(yīng)內(nèi)容以用于經(jīng)由用戶的客戶端設(shè)備 向其進(jìn)行呈現(xiàn)。所供應(yīng)的內(nèi)容可以包括狀態(tài)更新、消息、廣告、工作機會、通告、工作列表、新 聞等,并且可以是或可以包括任意類型的媒體(例如,文本、圖像、視頻、音頻)。系統(tǒng)110可 以供應(yīng)由系統(tǒng)的服務(wù)的用戶所生成的內(nèi)容和/或由第三方所提供的內(nèi)容以便遞送至那些 服務(wù)的用戶。
[0016] 內(nèi)容服務(wù)器114維護(hù)用于向成員供應(yīng)的內(nèi)容項的一個或多個存儲庫(例如,內(nèi)容 存儲124)、內(nèi)容項的索引和/或在向成員提供內(nèi)容時有用的其它信息。作為說明,內(nèi)容服務(wù) 器114可以每天供應(yīng)數(shù)億量級的內(nèi)容項,系統(tǒng)可以針對其中的每一個內(nèi)容項存儲事件記錄 (除了反應(yīng)其它用戶活動的數(shù)據(jù)之外)。
[0017] 如以上所指出的,內(nèi)容存儲124可以包括用于向成員提供和/或供系統(tǒng)110的各 種組件所使用的各種類型的內(nèi)容和內(nèi)容項,包括狀態(tài)更新、成員以及有可能非成員所發(fā)布 的信息(例如,通告、消息、評論、布告)、文檔、廣告(例如,收益廣告和非收益廣告二者)、 工作列表、媒體內(nèi)容(例如,圖像、視頻、音頻),等等。內(nèi)容服務(wù)器114(或者系統(tǒng)110的一 些其它組件)可以包括用于推薦向成員供應(yīng)的內(nèi)容的推薦模塊。
[0018] 系統(tǒng)110所托管的服務(wù)的成員在系統(tǒng)上具有對應(yīng)頁面(例如,網(wǎng)頁、內(nèi)容頁面),他 們可以使用該頁面來促成其與該系統(tǒng)以及彼此之間的活動。這些頁面(或者經(jīng)由這些頁面 提供給成員的信息)可用于一些或所有其它成員訪問以便瀏覽相對應(yīng)成員所提供或者與 之相關(guān)聯(lián)的消息、通告和/或其它信息。成員的頁面可以存儲在圖1中所描繪的系統(tǒng)110 的組件上,或者存儲在圖中并未示出的組件上。
[0019] 數(shù)據(jù)服務(wù)器116存儲表示成員連接的圖的數(shù)據(jù),其中每個節(jié)點對應(yīng)于一個成員或 用戶(或其它實體),并且兩個節(jié)點之間的每條邊對應(yīng)于這兩個節(jié)點所表示的成員/用戶/ 實體之間的關(guān)系。在不同實施例中,關(guān)系可以是明確的、隱含的,或者是明確和隱含的組合。
[0020] 當(dāng)一個成員直接請求與另一個成員的關(guān)系并且該另一成員同意時形成明確關(guān)系。 隱含關(guān)系則通過更為隨意的類型的聯(lián)系而形成,諸如當(dāng)一個成員向另一個成員發(fā)送消息 (例如,聊天消息、電子郵件消息)時,當(dāng)一個成員為另一個成員確認(rèn)(endorse)時,當(dāng)一個 成員對另一個成員的動作作出響應(yīng)時(例如,通過對其進(jìn)行評論或者通過"點贊"它),當(dāng)兩 個成員表現(xiàn)出相同或相似的行為或興趣時(例如,通過互相"點贊"或"分享"一個或多個 內(nèi)容項),和/或以其它方式形成。群組的成員可以通過明確或隱含的關(guān)系進(jìn)行連接。
[0021] 系統(tǒng)110所提供的服務(wù)的成員的網(wǎng)絡(luò)可以數(shù)量在數(shù)千萬或數(shù)億。因此,成員的連 接的圖可以在任何數(shù)量的數(shù)據(jù)服務(wù)器126之中進(jìn)行分布。在一些實施例中,圖數(shù)據(jù)由節(jié)點 (例如,成員)所分片,其中每個數(shù)據(jù)服務(wù)器負(fù)責(zé)維護(hù)一定數(shù)量的節(jié)點。數(shù)據(jù)服務(wù)器所存儲 的節(jié)點可以包括相對應(yīng)成員的一些或全部屬性。特別地,節(jié)點包括或者伴隨有標(biāo)識相對應(yīng) 成員與之直接連接的所有其它成員的信息。換句話說,節(jié)點的數(shù)據(jù)可以包括連接至該節(jié)點 的所有邊,并且每條邊標(biāo)識處于這條邊的另一端的節(jié)點。下文中對搜索被分片的圖數(shù)據(jù)的 方法進(jìn)一步進(jìn)行描述。
[0022] 系統(tǒng)110可以包括圖1中并未圖示的其它組件。例如,在一些實施例中,系統(tǒng)110 可以包括簡檔服務(wù)器以在簡檔數(shù)據(jù)庫中維護(hù)系統(tǒng)110所托管的(多種)服務(wù)的成員的簡 檔。
[0023] 個體成員的簡檔可以反映該成員的任意數(shù)量的屬性或特性,包括個人的(例如, 性別、年齡或年齡范圍、興趣、愛好、成員ID)、職業(yè)的(例如,就業(yè)狀況、職位名稱、職能范圍 或行業(yè)、雇主、技能、確認(rèn)情況、職業(yè)薪酬)、社交的(例如,用戶作為其成員的組織、居住的 地理區(qū)域、好友)、教育的(例如,(多種)程度、畢業(yè)院校、其它培訓(xùn)),等等。成員簡檔或者 成員簡檔的屬性或維度可以以各種方式被系統(tǒng)組件所使用(例如,以標(biāo)識誰發(fā)送了消息, 以標(biāo)識狀態(tài)更新的接受方,記錄內(nèi)容遞送事件)。
[0024] 組織也可以是服務(wù)的成員(例如,除了個人之外),并且可以具有相關(guān)聯(lián)的描述或 簡檔,其中包括諸如行業(yè)(例如,信息技術(shù)、制造業(yè)、金融)、大小、位置、目標(biāo)等的屬性。"組 織"可以是公司、集團(tuán)、合伙企業(yè)、商行、政府機構(gòu)或?qū)嶓w、非盈利實體、在線社區(qū)(例如,用戶 群組),或者實際