亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)據(jù)合并方法及裝置與流程

文檔序號:12271355閱讀:208來源:國知局
一種數(shù)據(jù)合并方法及裝置與流程

本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)合并方法及裝置。



背景技術(shù):

隨著時代的進(jìn)步和經(jīng)濟(jì)的發(fā)展,人們?nèi)粘I钪袑π畔⒌男枨罅恳苍絹碓酱?,尤其是隨著互聯(lián)網(wǎng)的日益普及,每天海量的信息都在互聯(lián)網(wǎng)上發(fā)布和傳播,大規(guī)模數(shù)據(jù)處理越來越趨向于實時,各種應(yīng)用場景對數(shù)據(jù)的實時性要求越來越高,而出現(xiàn)了流式數(shù)據(jù),因此,對流式數(shù)據(jù)處理的技術(shù)要求也越來越高。

對于流式數(shù)據(jù)的處理,如果按照傳統(tǒng)關(guān)系數(shù)據(jù)庫的處理,應(yīng)用程序每次只能處理數(shù)據(jù)流的當(dāng)前一條數(shù)據(jù),并對這條數(shù)據(jù)進(jìn)行實時計算和處理。而對多個有關(guān)聯(lián)的數(shù)據(jù)流的處理,往往需要按一定規(guī)則將不同數(shù)據(jù)流的數(shù)據(jù)關(guān)聯(lián)在一起,再進(jìn)行處理,類似于傳統(tǒng)數(shù)據(jù)庫中多表格的連接操作,即把已存在表格中的數(shù)據(jù)按照一定規(guī)則合并。而這種使用傳統(tǒng)關(guān)系數(shù)據(jù)庫的處理過程對于流式數(shù)據(jù)來說,只能將每個流的數(shù)據(jù)都保存在對應(yīng)的表格中,然后使用結(jié)構(gòu)化查詢語言(SQL,Structured Query Language)語句進(jìn)行定期的關(guān)聯(lián)查詢。

但是,由于傳統(tǒng)關(guān)系數(shù)據(jù)庫多表關(guān)聯(lián)查詢性能有限,因此只能以較長的周期T(至少是幾秒甚至幾分鐘或者更長)進(jìn)行關(guān)聯(lián)查詢,并觸發(fā)合并動作,因此,對于流式數(shù)據(jù)合并操作來說,平均延誤的時間為T/2,喪失了流式數(shù)據(jù)處理的實時性。因此,如何提高流式數(shù)據(jù)合并的實時效率是目前有待解決的技術(shù)問題。



技術(shù)實現(xiàn)要素:

本發(fā)明實施例中提供了一種數(shù)據(jù)合并方法及裝置,以解決現(xiàn)有流式數(shù)據(jù)中多條數(shù)據(jù)合并實時效率不高問題。

為了解決上述技術(shù)問題,本發(fā)明實施例公開了如下技術(shù)方案:

第一方面提供了一種數(shù)據(jù)合并方法,所述方法包括:

接收第一數(shù)據(jù);

確定所述第一數(shù)據(jù)的第一鍵值;

根據(jù)所述第一鍵值將所述第一數(shù)據(jù)存儲到數(shù)據(jù)庫中;

根據(jù)所述第一數(shù)據(jù)按照第一預(yù)設(shè)合并條件構(gòu)建查詢第二數(shù)據(jù)的第二鍵值;

如果根據(jù)所述第二鍵值從所述數(shù)據(jù)庫中查詢到對應(yīng)的所述第二數(shù)據(jù),則合并所述第一數(shù)據(jù)和所述第二數(shù)據(jù)。

可選的,所述第一預(yù)設(shè)合并條件為所述第一數(shù)據(jù)和第二數(shù)據(jù)的屬性值相同。

可選的,還包括:

在查詢到對應(yīng)的所述第二數(shù)據(jù)時,根據(jù)所述第二數(shù)據(jù)逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值;其中,所述N為大于等于3的自然數(shù);

如果根據(jù)所述第N鍵值從所述數(shù)據(jù)庫中逐步查詢到對應(yīng)的所述第N數(shù)據(jù),則合并所述第一數(shù)據(jù)、所述第二數(shù)據(jù)至所述第N數(shù)據(jù)。

可選的,所述根據(jù)所述第二數(shù)據(jù)逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值包括:

根據(jù)所述第二數(shù)據(jù)按照第二預(yù)設(shè)合并條件逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值。

可選的,所述第二預(yù)設(shè)合并條件為所述第一數(shù)據(jù)、第二數(shù)據(jù)至第N數(shù)據(jù)的屬性值相同。

第二方面提供一種數(shù)據(jù)合并裝置,包括:

接收單元,用于接收第一數(shù)據(jù);

確定單元,用于確定所述第一數(shù)據(jù)的第一鍵值;

發(fā)送單元,用于根據(jù)所述第一鍵值將所述第一數(shù)據(jù)發(fā)送到數(shù)據(jù)庫進(jìn)行存儲;

