麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

用于基于流的調試的方法和系統的制作方法

文檔序號:6438230閱讀:257來源:國知局
專利名稱:用于基于流的調試的方法和系統的制作方法
技術領域
本發明涉及一種用于基于流的調試的方法和系統。
背景技術
當計算機數據庫變得極其復雜時,對數據庫系統的計算要求也快速增加。數據庫系統通常被配置為將存儲數據的過程與訪問、操縱或使用數據庫中存儲的數據進行分離。 更具體地說,數據庫使用這樣的模型其中數據首先被存儲,然后被索引,然后被查詢。但是,此模型無法滿足某些實時應用的性能要求。例如,數據庫系統接收和存儲入站數據的速率會限制可以處理或以其他方式計算多少數據,這又會限制數據庫應用實時處理大量數據的能力。為了解決此問題,出現了基于流的計算和基于流的數據庫計算作為數據庫系統開發技術。目前存在這樣的產品所述產品允許用戶創建在流數據到達數據庫文件之前對流數據進行處理和查詢的應用。借助這種新興的技術,用戶可以在入站數據記錄仍在流入之時指定應用于它們的處理邏輯,且結果可以在幾毫秒之內得出。使用此類處理構建應用開啟了新的編程范例,它將允許開發各種新穎的應用、系統和過程并且為應用編程人員和數據庫開發人員帶來了新的挑戰。

發明內容
本發明的實施例提供了用于調試基于流的數據庫應用中的一個或多個處理單元的技術。例如,本發明的一個實施例包括一種調試從一個或多個計算節點上執行的多個處理單元形成的流應用的方法。所述方法通常可包括接收所述多個處理單元中的第一處理單元內的調試斷點的位置指示,以及評估運算符圖以識別所述第一處理單元相對于所述多個處理單元中的一個或多個其他處理單元的位置。此方法還可包括修改所述流應用的狀態以允許調試所述第一處理單元以及啟動所述第一處理單元的調試會話。本發明的另一實施例包括包含程序的計算機可讀存儲介質,當執行所述程序時, 所述程序將執行用于調試從一個或多個計算節點上執行的多個處理單元形成的流應用的操作。所述操作本身通常可包括接收所述多個處理單元中的第一處理單元內的調試斷點的位置指示,以及評估運算符圖以識別所述第一處理單元相對于所述多個處理單元中的一個或多個其他處理單元的位置。所述操作還可包括修改所述流應用的狀態以允許調試所述第一處理單元以及啟動所述第一處理單元的調試會話。本發明的又一實施例包括具有多個計算節點的系統,每個計算節點包括處理器和存儲器。所述計算節點被配置為執行流應用的處理單元。所述系統還可包括同樣包含處理器和存儲器的管理系統。所述存儲器存儲流調試應用,所述流調試應用當在所述管理系統上執行時,被配置為執行用于調試在所述多個計算節點上執行的所述流應用的操作。所述操作本身通常可包括接收所述多個處理單元中的第一處理單元內的調試斷點的位置指示,以及評估運算符圖以識別所述第一處理單元相對于所述多個處理單元中的一個或多個其他處理單元的位置。所述操作還可包括修改所述流應用的狀態以允許調試所述第一處理單元以及啟動所述第一處理單元的調試會話。


