專利名稱:用于處理數(shù)據(jù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實施例一般涉及流計算應(yīng)用。具體地,本發(fā)明涉及使用不同的流度量來觸發(fā)操作器(operator)在流計算應(yīng)用中處理的元組(tuple)的窗口。
背景技術(shù):
在計算機數(shù)據(jù)庫已經(jīng)變得極其復(fù)雜的同時,對于數(shù)據(jù)庫系統(tǒng)施加的計算要求也已經(jīng)以快速的步伐增加。數(shù)據(jù)庫系統(tǒng)通常被配置來將存儲數(shù)據(jù)的處理與訪問、操縱或使用存儲在數(shù)據(jù)庫中的數(shù)據(jù)分離。更具體地,數(shù)據(jù)庫使用模型,其中,數(shù)據(jù)首先被存儲,然后被索引化,并且最后被查詢。然而,這個模型不能滿足一些實時應(yīng)用的性能要求。例如,數(shù)據(jù)庫系統(tǒng)可以接收和存儲進入的數(shù)據(jù)的速率限制可以處理或評估多少數(shù)據(jù)。這繼而可能限制數(shù)據(jù)庫應(yīng)用實時處理大量數(shù)據(jù)的能力。
發(fā)明內(nèi)容
本發(fā)明的實施例提供了用于處理數(shù)據(jù)的方法、系統(tǒng)和計算機程序產(chǎn)品。在一個實施例中,所述方法和計算機程序接收要由多個操作器處理的流數(shù)據(jù)元組,所述操作器處理所接收的數(shù)據(jù)元組的至少一部分。所述方法和計算機程序也建立所述多個操作器的操作器圖(graph),其中,所述操作器圖限定至少一個執(zhí)行路徑,并且其中,所述多個操作器的第一操作器被配置來從至少一個上游操作器接收數(shù)據(jù)元組,并且向至少一個下游操作器發(fā)送數(shù)據(jù)元組。所述方法和計算機程序確定當(dāng)所述上游操作器基于所述流數(shù)據(jù)元組的至少一個執(zhí)行操作的同時出現(xiàn)的異常(exception)的當(dāng)前數(shù)量。所述方法和計算機程序基于所述異常的數(shù)量來觸發(fā)在所述多個操作器的、與所述上游操作器不同的至少一個操作器中的數(shù)據(jù)窗口,其中,所述窗口包括多個數(shù)據(jù)元組。在另一個實施例中,所述系統(tǒng)包括至少兩個計算節(jié)點,每一個計算節(jié)點包括至少一個計算機處理器。所述至少兩個計算節(jié)點被配置來容納處理流數(shù)據(jù)元組的多個操作器的至少一個。而且,所述操作器處理所接收的數(shù)據(jù)元組的至少一部分。所述多個操作器建立操作器圖,所述操作器圖限定至少一個執(zhí)行路徑,其中,所述多個操作器的第一操作器被配置來從至少一個上游操作器接收數(shù)據(jù)元組,并且向至少一個下游操作器發(fā)送數(shù)據(jù)元組。所述系統(tǒng)也包括窗口啟動器,所述窗口啟動器被配置來確定在所述上游操作器基于所述流數(shù)據(jù)元組的至少一個執(zhí)行操作的同時出現(xiàn)的異常的當(dāng)前數(shù)量,并且基于所述異常的數(shù)量來觸發(fā)在所述多個操作器的、與所述上游操作器不同的至少一個操作器中的數(shù)據(jù)窗口,其中,所述窗口包括多個數(shù)據(jù)元組。
為了獲得并且可以詳細(xì)地明白上述的方面,可以通過參考附圖來進行上面簡述的本發(fā)明的實施例的更具體的說明。然而,應(yīng)當(dāng)注意,附圖僅圖示了本公開的典型實施例,并且因此不被解釋為限制其范圍,因為本發(fā)明可以允許其他等同有效的實施例。圖1A-1B圖示了根據(jù)本發(fā)明的實施例的、被配置來執(zhí)行流計算應(yīng)用的計算基礎(chǔ)架構(gòu)。圖2是根據(jù)本發(fā)明的一個實施例的、圖1A-1B的計算結(jié)果的更詳細(xì)視圖。圖3是根據(jù)本發(fā)明的一個實施例的、圖1A-1B的服務(wù)器管理系統(tǒng)的更詳細(xì)視圖。圖4是圖示根據(jù)本發(fā)明的一個實施例的、在流計算應(yīng)用中滾動(tumble)和滑動窗口的表格。圖5圖示了根據(jù)本發(fā)明的一個實施例的、用于觸發(fā)窗口的部分操作器圖。圖6圖示了根據(jù)本發(fā)明的一個實施例的、用于觸發(fā)窗口部分操作器圖。圖7圖示了根據(jù)本發(fā)明的一個實施例的、用于觸發(fā)窗口的部分操作器圖。
具體實施例方式基于流的計算和基于流的數(shù)據(jù)庫計算正在作為用于數(shù)據(jù)庫系統(tǒng)的發(fā)展中的技術(shù)而出現(xiàn)。可獲得允許用戶建立應(yīng)用的產(chǎn)品,所述應(yīng)用在流數(shù)據(jù)到達數(shù)據(jù)庫文件前處理和查詢流數(shù)據(jù)。利用該正在出現(xiàn)的技術(shù),用戶可以指定處理邏輯以在入站(inbound)數(shù)據(jù)記錄在“飛行中(in flight)”的同時應(yīng)用到該入站數(shù)據(jù)記錄,在很短的時間量、經(jīng)常在幾個毫秒中可獲得結(jié)果。使用該類型的處理來構(gòu)造應(yīng)用已經(jīng)打開了新的編程范式,該新的編程范式允許開發(fā)大量革新應(yīng)用、系統(tǒng)和處理,并且為應(yīng)用程序員和數(shù)據(jù)庫開發(fā)者帶來新的挑戰(zhàn)。在流計算應(yīng)用中,處理單元(processing element)彼此連接,使得數(shù)據(jù)從一個處理單元流向下一個(例如,通過TCP/IP套接字)。通過下述方式來達到可伸縮性(scalability):通過建立許多小的可執(zhí)行代碼片(S卩,操作器)而在節(jié)點上分布(distribute)應(yīng)用,以及,在多個節(jié)點上復(fù)制處理單元并在它們之間進行負(fù)載平衡。在流計算應(yīng)用中的處理單元(和操作器)可以被融合在一起,以形成較大的處理單元或作業(yè)。如此進行允許處理單元共享公共處理空間,導(dǎo)致在操作器之間獲得比使用進程間的通信技術(shù)(例如,使用TCP/IP套接字)可獲得的快得多的通信。而且,可以通過流計算應(yīng)用動態(tài)地從表示數(shù)據(jù)的流的操作器圖插入或去除處理單元,以及,可以在運行時間(runtime)期間從流計算應(yīng)用融合或解除融合處理單元。而且,一些流計算應(yīng)用使用元組來在操作器(或處理單元)之間流化(stream)數(shù)據(jù)。操作器可以然后使用接收的元組來執(zhí)行一個或多個處理功能。取代在接收到元組時處理它們,操作器可以等待評估一組元組一即,窗口。然而,流計算應(yīng)用需要用于確定何時觸發(fā)窗口的指示器,該指示器指示操作器評估在數(shù)據(jù)窗口內(nèi)包括的元組??赡艿拇翱诨瘏?shù)包括等待直到接收到特定數(shù)量的元組或等待直到已經(jīng)過去了特定的時間量。取代僅依賴于這兩個參數(shù),可以基于操作器接收元組的速率一即,在一時間段內(nèi)接收到的元組數(shù)量的比率——來觸發(fā)窗口。如果該速率超過或小于閾值,則可以觸發(fā)數(shù)據(jù)窗口。例如,如果操作器在它接收到1000個元組后觸發(fā)窗口,但是它接收元組的速率小于每秒10個元組,則操作器可以觸發(fā)窗口,即使它已經(jīng)接收到僅500個元組。另外,流計算應(yīng)用可以評估過去的元組速率以確定當(dāng)前的元組速率相對于歷史速率如何偏離。如果偏離——例如,將歷史速率與當(dāng)前速率作比較的百分比——超過或小于閾值,則可以觸發(fā)窗□。
如果多個操作器向單個操作器發(fā)送元組,則可以監(jiān)視和考慮用于數(shù)據(jù)路徑的每一個的元組速率。流計算應(yīng)用可以例如保證在觸發(fā)窗口前流入操作器內(nèi)的元組速率全部超過相應(yīng)的閾值。附加于或取代評估元組速率,流計算應(yīng)用可以監(jiān)視由一個或多個操作器拋出的異常的數(shù)量。作為由單獨操作器執(zhí)行的異常處理的一部分,操作器可以記錄異?;蛱囟愋偷漠惓5目倲?shù),以確定它是否超過或小于閾值。如果如果是,則可以觸發(fā)數(shù)據(jù)窗口。 不論流計算應(yīng)用是否使用元組速率或異常來觸發(fā)窗口,都可以在不位于提供元組速率或異常計數(shù)的操作器的下游的操作器中觸發(fā)窗口。即,這些參數(shù)可以用于在流計算應(yīng)用的操作器圖中的任何操作器上觸發(fā)窗口。下面,參考本發(fā)明的實施例。然而,應(yīng)當(dāng)明白,本發(fā)明不限于特定的所述實施例。相反,下面的特征和元件的任何組合不論是否與不同的實施例相關(guān),都被考慮為實現(xiàn)和實施本發(fā)明。而且,雖然本發(fā)明的實施例可以相對于其他可能解決方案和/或現(xiàn)有技術(shù)實現(xiàn)優(yōu)點,但是是否通過給定實施例實現(xiàn)特定優(yōu)點不是本發(fā)明的限制。因此,下面的方面、特征、實施例和優(yōu)點僅是說明性的,并且不被考慮為所附的權(quán)利要求的元素或限制,除了在權(quán)利要求中明確地陳述。同樣,對于“本發(fā)明”的引用不應(yīng)當(dāng)被解釋為在此公開的任何發(fā)明主題的一般化,并且不應(yīng)當(dāng)被看作是所附的權(quán)利要求的元素或限制,除了在權(quán)利要求中明確地陳述。所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼??梢圆捎靡粋€或多個計算機可讀的介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。計算機可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計語言一諸如”C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠(yuǎn)程計算機上執(zhí)行、或者完全在遠(yuǎn)程計算機或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機的情形中,遠(yuǎn)程計算機可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。下面將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。本發(fā)明的實施例可以通過云計算基礎(chǔ)架構(gòu)被提供到終端用戶。云計算一般指的是通過網(wǎng)絡(luò)提供可擴展的計算資源作為服務(wù)。更正式地,云計算可以被定義為在計算資源和其基礎(chǔ)的技術(shù)架構(gòu)(例如,服務(wù)器、儲存器、網(wǎng)絡(luò))之間提供抽象的計算能力,使得能夠?qū)梢允褂米钚〉墓芾砼蚍?wù)提供商交互來迅速提供和釋放的可配置計算資源的共享池進行方便的、根據(jù)需要的網(wǎng)絡(luò)訪問。因此,云計算允許用戶在“云”中訪問虛擬計算資源(例如,儲存器、數(shù)據(jù)、應(yīng)用和甚至完全虛擬化的計算系統(tǒng)),而不考慮用于提供計算資源的基礎(chǔ)物理系統(tǒng)(或那些系統(tǒng)的位置)。通常,云計算資源在根據(jù)使用付費的基礎(chǔ)上被提供到用戶,其中,僅對于實際上使用的計算資源(例如,由用戶使用的存儲空間的量或由用戶實例化的虛擬系統(tǒng)的數(shù)量)向用戶收費。用戶可以在任何時間并且從在因特網(wǎng)上的任何位置訪問在云中駐留的任何資源。在本發(fā)明的上下文中,用戶可以訪問在云中可獲得的應(yīng)用或相關(guān)數(shù)據(jù)。例如,用于建立流計算應(yīng)用的節(jié)點可以是由云服務(wù)提供商容納的虛擬機。如此進行允許用戶從附接到與云連接的網(wǎng)絡(luò)(例如,因特網(wǎng))的任何計算系統(tǒng)訪問該信息。圖1A-1B圖示了根據(jù)本發(fā)明的一個實施例的被配置來執(zhí)行流計算應(yīng)用的計算基礎(chǔ)架構(gòu)。如所示,計算基礎(chǔ)架構(gòu)100包括管理系統(tǒng)105和多個計算節(jié)點130i_4,每一個連接到通信網(wǎng)絡(luò)120。而且,管理系統(tǒng)105包括操作器圖132和流管理器134。如在下面更詳細(xì)地所述,操作器圖132表示從一個或多個源處理單元(PE)開始到一個或多個終點(sink)PE的流計算應(yīng)用。該從源至終點的流也在此一般被稱為執(zhí)行路徑。通常,數(shù)據(jù)屬性流入流計算應(yīng)用的源PE,并且被該PE處理。通常,處理單元從流接收N元組(N-tuple)的數(shù)據(jù)屬性,并且向流內(nèi)發(fā)送N元組的數(shù)據(jù)屬性(除了流終止的終點PE)。通常,“元組”是遵循模式(schema)的格式化的一組數(shù)據(jù)屬性的單個實例,其中,該模式建立可以使用的一組類型化(typed)的數(shù)據(jù)屬性。例如,元組可以是諸如數(shù)據(jù)類型(例如,字符串(string)、整型(int)、布爾(Boolean)等)或數(shù)據(jù)類型的組合的可劃分?jǐn)?shù)據(jù)的塊或部分。在一個實施例中,“元組”可以包括具有賦值的一個或多個屬性,例如,元組1:{sym=叩6”,110=26},其中,“87111”和“no”是該模式中的可能屬性(S卩,分別是字符串和整數(shù)),并且“Fe”和“26”是值。當(dāng)然,由處理單元接收的N元組不必是下游發(fā)送的同一 N元組。另外,PE可以被配置來以其他格式接收或發(fā)送元組(例如,PE或操作器可以交換被標(biāo)注為XML文件的數(shù)據(jù))。而且,PE內(nèi)的每一個操作器可以被配置來對接收的元組執(zhí)行任何形式的數(shù)據(jù)處理功能,包括例如,向數(shù)據(jù)庫表格寫入或執(zhí)行諸如數(shù)據(jù)結(jié)合、分裂、讀取等的其他數(shù)據(jù)庫操作,以及執(zhí)行其他數(shù)據(jù)分析功能或操作。流管理器134可以被配置來監(jiān)視在計算節(jié)點130卜4上運行的流計算應(yīng)用以及改變操作器圖132的部署。流管理器134可以從一個計算節(jié)點130向另一個移動處理單元(PE),例如以管理在計算基礎(chǔ)架構(gòu)100中的計算節(jié)點130的處理負(fù)荷。而且,流管理器134可以通過下述方式來控制流計算應(yīng)用:插入、去除、融合、解除融合或修改在計算節(jié)點130卜4上運行的處理單元和操作器(或者什么數(shù)據(jù)元組流向處理單元)。流計算應(yīng)用的一個示例是IBM 的In foSphere (注意InfoSphere象是在世界上許多行政轄區(qū)注冊的、國際商業(yè)機器公司的商標(biāo))。圖1B圖示了包括在計算節(jié)點130卜4上運行的10個處理單元(標(biāo)注為PEl - PE10)的示例操作器圖。處理單元由一個或多個操作器構(gòu)成,該一個或多個一起融合為具有其本身的進程ID (PID)和存儲空間的獨立運行的進程。如果兩個(或更多的)處理單元在獨立地運行,則進程之間的通信可以使用“傳輸(transport)”(例如,網(wǎng)絡(luò)套接字、TCP/IP套接字或共享存儲器)進行。然而,當(dāng)將操作器融合在一起時,融合的操作器可以使用更快速的通信技術(shù)用于在每一個處理單元中的操作器之間傳遞元組。如所示,操作器圖在源135 (其流入被標(biāo)注為PEl的處理單元)處開始,并且在終點140卜2 (其從被標(biāo)注為PE6和PElO的處理單元流動)結(jié)束。計算節(jié)點130:包括處理單元PE1、PE2和PE3。源135流入處理單元PEl內(nèi),處理單元PEl繼而發(fā)送被PE2和PE3接收的元組。例如,PEl可以分離在元組中接收的數(shù)據(jù)屬性,并且向PE2傳送一些數(shù)據(jù)屬性,同時向PE3傳送其他數(shù)據(jù)屬性。流向PE2的數(shù)據(jù)被包含在PE2中的操作器處理,然后向在計算節(jié)點1302上的PE4發(fā)送結(jié)果元組。同樣,由PE4發(fā)送的數(shù)據(jù)元組流入終點PE6140lt)類似地,從PE3至PE5流動的數(shù)據(jù)元組也到達終點PE6140lt)因此,除了作為用于這個示例操作器圖的終點之外,PE6還可以被配置來執(zhí)行結(jié)合操作,組合從PE4和PE5接收的元組。這個示例操作器圖也示出從PE3向在計算節(jié)點1303上的PE7流動的數(shù)據(jù)元組,計算節(jié)點1303本身示出向PE8流動并且循環(huán)回PE7的數(shù)據(jù)元組。從PE8發(fā)送的數(shù)據(jù)元組流向在計算節(jié)點1304上的PE9,計算節(jié)點1304繼而發(fā)送要被終點PE101402處理的元組。因為處理單元是融合操作器的集合,所以將操作器圖描述為特定操作器之間的執(zhí)行路徑也同樣正確,該執(zhí)行路徑可以包括到在同一處理單元內(nèi)的不同操作器的執(zhí)行路徑。為了清楚,圖1B圖示了在處理單元之間的執(zhí)行路徑。而且,雖然在流計算應(yīng)用的上下文內(nèi)描述了本發(fā)明的實施例,但是這不僅僅是與本公開相關(guān)的上下文。相反,這樣的描述是無限制的,并且僅用于說明的目的。當(dāng)然,本領(lǐng)域內(nèi)的普通技術(shù)人員可以認(rèn)識到,本發(fā)明的實施例可以被配置來使用能夠執(zhí)行在此所述的功能的任何計算機系統(tǒng)或應(yīng)用來運行。例如,本發(fā)明的實施例可以被配置來在具有標(biāo)準(zhǔn)數(shù)據(jù)庫處理應(yīng)用的集群(clustered)環(huán)境中運行。圖2是根據(jù)本發(fā)明的一個實施例的、圖1A-1B的計算節(jié)點130的更詳細(xì)視圖。如所示,計算節(jié)點130包括但不限于至少一個CPU205、網(wǎng)絡(luò)接口 215、互連220、存儲器225和儲存器230。計算節(jié)點130也可以包括I/O裝置接口 210,用于將I/O裝置212 (例如,鍵盤、顯示器和鼠標(biāo)裝置)連接到計算節(jié)點130。每一個CPU205檢索和執(zhí)行在存儲器225中存儲的程序指令。類似地,CPU205存儲和檢索在存儲器225中駐留的應(yīng)用數(shù)據(jù)?;ミB220用于在每一個CPU205、I/O裝置接口210、儲存器230、網(wǎng)絡(luò)接口 215和存儲器225之間傳輸程序指令和應(yīng)用數(shù)據(jù)。CPU205被包括來表示單個CPU、多個CPU和具有多個處理核的單個CPU等。存儲器225 —般被包括來表示隨機存取存儲器(例如,DRAM或閃存)。諸如硬盤驅(qū)動器、固態(tài)裝置(SSD)或快閃存儲器儲存器驅(qū)動器的儲存器230可以存儲非易失性數(shù)據(jù)。在這個示例中,存儲器225包括多個處理單元235。每一個PE235包括融合在一起的操作器240的集合。如上所述,每一個操作器240可以提供小塊的可執(zhí)行代碼,該代碼被配置來評估流入處理單元(例如,PE235 )內(nèi)的數(shù)據(jù),并且向在那個PE中的其他操作器240或在流計算應(yīng)用中的其他PE發(fā)送數(shù)據(jù)。這樣的處理單元可以在同一計算節(jié)點130上或在通過通信網(wǎng)絡(luò)120可訪問的其他計算節(jié)點上。PE235也包括窗口啟動器255(軟件模塊、硬件模塊或兩者的組合),窗口啟動器255可以使用窗口化參數(shù)257來確定是否在PE235中觸發(fā)用于操作器240中的一個或多個的數(shù)據(jù)窗口。在其他實施例中,窗口啟動器255可以獨立于PE235,并且可以在存儲器225中或作為計算節(jié)點130中的硬件單元執(zhí)行。如在此使用的,“窗口”包括多個元組(即,被操作器240處理的多個塊的可劃分?jǐn)?shù)據(jù))。在一個實施例中,操作器240可以僅在觸發(fā)窗口后評估接收的元組,并且即使在那時,操作器240僅處理包含在窗口內(nèi)的元組。窗口化參數(shù)257可以例如包括窗口中預(yù)定義數(shù)量的元組、預(yù)定義時間段、用于評估元組速率的閾值、預(yù)定義數(shù)量的異常、用于評估異常率的閾值及其任何組合。窗口啟動器255可以例如監(jiān)視操作器240從不同的操作器240接收元組的速率。如果該速率小于或超過由窗口化參數(shù)257限定的閾值,則窗口啟動器255可以觸發(fā)窗口。如所示,儲存器230包含存儲數(shù)據(jù)元組265的緩沖器260。緩沖器260表示用于數(shù)據(jù)元組265的存儲空間,該數(shù)據(jù)元組265從上游操作器、同一處理單元中的操作器、或從用于流計算應(yīng)用的數(shù)據(jù)源流入計算節(jié)點105內(nèi)。雖然被示出為在儲存器中,但是緩沖器260可以位于計算節(jié)點130的存儲器225中或兩者的組合中。而且,儲存器230可以包括在計算節(jié)點130外部的存儲空間。圖3是根據(jù)本發(fā)明的一個實施例的、圖1的服務(wù)器管理系統(tǒng)105的更詳細(xì)的視圖。如所示,服務(wù)器管理系統(tǒng)105包括但不限于CPU305、網(wǎng)絡(luò)接口 315、互連320、存儲器325和儲存器330??蛻粝到y(tǒng)130也可以包括I/O裝置接口 310,用于將I/O裝置312 (例如,鍵盤、顯示器和鼠標(biāo)裝置)連接到服務(wù)器管理系統(tǒng)105。如圖2的CPU205那樣,CPU305被配置來檢索和執(zhí)行在存儲器325和儲存器330中存儲的程序指令。類似地,CPU305被配置來存儲和檢索在存儲器325和儲存器330中駐留的應(yīng)用數(shù)據(jù)?;ミB320被配置來在CPU305、I/0裝置接口 310、儲存單元330、網(wǎng)絡(luò)接口 315和存儲器325之間移動諸如程序指令和應(yīng)用數(shù)據(jù)的數(shù)據(jù)。如CPU205那樣,CPU305被包括來表示單個CPU、多個CPU和具有多個處理核的單個CPU等。存儲器325通常被包括來表示隨機存取存儲器。網(wǎng)絡(luò)接口 315被配置來經(jīng)由通信網(wǎng)絡(luò)120發(fā)送數(shù)據(jù)。雖然被示出為單個單元,但是儲存器330可以是固定和/或可移除存儲裝置的組合,諸如固定盤驅(qū)動器、可移除存儲卡、光學(xué)存儲器、SSD或快閃存儲器裝置、網(wǎng)絡(luò)附接的儲存器(NAS)或到存儲區(qū)域網(wǎng)絡(luò)(SAN)裝置的連接。如所示,存儲器325存儲流管理器134。另外,存儲器330包括主操作器圖132。流管理器134可以使用主操作器圖132來將元組路由到PE235以處理。圖4是圖示根據(jù)本發(fā)明的一個實施例的、在流計算應(yīng)用中滾動和滑動窗口的表格。窗口啟動器255可以以兩種主要方式來管理數(shù)據(jù)窗口,但是本發(fā)明不限于該兩種方法。第一種主要方式是滾動,而第二種是滑動。滾動窗口包括一個或多個元組(即,可劃分?jǐn)?shù)據(jù)的塊),該一個或多個元組在被操作器240處理后被丟棄。相反,滑動窗口可以包括在先前觸發(fā)的滑動窗口中處理的元組。圖4圖示了在這兩種窗口類型之間的差別。時間線205圖示了時間1-8,其中,操作器240從上游操作器接收到一個元組(即,T1-T7之一)。在表格200中的兩行圖示了使用該兩個不同的窗口模式來在緩沖器260中存儲相同的元組的結(jié)果。假定在時間1,緩沖器260是空的,但是在時間2-5,操作器240接收到T1-T4,其被存儲在緩沖器260中。在一個實施例中,一旦緩沖器260達到四個元組的大小,則與操作器相關(guān)聯(lián)的窗口化參數(shù)257指令窗口啟動器255觸發(fā)窗口。替代地,假定時間線205的時間段表示相等的時間段,則窗口化參數(shù)257可以使得在已經(jīng)過去四個時間段后觸發(fā)窗口。使用任一參數(shù),在時間5,窗口啟動器255確定滿足該參數(shù),并且觸發(fā)窗口。在觸發(fā)了窗口并且操作器240評估窗口內(nèi)的元組之后,丟棄在滾動窗口內(nèi)的元組。因此,在時間6,緩沖器260排除T1-T4,并且僅包含新接收的T5。對于要觸發(fā)的新窗口,窗口啟動器255等待直到緩沖器260再一次包含所需數(shù)量的元組或直到預(yù)定義的時間段已經(jīng)期滿。在表格200中,一旦接收到T8或時間9到達,則窗口啟動器255觸發(fā)新的窗口。在任何一種情況下,實現(xiàn)滾動窗口的緩沖器260再一次排除與新窗口相關(guān)聯(lián)的元組(即,T5-T8)。相反,滑動窗口技術(shù)可能要求緩沖器260保存來自前一個窗口的舊元組中的一些。如滾動窗口那樣,滑動窗口可以初始基于是否接收到所需數(shù)量的元組或預(yù)定義時間段是否已經(jīng)期滿來觸發(fā)。在表格200中,窗口化參數(shù)257進一步要求窗口啟動器255在初始窗口被觸發(fā)時的時間段之后的每一個時間段觸發(fā)新的窗口,或者替代地,每次接收到新的元組時觸發(fā)新的窗口。例如,如果流應(yīng)用想要每分鐘采樣的證券報價機(stock ticker)的四分鐘移動平均,則窗口啟動器255等待四分鐘(例如,時間2-5)直到等價四分鐘的數(shù)據(jù)(例如,Tl至T4)到達緩沖器,然后每次接收到新的元組時或另一分鐘過去時觸發(fā)新的窗口。因此,在時間6,窗口啟動器255觸發(fā)包含T2-T5的新窗口,在時間17,窗口啟動器255觸發(fā)包含T3-T6的新窗口,等等。注意,對于這個窗口化模式,緩沖器260可能排除來自前一個窗口的元組中的一個或多個,但與滾動窗口不同,前一個窗口中的元組之一仍然可以被包括在新窗口中。雖然在表格200中未示出,但是窗口啟動器255可以在觸發(fā)新的滑動窗口前等待經(jīng)過多個時間段或接收到多個元組。例如,窗口啟動器255可以在觸發(fā)第一窗口前等待四個時間段,但是其后每兩個時間段觸發(fā)新的滑動窗口。在該情況下,在時間7觸發(fā)第二窗口,并且第二窗口將包含(丁6,丁5,丁4,丁3)——即,緩沖器260排除Tl和T2。在此,僅T4和T3被包含在第一和第二窗口中,因為滑動窗口保持四個元組的最大尺寸。使用元組速率或異常來觸發(fā)窗口圖5圖示了根據(jù)本發(fā)明的一個實施例的、用于觸發(fā)窗口的部分操作器圖500。取代僅使用時間段或接收的元組的總數(shù)來觸發(fā)窗口,窗口啟動器255可以考慮接收元組的速率、被拋出的異常的數(shù)量、或特定操作器240拋出異常的速率。元組速率是根據(jù)預(yù)定義時間段的接收的元組的速率(例如,10元組/秒或2秒/元組)。圖5圖示了具有在操作器505和操作器510之間的執(zhí)行路徑515的部分操作器圖500,其中,操作器510向操作器505發(fā)送元組??梢源械?即,一次一個)或者以組為單位經(jīng)由執(zhí)行路徑515發(fā)送元組。與操作器505相關(guān)聯(lián)的窗口啟動器255可以監(jiān)視在與操作器505相關(guān)聯(lián)的緩沖器260中接收元組的速率。在一個實施例中,窗口化參數(shù)257可以包括用于量化測量的元組速率的至少一個預(yù)定義閾值。流計算應(yīng)用可以例如主要以慢速率在操作器505和510之間傳送元組,但是偶爾將具有速率劇烈增大的短突發(fā)(burst)。取代等待接收到最大數(shù)量的元組,或等待經(jīng)過預(yù)定義時間段,窗口啟動器255可以檢測突發(fā)(S卩,大于閾值的速率)并且觸發(fā)窗口。替代地,如果測量的速率小于閾值,則窗口啟動器255可以觸發(fā)窗口。即,慢速率可以指示需要操作器505立即開始處理在窗口內(nèi)的元組的重要事件。異常也可以被用作可以要求觸發(fā)窗口的重要事件的指示。本領(lǐng)域內(nèi)的普通技術(shù)人員公知異常和異常處理。諸如 Actionscript、Ada、BlitzMax> C++、C#、D、ECMAScript、Eiffel、Java ML>Object Pascal (例如,Delphi 和 Free Pascal 等)、Objective-C、Ocaml、PHP (自版本 5 起)PL/1、Prolog、Python、REALbasic> Ruby、Visual Prolog 和大多數(shù).NET語言的許多計算機語言內(nèi)置了對異常和異常處理的支持。如上所述,操作器可以提供小塊的可執(zhí)行代碼,該代碼被配置來處理流入處理單元內(nèi)的數(shù)據(jù)。可以以支持異常和異常處理的任何當(dāng)前或未來的計算機語言來編寫該可執(zhí)行代碼。通常,異常是改變程序執(zhí)行的正常流的特殊條件。異常的非限定性示例可以包括數(shù)格式異常、空指針異常和未找到文件異常等。當(dāng)與操作器510相關(guān)的可執(zhí)行代碼在處理元組的同時拋出異常時,在操作器510或505上的窗口啟動器255可以檢測該異常并且遞增計數(shù)。窗口啟動器255可以具有用于每一個特定異常的獨立計數(shù)(例如,空點異常計數(shù))或具有用于兩個或更多個選擇的異常的全局計數(shù)。窗口化參數(shù)257可以包括用于這些不同計數(shù)的閾值——即,一旦計數(shù)超過該閾值,則觸發(fā)窗口。具體地說,如果與操作器510相關(guān)聯(lián)的代碼拋出超過閾值的足夠異常時,則為操作器505觸發(fā)窗口。在一個實施例中,異??梢灾甘旧嫌尾僮髌?10有問題,以及下游操作器505應(yīng)當(dāng)前進并且評估它已經(jīng)接收的元組。在另一個實施例中,如果與操作器510相關(guān)聯(lián)的異常計數(shù)小于特定閾值,則窗口啟動器255可以觸發(fā)窗口。例如,如果異常計數(shù)在特定時間點或在特定數(shù)量的元組已經(jīng)流過操作器后小于閾值,貝1J窗口啟動器255可以觸發(fā)窗口。
在一個實施例中,窗口啟動器255可以考慮異常速率。類似于元組速率,窗口啟動器255可以將測量的異常速率——即,在一個時間段內(nèi)的異常的數(shù)量的比率——與閾值作比較。如果操作器510的異常速率超過或小于一個或多個閾值,則窗口啟動器255可以觸發(fā)用于操作器505的窗口。 而且,窗口啟動器255可以將元組或異常速率與多個閾值作比較,例如,如果速率超過第一閾值,則觸發(fā)窗口,并且如果速率小于第二較低閾值,則也觸發(fā)窗口。在一個實施例中,窗口啟動器255可以將當(dāng)前元組或異常速率與歷史速率作比較。在流應(yīng)用在運行的同時,窗口啟動器255可以持續(xù)地監(jiān)視相應(yīng)的速率。使用該數(shù)據(jù),窗口啟動器255可以通過例如平均歷史數(shù)據(jù)而動態(tài)地更新歷史速率??梢詫⒃摎v史速率與當(dāng)前速率作比較。例如,速率之間的差可以被表達為百分比——例如,當(dāng)前速率是歷史速率的50%。窗口化參數(shù)257可以存儲與這個差相關(guān)聯(lián)的一個或多個閾值。因此,如果當(dāng)前速率超過或小于歷史速率,則可以觸發(fā)窗口。該特征允許流應(yīng)用確定用于每一個執(zhí)行路徑的定制歷史元組速率或用于每一個操作器的歷史異常速率。在一個實施例中,流應(yīng)用可以執(zhí)行預(yù)定時間量以允許窗口啟動器255有足夠的數(shù)據(jù)點來開發(fā)歷史速率一例如,平均速率。一旦檢測到歷史速率,則窗口啟動器255可以將該歷史速率與當(dāng)前速率作比較以確定異常值——即,當(dāng)與歷史速率作比較時當(dāng)前速率是否太高或太低。在任何一種情況下,窗口啟動器255可以確定觸發(fā)窗口。在另一個實施例中,流應(yīng)用可以使用來自操作器圖的前一個執(zhí)行的數(shù)據(jù)。S卩,取代執(zhí)行應(yīng)用預(yù)定時間量以開發(fā)歷史速率,窗口啟動器255可以使用來自先前執(zhí)行同一或類似流應(yīng)用的數(shù)據(jù)來產(chǎn)生歷史速率。以這種方式,窗口啟動器255可以不在使用歷史速率觸發(fā)窗口之前將應(yīng)用執(zhí)行預(yù)定的時間量。圖6圖示了根據(jù)本發(fā)明的一個實施例的用于觸發(fā)窗口的部分操作器圖600。如所示,操作器610、615和620向操作器605傳送元組。這些操作器可以被一起融合到一個PE內(nèi),被定位在兩個或獨立的PE中,或者在不同的計算節(jié)點上被執(zhí)行。在一個實施例中,用于操作器605的窗口啟動器255可以在觸發(fā)窗口之前考慮執(zhí)行路徑625、630、635的元組速率的每一個。即,在操作器605中觸發(fā)窗口前,元組速率中的至少兩個必須超過至少一個預(yù)定閾值。替代地,如果元組速率中的至少一個超過第一閾值而元組速率中的另一個小于第二閾值,則窗口啟動器255可以觸發(fā)窗口。本領(lǐng)域內(nèi)的技術(shù)人員可以意識到當(dāng)比較多個元組速率以觸發(fā)窗口時可以考慮許多不同的組合??梢酝ㄟ^監(jiān)視操作器610、615和620中的異常來執(zhí)行類似的處理。操作器605的窗口啟動器255可以監(jiān)視由操作器610、615和620的至少兩個拋出的異常的數(shù)量。如果例如操作器610拋出滿足第一閾值的足夠的空指針異常,并且操作器615拋出滿足第二閾值的足夠的文件未找到異常,則窗口啟動器255可以觸發(fā)用于操作器605的窗口。再一次,本領(lǐng)域內(nèi)的普通技術(shù)人員可以認(rèn)識到當(dāng)在不同的操作器上觸發(fā)窗口時可以考慮在至少兩個操作器上的許多不同異常。而且,當(dāng)觸發(fā)單個窗口時考慮到多個操作器的這個處理可以用于參考圖5所述的異常速率。圖7圖示了根據(jù)本發(fā)明的一個實施例的用于觸發(fā)窗口的部分操作器圖700。具體地說,圖7圖示了元組速率、拋出的異常的總數(shù)、或與第一操作器相關(guān)聯(lián)的異常速率可以用于在操作器圖700中不在第一操作器的下游的第二操作器上觸發(fā)窗口。操作器710、715、720和725從操作器730接收元組。繼而,操作器710、715、720和725處理從操作器730接收的元組,并且向操作器705發(fā)送這些元組。然而,在該元組之一中的窗口啟動器255可以監(jiān)視元組速率、拋出的異常的數(shù)量、或與操作器710、715、720、725和730的一個或多個相關(guān)聯(lián)的異常速率,以在圖形700中的操作器的任何一個上觸發(fā)窗口。例如,假定操作器730向操作器710、715、720和725傳送與文本文件相關(guān)聯(lián)的元組。一旦在操作器710處接收到元組,則操作器710開始通過處理元組來解析該文件,以查找特定文本串——例如,文本A。類似地,操作器715解析文本文件以查找文本B,并且操作器720解析文本文件以查找文本C。只有當(dāng)操作器710、715和720找到相應(yīng)的文本時,它們才向操作器705發(fā)送元組。然而,操作器725在接收到文本文件時可能不立即開始解析它。相反,應(yīng)用程序員可能想要操作器725只有當(dāng)操作器710、715和720找到小數(shù)量的文本A、B和C的存在(occurrence)時才執(zhí)行(即,觸發(fā)包括元組的窗口,該元組包括文本文件)。因此,用于操作器725的窗口啟動器255可以監(jiān)視用于執(zhí)行路徑750、755和760的元組速率,并且如果相關(guān)聯(lián)的元組速率的每一個小于預(yù)定義閾值,則窗口啟動器255在操作器725上觸發(fā)窗口以使用其附加的分析處理文本文件。以這種方式,從操作器流動的元組速率可以用于在被監(jiān)視的操作器的上游、同一級或下游的操作器上觸發(fā)窗口。雖然這個示例討論了評估來自多個操作器(S卩,元組710、715、720)的元組速率,但是操作器725的窗口啟動器255可以考慮這些速率的子集或僅考慮速率之一以觸發(fā)其窗口。例如,如果由操作器725執(zhí)行的分析進一步評估文本A,則如果從操作器710流動的元組速率超過特定閾值,則窗口啟動器255可以觸發(fā)用于操作器725的窗口,而不論與其他操作器相關(guān)聯(lián)的元組速率如何。而且,可以通過考慮由操作器710、715、720的一個或多個拋出的異常的總數(shù)或與一個或多個操作器710、715、720相關(guān)聯(lián)的異常速率來執(zhí)行前述的示例。例如,如果由操作器725執(zhí)行的分析進一步評估文本B,則如果操作器715拋出空指針異常的速率小于特定閾值,則窗口啟動器255可以觸發(fā)用于操作器725的窗口(即,操作器以在文本文件中識別文本B為任務(wù))。即,流應(yīng)用可以被配置來只有當(dāng)操作器715能夠無故障(如由操作器715拋出異常的速率所示)地執(zhí)行時才使用處理能力和能量來執(zhí)行與操作器725相關(guān)聯(lián)的代碼。通常,也可以在參考圖7所述的實施例中使用在圖5和6中所述的功能的每一個。而且,在圖5-7中所述的實施例可以用在兩種類型的窗口化方案中:滾動窗口和滑動窗口。例如,取代依賴于接收的元組的數(shù)量來觸發(fā)窗口,可以監(jiān)視由特定操作器拋出的異常的數(shù)量。一旦例外計數(shù)達到最大,則觸發(fā)窗口。替代地,可以通過等待直到時間段過去來觸發(fā)第一滾動窗口,但是可以通過異常速率來觸發(fā)第二滾動窗口。關(guān)于滑動窗口,可以使用接收的元組的總數(shù)或時間段來觸發(fā)初始窗口,但是,可以根據(jù)例如元組速率來觸發(fā)當(dāng)觸發(fā)后續(xù)窗口時的遞增移位。即,用于觸發(fā)滑動和滾動窗口的典型參數(shù)可以與元組速率、拋出的異常的數(shù)量或異常速率組合。當(dāng)然,可以僅根據(jù)元組速率、檢測的異常的數(shù)量或異常速率來觸發(fā)滾動和滑動窗口。結(jié)論在流計算應(yīng)用中,可以使用元組在操作器之間發(fā)送數(shù)據(jù)。然而,接收操作器可以在這些元組到達時不評估它們,而是等待評估一組元組一即,窗口。當(dāng)與接收操作器相關(guān)聯(lián)的緩沖器達到最大窗口大小時或當(dāng)預(yù)定時間段已經(jīng)期滿時通常觸發(fā)窗口。另外,可以通過監(jiān)視元組速率一即,操作器接收元組的速率一來觸發(fā)窗口。如果元組速率超過或小于閾值時,則可以觸發(fā)窗口。而且,可以監(jiān)視異常的數(shù)量、或操作器拋出異常的速率。如果這些參數(shù)的任何一個滿足閾值,則可以觸發(fā)窗口,由此指示操作器評估包含在窗口內(nèi)的元組。在附圖中的流程圖和框示了根據(jù)本發(fā)明的各個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)方式的架構(gòu)、功能和操作。在這一點上,在流程圖或框圖中的每一個塊可以表示模塊、分段或代碼的部分,模塊、分段或代碼的部分包括用于實現(xiàn)指定的邏輯功能的一個或多個可執(zhí)行指令。也應(yīng)當(dāng)注意,在一些替代實現(xiàn)方式中,以框表示的功能可以不以在附圖中所述的順序出現(xiàn)。例如,根據(jù)所涉及的功能,連續(xù)示出的兩個塊可以事實上大體同時地被執(zhí)行,或者,有時可以以逆序來執(zhí)行塊。也可以注意到,可以通過執(zhí)行指定功能或行為的專用基于硬件的系統(tǒng)或?qū)S糜布陀嬎銠C指令的組合來實現(xiàn)框圖和/或流程示的每個塊和在框圖和/或流程示中的塊的組合雖然上面涉及本發(fā)明的實施例,但是在不偏離其基本范圍的情況下可以設(shè)計本發(fā)明的其他和另外的實施例,并且通過所附的權(quán)利要求來確定其范圍。
權(quán)利要求
1.一種用于處理數(shù)據(jù)的計算機實現(xiàn)的方法,包括: 接收要被多個操作器處理的流數(shù)據(jù)元組,所述操作器通過一個或多個計算機處理器的操作處理所接收的數(shù)據(jù)元組的至少一部分; 建立所述多個操作器的操作器圖,所述操作器圖限定至少一個執(zhí)行路徑,其中,所述多個操作器的第一操作器被配置來從至少一個上游操作器接收數(shù)據(jù)元組,并且向至少一個下游操作器發(fā)送數(shù)據(jù)元組; 確定在所述上游操作器基于所述流數(shù)據(jù)元組的至少一個執(zhí)行操作的同時出現(xiàn)的異常的當(dāng)前數(shù)量;并且 基于所述異常的數(shù)量在所述多個操作器中與所述上游操作器不同的至少一個操作器中觸發(fā)數(shù)據(jù)窗口,所述數(shù)據(jù)窗口包括多個數(shù)據(jù)元組。
2.根據(jù)權(quán)利要求1所述的方法,其中,在觸發(fā)了所述數(shù)據(jù)窗口后,所述至少一個操作器使用所述數(shù)據(jù)窗口中的所述多個數(shù)據(jù)元組的至少一個來執(zhí)行操作。
3.根據(jù)權(quán)利要求1所述的方法,其中,還基于所述異常的當(dāng)前數(shù)量是否超過或小于預(yù)定義閾值來觸發(fā)所述數(shù)據(jù)窗口。
4.根據(jù)權(quán)利要求1所述的方法,還包括: 確定從所述上游操作器拋出的異常的歷史數(shù)量; 將所述異常的歷史數(shù)量與所述異常的當(dāng)前數(shù)量作比較,以確定是否滿足閾值;并且 如果滿足所述閾值,則觸發(fā)所述數(shù)據(jù)窗口。
5.根據(jù)權(quán)利要求1所述 的方法,其中至少兩個上游操作器拋出異常,還包括: 測量針對所述至少兩個上游操作器的每一個的異常的當(dāng)前數(shù)量;以及 基于針對所述至少兩個上游操作器的每一個的異常的當(dāng)前數(shù)量在所述至少一個操作器中觸發(fā)所述數(shù)據(jù)窗口。
6.根據(jù)權(quán)利要求5所述的方法,其中,還基于針對所述至少兩個上游操作器的每一個的異常的當(dāng)前數(shù)量是否超過或小于一個或多個閾值觸發(fā)所述數(shù)據(jù)窗口,所述閾值基于下述之一: 預(yù)定義閾值,以及 針對所述至少兩個上游操作器的每一個的、異常的至少一個歷史數(shù)量與異常的當(dāng)前數(shù)量之間的差。
7.根據(jù)權(quán)利要求1所述的方法,其中,基于異常速率觸發(fā)所述數(shù)據(jù)窗口,所述異常速率是在預(yù)定義時間段期間由所述上游操作器拋出的異常的數(shù)量的比率。
8.一種用于處理數(shù)據(jù)的系統(tǒng),包括: 至少兩個計算節(jié)點,每一個計算節(jié)點包括至少一個計算機處理器,其中,所述至少兩個計算節(jié)點被配置為容納處理流數(shù)據(jù)元組的多個操作器的至少一個,所述操作器處理所接收的數(shù)據(jù)元組的至少一部分, 其中,所述多個操作器建立操作器圖,所述操作器圖限定至少一個執(zhí)行路徑,其中,所述多個操作器的第一操作器被配置為從至少一個上游操作器接收數(shù)據(jù)元組,并且向至少一個下游操作器發(fā)送數(shù)據(jù)元組;以及 窗口啟動器,所述窗口啟動器被配置為確定在所述上游操作器基于所述流數(shù)據(jù)元組的至少一個執(zhí)行操作的同時出現(xiàn)的異常的當(dāng)前數(shù)量,并且基于所述異常的數(shù)量在所述多個操作器中與所述上游操作器不同的至少一個操作器中觸發(fā)數(shù)據(jù)窗口,其中,所述數(shù)據(jù)窗口包括多個數(shù)據(jù)元組。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,在觸發(fā)了所述數(shù)據(jù)窗口后,所述至少一個操作器使用所述數(shù)據(jù)窗口中的所述多個數(shù)據(jù)元組的至少一個來執(zhí)行操作。
10.根據(jù)權(quán)利要求8所述的系統(tǒng),其中還基于所述異常的當(dāng)前數(shù)量是否超過或小于預(yù)定義閾值來觸發(fā)所述數(shù)據(jù)窗口。
11.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,所述窗口啟動器被配置為: 確定從所述上游操作器拋出的異常的歷史數(shù)量; 將所述異常的歷史數(shù)量與所述異常的當(dāng)前數(shù)量作比較,以確定是否滿足閾值;并且 如果滿足所述閾值,則觸發(fā)所述數(shù)據(jù)窗口。
12.根據(jù)權(quán)利要求8所述的系統(tǒng),其中至少兩個上游操作器拋出異常,其中,所述窗口啟動器被配置為: 測量針對所述至少兩個上游操作器的每一個的異常的當(dāng)前數(shù)量;以及 基于針對所述至少兩個上游操作器的每一個的異常的當(dāng)前數(shù)量在所述至少一個操作器中觸發(fā)所述數(shù)據(jù)窗口。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中,還基于針對所述至少兩個上游操作器的每一個的異常的當(dāng)前數(shù)量是否超過或小于一個或多個閾值觸發(fā)所述數(shù)據(jù)窗口,所述閾值基于下述之一: 預(yù)定義閾值,以及 針對所述至少兩個上游操作器的每一個的、異常的至少一個歷史數(shù)量與異常的當(dāng)前數(shù)量之間的差。
14.根據(jù)權(quán)利要求8所述的系統(tǒng),其中,基于異常速率觸發(fā)所述數(shù)據(jù)窗口,所述異常速率是在預(yù)定義時間段期間由所述上游操作器拋出的異常的數(shù)量的比率。
全文摘要
本公開提出了一種用于處理數(shù)據(jù)的計算機實現(xiàn)的方法和系統(tǒng)。在流計算應(yīng)用中,可以使用元組在操作器之間發(fā)送數(shù)據(jù)。然而,接收操作器可以在這些元組到達時不評估它們,而是等待評估一組元組——即窗口。通常當(dāng)與接收操作器相關(guān)聯(lián)的緩沖器達到最大窗口大小時或當(dāng)預(yù)定時間段已經(jīng)期滿時觸發(fā)窗口。另外,可以通過監(jiān)視元組速率——即操作器接收到元組的速率——來觸發(fā)窗口。如果元組速率超過或小于閾值,則可以觸發(fā)窗口。而且,可以監(jiān)視異常的數(shù)量或操作器拋出異常的速率。如果這些參數(shù)的任何一個滿足閾值,則可以觸發(fā)窗口,由此指示操作器評估包含在窗口內(nèi)的元組。
文檔編號G06F3/0481GK103207727SQ201310009009
公開日2013年7月17日 申請日期2013年1月10日 優(yōu)先權(quán)日2012年1月11日
發(fā)明者M.J.布蘭森, J.M.桑托蘇索, B.W.舒爾茨 申請人:國際商業(yè)機器公司