第一構(gòu)建單元,用于在所述發(fā)送單元發(fā)送所述第一數(shù)據(jù)后,根據(jù)所述第一數(shù)據(jù)按照第一預(yù)設(shè)合并條件構(gòu)建查詢第二數(shù)據(jù)的第二鍵值;

第一查詢單元,用于根據(jù)所述第二鍵值查詢所述數(shù)據(jù)庫中是否存儲有對應(yīng)的所述第二數(shù)據(jù);

第一合并單元,用于在所述第一查詢單元查詢到所述第二數(shù)據(jù)時,合并所述第一數(shù)據(jù)和所述第二數(shù)據(jù)。

可選的,所述第一構(gòu)建單元構(gòu)建所述第一鍵值的第一預(yù)設(shè)合并條件為所述第一數(shù)據(jù)和第二數(shù)據(jù)的屬性值相同。

可選的,還包括:

第二構(gòu)建單元,用于在所述查詢單元查詢到對應(yīng)的所述第二數(shù)據(jù)時,根據(jù)所述第二數(shù)據(jù)逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值;其中,所述N≥3的自然數(shù);

第二查詢單元,用于根據(jù)所述第N鍵值逐步查詢所述數(shù)據(jù)庫中是否存儲有對應(yīng)的所述第N數(shù)據(jù);

第二合并單元,用于在所述第二查詢單元查詢到所述第N數(shù)據(jù)時,合并所述第一數(shù)據(jù)、所述第二數(shù)據(jù)至所述第N數(shù)據(jù)。

可選的,所述第二構(gòu)建單元,具體用于根據(jù)所述第二數(shù)據(jù)按照第二預(yù)設(shè)合并條件逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值。

可選的,所述第二構(gòu)建單元構(gòu)建所述第二鍵值的第二預(yù)設(shè)合并條件為第一數(shù)據(jù),第二數(shù)據(jù)至第N數(shù)據(jù)的屬性值相同。

由上述技術(shù)方案可知,本發(fā)明實施例中,對接收到的第一數(shù)據(jù)采用鍵值存儲,并根據(jù)該第一數(shù)據(jù)構(gòu)造查詢第二數(shù)據(jù)的鍵值,然后,根據(jù)第二數(shù)據(jù)的鍵值查詢數(shù)據(jù)庫是否存儲有對應(yīng)的第二數(shù)據(jù),如果有,則合并(即關(guān)聯(lián))第一數(shù)據(jù)和第二數(shù)據(jù),簡化了多條數(shù)據(jù)合并時的關(guān)聯(lián)查詢,提高了流式數(shù)據(jù)中多條數(shù)據(jù)的實時合并效率。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實施例提供的一種數(shù)據(jù)合并方法的流程圖;

圖2為本發(fā)明實施例提供的一種數(shù)據(jù)合并方法的另一流程圖;

圖3為本發(fā)明實施例提供的一種數(shù)據(jù)合并裝置的構(gòu)示意圖;

圖4為本發(fā)明實施例提供的一種數(shù)據(jù)合并裝置的另一結(jié)構(gòu)示意圖;

圖5為本發(fā)明實施例提供的一種數(shù)據(jù)合并方法的第一應(yīng)用實例的流程圖;

圖6為本發(fā)明實施例提供的一種數(shù)據(jù)合并方法的第二應(yīng)用實例的流程圖;

圖7為本發(fā)明實施例提供的一種電子設(shè)備的結(jié)構(gòu)示意圖。

具體實施方式

下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。

在本發(fā)明實施例中使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本發(fā)明。在本發(fā)明實施例和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。

應(yīng)當(dāng)理解,盡管在本發(fā)明實施例中可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本發(fā)明實施例范圍的情況下,第一信息也可以被稱為第二信息,不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當(dāng)……時”或“響應(yīng)于確定”。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。

請參閱圖1,圖1為本發(fā)明實施例提供的一種數(shù)據(jù)合并方法的流程圖,所述方法包括:

步驟101:接收第一數(shù)據(jù);

該實施例中,系統(tǒng)接收到的第一數(shù)據(jù)可以是單獨的一條數(shù)據(jù),也可以是一個數(shù)據(jù)包,該數(shù)據(jù)包中可以包括一條數(shù)據(jù),也可以包括多條數(shù)據(jù),當(dāng)然,第一數(shù)據(jù)也可以是數(shù)據(jù)流。如果接收到的是多條數(shù)據(jù)或者是數(shù)據(jù)流,需要將多條數(shù)據(jù)或數(shù)據(jù)流拆分成每條數(shù)據(jù),然后,確定每條數(shù)據(jù)對應(yīng)的鍵值,根據(jù)每條數(shù)據(jù)對應(yīng)的鍵值將該條數(shù)據(jù)存儲到數(shù)據(jù)庫中;然后,根據(jù)每條數(shù)據(jù)按照對應(yīng)的預(yù)設(shè)合并條件構(gòu)建查詢與每條數(shù)據(jù)對應(yīng)數(shù)據(jù)(即相關(guān)數(shù)據(jù))的鍵值;然后,根據(jù)每條數(shù)據(jù)對應(yīng)數(shù)據(jù)的鍵值,判斷是否能從所述數(shù)據(jù)庫中查詢到對應(yīng)的該鍵值的數(shù)據(jù),如果能查詢到,則合并每條數(shù)據(jù)及其對應(yīng)的數(shù)據(jù)(即相關(guān)的數(shù)據(jù))。如果查詢不到,結(jié)束本次操作,或結(jié)束流程。