通過參考附圖,可以獲得詳細地實現和理解上述各方面的方式,以及上面簡要介紹的本發明實施例的更具體的說明。但是需要指出,附圖僅示出本發明的典型實施例,因此不能被認為是對本發明的范圍的限制,因為本發明可允許其他等同的有效實施例。圖1A-1B示出根據本發明的一個實施例的被配置為執行流數據庫應用的計算基礎設施;圖2是根據本發明的一個實施例的圖I的分布式計算節點的更詳細的視圖;圖3是根據本發明的一個實施例的流數據庫應用中的管理計算系統的更詳細的視圖;圖4示出根據本發明的一個實施例的流數據庫應用中的計算節點的一個實例;圖5示出根據本發明的一個實施例的調試流數據庫應用中的處理單元的方法;以及圖6-8提供根據本發明的各實施例的首先在圖4中示出的被修改以例示調試流應用的情況的計算節點和流應用的實例。
具體實施例方式在流應用中,運算符相互連接以便數據從一個處理單元流向下一個處理單元(例如通過TCP/IP套接字)。通過跨節點分布應用(通過創建許多小的可執行代碼段(運算符))以及在多個節點上復制處理單元并在處理單元之間進行負載平衡來獲得可伸縮性。 流應用中的處理單元(和運算符)可以融合在一起以形成較大的處理單元。這樣做可允許處理單元共享公共進程空間,從而導致運算符之間的通信遠快于使用進程間通信技術(例如,使用TCP/IP套接字)獲得的通信。此外,處理單元可以被動態地插入表示通過流應用的數據流的運算符圖或被從運算符圖動態地刪除,以及在運行時與流應用融合或取消融合。盡管可以通過查看運行代碼所生成的日志文件來調試分布式流環境中的處理單元,但是通常還需要完整的調試會話。然而,無論是否命中斷點,運行調試器都會減緩被調試進程的速度,并且觸發斷點可導致流過正在調試的運算符的數據大幅減緩(如果不是完全暫停)。因此,運行正在調試的處理單元可導致“流阻塞”,因為流向該處理單元中的運算符的數據流不會停止流動。更概括地說,流計算基于流不斷流過運算符的前提。當多個處理單元融合在一起以形成單個運行進程時,觸發一個處理單元中的斷點會導致融合后的處理單元中的所有處理單元都停止處理,從而可能使大部分運算符圖停止。另一方面,一組解除融合后的處理單元可能包括被配置為加入來自第二和第三處理單元的數據流的第一處理單元。如果觸發第二或第三處理單元中的斷點,則可能破壞流處理結果。本發明的各實施例提供了調試基于流的應用中的一個或多個處理單元的技術。具體地說,本發明的各實施例提供了以降低調試一個或多個處理單元對整體運行環境的影響的方式在調試處理單元期間修改流應用的狀態的技術。例如,假設需要調試具有二十個運算符的融合后的處理單元中的一個運算符。在這種情況下,流調試器可以被配置為從運行的流中移除融合后的處理單元、解除融合運算符,然后將它們重新插入運行的流。具有被調試的單個運算符的處理單元然后可作為獨立運行進程(具有其自己的進程ID (PID)和存儲器空間)執行,這允許獨立于其他十九個運算符而調試該運算符。一旦調試會話完成,調試器可重新融合已解除融合的運算符,將具有二十個融合后的運算符的處理單元恢復到調試會話之前存在的同一運行狀態。在另一實施例中,調試器可以作為調試會話的一部分而將多個獨立處理單元融合在一起。這可用于在調試一個運算符時暫停一部分運算符圖的運行。例如,此操作可允許滿足處理單元之間的任何相關性。類似地,當正在調試給定處理單元時,調試器可以在適當情況下阻止數據進入流。這可在所調試運算符圖中的處理單元的上游(下游)的任何點處發生。更具體地說,調試器可阻止數據流向源運算符(即,是流過運算符圖的數據的源點的處理單元)或阻止數據流向運算符圖中的特定部分(或特定處理單元)。相反地,調試器可被配置為將入站數據的某些元組識別為免于斷點。作為阻止數據流動的備選方式,可以“丟棄(load shed)”正在調試的處理單元處的數據(或選擇性地允許數據在某些條件下流動)。這可有助于避免在調試會話完成時由于數據而使系統過載;尤其是在數據因未及時處理而可能失去價值時。在另一實施例中,調試器可以被配置為復制處理單元,以便在復制的單元中進行調試。流出被調試處理單元的數據可以被丟棄,而不是被發送到鏈接的下游運算符。此外,可以將正在調試的運算符輸出的結果與實際運算符相比較以作為對調試進程準確性的檢查。以下參考了本發明的各實施例。但是應該理解,本發明并不限于描述的特定實施例。相反,將構想以下特性和元素(無論是否與不同實施例相關)的任意組合以實施和實現本發明。此外,雖然本發明的各實施例可以相對于其他可能解決方案和/或相對于現有技術實現優點,但特定優點是否由給定實施例實現并不會限制本發明。因此,以下方面、特性、實施例和優點僅是示例性的,并不被視為所附權利要求的元素或限制,除非在權利要求 (多個)中明確指出。同樣,對“本發明”的引用不應被理解為在此披露的任何發明主題的概括,并且不應被視為所附權利要求的元素或限制,除非在權利要求(多個)中明確指出。如本領域的技術人員將理解的,本發明的各方面可以體現為系統、方法或計算機程序產品。因此,本發明的各方面可以采取完全硬件實施例、完全軟件實施例(包括固件、 駐留軟件、微代碼等)或組合了在此通常被稱為“電路”、“模塊”或“系統”的軟件和硬件方面的實施例的形式。此外,本發明的各方面可以采取體現在一個或多個計算機可讀介質(在介質中包含計算機可讀程序代碼)中的計算機程序產品的形式。可以使用一個或多個計算機可讀介質的任意組合。所述計算機可讀介質可以是計算機可讀信號介質或計算機可讀存儲介質。計算機可讀存儲介質例如可以是(但不限于) 電、磁、光、電磁、紅外線或半導體系統、裝置或設備或它們的任意適當組合。計算機可讀存儲介質的更具體的實例(非窮舉列表)可以包括以下項具有一條或多條線的電連接、便攜式計算機軟盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦寫可編程只讀存儲器 (EPR0M或閃存)、光纖、便攜式光盤只讀存儲器(CD-ROM)、光存儲設備、磁存儲設備或它們的任意適當組合。在本文檔的上下文中,計算機可讀存儲介質可以是任何能夠包含或存儲由指令執行系統、裝置或設備使用或與所述指令執行系統、裝置或設備結合的程序的有形介質。計算機可讀信號介質可以包括例如在基帶中或作為載波的一部分傳播的帶有計算機可讀程序代碼的數據信號。此類傳播信號可以采取任何不同的形式,包括但不限于電磁、光或它們的任意適合組合。計算機可讀信號介質可以是任何并非計算機可讀存儲介質并且可以傳送、傳播或傳輸由指令執行系統、裝置或設備使用或與所述指令執行系統、裝置或設備結合的程序的計算機可讀介質。可以使用任何適當的介質(包括但不限于無線、有線、光纜、RF等或它們的任意適當組合)來傳輸計算機可讀介質中包含的程序代碼。用于執行本發明的各方面的操作的計算機程序代碼可以使用一種或多種編程語目的任意組合來編寫,所述編程語目包括諸如Java、Smalltalk、C++之類的面向對象的編程語言或者諸如“C”編程語言或類似的編程語言之類的常規過程編程語言。所述程序代碼可以完全地在用戶的計算上執行、部分地在用戶的計算機上執行、作為一個獨立的軟件包執行、部分在用戶的計算機上部分在遠程計算機上執行、或者完全在遠程計算機或服務器上執行。在后一種情形中,遠程計算機可以通過任何種類的網絡一包括局域網(LAN)或廣域網(WAN) —連接到用戶的計算機,或者,可以(例如利用因特網服務提供商來通過因特網)連接到外部計算機。下面參考根據本發明的各實施例的方法、裝置(系統)和計算機程序產品的流程圖和/或方塊圖對本發明的各方面進行描述。將理解,所述流程圖和/或方塊圖的每個方塊以及所述流程圖和/或方塊圖中的方塊的組合可以由計算機程序指令來實現。這些計算機程序指令可以被提供給通用計算機、專用計算機或其他可編程數據處理裝置的處理器以產生機器,以便通過所述計算機或其他可編程數據處理裝置的處理器執行的所述指令產生用于實現在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的裝置。這些計算機程序指令也可以被存儲在可引導計算機、其他可編程數據處理裝置或其他設備以特定方式執行功能的計算機可讀介質中,以便存儲在所述計算機可讀介質中的所述指令產生一件包括實現在所述一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的指令的制品。所述計算機程序指令還可被加載到計算機、其他可編程數據處理裝置或其他設備,以導致在所述計算機、其他可編程裝置或其他設備上執行一系列操作步驟以產生計算機實現的過程,從而在所述計算機或其他可編程裝置上執行的指令提供用于實現在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的過程。本發明的各實施例可以通過云計算基礎設施被提供給最終用戶。云計算通常指通過網絡作為服務來供應可擴展的計算資源。更正式地說,云計算可以被定義為在計算資源及其基礎技術架構(例如,服務器、存儲設備、網絡)之間提供抽象的計算能力,從而能夠對可配置的計算資源共享池進行方便、按需的網絡訪問,可以以最少的管理工作或服務提供商交互快速地供應和釋放所述可配置的計算資源。因此,云計算允許用戶訪問“云”中的虛擬計算資源(例如,存儲設備、數據、應用,甚至完整的虛擬化計算系統),而不考慮用于提供所述計算資源的基礎物理系統(或這些系統的位置)。通常,云計算資源通過按使用付費的方式被提供給用戶,其中用戶僅針對實際使用的計算資源(例如,用戶使用的存儲空間量或用戶實例化的虛擬化系統的數量)付費。用戶可以通過因特網在任何時間、從任何位置訪問駐留在云中的任何資源。在本發明的上下文中,用戶可以訪問云中提供的應用或相關數據。例如,用于創建流數據庫應用的節點可以是由云服務提供商托管的虛擬機。圖1A-1B示出了根據本發明的一個實施例的被配置為執行流應用的計算基礎設施100。如所示出的,計算基礎設施100包括管理系統105和多個計算節點130卜4,每個計算節點連接到通信網絡120。此外,管理系統105包括運算符圖132和流管理器134。如下面更詳細描述的,運算符圖132表示從一個或多個源處理單元(PE)開始一直到一個或多個匯(sink)處理單元的流應用。數據元素流入流應用的源PE并由該PE處理。通常,處理單元從流接收具有數據元素的N元組以及將具有數據元素的N元組發出到流(除了流在該處終止的匯PE之外)。當然,由處理單元接收的N元組不必是向下游發送的同一 N元組。此外,處理單元可以被配置為以不同于N元組的格式接收或發出數據(例如,處理單元可交換標記為XML文檔的數據)。此外,每個處理單元可以被配置為對所接收的元組執行任何形式的數據處理功能,例如包括寫入數據庫表或執行其他數據庫操作(例如數據聯接、拆分、讀取等)以及執行其他數據分析功能或操作。流管理器134可以被配置為監視在計算節點130卜4上運行的流應用,以及更改運算符圖132的結構。例如,流管理器134可以將處理單元(PE)從一個計算節點130移動到另一個節點,以便例如管理計算基礎設施100中的計算節點130的處理負載。進而,流管理器134可以通過插入、刪除、融合、解除融合或以其他方式修改在計算節點130“上運行的處理單元(或何種數據元組流入處理單元)來控制流應用。圖IB示出了包括十個在計算節點13(V4上運行的處理單元(標記為PE1-PE10)的實例運算符圖。雖然處理單元可以作為獨立運行的進程(具有它自己的進程ID(PID)和存儲器空間)執行,但是也可以融合多個處理單元以作為單個進程(具有PID和存儲器空間) 運行。在兩個(或更多)處理單元獨立運行的情況下,可以使用網絡套接字(例如,TCP/IP 套接字)進行進程間通信。但是,當進程融合在一起時,融合后的處理單元可以使用更快速的通信技術在處理單元(以及每個處理單元中的運算符)之間傳遞N元組(或其他數據)。如圖所示,運算符圖從源PE 135 (標示為PEl)開始并在PE 140"(標示為PE6和 PE10)結束。計算節點UO1包括源PEl以及PE2和PE3。源PEl發出PE2和PE3所接收的元組。例如,PEl可以拆分在元組中接收的數據單元并將某些數據單元傳遞到PE2,同時將其他數據元素傳遞到PE3。流向PE2的數據產生被發出到計算節點1302上的PE4的元組。 由PE4發出的數據元組流向匯PE6 140lo類似地,從PE3流向PE5的數據元組也到達匯PE6 HOp因此,除了對于此實例運算符圖是匯之外,PE6可以被配置為執行聯接運算,從而組合從PE4和PE5接收的元組。此實例運算符圖還示出了從PE3流向計算節點1303上的PE7的數據元組,計算節點1303本身示出了流向PE8并循環返回PE7的數據元組。從PE8發出的數據元組流向計算節點1304上的PE9,PE9又發出要由匯PElO 1402處理的元組。圖2是根據本發明的一個實施例的圖1A-1B的計算節點130的更詳細的視圖。如所示出的,計算節點130包括但不限于中央處理單元(CPU) 205、網絡接口 215、互連220、存儲器225和存儲單元230。計算節點130還可以包括用于將I/O設備212 (例如,鍵盤、顯示器和鼠標設備)連接到計算節點130的I/O設備接口 210。CPU 205檢索和執行存儲在存儲器225中的編程指令。類似地,CPU205存儲和檢
8索駐留在存儲器225中的應用數據。互連220用于在CPU 205、I/O設備接口 210、存儲單元230、網絡接口 215和存儲器225之間傳輸編程指令和應用數據。所包括的CPU 205表示單個CPU、多個CPU、具有多個處理核心的單個CPU等。所包括的存儲器225通常表示隨機存取存儲器。諸如硬盤驅動器、固態設備(SSD)或閃存存儲驅動器之類的存儲單元230可以存儲非易失性數據。在此實例中,存儲器225包括融合后的處理單元(PE) 235、解除融合后的PE 245、 調試器應用250以及流連接數據255。融合后的PE 235包括一系列運算符240。如上所述, 每個運算符240可以提供被配置為處理流入處理單元(例如,PE 235)的數據以及將數據發出到該PE中的其他運算符240和流應用中的其他PE的一小段可執行代碼。此類PE可以位于同一計算節點130(例如,解除融合后的PE 245)上,也可以位于通過數據通信網絡120 訪問的其他計算節點上。流連接數據255表示計算節點130上的PE之間的連接(例如,融合后的PE 240和解除融合后的PE 245之間的TCP/IP套接字連接),以及到具有流應用中的上游或下游PE的其他計算節點130的連接(也通過TCP/IP套接字(或其他進程間數據通信機制))。緩沖的流數據260表示從上游處理單元(或從流應用的數據源)流入計算節點 105的數據的存儲空間。例如,緩沖的流數據可以包括等待由PE240或245之一處理的數據元組。緩沖的流數據260還可以存儲由PE 240或245執行的數據處理的結果,所述結果將被發送到下游處理單元(或被丟棄)。調試器250提供被配置為允許開發人員調試計算節點130上運行的處理單元245 的軟件應用。例如,調試器250可用于設置斷點、執行指令中的指令步進函數調用、檢查變量以及提供其他各種用于調試處理單元245的功能和/或特性。在本發明的上下文中,調試器250可以被配置為選擇性地融合和解除融合PE (或以其他方式修改流應用的狀態)以促進調試過程。例如,在一個實施例中,調試器可以如開發人員指定的那樣融合和解除融合 PE。備選地,調試器250可被配置為提供用于調試一個或多個給定處理單元的流狀態。為此,調試器250可以與管理系統130上的流調試器交互以分析運算符圖以及處理單元跨一系列計算節點105的分布,以便確定如何修改與流應用關聯的運算符圖。除了融合和解除融合處理單元之外,調試器250還可以例如通過以下方式修改流應用的運行狀態暫停(或限制)跨被調試PE的數據流、指定不參與調試過程的數據、復制PE以創建PE的調試副本, 或執行其他操作以允許調試一個或多個處理單元。圖3是根據本發明的一個實施例的圖I的服務器計算系統105的更詳細的視圖。 如所示出的,服務器計算系統105包括但不限于中央處理單元(CPU) 305、網絡接口 315、互連320、存儲器325和存儲單元330。客戶機系統130還可以包括將I/O設備312 (例如,鍵盤、顯示器和鼠標設備)連接到服務器計算系統105的I/O設備接口 310。與圖2的CPU 205 一樣,CPU 305被配置為檢索和執行存儲在存儲器325和存儲單元330中的編程指令。類似地,CPU 305被配置為存儲和檢索駐留在存儲器325和存儲單元330中的應用數據。互連320被配置為在CPU 305、I/O設備接口 310、存儲單元330、 網絡接口 315和存儲器325之間移動諸如編程指令和應用數據之類的數據。與CPU 205 — 樣,所包括的CPU 305表示單個CPU、多個CPU、具有多個處理核心的單個CPU等。所包括的存儲器325通常表示隨機存取存儲器。網絡接口 315被配置為通過通信網絡120傳輸數據。雖然被示為單個單元,但存儲單元330可以是固定和/或可移動的存儲設備(例如固定盤驅動器、可移動存儲器卡、光存儲設備、SSD或閃存設備、網絡連接存儲(NAS)或到存儲區域網絡(SAN)設備的連接)的組合。如圖所示,存儲器325存儲流調試器335、流編輯器300以及流管理器132。存儲單元330包括運算符圖134。如上所述,流調試器可用于管理一個(或多個)計算節點105 上的處理單元(PE)的調試。例如,流調試器335可確定一個處理節點應與其他PE融合(或解除融合)。在這種情況下,流調試器可確定(通過運算符圖)一大組PE已在一個計算節點上融合,但是調試斷點僅包括在幾個處理單元中。在這種情況下,流調試器335可決定將具有斷點的PE與該較大的組解除融合。在一個實施例中,流調試器335通過調用流編輯器 340以根據需要重新編輯PE/運算符源代碼的單元來解除融合PE。在當前實例中,帶有斷點的PE可被重新編輯成第一 PE,而剩余的PE (來自融合后的PE)被重新編輯成第二 PE。準備就緒之后,流管理器132可以從運行的流中移除融合后的PE,并代之以流編輯器340所生成的第一和第二 PE。之后,命中第一 PE中的斷點,第一 PE停止執行而不破壞第二 PE所執行的任何處理。圖4示出了根據本發明的一個實施例的流應用中的計算節點的實例。如所示出的,計算節點1302上的融合后的處理單元405包括三個處理單元(標記為PE1-PE3),處理單元405接收N元組數據流并將N元組發出到計算節點1303上的處理單元410 (標記為PE4)。 在此實例中,融合后的處理單元405包括源PE 135 (標記為PEl),源PE 135接收包括〈姓名,部門,薪金,性別 > 的元組。PEl獲得此N元組,并根據由PEl接收的元組中的性別值生成一組被發送到PE2的元組和另一組被發送到PE3的元組。依次地,PE2和PE3針對從PEl 接收的每個元組執行數據庫寫入,并生成被發送到PE4的包括〈姓名,部門,薪金 > 的元組。 一旦接收到該元組,PE4就訪問第三方Web服務并生成在流應用中進一步向下游發送的元組。圖5示出根據本發明的一個實施例的調試流數據庫應用中的處理單元的方法 500。如圖所示,方法500從步驟505開始,其中調試器應用接收流應用的運算符圖中包括的處理單元的斷點指示。在步驟510,調試器應用可識別該處理單元在運算符圖中相對于其他處理單元的位置。根據此位置,調試器應用可以確定融合(或解除融合)運算符圖中的處理單元(步驟515)。此外,調試器應用可以例如通過復制帶有斷點的處理單元或使特定數據元組(或數據流)免于調試來對流應用的操作做出其他更改。類似地,調試器應用可以指定應阻止某些處理單元發送(或接收)數據元組,或應丟棄調試會話期間生成的數據處理結果。在步驟520,任何已經融合或解除融合的PE都可以被重啟并部署到應用流(包括帶有斷點的PE)。在步驟525,一旦PE在應用流中運行(并且調試器選擇對流應用做出任何其他更改),便可評估被調試PE的操作。例如,當觸發斷點時,被調試PE可暫停執行,從而允許開發人員接著通過步進函數調用以逐步的方式執行該PE,以便檢查變量和執行其他任何調試功能以評估處理單元。同時,數據元組繼續流向正在被調試的PE并可以被存儲在緩沖區中。也就是說,一旦觸發斷點,就可以緩沖流向正在被調試的PE的元組,直到該PE 恢復執行。在步驟530,一旦調試會話完成,調試應用便可恢復流應用的狀態,撤銷為了支持調試會話所做的任何更改。相應地,可以解除融合(或再融合)作為調試會話一部分融合 (或解除融合)的PE、可以恢復元組流,或者可以丟棄緩沖的數據結果,可以刪除重復的處
理單元等。圖6-8提供根據本發明的各實施例的首先在圖4中示出的被修改以例示調試流應用的情況的計算節點和流應用的實例。首先,圖6示出圖4的融合后的處理單元405被部分地解除融合以允許調試處理單元之一的實例。假設開發人員在PE2中添加了一個或多個斷點。在這種情況下,調試器應用可確定能夠獨立于PEl和PE3執行的處理而調試PE2,并且從融合后的處理單元405解除融合PE2。因此,如圖所示,融合后的PE 410已經被修改為刪除PE2,從而形成部分解除融合的PE 405’。此外,PE2現在作為解除融合的PE 605執行。將PE2作為獨立進程運行允許在數據元組流過部分解除融合的PE 405’時調試PE2而不延緩應用流。同時,運算符圖的基本結構保持不變;元組仍然首先流向PE1,PE1生成發送到PE2和PE3的元組。類似地,圖7示出圖4的處理單元410與其他PE融合之后的實例。在該實例中, 假設用戶在PE4中放置斷點。在這種情況下,調試器應用可確定下游處理單元(PE5)具有相關性,這樣當PE4停止執行時,PE5也應停止執行。例如,PE5可以被配置為按照指定間隔定期從PE4接收數據。給定此相關性,當用戶在PE4中插入斷點時,調試器應用可將PE4 和PE5融合成融合后的處理單元410’。這允許在不破壞PE5的操作的情況下調試PE4,因為當命中PE4中的斷點時,將停止執行PE4和PE5兩者的操作。圖8示出修改圖4的處理單元410的另一實例。在該實例中,用戶再次在PE 410(標示為PE4)中放置斷點。但是在此情況下,假設調試器應用確定調試PE 410不應破壞通過應用流流向PE 805(標示為PE5)的數據。在這種情況下,調試器應用可以創建調試克隆單元(clone)410’并將該克隆單元插入應用流。此結果在圖8中示出,其中從PE 405 流出的數據被復制并被發送到PE 410和調試克隆單元410’兩者。因此,PE 410繼續處理流并將元組發出到PE 805所接收的流。同時,從PE 405流出的數據還被發送到調試克隆單元410’并將元組輸出到調試日志。這允許調試器在不破壞應用流的情況下針對PE 410’ 運行調試會話。 有利地,本發明的上述實施例提供了調試基于流的應用中的一個或多個處理單元的技術。具體地說,本發明的各實施例提供了通過選擇性地融合(解除融合)在一組計算節點上運行的處理單元,以降低調試一個或多個處理單元對總體運行環境的影響的方式來調試處理單元的技術。除了融合和解除融合處理單元以外,調試應用和流管理器還可以以各種方式修改應用流中的數據流以盡量減少由調試會話導致的任何破壞。附圖中的流程圖和方塊圖示出了根據本發明的各種實施例的系統、方法和計算機程序產品的可能實施方式的架構、功能和操作。在此方面,所述流程圖或方塊圖中的每個方塊都可以表示代碼的模塊、段或部分,所述代碼包括用于實現指定的邏輯功能(多個)的一個或多個可執行指令。還應指出,在某些備選實施方式中,在方塊中說明的功能可以不按圖中說明的順序發生。例如,示為連續的兩個方塊可以實際上被基本同時地執行,或者某些時候,取決于所涉及的功能,可以以相反的順序執行所述方塊。還將指出,所述方塊圖和/或流程圖的每個方塊以及所述方塊圖和/或流程圖中的方塊的組合可以由執行指定功能或操作的基于專用硬件的系統或專用硬件和計算機指令的組合來實現。
雖然上述內容涉及本發明的各實施例,但可以在不偏離本發明的基本范圍的情況下設計本發明的其他和進一步的實施例,并且本發明的范圍由以下權利要求確定。
權利要求
1.一種調試從一個或多個計算節點上執行的多個處理單元形成的流應用的方法,所述方法包括接收所述多個處理單元中的第一處理單元內的調試斷點的位置指示;評估運算符圖以識別所述第一處理單元相對于所述多個處理單元中的一個或多個其他處理單元的位置;修改所述流應用的狀態以允許調試所述第一處理單元;以及啟動所述第一處理單元的調試會話。
2.如權利要求I中所述的方法,其中每個處理單元在所述計算節點中的一個給定計算節點上作為分配有進程ID的計算進程而執行。
3.如權利要求I中所述的方法,其中所述第一處理單元被配置為接收第一N元組、處理所述第一 N元組,以及生成發送到第二處理單元的第二 N元組。
4.如權利要求I中所述的方法,其中修改所述流應用的狀態以允許調試所述第一處理單元包括生成所述第一處理單元的調試克隆單元;將所述斷點插入所述調試克隆單元;以及將所述調試克隆單元插入所述流應用。
5.如權利要求I中所述的方法,其中修改所述流應用的狀態以允許調試所述第一處理單元包括暫停至少第二處理單元的執行;從所述第一和第二處理單元生成融合后的處理單元;將所述斷點插入所述融合后的處理單元;以及將所述融合后的處理單元插入所述流應用。
6.如權利要求I中所述的方法,其中所述第一處理單元是包括所述第一處理單元和第二處理單元的融合后的處理單元,并且其中修改所述流應用的狀態以允許調試所述第一處理單元包括暫停所述第一處理單元的執行;生成包括所述第一處理單元的第一解除融合后的處理單元;將所述斷點插入所述第一解除融合后的處理單元;生成包括至少所述第二處理單元的第二解除融合后的處理單元;將所述第一和第二解除融合后的處理單元插入所述流應用。
7.如權利要求I中所述的方法,還包括在所述調試會話之后,恢復所述流應用的狀態。
8.—種調試從一個或多個計算節點上執行的多個處理單元形成的流應用的系統,所述系統包括多個計算節點,每個計算節點包括處理器和存儲器,其中所述計算節點被配置為執行流應用的處理單元;以及包括至少處理器和存儲器的管理系統,其中所述存儲器存儲流調試應用,所述流調試應用當在所述管理系統上執行時,被配置為執行用于調試在所述多個計算節點上執行的所述流應用的操作,所述操作包括接收所述多個處理單元中的第一處理單元內的調試斷點的位置指示;評估運算符圖以識別所述第一處理單元相對于所述多個處理單元中的一個或多個其他處理單元的位置;修改所述流應用的狀態以允許調試所述第一處理單元;以及啟動所述第一處理單元的調試會話。
9.如權利要求8中所述的系統,其中每個處理單元在所述計算節點中的一個給定計算節點上作為分配有進程ID的計算進程而執行。
10.如權利要求8中所述的系統,其中所述第一處理單元被配置為接收第一N元組、處理所述第一 N元組,以及生成發送到第二處理單元的第二 N元組。
11.如權利要求8中所述的系統,其中修改所述流應用的狀態以允許調試所述第一處理單元包括生成所述第一處理單元的調試克隆單元;將所述斷點插入所述調試克隆單元;以及將所述調試克隆單元插入所述流應用。
12.如權利要求8中所述的系統,其中修改所述流應用的狀態以允許調試所述第一處理單元包括暫停至少第二處理單元的執行;從所述第一和第二處理單元生成融合后的處理單元;將所述斷點插入所述融合后的處理單元;以及將所述融合后的處理單元插入所述流應用。
13.如權利要求8中所述的系統,其中所述第一處理單元是包括所述第一處理單元和第二處理單元的融合后的處理單元,并且其中修改所述流應用的狀態以允許調試所述第一處理單元包括暫停所述第一處理單元的執行;生成包括所述第一處理單元的第一解除融合后的處理單元;將所述斷點插入所述第一解除融合后的處理單元;生成包括至少所述第二處理單元的第二解除融合后的處理單元;將所述第一和第二解除融合后的處理單元插入所述流應用。
14.如權利要求8中所述的系統,其中所述操作還包括在所述調試會話之后,恢復所述流應用的狀態。
全文摘要
本發明涉及一種用于基于流的調試的方法和系統。描述了通過選擇性地融合(解除融合)在一組計算節點上運行的處理單元,以降低調試一個或多個處理單元對總體運行環境的影響的方式,調試基于流的數據庫應用中的一個或多個處理單元的技術。除了融合和解除融合處理單元或以其他方式修改流應用的狀態以外,調試應用和流管理器還可以以各種方式修改應用流中的數據流以盡量減少由調試會話導致的任何破壞。
文檔編號G06F17/30GK102591899SQ20111036007
公開日2012年7月18日 申請日期2011年11月14日 優先權日2010年11月30日
發明者E·L·巴斯尼斯, J·M·桑多索索, M·D·普法伊費爾, R·K·克拉迪克 申請人:國際商業機器公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 大连市| 德清县| 靖安县| 庆元县| 高平市| 鸡西市| 饶阳县| 张家川| 曲沃县| 昌宁县| 田林县| 启东市| 毕节市| 闽清县| 昂仁县| 张家界市| 赣榆县| 舞阳县| 达日县| 通海县| 莎车县| 商城县| 乌兰察布市| 汾西县| 龙江县| 新沂市| 监利县| 平遥县| 蚌埠市| 萝北县| 北京市| 维西| 新营市| 疏附县| 凌云县| 赤壁市| 连城县| 高安市| 涞水县| 西畴县| 寿光市|