圖數(shù)據(jù)搜索系統(tǒng)、方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及信息技術(shù)領(lǐng)域,并且更具體地,涉及圖數(shù)據(jù)搜索系統(tǒng)、方法和設(shè)備。
【背景技術(shù)】
[0002]很多現(xiàn)實(shí)中的計(jì)算問(wèn)題都會(huì)涉及到大規(guī)模的圖。網(wǎng)頁(yè)鏈接關(guān)系和各種社交關(guān)系是這種大規(guī)模圖的最典型的例子。這些圖可能具有大量的頂點(diǎn)以及邊。如何對(duì)圖進(jìn)行高效率的搜索以獲取所需的內(nèi)容是一項(xiàng)亟待解決的問(wèn)題。
[0003]谷歌(Google)提出的Pregel技術(shù)是一種效率較高的圖搜索機(jī)制。Pregel技術(shù)是通過(guò)主從結(jié)構(gòu)的系統(tǒng)實(shí)現(xiàn)的。在需要對(duì)一個(gè)特定關(guān)系(即查詢計(jì)劃)進(jìn)行搜索時(shí),主節(jié)點(diǎn)(Master)會(huì)將保存的完整的圖數(shù)據(jù)進(jìn)行分區(qū),將完整的圖劃分為多個(gè)子圖,并將子圖發(fā)送給多個(gè)從節(jié)點(diǎn)(Worker)。每個(gè)從節(jié)點(diǎn)可以接收一個(gè)或多個(gè)子圖。節(jié)點(diǎn)負(fù)責(zé)維護(hù)分配給自己的子圖的頂點(diǎn)(vertex)和邊(edge)的狀態(tài)信息。節(jié)點(diǎn)為每個(gè)子圖分配一個(gè)線程。該線程根據(jù)計(jì)算任務(wù)對(duì)每一個(gè)處于激活(active)狀態(tài)的頂點(diǎn)進(jìn)行計(jì)算,計(jì)算完成后,根據(jù)邊的鏈接信息,通過(guò)消息傳遞方式將計(jì)算結(jié)果傳遞給其它相鄰的從節(jié)點(diǎn),直到?jīng)]有激活狀態(tài)頂點(diǎn)或者迭代次數(shù)達(dá)到指定數(shù)目。
[0004]Pregel中,Master和Worker都是計(jì)算站點(diǎn),Master負(fù)責(zé)調(diào)度Worker進(jìn)行計(jì)算。因此,Pregel存在以下問(wèn)題:消息傳播和計(jì)算過(guò)程中的大量步驟都是串行化步驟,即必須在一個(gè)步驟完成之后再執(zhí)行下一個(gè)步驟;消息傳遞數(shù)量以及總體并行化運(yùn)行時(shí)間等方面很難獲得理論上界;消息傳遞開銷會(huì)影響圖數(shù)據(jù)搜索的性能。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供圖數(shù)據(jù)搜索系統(tǒng)、方法和設(shè)備,提高圖數(shù)據(jù)搜索的效率與可擴(kuò)展性。
[0006]第一方面,提供了一種圖數(shù)據(jù)搜索系統(tǒng),該系統(tǒng)包括一個(gè)主計(jì)算站點(diǎn)和M個(gè)子計(jì)算站點(diǎn),該M個(gè)子計(jì)算站點(diǎn)中每個(gè)子計(jì)算站點(diǎn)均存儲(chǔ)總圖數(shù)據(jù)中的部分圖數(shù)據(jù),該部分圖數(shù)據(jù)包括多個(gè)節(jié)點(diǎn)和用于連接該多個(gè)節(jié)點(diǎn)中的兩個(gè)節(jié)點(diǎn)之間的邊,其中M為大于I的正整數(shù);其中,該主計(jì)算站點(diǎn)用于將查詢計(jì)劃發(fā)送給該M個(gè)子計(jì)算站點(diǎn)中的N個(gè)子計(jì)算站點(diǎn),其中該查詢計(jì)劃采用圖仿真的查詢語(yǔ)義,N為小于或等于M的正整數(shù);該N個(gè)子計(jì)算站點(diǎn)中的第一子計(jì)算站點(diǎn)用于接收該主計(jì)算站點(diǎn)發(fā)送的該查詢計(jì)劃;該第一子計(jì)算站點(diǎn)還用于根據(jù)該查詢計(jì)劃,對(duì)該第一子計(jì)算站點(diǎn)存儲(chǔ)的第一部分圖數(shù)據(jù)進(jìn)行迭代查詢,以確定該第一部分圖數(shù)據(jù)包括的多個(gè)節(jié)點(diǎn)中與該查詢計(jì)劃相匹配的至少一個(gè)匹配節(jié)點(diǎn),該至少一個(gè)匹配節(jié)點(diǎn)組成該第一子計(jì)算站點(diǎn)的本地匹配節(jié)點(diǎn)集合;該第一子計(jì)算站點(diǎn)還用于向該主計(jì)算節(jié)點(diǎn)發(fā)送該第一子計(jì)算節(jié)點(diǎn)的本地匹配節(jié)點(diǎn)集合;該主計(jì)算站點(diǎn)還用于接收該N個(gè)子計(jì)算站點(diǎn)中的每個(gè)子計(jì)算節(jié)點(diǎn)發(fā)送的該每個(gè)子計(jì)算節(jié)點(diǎn)的本地匹配節(jié)點(diǎn)集合,并且根據(jù)該N個(gè)子計(jì)算站點(diǎn)中的每個(gè)子計(jì)算節(jié)點(diǎn)的本地匹配節(jié)點(diǎn)集合,確定對(duì)應(yīng)于該查詢計(jì)劃的匹配結(jié)果。
[0007]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,該第一子計(jì)算站點(diǎn)還用于確定該第一部分圖數(shù)據(jù)中包括的與該查詢計(jì)劃相關(guān)的第一節(jié)點(diǎn),其中,該第一節(jié)點(diǎn)與第二部分圖數(shù)據(jù)中包括的第二節(jié)點(diǎn)之間具有跨站點(diǎn)邊,該N個(gè)計(jì)算子節(jié)點(diǎn)中的第二子節(jié)點(diǎn)存儲(chǔ)有該第二部分圖數(shù)據(jù);該第一子計(jì)算站點(diǎn)還用于向該第二子計(jì)算站點(diǎn)發(fā)送第一匹配指示消息,該第一匹配指示消息用于指示該第一節(jié)點(diǎn)與該查詢計(jì)劃的匹配結(jié)果。
[0008]結(jié)合上述可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,該第一子計(jì)算站點(diǎn)還用于接收該N個(gè)子計(jì)算節(jié)點(diǎn)中的第三子計(jì)算站點(diǎn)發(fā)送的第二匹配指示消息,該第二匹配指示消息用于指示第三站點(diǎn)與該查詢計(jì)劃的匹配結(jié)果,其中,該第三子計(jì)算節(jié)點(diǎn)存儲(chǔ)有第三部分圖數(shù)據(jù),該第三部分圖數(shù)據(jù)包括的該第三節(jié)點(diǎn)與該第一部分圖數(shù)據(jù)中包括的第四節(jié)點(diǎn)之間具有跨站點(diǎn)邊;該第一子計(jì)算站點(diǎn)還用于根據(jù)該第二匹配指示消息和該查詢計(jì)劃,確定該第四節(jié)點(diǎn)是否與該查詢計(jì)劃匹配。
[0009]結(jié)合上述可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,該主計(jì)算站點(diǎn)還用于根據(jù)該M個(gè)子計(jì)算站點(diǎn)的屬性,從該M個(gè)子計(jì)算站點(diǎn)中確定該N個(gè)子計(jì)算站點(diǎn)。
[0010]結(jié)合上述可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,該第一子計(jì)算站點(diǎn)根據(jù)該查詢計(jì)劃,對(duì)該第一子計(jì)算站點(diǎn)存儲(chǔ)的第一部分圖數(shù)據(jù)進(jìn)行迭代查詢,包括:根據(jù)該查詢計(jì)劃,對(duì)該第一部分圖數(shù)據(jù)進(jìn)行查詢,以確定該第一部分圖數(shù)據(jù)中包括的多個(gè)節(jié)點(diǎn)中與該查詢計(jì)劃匹配的至少一個(gè)初始匹配節(jié)點(diǎn),該至少一個(gè)初始匹配節(jié)點(diǎn)組成該本地匹配節(jié)點(diǎn)集合;根據(jù)查詢計(jì)劃,再次對(duì)該第一部分圖數(shù)據(jù)進(jìn)行查詢,以確定該多個(gè)節(jié)點(diǎn)中是否存在與該查詢計(jì)劃匹配的新增匹配節(jié)點(diǎn);若確定該多個(gè)節(jié)點(diǎn)中存在與該查詢計(jì)劃匹配的新增匹配節(jié)點(diǎn)時(shí),將該新增匹配節(jié)點(diǎn)添加至該本地匹配節(jié)點(diǎn)集合,并且再次對(duì)該第一部分圖數(shù)據(jù)進(jìn)行查詢,以確定該多個(gè)節(jié)點(diǎn)中是否包括與該查詢計(jì)劃匹配的新增匹配節(jié)點(diǎn),直到確定該多個(gè)節(jié)點(diǎn)中不存在新增匹配節(jié)點(diǎn)為止。
[0011]結(jié)合上述可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,該第一子計(jì)算站點(diǎn)還用于在確定本地匹配節(jié)點(diǎn)集合之后,向該主計(jì)算站點(diǎn)發(fā)送終止消息,該終止消息用于指示該第一子計(jì)算站點(diǎn)完成對(duì)該查詢計(jì)劃的查詢;該主計(jì)算節(jié)點(diǎn)還用于接收該N個(gè)子計(jì)算節(jié)點(diǎn)中的每個(gè)子計(jì)算節(jié)點(diǎn)發(fā)送的終止消息,并在接收到該N個(gè)子計(jì)算節(jié)點(diǎn)中的每個(gè)子計(jì)算節(jié)點(diǎn)發(fā)送的終止消息之后,根據(jù)該N個(gè)子計(jì)算站點(diǎn)中的每個(gè)子計(jì)算節(jié)點(diǎn)的本地匹配節(jié)點(diǎn)集合,確定對(duì)應(yīng)于該查詢計(jì)劃的匹配結(jié)果。
[0012]第二方面,提供了一種圖數(shù)據(jù)搜索方法,應(yīng)用于圖數(shù)據(jù)搜索系統(tǒng),該圖數(shù)據(jù)搜索系統(tǒng)包括一個(gè)主計(jì)算站點(diǎn)和M個(gè)子計(jì)算站點(diǎn),該M個(gè)子計(jì)算站點(diǎn)中每個(gè)子計(jì)算站點(diǎn)均存儲(chǔ)總圖數(shù)據(jù)中的部分圖數(shù)據(jù),該部分圖數(shù)據(jù)包括多個(gè)節(jié)點(diǎn)和用于連接該多個(gè)節(jié)點(diǎn)中的兩個(gè)節(jié)點(diǎn)之間的邊,其中M為大于I的正整數(shù),該方法包括:該主計(jì)算站點(diǎn)確定查詢計(jì)劃,其中該查詢計(jì)劃采用圖仿真的查詢語(yǔ)義;將該查詢計(jì)劃發(fā)送至該M個(gè)子計(jì)算站點(diǎn)中的N個(gè)子計(jì)算站點(diǎn),其中M為大于I的正整數(shù),N為小于或等于M的正整數(shù);接收該N個(gè)子計(jì)算站點(diǎn)中的每個(gè)子計(jì)算站點(diǎn)發(fā)送的該每個(gè)子計(jì)算站點(diǎn)的本地匹配節(jié)點(diǎn)集合;根據(jù)該N個(gè)子計(jì)算站點(diǎn)中的每個(gè)子計(jì)算節(jié)點(diǎn)的本地匹配節(jié)點(diǎn)集合,確定對(duì)應(yīng)于該查詢計(jì)劃的匹配結(jié)果。
[0013]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,在該根據(jù)該N個(gè)子計(jì)算站點(diǎn)中的每個(gè)子計(jì)算節(jié)點(diǎn)的本地匹配節(jié)點(diǎn)集合,確定對(duì)應(yīng)于該查詢計(jì)劃的匹配結(jié)果之前,該方法還包括:接收該N個(gè)子計(jì)算站點(diǎn)中的每個(gè)子計(jì)算站點(diǎn)發(fā)送的終止消息,該終止消息用于指示該終止消息對(duì)應(yīng)的子計(jì)算站點(diǎn)完成對(duì)該查詢計(jì)劃的查詢。
[0014]結(jié)合上述可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,在該將該查詢計(jì)劃發(fā)送給圖數(shù)據(jù)搜索系統(tǒng)中的M個(gè)子計(jì)算站點(diǎn)中的N個(gè)子計(jì)算站點(diǎn)之前,該方法還包括:根據(jù)該M個(gè)子計(jì)算站點(diǎn)的屬性,從該M個(gè)子計(jì)算站點(diǎn)中確定N個(gè)子計(jì)算站點(diǎn)。
[0015]第三方面,提供了另一種圖數(shù)據(jù)搜索方法,應(yīng)用于圖數(shù)據(jù)搜索系統(tǒng),該圖數(shù)據(jù)搜索系統(tǒng)包括一個(gè)主計(jì)算站點(diǎn)和M個(gè)子計(jì)算站點(diǎn),該M個(gè)子計(jì)算站點(diǎn)中每個(gè)子計(jì)算站點(diǎn)均存儲(chǔ)總圖數(shù)據(jù)中的部分圖數(shù)據(jù),該部分圖數(shù)據(jù)包括多個(gè)節(jié)點(diǎn)和用于連接該多個(gè)節(jié)點(diǎn)中的兩個(gè)節(jié)點(diǎn)之間的邊,其中M為大于I的正整數(shù),該方法包括:第一子計(jì)算站點(diǎn)接收主計(jì)算站點(diǎn)發(fā)送的查詢計(jì)劃,其中,該M個(gè)子計(jì)算站點(diǎn)包括該第一子計(jì)算站點(diǎn);根據(jù)該查詢計(jì)劃,對(duì)存儲(chǔ)的第一部分圖數(shù)據(jù)進(jìn)行迭代查詢,以確定該第一部分圖數(shù)據(jù)包括的多個(gè)節(jié)點(diǎn)中與該查詢計(jì)劃相匹配的至少一個(gè)匹配節(jié)點(diǎn),該至少一個(gè)匹配節(jié)點(diǎn)組成該本地匹配節(jié)點(diǎn)集合;將該本地匹配節(jié)點(diǎn)集合發(fā)送至該主計(jì)算站點(diǎn)。
[0016]結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中,該方法還包括:確定該第一部分圖數(shù)據(jù)中包括的與該查詢計(jì)劃相關(guān)的第一節(jié)點(diǎn),其中,該第一節(jié)點(diǎn)與第二部分圖數(shù)據(jù)中包括的第二節(jié)點(diǎn)之間具有跨站點(diǎn)邊,該N個(gè)計(jì)算子節(jié)點(diǎn)中的第二子節(jié)點(diǎn)存儲(chǔ)有該第二部分圖數(shù)據(jù);向該第二子計(jì)算站點(diǎn)發(fā)送第一匹配指示消息,該第一匹配指示消息用于指示該第一節(jié)點(diǎn)與該查詢計(jì)劃的匹配結(jié)果。
[0017]結(jié)合上述可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,該方法還包括:接收該N個(gè)子計(jì)算節(jié)點(diǎn)中的第三子計(jì)算站點(diǎn)發(fā)送的第二匹配指示消息,該第二匹配指示消息用于指示第三站點(diǎn)與該查詢計(jì)劃的匹配結(jié)果,其中,該第三子計(jì)算節(jié)點(diǎn)存儲(chǔ)有第三部分圖數(shù)據(jù),該第三部分圖數(shù)據(jù)包括的該第三節(jié)點(diǎn)與該第一部分圖數(shù)據(jù)中包括的第四節(jié)點(diǎn)之間具有跨站點(diǎn)邊;根據(jù)該第二匹配指示消息和該查詢計(jì)劃,確定該第四節(jié)點(diǎn)是否與該查詢計(jì)劃匹配。
[0018]結(jié)合上述可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,該根據(jù)該查詢計(jì)劃,對(duì)該第一子計(jì)算站點(diǎn)存儲(chǔ)的第一部分圖數(shù)據(jù)進(jìn)行迭代查詢,包括:根據(jù)該查詢計(jì)劃,對(duì)該第一部分圖數(shù)據(jù)進(jìn)行查詢,以確定該第一部分圖數(shù)據(jù)中包括的多個(gè)節(jié)點(diǎn)中與該查詢計(jì)劃匹配的至少一個(gè)初始匹配節(jié)點(diǎn),該至少一個(gè)初始匹配節(jié)點(diǎn)組成該本地匹配節(jié)點(diǎn)集合;根據(jù)查詢計(jì)劃,再次對(duì)該第一部分圖數(shù)據(jù)進(jìn)行查詢,以確定該多個(gè)節(jié)點(diǎn)中是否存在與該查詢計(jì)劃匹配的新增匹配節(jié)點(diǎn);若確定該多個(gè)節(jié)點(diǎn)中存在與該查詢計(jì)劃匹配的新增匹配節(jié)點(diǎn)時(shí),將該新增匹配節(jié)點(diǎn)添加至該本地匹配節(jié)點(diǎn)集合,并且再次對(duì)該第一部分圖數(shù)據(jù)進(jìn)行查詢,以確定該多個(gè)節(jié)點(diǎn)中是否包括與該查詢計(jì)劃匹配的新增匹配節(jié)點(diǎn),直到確定該多個(gè)節(jié)點(diǎn)中不存在新增匹配節(jié)點(diǎn)為止。
[0019]結(jié)合上述可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,在該對(duì)存儲(chǔ)的第一部分圖數(shù)據(jù)進(jìn)行迭代查詢之后,該方法還包括:向該主計(jì)算站點(diǎn)發(fā)送終止消息,該終止消息用于指示該第一子計(jì)算站點(diǎn)完成對(duì)該查詢計(jì)劃的查詢。
[0020]第四方面,提供了一種圖數(shù)據(jù)搜索設(shè)備,應(yīng)用于圖數(shù)據(jù)搜索系統(tǒng),該圖數(shù)據(jù)搜索系統(tǒng)包括一個(gè)主計(jì)算站點(diǎn)和M個(gè)子計(jì)算站點(diǎn),該M個(gè)子計(jì)算站點(diǎn)中每個(gè)子計(jì)算站點(diǎn)均存儲(chǔ)總圖數(shù)據(jù)中的部分圖數(shù)據(jù),該部分圖數(shù)據(jù)包括多個(gè)節(jié)點(diǎn)和用于連接該多個(gè)節(jié)點(diǎn)中的兩個(gè)節(jié)點(diǎn)之間的邊,其中M為大于I的正整數(shù),該設(shè)備包括:確定單元,用于確定查詢計(jì)劃,其中該查詢計(jì)劃采用圖仿真的查詢語(yǔ)義;發(fā)送單元,用于將該確定單元確定的該查詢計(jì)劃發(fā)送至該M個(gè)子計(jì)算站點(diǎn)中的N個(gè)子計(jì)算站點(diǎn),其中M為大于I的正整數(shù),N為小于或等于M的正整數(shù);接收單元,用于接收該N個(gè)子計(jì)算站點(diǎn)中的每個(gè)子計(jì)算站點(diǎn)發(fā)送的該每個(gè)子計(jì)算站點(diǎn)的本地匹配節(jié)點(diǎn)集合;該確定單元還用于根據(jù)該接收單元接收的該N個(gè)子計(jì)算站點(diǎn)中的每個(gè)子計(jì)算節(jié)點(diǎn)的本地匹配節(jié)點(diǎn)集合,確定對(duì)應(yīng)于該查詢計(jì)劃的匹配結(jié)果。
當(dāng)前第1頁(yè)
1 
2 
3 
4 
5