比如,一條數(shù)據(jù),可以是用戶登錄網(wǎng)站的交易數(shù)據(jù),也可以是用戶的支付數(shù)據(jù)等。

需要說明的是,本發(fā)明實施例中,將連續(xù)進(jìn)入系統(tǒng)的多條數(shù)據(jù)可以稱為流式數(shù)據(jù),流式數(shù)據(jù)中的每條數(shù)據(jù)流可以由多條數(shù)據(jù)組成。通常情況下,數(shù)據(jù)流中的每條數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)都是一樣的,但是每條數(shù)據(jù)對應(yīng)的鍵值不同。

步驟102:確定所述第一數(shù)據(jù)對應(yīng)的第一鍵值;

該步驟中,第一數(shù)據(jù)可以包括一條數(shù)據(jù),也可以包括多條數(shù)據(jù),每條數(shù)據(jù)都對應(yīng)一個鍵值,鍵值可以根據(jù)該數(shù)據(jù)的一個屬性或多個屬性值來構(gòu)造,其具體的構(gòu)造方式,對于本領(lǐng)域技術(shù)人員來說,已是熟知技術(shù),在此不再贅述。

比如,當(dāng)數(shù)據(jù)流A的一條數(shù)據(jù)進(jìn)入系統(tǒng)時,系統(tǒng)根據(jù)接收到的當(dāng)前數(shù)據(jù)的屬性值得到鍵值(Key)A0(也可以稱為是數(shù)據(jù)流A的鍵值)。其中,鍵值是windows中注冊表中的概念,位于注冊表結(jié)構(gòu)鏈末端,和文件系統(tǒng)的文件類似,包含當(dāng)前計算機(jī)及應(yīng)用程序執(zhí)行時使用的實際配置信息和數(shù)據(jù)。其中,注冊表里面的所有信息是以各種形式的鍵值項數(shù)據(jù)保存下來。在注冊表編輯器的右窗口中,保存的都是各種鍵值項數(shù)據(jù)。鍵值項由鍵值名、數(shù)據(jù)類型和鍵值三部分組成,其格式為:“鍵值名:數(shù)據(jù)類型:鍵值”。通常情況下,鍵值與數(shù)據(jù)類型或格式有關(guān),鍵值可以包括幾種數(shù)據(jù)類型,以適應(yīng)不同環(huán)境的使用需求。

其中,鍵值又可以稱為存儲鍵值,其作用是用來存儲數(shù)據(jù)的,每條數(shù)據(jù)都對應(yīng)一個鍵值。確定當(dāng)前數(shù)據(jù)對應(yīng)的鍵值有多種方式,并且,確定當(dāng)前數(shù)據(jù)鍵值的過程與該數(shù)據(jù)的格式有關(guān),比如,如果數(shù)據(jù)是java對象,可以從配置信息中的屬性名通過反射來從java對象中獲取對應(yīng)屬性的鍵值內(nèi)容;如果數(shù)據(jù)是字符串,可以根據(jù)不同的分隔符對字符串進(jìn)行分割來獲取對應(yīng)位置的鍵值內(nèi)容;如果是其他特定的數(shù)據(jù)格式,需要根據(jù)相應(yīng)的數(shù)據(jù)格式來獲取鍵值內(nèi)容。本實施例不再一一贅述。

步驟103:根據(jù)所述第一鍵值將所述第一數(shù)據(jù)存儲到數(shù)據(jù)庫中;

該步驟中,也就是說,以第一鍵值為索引,將第一數(shù)據(jù)存儲到數(shù)據(jù)庫中,以便于后續(xù)根據(jù)該第一鍵值可以查詢到該第一數(shù)據(jù)。當(dāng)然,還可以根據(jù)該第一鍵值構(gòu)造能與該第一數(shù)據(jù)關(guān)聯(lián)的第二數(shù)據(jù)的第二鍵值。如下所述。

步驟104:根據(jù)所述第一數(shù)據(jù)按照第一預(yù)設(shè)合并條件構(gòu)建查詢第二數(shù)據(jù)的第二鍵值;其中,所述第一數(shù)據(jù)和所述第二數(shù)據(jù)相關(guān);

