的記錄的集合可以被發(fā)送到下游系統(tǒng)并且在第二預定時間限制(例如,30分鐘)之后無論缺少什么樣的期望記錄都被指示為在數(shù)據(jù)存儲部110中已處理。因此,在該示例中,過期標準取決于不完整的記錄的集合的不完整程度。當將不完整的記錄的集合與這些時間限制進行比較時,管理器116可以使用該集合中的第一記錄從輸入緩沖區(qū)106中被讀取的、相對于當前時間(例如,基于本地計時器)的時間(例如,基于記錄中的時間戳)。如果預期記錄在不完整的集合已經(jīng)被發(fā)送之后被接收,預期記錄可以被丟棄或者可以被發(fā)送到下游系統(tǒng),總之作為后期更新。
[0044]通過調(diào)整來自保持隊列114的鍵記錄的檢索頻率(其獨立于限定工作單元的時間間隔的頻率),可以實現(xiàn)延遲與完整性之間的期望權(quán)衡。例如,聚合器108和管理器116可以由獨立操作的兩個單獨的過程來控制。在某些情況下,在處理不完整的記錄的集合中的相對大的延遲可以是可接受的,在這種情況下,管理器116可以在與限定工作單元的時間間隔(例如,每100個工作單元)相比相對低的頻率下,或者在與所述時間間隔(例如,每10分鐘)是異步的特定頻率下檢索鍵記錄。每次從保持隊列114中檢索到的鍵記錄的數(shù)量也可以被調(diào)整,從單個(至少最新存儲的)鍵記錄到所有存儲的鍵記錄均可。在一些實施方式中,從保持隊列114中檢索到的任何重復的鍵記錄被識別和消除。如果檢索少于所有鍵記錄,那么可能有鍵記錄的一個實例從保持隊列114中被移除,而該鍵記錄的另一個實例仍然留在保持隊列114中。在這種情況下,鍵記錄的這兩個實例可以由聚合器108(在不同的各個時間間隔)來檢查。如果第一鍵記錄導致相應(yīng)的記錄的集合被發(fā)送到下游(例如,由于滿足過期標準),那么當對第二鍵記錄嘗試匹配過程時,該集合將被表示為在數(shù)據(jù)存儲部110中已處理。
[0045]圖2顯示由聚合器108執(zhí)行的匹配過程200的示例的流程圖。聚合器108對在最新的時間間隔(當前工作單元)內(nèi)接收到的來自輸入緩沖區(qū)106的記錄進行分類(sort) 202。該記錄通過將被用于匹配過程200的標識符被分類。聚合器108通過聚合204分類后的記錄來確定與接收到的記錄相關(guān)聯(lián)的不同的標識符,使得對于每個不同的標識符都存在一個聚合后的記錄的集合。共享相同的獨特標識符的聚合的記錄集合可以被組合為單個記錄(例如,包括其他記錄的矢量(vector)的一個記錄,或者包括擁有來自多個記錄的信息的另一種類型的數(shù)據(jù)結(jié)構(gòu)的一個記錄)。來自輸入緩沖區(qū)106的一些記錄可以是通過不匹配的記錄管理器116被添加的鍵記錄(并且在某些情況下可能被標記為具有與在工作單元中新接收到的完整記錄不同的格式)。這些鍵記錄連同完整記錄一起被分類和聚合以找到獨特的標識符,該標識符將被用在匹配過程200的下一個階段。在一些實施方式中,分類202和聚合204 —起以內(nèi)存哈希(in-memory hashing)技術(shù)來執(zhí)行。
[0046]對于在最新的工作單元的記錄中找到的每個獨特的標識符,聚合器108通過在索引112中查找標識符并檢索數(shù)據(jù)存儲部110中存儲的由該標識符索引的任何記錄來執(zhí)行數(shù)據(jù)存儲部110的查詢206。如果存在具有相同標識符且沒有被指示為已處理的存儲的任意記錄的集合,那么聚合器108對這些記錄集合進行檢索并將其與對應(yīng)于該標識符的接收到的聚合的記錄的集合聯(lián)接(join) 208??蛇x地,在其他示例中,分類202和聚合204可以在數(shù)據(jù)存儲部110的查詢206之后被執(zhí)行,然而,對于其中帶有相同標識符的記錄到達時間相近的輸入數(shù)據(jù)流,該示例可以通過減少對數(shù)據(jù)存儲部110執(zhí)行的查詢次數(shù)來提高性能。
[0047]聚合器108通過針對記錄的集合確定210是否滿足完整性標準來針對每個聚合的/聯(lián)接的記錄的集合確定嘗試匹配過程200是否已經(jīng)成功。如果滿足完整性標準,聚合器108處理212記錄的完整的集合并更新數(shù)據(jù)存儲部110以將記錄的集合指示為已處理。如果對于記錄的集合不滿足完整性標準,聚合器108檢查214過期標準。如果不完整的記錄的集合已經(jīng)過期,那么聚合器108處理216記錄的集合并更新數(shù)據(jù)存儲部110以將該記錄的集合指示為已處理。如果不完整的記錄的集合沒有過期,那么聚合器108將用于不完整的記錄的集合的鍵記錄添加218到保持隊列114,并且如果需要,存儲220由該標識符(其可以與鍵是相同的或者基于鍵被唯一地確定)索引的數(shù)據(jù)存儲部110中的不完整的記錄的集合的初始或更新版本。在數(shù)據(jù)存儲部110的一些實施方式中,沒有必要移除相同的不完整的記錄的集合的任何舊版本,因為當索引112被檢查時,最新的版本將會被訪問。在一些實施方式中,聚合器108還存儲220在數(shù)據(jù)存儲部110中的完整或過期數(shù)據(jù)集合的初始或更新版本,使得存在處理過的記錄的集合的最新歷史記錄。在一些實施方式中,不存在過期標準且對于任何不滿足完整性標準的記錄集合,聚合器108都將鍵記錄添加218到保持隊列 114。
[0048]數(shù)據(jù)存儲部110可以使用任何各種技術(shù)來實施,該技術(shù)用于將數(shù)據(jù)快速地寫入可以使用索引來高效地訪問的位置。例如,記錄可以用將一指示器存儲到帶有特定標識符的記錄被寫入的位置的索引來被連續(xù)地寫入一文件。為了允許快速更新,不完整的記錄的集合的新版本可以被附加到文件的末尾,而無需立即移除舊版本。為了管理數(shù)據(jù)存儲部110的大小,多個文件可以被寫入而那些僅存儲已處理的記錄的舊文件可以在一些時間限制(例如,一小時,或一天)之后被刪除。數(shù)據(jù)存儲部110也可以使用壓縮來減少空間使用量。移除舊文件還可以確保標識符可以被回收而不會不一致。具有這些特性的技術(shù)的一個示例為在通過引用合并于此的、美國專利號7,885,932中描述的復合壓縮記錄文件。復合壓縮記錄中的每個壓縮記錄文件包括多個壓縮塊,其中每個塊存儲具有落入特定范圍內(nèi)的標識符的記錄。每個塊的位置被索引,并且當具有特定標識的記錄集合被檢索時,只有單個塊需要被解壓縮且只有有限數(shù)量的記錄需要被搜索。另外,一起壓縮多個記錄提供了比壓縮單個記錄更大的壓縮比。
[0049]在一些實施方式中,某些記錄可以被存儲在替代數(shù)據(jù)存儲部110的保持隊列114中,而不會顯著地影響訪問保持隊列114的大小和效率。例如,可能存在這樣一些記錄,它們直到已經(jīng)與另一個記錄聚合才能與特定標識符相關(guān)聯(lián)。在這種情況下,完整的記錄可以被添加到保持隊列114而不會被添加到數(shù)據(jù)存儲部110。在完整的記錄已經(jīng)被聚合并分配標識符之后,接著,其可能需要被存儲在數(shù)據(jù)存儲部110中,直到其聚合的集合完整并被處理。如果該初始聚合發(fā)生在短時間幀內(nèi),完整的記錄不可能留在保持隊列114中很長時間。
[0050]在一些實施方式中,多個聚合器108可以被級聯(lián)以對使用不同類型的標識符的輸入記錄執(zhí)行不同的匹配過程。每個聚合器可以使用其自身的數(shù)據(jù)存儲部110和其自身的保持隊列114,或者它們可以共享單個數(shù)據(jù)存儲部110和保持隊列114,只要用于兩個聚合器的標識符和鍵能夠被區(qū)分。例如,數(shù)據(jù)存儲部110可以基于來自記錄的不同字段的多種類型的標識符被索引,并且標識符的任一類型可以在索引112中被查詢,以定位數(shù)據(jù)存儲部110中的記錄的集合。
[0051]上述聚合方法可以使用用于在計算機上執(zhí)行的軟件來實現(xiàn)。例如,軟件形成在一個或多個已編程或可編程計算機系統(tǒng)(可以具有各種架構(gòu),諸如分布式、客戶端/服務(wù)器、或網(wǎng)格式)上執(zhí)行的一個或多個計算機程序中的過程,每個計算機系統(tǒng)包括至少一個處理器、至少一個數(shù)據(jù)存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元素)、至少一個輸入設(shè)備或端口、以及至少一個輸出設(shè)備或端口。該軟件可形成大型程序的一個或多個模塊,例如,該大型程序提供與數(shù)據(jù)流圖的設(shè)計和配置相關(guān)的其它服務(wù)。圖表的節(jié)點和元素可以被實施為在計算機可讀介質(zhì)中存儲的數(shù)據(jù)結(jié)構(gòu)或者符合在數(shù)據(jù)庫中存儲的數(shù)據(jù)模型的其它組織的數(shù)據(jù)。
[0052]該軟件可以被提供在諸如CD-ROM之類的存儲介質(zhì)上,其可以被通用或?qū)S每删幊逃嬎銠C讀取或者通過網(wǎng)絡(luò)的通信介質(zhì)遞送(編碼成傳播信號)到執(zhí)行該軟件的計算機。所有功能可以在專用計算機上執(zhí)行,或者使用諸如協(xié)處理器之類的專用硬件來執(zhí)行。該軟件可以以分布方式實施,在該分布方式中,由該軟件指定的不同的計算部分由不同的計算機執(zhí)行。每個這樣的計算機程序被優(yōu)選地存儲在或下載到可由通用或?qū)S每删幊逃嬎銠C讀取的存儲介質(zhì)或設(shè)備(例如,固態(tài)存儲器或介質(zhì)、或者磁或光介質(zhì)),用于在計算機系統(tǒng)讀取該存儲介質(zhì)或設(shè)備時配置和操作該計算機,以執(zhí)行此處所描述的過程。也可以考慮將本發(fā)明的系統(tǒng)實施為計算機可讀存儲介質(zhì),其配置有計算機程序,其中,如此配置的存儲介質(zhì)使得計算機系統(tǒng)以特定和預定義的方式操作以執(zhí)行此處所描述的功能。
[0053]已經(jīng)對本發(fā)明的多個實施例進行了描述。然而,應(yīng)當理解,在不脫離本發(fā)明的精神和范圍的情況下可進行各種修改。例如,上述的一些步驟可以是順序獨立的,因此可以以不同于所述的順序來執(zhí)行。
[0054]應(yīng)當理解,前面的描述旨在說明而非限制本發(fā)明的范圍,本發(fā)明的范圍由所附的權(quán)利要求書的范圍來限定。例如,可以以不同的順序來執(zhí)行上述的多個功能步驟,而不會在實質(zhì)上影響整個處理。其它實施例也落在所附權(quán)利要求書的范圍內(nèi)。
【主權(quán)項】
1.一種用于處理在網(wǎng)絡(luò)中的節(jié)點處接收到的數(shù)據(jù)的方法,所述方法包括: 接收來自所述網(wǎng)絡(luò)中的一