基于分布式系統(tǒng)的圖數(shù)據(jù)的模式檢測方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及計算機技術(shù),尤其涉及一種基于分布式系統(tǒng)的圖數(shù)據(jù)的模式檢測方法和裝置。
【背景技術(shù)】
[0002]隨著科學(xué)技術(shù)的發(fā)展,圖的應(yīng)用也越來越廣泛,尤其是在社交網(wǎng)絡(luò)、生物信息、交通導(dǎo)航等領(lǐng)域產(chǎn)生了規(guī)模龐大的動態(tài)圖數(shù)據(jù),因此,如何在動態(tài)圖數(shù)據(jù)中進行模式檢測是一個非常重要的問題。
[0003]現(xiàn)有技術(shù)中,通常采用持續(xù)查詢的方式進行動態(tài)圖數(shù)據(jù)的模式檢測,由于圖數(shù)據(jù)規(guī)模龐大,持續(xù)查詢方式一般利用圖數(shù)據(jù)分布式處理框架來支持,其中,典型的分布式框架包括微軟的Trinity系統(tǒng)、Google的Pregel系統(tǒng),例如:開源實現(xiàn)Giraph等。具體地,在持續(xù)查詢的方式中,用戶將需要檢測的查詢模式提交到持續(xù)查詢系統(tǒng)中,持續(xù)查詢系統(tǒng)會持續(xù)監(jiān)控底層圖數(shù)據(jù)的變化,一旦發(fā)現(xiàn)查詢模式在底層圖數(shù)據(jù)中出現(xiàn),將自動提醒用戶查詢模式存在。而且,為了處理大規(guī)模圖數(shù)據(jù)中的不同類型的操作,持續(xù)查詢一般以超步為單位來運行,通過多超步實現(xiàn)動態(tài)圖數(shù)據(jù)的模式檢測。
[0004]然而,現(xiàn)有技術(shù)中通過多超步實現(xiàn)動態(tài)圖數(shù)據(jù)的模式檢測時,由于底層圖數(shù)據(jù)在調(diào)整過程中,每個圖節(jié)點所處理的數(shù)據(jù)可能對應(yīng)不同版本的數(shù)據(jù),使得查詢結(jié)果是不同版本數(shù)據(jù)混雜的結(jié)果,造成了查詢過程中的漏報和誤報的現(xiàn)象,使得模式檢測的準(zhǔn)確性較低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供一種基于分布式系統(tǒng)的圖數(shù)據(jù)的模式檢測方法和裝置,以提高圖數(shù)據(jù)中模式檢測的準(zhǔn)確性。
[0006]第一方面,本發(fā)明實施例提供一種基于分布式系統(tǒng)的圖數(shù)據(jù)的模式檢測方法,包括:
[0007]根據(jù)查詢模式產(chǎn)生查詢執(zhí)行計劃,并通過所述查詢執(zhí)行計劃確定處理圖節(jié)點的延遲次數(shù);其中,所述延遲次數(shù)為所述查詢執(zhí)行計劃中所述處理圖節(jié)點的后代圖節(jié)點到所述處理圖節(jié)點的最長路徑的邊數(shù);
[0008]獲取第一待查圖節(jié)點發(fā)送的輸入消息,根據(jù)所述延遲次數(shù)對所述輸入消息進行處理,生成輸出消息;
[0009]根據(jù)所述處理圖節(jié)點和第二待查圖節(jié)點之間的邊,將所述輸出消息發(fā)送給所述第二待查圖節(jié)點;所述第二待查圖節(jié)點為與所述處理圖節(jié)點關(guān)聯(lián)的后代圖節(jié)點。
[0010]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述輸入消息攜帶有創(chuàng)建所述輸入消息的創(chuàng)建時間戳和消息類型標(biāo)識;
[0011]所述根據(jù)所述延遲次數(shù)對所述輸入消息進行處理,生成輸出消息,具體包括:
[0012]根據(jù)當(dāng)前時間戳、所述創(chuàng)建時間戳、所述延遲次數(shù)和所述消息類型標(biāo)識,判斷所述輸入消息是否合法;
[0013]若確定所述輸入消息不合法,則緩存所述輸入消息,并將所述輸入消息的同類消息的數(shù)量加I;所述同類消息為具有相同的所述第一待查圖節(jié)點和相同的所述創(chuàng)建時間戳的消息;
[0014]若確定所述輸入消息合法,則根據(jù)所述同類消息生成所述輸出消息。
[0015]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述根據(jù)所述同類消息生成所述輸出消息,具體包括:
[0016]根據(jù)所述消息類型標(biāo)識判斷所述輸入消息所屬的類型;
[0017]若所述輸入消息所屬的類型為刪除消息,則將所述同類消息的個數(shù)減去所述合法的輸入消息的個數(shù),獲得更新后的輸入消息,并根據(jù)所述更新后的輸入消息,生成輸出消息;或者,
[0018]若所述輸入消息所屬的類型為增加消息,則緩存所述輸入消息,獲得更新后的輸入消息,并根據(jù)所述更新后的輸入消息,生成輸出消息。
[0019]結(jié)合第一方面的第一種或第二種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,所述消息類型標(biāo)識為刪除消息;
[0020]所述根據(jù)當(dāng)前時間戳、所述創(chuàng)建時間戳、所述延遲次數(shù)和所述消息類型標(biāo)識,判斷所述輸入消息是否合法,具體包括:
[0021]將所述當(dāng)前時間戳減去所述延遲次數(shù),獲得計算結(jié)果;
[0022]若所述創(chuàng)建時間戳等于所述計算結(jié)果,則所述輸入消息合法。
[0023]結(jié)合第一方面的第一種或第二種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述消息類型標(biāo)識為增加消息;
[0024]所述根據(jù)當(dāng)前時間戳、所述創(chuàng)建時間戳、所述延遲次數(shù)和所述消息類型標(biāo)識,判斷所述輸入消息是否合法,具體包括:
[0025]將所述當(dāng)前時間戳減去所述延遲次數(shù),獲得計算結(jié)果;
[0026]若所述創(chuàng)建時間戳小于所述計算結(jié)果,則所述輸入消息合法。
[0027]結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,所述根據(jù)所述更新后的輸入消息,生成輸出消息,具體包括:
[0028]根據(jù)所述更新后的輸入消息,判斷所述處理圖節(jié)點是否滿足傳遞規(guī)則;所述傳遞規(guī)則為所述處理圖節(jié)點接收所有與所述處理圖節(jié)點有關(guān)聯(lián)關(guān)系的待查圖節(jié)點發(fā)送的輸入消息;
[0029]若是,則生成增加消息;
[0030]若否,則生成刪除消息。
[0031]結(jié)合第一方面、第一方面的第一種至第一方面的第五種任一種可能的實現(xiàn)方式,在第一方面的第六種可能的實現(xiàn)方式中,所述根據(jù)所述處理圖節(jié)點和第二待查圖節(jié)點之間的邊,將所述輸出消息發(fā)送給所述第二待查圖節(jié)點,具體包括:
[0032]若確定所述處理圖節(jié)點和所述第二待查圖節(jié)點之間的邊合法,則判斷之前是否向所述第二待查圖節(jié)點發(fā)送過所述輸出消息;
[0033]若之前未向所述第二待查圖節(jié)點發(fā)送過所述輸出消息,則將所述輸出消息發(fā)送給所述第二待查圖節(jié)點。
[0034]第二方面,本發(fā)明實施例提供一種基于分布式系統(tǒng)的圖數(shù)據(jù)的模式檢測裝置,包括:
[0035]確定模塊,用于根據(jù)查詢模式產(chǎn)生查詢執(zhí)行計劃,并通過所述查詢執(zhí)行計劃確定處理圖節(jié)點的延遲次數(shù);其中,所述延遲次數(shù)為所述查詢執(zhí)行計劃中所述處理圖節(jié)點的后代圖節(jié)點到所述處理圖節(jié)點的最長路徑的邊數(shù);
[0036]獲取模塊,用于獲取第一待查圖節(jié)點發(fā)送的輸入消息;
[0037]處理模塊,用于根據(jù)所述延遲次數(shù)對所述輸入消息進行處理,生成輸出消息;
[0038]發(fā)送模塊,用于根據(jù)所述處理圖節(jié)點和第二待查圖節(jié)點之間的邊,將所述輸出消息發(fā)送給所述第二待查圖節(jié)點;所述第二待查圖節(jié)點為與所述處理圖節(jié)點關(guān)聯(lián)的后代圖節(jié)點。
[0039]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述獲取模塊獲取的輸入消息攜帶有創(chuàng)建所述輸入消息的創(chuàng)建時間戳和消息類型標(biāo)識;
[0040]所述處理模塊包括:
[0041]判斷單元,用于根據(jù)當(dāng)前時間戳、所述創(chuàng)建時間戳、所述延遲次數(shù)和所述消息類型標(biāo)識,判斷所述輸入消息是否合法;
[0042]存儲單元,用于若所述判斷單元判斷出所述輸入消息不合法,則緩存所述輸入消息,并將所述輸入消息的同類消息的數(shù)量加I ;所述同類消息為具有相同的所述第一待查圖節(jié)點和相同的所述創(chuàng)建時間戳的消息;
[0043]處理單元,用于若所述判斷單元判斷出所述輸入消息合法,則根據(jù)所述同類消息生成所述輸出消息。
[0044]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,所述處理單元具體用于:
[0045]根據(jù)所述消息類型標(biāo)識判斷所述輸入消息所屬的類型;
[0046]若所述輸入消息所屬的類型為刪除消息,則將所述同類消息的個數(shù)減去所述合法的輸入消息的個數(shù),獲得更新后的輸入消息,并根據(jù)所述更新后的輸入消息,生成輸出消息;或者,
[0047]若所述輸入消息所屬的類型為增加消息,則緩存所述輸入消息,獲得更新后的輸入消息,并根據(jù)所述更新后的輸入消息,生成輸出消息。
[0048]結(jié)合第二方面的第一種或第二種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,所述獲取單元獲取的所述輸入消息的所述消息類型標(biāo)識為刪除消息;
[0049]所述判斷單元,具體用于:
[0050]將所述當(dāng)前時間戳減去所述延遲次數(shù),獲得計算結(jié)果;
[0051]若所述創(chuàng)建時間戳等于所述計算結(jié)果,則所述輸入消息合法。
[0052]結(jié)合第二方面的第一種或第二種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述獲取單元獲取的所述輸入消息的所述消息類型標(biāo)識為增加消息;
[0053]所述判斷單元,具體用于:
[0054]將所述當(dāng)前時間戳減去所述延遲次數(shù),獲得計算結(jié)果;
[0055]若所述創(chuàng)建時間戳小于所述計算結(jié)果,則所述輸入消息合法。
[0056]結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,所述處理單元具體用于:
[0057]根據(jù)所述更新后的輸入消息,判斷所述處理圖節(jié)點是否滿足傳遞規(guī)則;所述傳遞規(guī)則為所述處理圖節(jié)點接收所有與所述處理圖節(jié)點有關(guān)聯(lián)關(guān)系的待查圖節(jié)點發(fā)送的輸入消息;
[0058]若是,則生成增加消息;
[0059]若否,則生成刪除消息。
[0060]結(jié)合第二方面、第二方面的第一種至第二方面的第五種任一種可能的實現(xiàn)方式,在第二方面的第六種可能的實現(xiàn)方式中,所述裝置還包括判斷模塊;其中,
[0061]所述判斷模塊,用于在確定出所述處理圖節(jié)點和所述第二待查圖節(jié)點之間的邊合法后,判斷之前是否向所述第二待查圖節(jié)點發(fā)送過所述輸出消息;
[0062]所述發(fā)送模塊,用于若所述判斷模塊判斷出之前未向所述第二待查圖節(jié)點發(fā)送過所述輸出消息,則將所述輸出消息發(fā)送給所述第二待查圖節(jié)點。
[0063]本發(fā)明實施例提供的基于分布式系統(tǒng)的圖數(shù)據(jù)的模式檢測方法和裝置,