該步驟中,根據(jù)第一數(shù)據(jù)按照第一預(yù)設(shè)合并條件計算出查詢能合并的第二數(shù)據(jù)的第 二鍵值。第一預(yù)設(shè)合并條件是兩條數(shù)據(jù)(即第一數(shù)據(jù)和第二數(shù)據(jù),下同)的屬性值相同,根據(jù)該屬性值來構(gòu)造該數(shù)據(jù)對應(yīng)的鍵值,即A.B0’=B.B0,其中,A是第一數(shù)據(jù),B是第二數(shù)據(jù),B0’是根據(jù)第一數(shù)據(jù)構(gòu)建出查詢第二數(shù)據(jù)B的鍵值,B0是第二數(shù)據(jù)B的鍵值,B0’和B0的值相同,只是二者是根據(jù)不同的數(shù)據(jù)的屬性值構(gòu)造的。

其中,本實施例中,預(yù)設(shè)合并條件是用戶根據(jù)實際需要預(yù)先設(shè)置的,其目的是合并(即關(guān)聯(lián))數(shù)據(jù)庫相關(guān)的數(shù)據(jù),當(dāng)然,預(yù)設(shè)合并條件還可以包括其他參數(shù),本實施例不作限制。

需要說明的是,本實施例中,對于任意的數(shù)據(jù)流A,假設(shè)該數(shù)據(jù)流A中的一條數(shù)據(jù)需要與數(shù)據(jù)流B中的數(shù)據(jù)進(jìn)行合并,對于數(shù)據(jù)流A中的任一條數(shù)據(jù),根據(jù)該條數(shù)據(jù)可以得到查詢數(shù)據(jù)流B中的一個Key B0,并且對于數(shù)據(jù)流B中的任意一條數(shù)據(jù),也可以得到數(shù)據(jù)流A中的一個Key A0。

步驟105:如果根據(jù)所述第二鍵值從所述數(shù)據(jù)庫中查詢到對應(yīng)的所述第二數(shù)據(jù),則合并所述第一數(shù)據(jù)和所述第二數(shù)據(jù)。

該步驟中,系統(tǒng)在構(gòu)建查詢第二數(shù)據(jù)的第二鍵值后,查詢數(shù)據(jù)庫中是否存儲有與所述第二鍵值對應(yīng)的第二數(shù)據(jù),如果有,則合并第一數(shù)據(jù)和第二數(shù)據(jù);如果沒有,即結(jié)束該流程。需要說明的是,本實施例中,對內(nèi)存中的數(shù)據(jù)合并,也可以理解為,在數(shù)據(jù)庫中將第一數(shù)據(jù)和第二數(shù)據(jù)進(jìn)行關(guān)聯(lián)。

本發(fā)明實施例中,對接收到的第一數(shù)據(jù)采用鍵值存儲,并根據(jù)該第一數(shù)據(jù)構(gòu)造查詢第二數(shù)據(jù)(即將與第一數(shù)據(jù)相關(guān)的數(shù)據(jù)稱為第二數(shù)據(jù))的鍵值,然后,根據(jù)第二數(shù)據(jù)的鍵值查詢數(shù)據(jù)庫是否存儲有對應(yīng)的第二數(shù)據(jù),如果有,則合并(即關(guān)聯(lián))第一數(shù)據(jù)和第二數(shù)據(jù),簡化了數(shù)據(jù)合并時的關(guān)聯(lián)查詢,提高了多條數(shù)據(jù)的實時合并效率。

還請參閱圖2,圖2為本發(fā)明實施例提供的一種數(shù)據(jù)合并方法的另一流程圖,所述方法包括:

步驟201至步驟204,詳見步驟101至步驟104,在此不再贅述:

步驟205:如果根據(jù)所述第二鍵值從所述數(shù)據(jù)庫中查詢到對應(yīng)的所述第二數(shù)據(jù),則根據(jù)所述第二數(shù)據(jù)逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值;其中,所述N為大于等于3的自然數(shù);

需要說明的是,本實施例中的第N數(shù)據(jù),可以是一條數(shù)據(jù),也可以多條數(shù)據(jù),本實施例統(tǒng)稱為第N數(shù)據(jù)。

其中,根據(jù)所述第二數(shù)據(jù)逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值,可以是根據(jù)所述第二數(shù)據(jù)按照第二預(yù)設(shè)合并條件逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值。

其中,第二預(yù)設(shè)合并條件為N條數(shù)據(jù)合并。N為大于等于3的自然數(shù),也就是,第二預(yù)設(shè)合并條件為3條數(shù)據(jù)(即第一數(shù)據(jù)、第二數(shù)據(jù)至第N數(shù)據(jù),下同)的屬性值相同,當(dāng)然,還可以是更多條的數(shù)據(jù)的屬性值相同。

步驟206:如果根據(jù)所述第N鍵值從所述數(shù)據(jù)庫中逐步查詢到對應(yīng)的所述第N數(shù)據(jù),則合并所述第一數(shù)據(jù)、所述第二數(shù)據(jù)至所述第N數(shù)據(jù)。

其中,該步驟中,在查詢到第二數(shù)據(jù)時,按照第二預(yù)設(shè)合并條件,根據(jù)所述第二數(shù)據(jù)構(gòu)建查詢第三數(shù)據(jù)的第三鍵值,如果根據(jù)第三鍵值從數(shù)據(jù)庫中能查詢到第三數(shù)據(jù),然后,再根據(jù)第三數(shù)據(jù)構(gòu)建查詢第四數(shù)據(jù)的第四鍵值,然后,根據(jù)第四鍵值從數(shù)據(jù)庫中查詢到第四數(shù)據(jù),依次類推,直至查詢到第N數(shù)據(jù),然后合并第一數(shù)據(jù)、第二數(shù)據(jù)、第三條數(shù)據(jù)……直到第N數(shù)據(jù)。

當(dāng)然,在該實施例中,第N數(shù)據(jù)也可以是一條數(shù)據(jù),比如,N為第三條數(shù)據(jù),或者第四條數(shù)據(jù)等等。

該步驟中,在查詢到第N數(shù)據(jù)時,直接合并查詢到的第一數(shù)據(jù)到第N數(shù)據(jù)。

需要說明的是,在該實施例中,如果預(yù)設(shè)合并條件是兩條數(shù)據(jù)合并(即兩條數(shù)據(jù)的鍵值相同),則在數(shù)據(jù)庫中查詢到對應(yīng)的第一條數(shù)據(jù)和第二條數(shù)據(jù)時,就合并該第一條數(shù)據(jù)和第二條數(shù)據(jù),即在數(shù)據(jù)庫中關(guān)聯(lián)第一條數(shù)據(jù)和第二條數(shù)據(jù);如果預(yù)設(shè)合并條件是N條(其中N可是第三條或第四條以上)數(shù)據(jù)合并(即N數(shù)據(jù)的鍵值相同),則在數(shù)據(jù)庫中查詢到對應(yīng)的所有N條數(shù)據(jù)時,才能合并該N條數(shù)據(jù)。

本發(fā)明實施例中,對接收到的第一數(shù)據(jù)采用鍵值存儲,并根據(jù)該第一數(shù)據(jù)構(gòu)造查詢第二數(shù)據(jù)的鍵值,然后,如果根據(jù)第二數(shù)據(jù)的鍵值查詢到數(shù)據(jù)庫中存儲有對應(yīng)的第二數(shù)據(jù),則根據(jù)第二數(shù)據(jù)構(gòu)造查詢第三數(shù)據(jù)的鍵值,如果根據(jù)第三鍵值查詢數(shù)庫得到對應(yīng)的第三數(shù)據(jù),依次類推,直到查找到第N數(shù)據(jù),然后合并N數(shù)據(jù)。簡化了流式數(shù)據(jù)中的多條數(shù)據(jù)合并時的關(guān)聯(lián)查詢,提高了多條數(shù)據(jù)的實時合并效率。

為了便于理解,下面依據(jù)的應(yīng)用實例來說明。

請參閱圖3,圖3為本發(fā)明實施例提供的一種數(shù)據(jù)合并方法的第一應(yīng)用示例圖,該實施例中,預(yù)設(shè)合并條件以兩條數(shù)據(jù)合并為例,具體包括:

步驟301:系統(tǒng)接收到數(shù)據(jù)A;

其中,數(shù)據(jù)A可以是流式數(shù)據(jù)中的其中一條數(shù)據(jù)。

步驟302:系統(tǒng)構(gòu)建所述數(shù)據(jù)A的鍵值A(chǔ)0;其中,鍵值A(chǔ)0也可以稱為存儲鍵值。

假設(shè)數(shù)據(jù)A為用戶登錄網(wǎng)上的交易數(shù)據(jù),則構(gòu)建所述數(shù)據(jù)A的鍵值A(chǔ)0,為,其構(gòu)建鍵值的方式可以根據(jù)數(shù)據(jù)中的用戶ID來構(gòu)建鍵值,當(dāng)然,并不限于此。

步驟303:系統(tǒng)根據(jù)鍵值A(chǔ)0將所述數(shù)據(jù)A存儲到數(shù)據(jù)庫中;

其中,本實施例中的數(shù)據(jù)庫,可以是內(nèi)存,存儲器,KV存儲器等,當(dāng)然,所述數(shù)據(jù)庫可以是所有能存儲數(shù)據(jù)的設(shè)備。本實施例以KV存儲器為例。

步驟304:根據(jù)所述數(shù)據(jù)A構(gòu)建查詢條數(shù)據(jù)B的鍵值B0;

結(jié)合上述例子,假設(shè)數(shù)據(jù)B為交易數(shù)據(jù),由于數(shù)據(jù)A和數(shù)據(jù)B均為同一用戶(即同一ID)發(fā)送的交易數(shù)據(jù)和支付數(shù)據(jù)等,根據(jù)該數(shù)據(jù)A和數(shù)據(jù)B的屬性分別構(gòu)造的鍵值也相同(即是同一ID),所以,數(shù)據(jù)A和數(shù)據(jù)B就是相關(guān)聯(lián)的數(shù)據(jù),需要在數(shù)據(jù)庫中將二者關(guān)聯(lián)起來。

步驟305:系統(tǒng)根據(jù)所述鍵值B0從所述數(shù)據(jù)庫中查詢所述數(shù)據(jù)B;

步驟306:系統(tǒng)判斷是否查詢到所述數(shù)據(jù)B,如果查詢到,則執(zhí)行步驟307;否則,執(zhí)行步驟308;

步驟307:合并所述數(shù)據(jù)A和所述數(shù)據(jù)B;

步驟308:結(jié)束本次流程。

該實施例中,當(dāng)數(shù)據(jù)流的一條數(shù)據(jù)A進(jìn)入系統(tǒng)時,系統(tǒng)根據(jù)當(dāng)前數(shù)據(jù)A得到鍵值(Key)A0,并根據(jù)該Key A0將當(dāng)前數(shù)據(jù)A存儲到數(shù)據(jù)庫中,形如A0->A,即通過鍵值A(chǔ)0可以查詢到數(shù)據(jù)A。

然后,根據(jù)數(shù)據(jù)A計算出需要查詢數(shù)據(jù)B的Key B0,并根據(jù)B0到數(shù)據(jù)庫中進(jìn)行查詢,如果查詢到該B0對應(yīng)的數(shù)據(jù)B,則合并數(shù)據(jù)A和數(shù)據(jù)B,得到合并結(jié)果A和B。

如果未查詢到數(shù)據(jù)B,則結(jié)束時本次流程。以便于系統(tǒng)后續(xù)在接收到數(shù)據(jù)B進(jìn)入系統(tǒng)時,按照上述過程進(jìn)行構(gòu)造和查詢,然后,再觸發(fā)合并數(shù)據(jù)A和數(shù)據(jù)B的操作。

請參閱圖4,圖4為本發(fā)明實施例提供的一種數(shù)據(jù)合并方法的第二應(yīng)用示例圖,該 實施例中,假設(shè)需要合并的數(shù)據(jù)(或數(shù)據(jù)流)為A,B和C,其中,預(yù)設(shè)合并條件為A.B0’=B.B0并且B.C0’=C.C0,其中,B0’是根據(jù)數(shù)據(jù)A構(gòu)建的鍵值,B0是數(shù)據(jù)B的鍵值,C0’是根據(jù)數(shù)據(jù)B構(gòu)建的鍵值,C0是數(shù)據(jù)C的鍵值。本實施例,以三條數(shù)據(jù)合并為例,在實際應(yīng)用中,并不限于此三條,可以是N條,其N條數(shù)據(jù)合并過程,與三條數(shù)據(jù)合并過程類似,具體詳見下述,在此不再贅述,所述方法包括:

步驟401:系統(tǒng)接收到數(shù)據(jù)A;

其中,數(shù)據(jù)A可以是流式數(shù)據(jù)中的其中一條數(shù)據(jù)。

步驟402:系統(tǒng)構(gòu)建所述數(shù)據(jù)A的鍵值A(chǔ)0;其中,鍵值A(chǔ)0也可以稱為存儲鍵值。

假設(shè)數(shù)據(jù)A為用戶登錄網(wǎng)上交易數(shù)據(jù),則構(gòu)建所述數(shù)據(jù)A的鍵值A(chǔ)0,為,可以根據(jù)數(shù)據(jù)中的用戶ID來構(gòu)建鍵值,當(dāng)然,并不限于此。

步驟403:系統(tǒng)根據(jù)鍵值A(chǔ)0將所述數(shù)據(jù)A存儲到數(shù)據(jù)庫中;

其中,本實施例中的數(shù)據(jù)庫,可以是內(nèi)存,存儲器,KV存儲器等,也就是說,所述數(shù)據(jù)庫可以是所有能存儲數(shù)據(jù)的設(shè)備。

步驟404:根據(jù)所述數(shù)據(jù)A按照預(yù)設(shè)合并條件構(gòu)建查詢條數(shù)據(jù)B的鍵值B0’;其中,所述數(shù)據(jù)A和所述數(shù)據(jù)B相關(guān);

比如,數(shù)據(jù)A和數(shù)據(jù)B均為同一用戶(即同一ID)發(fā)送的交易數(shù)據(jù)和支付數(shù)據(jù)等。

步驟405:系統(tǒng)根據(jù)所述鍵值B0’從所述數(shù)據(jù)庫中查詢所述數(shù)據(jù)B;

步驟406:系統(tǒng)判斷是否查詢到數(shù)據(jù)B,如果查詢到,則執(zhí)行步驟407;否則,執(zhí)行步驟411;

步驟407:系統(tǒng)根據(jù)所述數(shù)據(jù)B按照預(yù)設(shè)合并條件構(gòu)建查詢數(shù)據(jù)C的鍵值C0’;

步驟408:系統(tǒng)根據(jù)所述鍵值C0’從所述數(shù)據(jù)庫中查詢所述數(shù)據(jù)C;

步驟409:系統(tǒng)判斷是否查詢到所述數(shù)據(jù)C,如果查詢到,則執(zhí)行步驟410;否則,執(zhí)行步驟411;

步驟410:系統(tǒng)合并所述數(shù)據(jù)A、數(shù)據(jù)B和數(shù)據(jù)C,得到合并結(jié)果數(shù)據(jù)A、B和C;

步驟411:結(jié)束本次流程。

也就是說,該實施例中,以需要合并的是三個數(shù)據(jù)A、B和C為例,預(yù)設(shè)合并條件為A.B0’=B.B0并且B.C0’=C.C0。

當(dāng)任意一條數(shù)據(jù)進(jìn)入系統(tǒng)時,例如數(shù)據(jù)A,根據(jù)事先定義好的預(yù)設(shè)合并條件,將數(shù)據(jù)A保存到數(shù)據(jù)庫中;然后,從數(shù)據(jù)A中構(gòu)建出查詢數(shù)據(jù)B的Key B0’,并且根據(jù)Key B0’去數(shù)據(jù)庫中查詢數(shù)據(jù)B,如果沒有查詢到,則合并結(jié)束。

如果查詢到數(shù)據(jù)B,在根據(jù)事先定義好的預(yù)設(shè)合并條件,從數(shù)據(jù)B中構(gòu)建出查詢數(shù)據(jù)C的鍵值Key C0’,然后,根據(jù)鍵值Key C0’去數(shù)據(jù)庫中查詢數(shù)據(jù)C,如果沒有查詢到,則合并結(jié)束;

如果查詢到數(shù)據(jù)C,則即符合預(yù)設(shè)合并條件的數(shù)據(jù)A,B,C都已存在,合并數(shù)據(jù)A,B,C,并合并成功后,將該合并后的數(shù)據(jù)A,B,C交由其他設(shè)備進(jìn)行數(shù)據(jù)處理。

本發(fā)明實施例中,對接收到的數(shù)據(jù)采用鍵值存儲,并根據(jù)該數(shù)據(jù)構(gòu)造查詢能合并的數(shù)據(jù)的鍵值,然后,根據(jù)查詢到的鍵值查詢數(shù)據(jù)庫是否存儲有對應(yīng)的數(shù)據(jù),如果查詢到對應(yīng)的數(shù)據(jù),則合并該數(shù)據(jù)。本實施例簡化了多條數(shù)據(jù)合并時的關(guān)聯(lián)查詢,提高了多條數(shù)據(jù)合并時的實時效率。

基于上述方法的實現(xiàn)過程,本實施例還提供一種數(shù)據(jù)合并裝置,其結(jié)構(gòu)示意圖如圖5所示,所述裝置包括:接收單元51,確定單元52,發(fā)送單元53,第一構(gòu)建單元54,第一查詢單元55和第一合并單元56,其中,

所述接收單元51,用于接收第一數(shù)據(jù);其中,第一數(shù)據(jù)的描述詳見上述,在此不再贅述;

所述確定單元52,用于確定所述第一數(shù)據(jù)對應(yīng)的第一鍵值;

所述發(fā)送單元53,用于根據(jù)所述第一鍵值將所述第一數(shù)據(jù)發(fā)送到數(shù)據(jù)庫進(jìn)行存儲;

所述第一構(gòu)建單元54,用于在所述發(fā)送單元53發(fā)送所述第一數(shù)據(jù)后,根據(jù)所述第一數(shù)據(jù)按照第一預(yù)設(shè)合并條件構(gòu)建查詢第二數(shù)據(jù)的第二鍵值;

其中,所述第一構(gòu)建單元54構(gòu)建所述第一鍵值的第一預(yù)設(shè)合并條件為兩條數(shù)據(jù)的屬性值相同。

所述第一查詢單元55,用于根據(jù)所述第二鍵值查詢所述數(shù)據(jù)庫中是否存儲有對應(yīng)的所述第二數(shù)據(jù);

所述第一合并單元56,用于在所述第一查詢單元55查詢到所述第二數(shù)據(jù)時,合并所述第一數(shù)據(jù)和所述第二數(shù)據(jù)。

可選的,所述裝置還可以包括:第二構(gòu)建單元61,第二查詢單元62和第二合并單元64,其結(jié)構(gòu)示意圖如圖6所示,其中,

所述第二構(gòu)建單元61,用于在所述查詢單元查詢到對應(yīng)的所述第二數(shù)據(jù)時,根據(jù)所述第二數(shù)據(jù)逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值;其中,所述N≥3,所述第N數(shù)據(jù)與所述第二數(shù)據(jù)相關(guān)和/或第一數(shù)據(jù)的屬性值相同;

其中,所述第二構(gòu)建單元61,具體用于根據(jù)所述第二數(shù)據(jù)按照第二預(yù)設(shè)合并條件逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值。所述第二預(yù)設(shè)合并條件為三條以上數(shù)據(jù)的屬性值相同。

所述第二查詢單元62,用于根據(jù)所述第N鍵值逐步查詢所述數(shù)據(jù)庫中是否存儲有對應(yīng)的所述第N數(shù)據(jù);

所述第二合并單元63,用于在所述第二查詢單元62查詢到所述第N數(shù)據(jù)時,合并所述第一數(shù)據(jù)、所述第二數(shù)據(jù)至所述第N數(shù)據(jù)。

所述裝置中各個單元的功能和作用的實現(xiàn)過程,詳見上述方法中對應(yīng)步驟的實現(xiàn)過程,在此不再贅述。

參見圖7,為本發(fā)明實施例電子設(shè)備結(jié)構(gòu)圖,該電子設(shè)備700包括:處理器710、存儲器720、收發(fā)器730和總線740;

處理器710、存儲器720、收發(fā)器730通過總線740相互連接;總線740可以是ISA總線、PCI總線或EISA總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖7中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。

存儲器720,用于存放程序。具體地,程序可以包括程序代碼,所述程序代碼包括計算機(jī)操作指令。存儲器720可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。具體用于存儲預(yù)設(shè)合并條件。

收發(fā)器730用于連接其他設(shè)備,并與其他設(shè)備進(jìn)行通信。具體的所述收發(fā)器730可以用于:接收第一數(shù)據(jù);其中,所述第一數(shù)據(jù)可以是一條數(shù)據(jù),也可以是一個數(shù)據(jù)包,該數(shù)據(jù)包中包括一條或多條,當(dāng)然,第一數(shù)據(jù)也可以是數(shù)據(jù)流。需要說明的是,當(dāng)?shù)谝粩?shù)據(jù)是多條數(shù)據(jù)或數(shù)據(jù)流時,需要將該多條數(shù)據(jù)或數(shù)據(jù)流拆分成每條數(shù)據(jù)。

所述處理器710執(zhí)行存儲器720中存儲的所述程序代碼,用于確定所述第一數(shù)據(jù)的 第一鍵值;當(dāng)然,如果第一數(shù)據(jù)是多條數(shù)據(jù)時或數(shù)據(jù)流時,確定每條數(shù)據(jù)對應(yīng)的鍵值;

所述收發(fā)器730,還用于根據(jù)所述第一鍵值將所述第一數(shù)據(jù)存儲到數(shù)據(jù)庫中;

如果第一數(shù)據(jù)包括多條數(shù)據(jù)流時,收發(fā)器730,還用于需要按照每條數(shù)據(jù)對應(yīng)的鍵值將對應(yīng)的數(shù)據(jù)存儲到數(shù)據(jù)庫中。

所述處理器710,還用于根據(jù)所述第一數(shù)據(jù)按照第一預(yù)設(shè)合并條件構(gòu)建查詢第二數(shù)據(jù)的第二鍵值;以及在根據(jù)所述第二鍵值從所述數(shù)據(jù)庫中查詢到對應(yīng)的所述第二數(shù)據(jù)時,合并所述第一數(shù)據(jù)和所述第二數(shù)據(jù)。

可選地,其中,第一預(yù)設(shè)合并條件為兩條數(shù)據(jù)的屬性的屬性值相同。

如果第一數(shù)據(jù)包括多條數(shù)據(jù)流時,處理器710,還用于根據(jù)每條數(shù)據(jù)按照其對應(yīng)的預(yù)設(shè)合并條件分別構(gòu)建查詢與每條數(shù)據(jù)關(guān)聯(lián)的數(shù)據(jù)的鍵值;以及在根據(jù)所述鍵值從所述數(shù)據(jù)庫中查詢到對應(yīng)的每條數(shù)據(jù)時,合并所述這兩條關(guān)聯(lián)的數(shù)據(jù)。

可選地,所述處理器710,還用于在查詢到對應(yīng)的所述第二數(shù)據(jù)時,根據(jù)所述第二數(shù)據(jù)逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值;其中,所述N為大于等于3的自然數(shù),所述第N數(shù)據(jù)與所述第二數(shù)據(jù)和/或所述第一數(shù)據(jù)相關(guān);以及在根據(jù)所述第N鍵值從所述數(shù)據(jù)庫中逐步查詢到對應(yīng)的所述第N數(shù)據(jù)時,合并所述第一數(shù)據(jù)、所述第二數(shù)據(jù)至所述第N數(shù)據(jù)。

可選地,所述處理器710根據(jù)所述第二數(shù)據(jù)逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值包括:根據(jù)所述第二數(shù)據(jù)按照第二預(yù)設(shè)合并條件逐步構(gòu)建查詢第N數(shù)據(jù)的第N鍵值:其中,第二預(yù)設(shè)合并條件為三條以上數(shù)據(jù)的屬性值相同。

本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實施例中的技術(shù)可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā)明實施例中的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。

本說明書中的各個實施例均采用遞進(jìn)的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。

以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1