處理基於圖的應用中的事務的製作方法
2023-04-26 10:12:36 1
專利名稱:處理基於圖的應用中的事務的製作方法
技術領域:
本公開涉及處理基於圖的應用中的事務(transaction)。
背景技術:
常常可以通過有向圖將複雜計算表示為數據流,其中該計算的組件(component) 與圖的頂點相關聯,並且組件之間的數據流對應於圖的鏈路(弧、邊)。在美國專利 5966072,EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS 中描述了實現這種基於圖的計算的系統。執行基於圖的計算的一種方法是執行多個進程,每個進程與圖的不同頂點相關聯,並且根據圖的鏈路在所述進程之間建立通信路徑。例如,通信路徑可以使用TCP/IP或 UNIX域套接字,或者使用共享存儲器來在進程之間傳遞數據。
發明內容
在一個方面,總的來說,一種計算機實現的方法包括通過以下方式準備具有多個節點的基於圖的計算標識至少第一集合的圖組分以處理計算中的多個事務;以及將第一組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第一事務相關聯,並且將第二組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第二事務相關聯,所述節點表示由一個或多個鏈路連接的圖組分,所述鏈路表示圖組分之間的數據流。該方法包括執行基於圖的計算以便處理至少第一事務和第二事務,包括延遲由第一集合的圖組分對與第二組的初始數據記錄對應的數據操作的執行,直到第一集合的圖組分執行了與第一組的最後的數據記錄相對應的數據操作之後。該方面可以包括以下特徵中的一個或多個。執行基於圖的計算可以包括通過以下方式作為第一批次事務執行第一和第二事務處理與第一和第二事務相對應的數據記錄和數據操作;以及在檢測到失敗時,通過回滾(roll back)與已處理事務相對應的所有已處理數據記錄和數據操作來回滾第一批次事務。該方法還可以包括指定至少具有輸出埠的第一圖組分,作為用於第一集合的圖組分的數據流的開頭;以及指定至少具有輸入埠的第二圖組分,作為用於第一集合的圖組分的數據流的末尾。所述方法還可以包括動態地調用第一集合的圖組分以便處理所述一個或多個事務。所述方法還可以包括當成功地處理了第一批次事務中的基本全部事務時,提交第一批次事務。提交第一批次事務可以包括基本同時提交與第一批次事務中的每一個事務相對應的所有數據操作。檢測到失敗可以包括例如檢測到與第一批次事務的事務中的每一個數據記錄相對應的任何數據操作的失敗。該方法還可以包括在檢測到失敗之後,作為不同的第二批次事務來重新處理第一批次事務中的未處理事務以及在處理第一批次事務期間未提交的已處理事務。該方法還可以包括在檢測到失敗之後,作為一系列分離的批次來重新處理與第一批次事務相關聯的已處理事務和未處理事務中的每一個。該方法還可以包括當檢測到失敗時,將失敗的一個或多個事務標識為失敗事務, 作為不同的第二批次來重新處理除了失敗事務之外的第一批次事務,並且作為第三批次來重新處理失敗事務。該方法還可以包括在執行第一事務的過程中,通過屬於基於圖的計算的圖組分的集合來執行第一資料庫中的一個或多個數據操作。該方法還可以包括在執行第一事務的過程中,建立與第一資料庫的第一會話,第一會話由處理第一事務的第一集合的圖組分中的一個或多個圖組分共享。可以由用戶指定第一事務的大小。在另一種方面中,總的來說,一種計算機可讀介質存儲包括指令的電腦程式,該指令用於使計算機準備具有多個節點的基於圖的計算,所述節點表示由一個或多個鏈路連接的圖組分,所述鏈路表示圖組分之間的數據流,所述準備具有多個節點的基於圖的計算包括標識至少第一集合的圖組分以處理計算中的多個事務,將第一組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第一事務相關聯,以及將第二組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第二事務相關聯;以及執行基於圖的計算以便處理至少第一事務和第二事務,包括延遲由第一集合的圖組分對與第二組的初始數據記錄對應的數據操作的執行,直到第一集合的圖組分執行了與第一組的最後的數據記錄相對應的數據操作之後。在另一方面中,總的來說,一種計算機系統包括用於準備具有多個節點的基於圖的計算的部件,所述節點表示由一個或多個鏈路連接的圖組分,所述鏈路表示圖組分之間的數據流,所述準備具有多個節點的基於圖的計算包括標識至少第一集合的圖組分以處理計算中的多個事務,將第一組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第一事務相關聯,以及將第二組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第二事務相關聯;以及用於執行基於圖的計算以便處理至少第一事務和第二事務的部件,所述執行基於圖的計算以便處理至少第一事務和第二事務包括延遲由第一集合的圖組分對與第二組的初始數據記錄對應的數據操作的執行,直到第一集合的圖組分執行了與第一組的最後的數據記錄相對應的數據操作之後。在下面的附圖和描述中闡述了本發明的一個或多個實施例的細節。根據所述描述和圖以及權利要求,本發明的其他特徵、目的和優點將顯而易見。
圖1是基於圖的系統的框圖。
圖2、3和4是示出事務處理的示例數據流圖。圖5是事務處理的示例場景。圖6是示出準備數據流圖和執行數據流圖中的事務的示例過程的流程圖。
具體實施例方式參照圖1,用於執行基於圖的計算的計算系統100包括耦接到數據存儲器102的開發環境104以及耦接到數據存儲器102的運行時環境106。開發者101使用開發環境104 構造應用。應用與數據存儲器102中的數據結構指定的一個或多個數據流圖相關聯,所述數據結構可以作為開發者使用開發環境104的結果而被寫入數據存儲器102。數據結構指定例如數據流圖的頂點(表示組件或數據集)以及頂點之間的鏈路(表示數據流)。數據結構還可以包括圖的組件、數據集和數據流的各種特性。數據處理應用例如可以與實現對於從一個或多個輸入數據集通過處理組件的圖流到一個或多個輸出數據集的數據執行的計算的數據流圖相關聯。運行時環境106可以駐留在處於諸如UNIX作業系統的適當作業系統控制下的一個或多個通用計算機上。例如,運行時環境106可以包括多節點並行計算環境,該多節點並行計算環境包括使用多個中央處理單元(CPU)的計算機系統的配置,所述多個中央處理單元是本地的(例如,諸如SMP計算機的微處理器系統)、或者本地分布的(例如,被耦接為群集的多個處理器或MPP)、或者遠程的、或者遠程分布的(例如經由LAN或WAN網絡耦接的多個處理器)、或者其任意組合。圖中的多個組件的並發執行提供了一種形式的並行性。 另外的並行性可以通過將圖的不同組件分布到不同的計算節點(例如不同的CPU)來獲得。 圖的元素(例如數據集、組件和流)可以被顯式地或者隱式地複製以將並行性引入運行時環境106。用戶103可以例如使用命令行或圖形接口與運行時環境106交互。運行時環境 106包括預執行模塊110以讀取指定給定數據流圖的所存儲的圖數據結構並且分配和配置計算資源,例如用於執行組件的計算的進程(例如,在主機作業系統中的執行的進程或線程)。運行時環境106還包括執行模塊112以便調度和控制由預執行模塊110分配給數據流圖的進程的執行。執行模塊112可以與耦接到系統100的外部計算資源交互,所述外部計算資源例如為資料庫引擎、數據存儲器或者在與圖組分相關聯的處理期間訪問的其他模塊。在執行數據流圖之後,或者在執行期間以預定的間隔,報告模塊114提供表徵給定計算的信息,例如與數據流圖的各個組件相關聯的統計值。報告模塊114報告的一些信息是從數據流圖產生的輸出獲得的。所報告的一些信息是通過監視數據流圖的執行獲得的。運行時監視模塊(RMM) 116監視分配給數據流圖的一個或多個進程的執行,並且將信息提供給報告模塊114。該信息包括例如投入運行每個組件的中央處理單元(CPU)時間、或者每個組件處理的數據量。參照圖2,示例數據流圖200包括輸入數據集201,其具有要由數據流圖200的組件204A-204I(總稱為204)處理的一個或多個輸入數據記錄。在一些實現方式中,輸入數據記錄201進入組件204的一個或多個輸入埠,並且輸出數據記錄(在某些情況下,輸出數據記錄是輸入數據記錄201或者輸入數據記錄204的經過處理的版本)典型地離開組件 204的一個或多個輸出埠。在一些實現方式中,單個輸入數據記錄201的處理可以產生多個輸出數據記錄。在圖200中,將來自組件204C、204I和255的輸出數據記錄存儲在輸出數據集206A-206C(總稱為206)中。在2006年5月16日提交的美國申請No. 11/434623 中更詳細地描述了示例數據流圖200,其通過引用而被合併於此。通常,允許在任何數據流鏈路245上並發地發生從上遊組件(例如204A)的輸出到下遊組件(例如204B或M0)的記錄的流動。這允許數據流圖200中的不同組件204對不同的記錄並發地執行任務,這對於正由數據流圖200執行的整個計算提供了流水線並行性的形式。換言之,與下遊組件204對不同的一組記錄執行的計算的不同部分並行地,上遊組件204對給定的一組記錄執行所述計算的給定部分。數據流圖200可以在並行處理系統上運行,並且通過文件操縱操作(例如創建、刪除和重命名)與數據操縱操作(例如讀取和寫入)的組合而對多個外部數據集合(例如文件和資料庫)做出改變。一種這樣的外部數據集合是資料庫系統209。數據流圖200的組件204被配置為訪問資料庫系統209。在這一點上,將圖200正在處理的數據記錄與要對資料庫系統209執行的一個或多個數據操作相關聯。在一種實現方式中,組件204可以被配置為提供事務屬性,如下面更詳細地描述的那樣。作為示例,參照圖3,考慮用於基於從自動櫃員機(ATM)處的銀行顧客的會話接收的信息更新該顧客的記錄的計算圖300。在操作中,組件315從ATM讀取所述信息,並且基於該信息產生數據記錄312和要在資料庫系統209中執行的相關聯的數據操作。如所示出的,組件「驗證帳戶」 306a、「檢查餘額」 306b和「更新餘額」 306c都訪問相同的資料庫系統 209。「驗證帳戶」 206a處理第一數據記錄312a,該第一數據記錄31 攜帶關於被輸入到 ATM中的顧客的個人識別號(PIN)的信息。此外,「更新餘額」306c處理第二數據記錄312b, 第二數據記錄312b攜帶指示顧客的帳戶被借記了某一金額的信息。如果獨立於第二數據記錄312b而處理第一數據記錄31 ,則向資料庫209的獨立提交將導致資料庫可能在驗證顧客信息之前更新帳戶餘額。因此,包含在資料庫系統209 中的數據將不會是期望的形式。為了應對這種情況,需要作為單個單元而一起提交或放棄 (即,回滾)的數據記錄312和相關聯的操作被編組為事務,該事務僅在處理了所有記錄 312和對應於記錄312的操作之後才作為整體被提交。可以將被編組到一起以便作為相同事務的一部分處理的記錄312稱為「工作單元」。此外,任選地,可以將不同的事務一起編組為一批次事務,該一批次事務作為一個單元而被處理,使得該批次中的事務要麼一起提交, 要麼整批次回滾。一批次事務的大小(即,該批次中的事務數目)可以由用戶指定,或者由預執行模塊110(圖1)自動確定。此外,可以將組件315、306a-d和310 —起編組為與事務單元相對應的集合,如下面詳細描述的那樣。因此,事務單元在單獨的事務中或者在多批次事務中處理數據記錄312,其中每批次事務作為獨立的或不同的單元而被提交到資料庫 209。在此示例中,組件306a_c每個被配置為訪問(例如接收、修改和/或刪除)資料庫系統209中的數據。「讀取」組件315接收一系列數據記錄312作為輸入。當對數據記錄 312和相關聯的數據操作的處理導致對於資料庫系統209的永久改變時,將該改變稱為「已提交」。使得這種已提交的改變對於計算系統100內的所有進程可見。在這一點上,對於與數據記錄312和相關聯的操作對應的每個事務執行提交操作,以便使通過數據記錄312和相關聯的數據操作實行的改變在資料庫系統209中成為永久的。如果出現失敗,則包括數據記錄312和相關聯的數據操作的失敗事務可以作為單個單元而回滾(即,可以恢復執行所述操作之前的資料庫系統209的先前的狀態),並且可以丟棄或者在解決了失敗的原因之後重新處理數據記錄312和相關聯的操作。可能因為多種原因而產生失敗。例如,失敗可以是系統失敗,例如存儲器分配上的錯誤或者寫入存儲器空間時的衝突。失敗也可以是底層數據操作上的失敗,例如試圖從虧空的帳戶中提取資金。在這種場景中,包括數據記錄 312和相關聯的數據操作的事務將失敗。通常,在處理包括數據記錄312和相關聯的數據操作的每個事務之後進行提交可能是昂貴的。在典型的提交操作中,資料庫系統209向物理盤(例如,存儲與資料庫系統 209相關聯的數據的硬碟)寫入通過數據操作對資料庫系統209進行的每個修改。在一些示例中,也可能需要更新日誌文件(未示出),從而進一步增大在執行提交操作時涉及的處理周期的數量。因此,提交操作可能需要相當多的資源和處理周期。因此,在這裡描述的用於將對於一批次的多個事務的提交操作編組的示例技術減少了這一花銷中的一部分,並且節約了資源。如上所述,以與單獨的事務相關聯的工作為單元來處理數據記錄的輸入流通過抑制流水線並行性而使能某些事務屬性(例如,隔離,如下面更詳細地描述的),所述流水線並行性否則將出現在對於那些事務的一組組件處置操作中。再次參照圖2,可以通過由整個數據流圖200定義的計算的一部分來執行事務。例如,結合資料庫系統209執行的事務可以只涉及與資料庫系統209通信的組件204D-G。沿著這些線,在一種實現方式中,可以定義用於執行涉及組件204D-G的事務的集合250。以這一方式,組件204D-G的集合250可以集體地對在事務中涉及的數據記錄執行操作。在一些示例中,可以有超過一個的組件集合250,每個集合執行不同類型的事務。可以以各種方式建立集合250。例如,可以在執行圖之前建立集合250。在一些示例中,可以在圖的啟動期間建立所述集合。用戶可以定義組件(未示出)來動態地調用這些集合。在一些實現方式中,在執行數據流圖200時,預執行模塊110(圖1)可以將組件204標識為用於處理事務的集合250的一部分。在一種實現方式中,可以通過使用一個或多個專用組件240、255來建立集合250, 所述專用組件240、255對針對給定事務的事務處理的開頭和末尾進行劃界。在一些示例中,可以由設計者(例如圖1的開發者101)在將圖200部署給用戶(例如圖1的用戶103) 之前指定組件對0、255。在一些示例中,可以由具有修改圖200的能力的終端用戶103指定組件對0、255。如所示出的,具有至少輸出埠的第一組件(例如「開始事務」(BT)MO)可以被指定為用於事務的數據流245的開頭,並且具有至少輸入埠的第二組件(例如「結束事務」(ET) 25 可以被指定為用於事務的數據流M5的末尾。在一些實現方式中,執行與事務的數據記錄相關聯的事務的操作的組件204的集合250被稱為事務單元(TU)。可以在 TU中通過確保只允許正在被處置的單個事務的數據記錄流入該TU來抑制流水線並行性。 要由TU處置的下一事務的數據記錄可以在(例如通過提交)而完成了前一事務之後流入 TU。BT 240和ET 250可以進行通信以實施這一條件。數據流圖200可以具有多個TU。在一些實現方式中,在啟動時,可以分析圖200以確定集合250中的組件204。集合250中的組件204可以在單個進程中執行。在這一方法中,預執行模塊110(圖1)將圖 200的多個組件204分為一個或多個集合,每個集合包含一個或多個組件204。可以向包含一個或多個組件204的每個集合分配不同的進程。因此,對於被置於相同的集合中的一個或多個組件204,由那些組件204表示的計算可以被「收到一起(folded together) 」以便在相同的進程中執行。以這一方式,按照如果組件在分開的進程中則所述組件可能已經執行的順序,將記錄從一個組件204傳遞到該進程中的下一個。對於給定集合250中的組件204,如上所述指定BT 240和ET 255。可以存在到BT 240的一個輸入、出自一個或多個ET 255的任選的輸出、以及出自集合250中的組件的其他輸出。在一些實現方式中,可以存在BT 240上遊的組件(例如組件204A)和ET 255下遊的組件。在一種實現方式中,可以潛在地參與處理給定事務的組件204可以使用「發現」進程來向BT 240指示它們是集合250的一部分。例如,組件204D-G是集合250的一部分。被收入單個進程的每個組件204可以包括在事務啟動期間被調用的啟動例程。向組件204D-G 的每一個分配指定集合250的名稱的參數。在啟動期間,組件204D-G作為分配給集合250 的組件204而註冊它們自己,使得BT 240可以知道在處理給定事務時涉及的組件204D-G。在一個示例中,當BT 240接收到數據記錄201而沒有其他事務激活時,開始新事務。在該事務開始時,BT 240指示每個組件204和ET 255開始處理該事務。作為該事務中的數據流245的一部分而在組件204D-G之間傳遞與該事務相關聯的數據記錄201。在處理該事務結束時,ET 255使得能夠提交或放棄該事務的結果,如上所述。此外,在一些實現方式中,集合250中的一個或多個組件204D-G可以共享連接以便訪問資料庫系統209。因此,在使用集合250中的組件204D-G執行事務的過程中,可以與資料庫系統209建立會話,並且由集合250中的組件204D-G共享該會話。以這一方式,在處理一批次事務的情境中,可以在相同的資料庫會話中處理與資料庫系統209相關的所有數據記錄和相關聯的數據操作。為了提高在計算圖的情境中的可靠性,將數據流圖200的TU配置為實現提供 「ACID」屬性的事務,即,系統100對於用於給定事務的數據記錄201和相關聯的數據操作確保「不可分性」、「一致性」、「隔離」和「持久性」。例如,為了滿足不可分性屬性,TU與資料庫系統209交互,使得在單個事務中執行的與對於資料庫系統209的改變相關聯的所有操作被一起提交。例如,在圖3的示例中,僅在成功地驗證了顧客的信息時才成功地產生對顧客帳戶的更新。類似地,對於從一個帳戶向另一個帳戶轉移資金的應用,不可分性屬性確保如果從一個帳戶成功地進行了借記,則對另一帳戶進行對應的貸記。以這一方式,在資料庫系統209中執行所有改變,或者不執行任何一個改變。除了不可分性以外,系統100確保資料庫209中的數據在事務開始和結束時處於一致的狀態。這確保資料庫209滿足「一致性」屬性。例如,在從一個帳戶向另一個帳戶轉移資金的應用中,一致性屬性確保兩個帳戶中的總資金值在每個事務開始和結束時相同。此外,系統100確保事務的中間狀態對於其他事務不可見。這確保系統100滿足 「隔離」屬性。例如,在從一個帳戶向另一個帳戶轉移資金的應用中,另一個事務在一個帳戶或另一個帳戶中而不是在兩者中看到所轉移的資金。最後,在事務成功完成之後,系統100確保對數據的改變持久且不被丟失,即使在系統失敗的情況下也是如此。這確保系統100滿足「持久性」屬性。例如,在從一個帳戶向另一個帳戶轉移資金的應用中,持久性屬性確保對每個帳戶做出的改變不會丟失。可以使用技術來應付處理事務期間的失敗。如果發生失敗,則可能已經對資料庫系統209做出了部分改變,這使得當前應用或者其他應用不能使用資料庫系統209中的數據,直到所述數據被校正。典型地,這將發生在在計算過程中修改、刪除或創建了資料庫系統209中的記錄的時候。在並行處理系統中,問題變嚴重,這是因為資料庫系統209常常會散布在很多不同的計算系統和存儲單元(例如磁碟)上,使得「回滾」數據的狀態所需的工作與存儲單元的數量成比例地增加。為了從這種失敗中恢復,需要關閉當前(即失敗的)應用,然後要麼從其開頭起撤銷所述應用做出的所有改變(「全部回滾」),要麼將系統的狀態恢復為中間的「檢查點」並且從該點起重新開始執行(「部分回滾」)。如上面提出的,數據流圖200的一個特徵是可以將數據記錄201及其對應數據操作與多個事務相關聯。與給定事務相關聯的數據記錄201和對應數據操作可以作為單個單元被提交(即,使其成為永久性的)或者回滾(即,撤銷)。現在參照圖4,數據流圖400包括圖組分406a_d(總稱為406)和410a_c(總稱為 410)。如所示出的,將組件406的集合402定義為用於處理事務的TU。此外,組件406與資料庫系統209通信。在一種實現方式中,諸如組件410的某些組件沒有被包括在集合402 中,因此不參與和集合402相關聯的事務的處理。在一種實現方式中,將輸入數據記錄312 —起編組為一批次事務4Ha、414b (總稱為414),每個事務對應於要在TU 402中處理的「工作單元」的不同的一組記錄。將數據記錄312編組為事務414的工作單元可以以多種方式進行。例如,用戶103可以定義每個事務414的事務大小(即,數據記錄312的數量)。在一些示例中,預執行模塊101(圖1)可以例如基於數據記錄的預定特徵而自動地將數據記錄劃分到事務414中。例如,如果數據記錄312是來自例如結帳現金出納機的行項目(line item)記錄的流,則每個記錄312可以包含諸如「出納機編號」、「事務編號」、「項目編號」、「項目代碼」和「價格」之類的特徵。如果需要作為單個事務來評估在結帳出納機處發生的每筆銷售,則可以基於「出納機編號」和 /或「事務編號」而將所有記錄312 —起編組到單個事務414中。在示例中,為了提供不同事務之間的隔離,集合402的組件406a_d —次只處理一個事務,例如事務4Ha。因此,僅在最後的組件406d處理了事務41 的最後的數據記錄之後,第一組件406a才能處理事務414b的第一數據記錄。在一些實現方式中,提交操作不是在每個事務之後執行,而是被延遲並且一次針對一批次事務而執行。在以下示例中,「批次」是指一批次多個事務以及它們對應的工作單元,每個工作單元由要在那些事務中處理的記錄組成。現在參照圖5,示例場景示出了包括用於接收和處理工作單元510a-e的批次509的TU中的組件集合502的數據流圖500的一部分。如所示出的,集合502已經對具有5個輸入工作單元510a-e的批次509進行排隊以便處理。在執行批次509的過程中,組件508a-c與資料庫系統209共享共同的會話。用於工作單元510a和510b的輸入事務被示出為已經被集合502處理為那些事務的處理結果 51 和514b,並且已經被標記為完成(但是未提交)。此外,輸入工作單元510c當前正作為工作單元512c而在組件508a中被處理。在組件508處理期間,工作單元512c中包括的記錄可以相對於輸入工作單元510c中包含的記錄改變,然而,二者均對應於在不同的時間點與給定事務相關聯的記錄。如上所述,TU的組件一次只處理給定事務的一個工作單元。如果在處理用於工作單元512c的事務期間出現失敗,則將回滾由先前處理的事務的結果51 和514b表示的改變。與已處理事務的這些結果51 和514b對應的輸入工作單元510a和510b在集合502的輸入處仍可獲得。在一些實現方式中,當發生失敗時,可以通過將批次509分解而重新處理與工作單元510a-e相對應的事務。也就是說,批次509 中的與工作單元510a_e相對應的、包括相關聯的數據記錄和操作的每個事務可以被分開處理,並且可以在處理下一事務之前提交基於一個或多個單獨事務的對於資料庫209的改變。在一些實現方式中,由於可以識別失敗的事務,例如與輸入工作單元510c (或者已處理的工作單元512c)相對應的事務,因此批次509中的包括相關聯的數據記錄和操作的事務可以作為沒有失敗事務以及(輸入工作單元510c的)相關聯的數據記錄和操作的新批次 509而被重新處理。在一些實現方式中,可以單獨處理失敗的事務,並且可以將批次509中的其餘事務分為較小的兩個或更多批次的事務(未示出)並且逐個批次地進行處理。例如可以作為第一批次來處理與工作單元510a和510b相對應的事務,並且可以作為第二批次來處理與工作單元510d和510e相對應的事務。現在參照圖6,示出了用於準備基於圖的計算並且執行計算中的事務的流程圖 600。標識一個或多個組件的集合(例如圖4中的組件406的集合40 以便處理一個或多個事務(步驟60幻。如上所述,事務單元(TU)可以通過被配置為動態調用組件406的集合402的組件來標識,或者可以通過使用一個或多個專用組件(例如圖2中的組件240和 255)來劃界。將數據記錄及其對應數據操作與要由TU處理的一批次事務中的事務相關聯(步驟606)。例如,將事務414(圖4)與數據記錄312和對應操作相關聯。在一些示例中,用戶 103可以指定一批次事務中的每個事務414的事務大小(即,數據記錄312的數量),或者預執行模塊101(圖1)可以自動地將數據記錄312和對應操作編組到事務中。然後,選擇事務414以便由組件的集合402執行(步驟610)。可以通過作為一個單元處理每個事務的數據記錄312來執行事務(步驟614)。在處理事務414期間,可能發生失敗。如上所述,數據記錄312及其相關聯的數據操作可能由於多種原因而失敗,所述原因包括例如系統失敗和/或操作失敗。因此,當正在處理事務414時,可以針對這種失敗或者其他錯誤而檢查事務414 (步驟618)。如果沒有檢測到失敗,則作為單個單元提交處理與事務414相關聯的數據記錄312和對應數據操作的結果(步驟622)。如果在處理事務414時發生了失敗,則需要回滾對於對應資料庫(例如圖3中的資料庫209)所做的任何改變(步驟626)。此外,如果失敗的事務414在一起提交的一批次的多個事務中進行處理,則可以將失敗的這一批次事務分解,並且可以在有或沒有失敗事務的情況下單獨地重新處理與該批次中的各個事務相對應的數據記錄312和相關聯的數據操作(步驟630)。在一些實現方式中,可以單獨地重新處理失敗批次中的事務 (其中在重新處理每個事務414之後將改變提交到資料庫209),或者使用上述的替換技術來重新處理失敗批次中的事務。上述技術可以使用用於在計算機上執行的軟體來實現。例如,該軟體形成一個或多個電腦程式中的過程,所述電腦程式在一個或多個已編程的或可編程的計算機系統(其可以是各種架構,例如分布式、客戶端/伺服器或網格)上執行,每個計算機系統包括至少一個處理器、至少一個數據存儲系統(包括易失性和非易失性存儲器以及/或者存儲元件)、至少一個輸入設備或埠、以及至少一個輸出設備或埠。所述軟體可以形成更大程序的一個或多個模塊,所述更大程序例如提供與計算圖的設計和配置有關的其他服務。圖的節點和元素可以被實現為存儲在計算機可讀介質中的數據結構或者符合存儲在數據儲存庫中的數據模型的其他有組織數據。可以在諸如⑶-ROM之類的可由通用或專用可編程計算機讀取的存儲介質上提供所述軟體,或者可以經由網絡的通信介質將所述軟體傳遞到執行該軟體所在的計算機。可以在專用計算機上或者使用諸如協處理器之類的專用硬體來執行所有功能。可以以分布式方式實現所述軟體,其中,該軟體指定的計算的不同部分由不同的計算機執行。每個這樣的電腦程式最好被存儲在或下載到可由通用或專用可編程計算機讀取的存儲介質或設備 (例如固態存儲器或存儲介質、或者磁介質或光介質)上,用於在所述存儲介質或設備由計算機系統讀取以便執行在這裡描述的過程時配置和操作計算機。也可以考慮將本發明的系統實現為計算機可讀存儲介質,其配置有電腦程式,其中,如此配置的存儲介質使得計算機系統按照特定的或者預定義的方式操作以執行在此描述的功能。已經描述了本發明的很多實施例。然而,將理解,可以進行各種修改而不背離本發明的精神和範圍。例如,一些上述步驟可以是與順序無關的,因此可以按照與上述順序不同的順序執行。應當理解,前述描述意圖是說明而不是限制由所附權利要求的範圍限定的本發明的範圍。例如,上述很多功能步驟可以按照不同的順序執行,而基本上不影響整個處理。其他實施例處於所附權利要求的範圍內。
權利要求
1.一種計算機實現的方法,包括準備具有多個節點的基於圖的計算,所述節點表示由一個或多個鏈路連接的圖組分, 所述鏈路表示圖組分之間的數據流,所述準備具有多個節點的基於圖的計算包括標識至少第一集合的圖組分以處理計算中的多個事務;和將第一組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第一事務相關聯,並且將第二組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第二事務相關聯;以及執行基於圖的計算以便處理至少第一事務和第二事務,包括延遲由第一集合的圖組分對與第二組的初始數據記錄對應的數據操作的執行,直到由第一集合的圖組分執行了與第一組的最後的數據記錄相對應的數據操作之後。
2.如權利要求1所述的方法,其中,執行基於圖的計算還包括通過以下方式作為第一批次事務來執行第一和第二事務處理與第一和第二事務相對應的數據記錄和數據操作;以及在檢測到失敗時,通過回滾與已處理事務相對應的所有已處理數據記錄和數據操作來回滾第一批次事務。
3.如權利要求1所述的方法,還包括指定至少具有輸出埠的第一圖組分,作為用於第一集合的圖組分的數據流的開頭;以及指定至少具有輸入埠的第二圖組分,作為用於第一集合的圖組分的數據流的末尾。
4.如權利要求1所述的方法,還包括動態地調用第一集合的圖組分以便處理一個或多個事務。
5.如權利要求1所述的方法,還包括當成功地處理了第一批次事務中的基本全部事務時,提交第一批次事務。
6.如權利要求5所述的方法,其中,提交第一批次事務包括基本同時提交與第一批次事務中的每一個事務相對應的所有數據操作。
7.如權利要求2所述的方法,其中,檢測到失敗包括檢測到與第一批次事務的事務中的每一個數據記錄相對應的任何數據操作的失敗。
8.如權利要求2所述的方法,還包括在檢測到失敗之後,作為不同的第二批次事務來重新處理第一批次事務中未處理事務以及在處理第一批次事務期間未提交的已處理事務。
9.如權利要求2所述的方法,還包括在檢測到失敗之後,作為一系列分離的批次來重新處理與第一批次事務相關聯的已處理事務和未處理事務中的每一個。
10.如權利要求2所述的方法,還包括當檢測到失敗時,將失敗的一個或多個事務標識為失敗事務,作為不同的第二批次來重新處理除了失敗事務之外的第一批次事務,並且作為第三批次來重新處理失敗事務。
11.如權利要求2所述的方法,還包括在執行第一事務的過程中,通過屬於基於圖的計算的圖組分的集合來執行第一資料庫中的一個或多個數據操作。
12.如權利要求11所述的方法,還包括在執行第一事務的過程中,建立與第一資料庫的第一會話,第一會話由處理第一事務的第一集合的圖組分中的一個或多個圖組分共享。
13.如權利要求2所述的方法,其中,由用戶指定第一事務的大小。
14.一種計算機可讀介質,存儲電腦程式,該電腦程式包括指令,該指令用於使計算機準備具有多個節點的基於圖的計算,所述節點表示由一個或多個鏈路連接的圖組分, 所述鏈路表示圖組分之間的數據流,所述準備具有多個節點的基於圖的計算包括標識至少第一集合的圖組分以處理計算中的多個事務;和將第一組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第一事務相關聯,以及將第二組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第二事務相關聯;以及執行基於圖的計算以便處理至少第一事務和第二事務,包括延遲由第一集合的圖組分對與第二組的初始數據記錄對應的數據操作的執行,直到由第一集合的圖組分執行了與第一組的最後的數據記錄相對應的數據操作之後。
15.一種計算機系統,包括用於準備具有多個節點的基於圖的計算的部件,所述節點表示由一個或多個鏈路連接的圖組分,所述鏈路表示圖組分之間的數據流,所述準備具有多個節點的基於圖的計算包括標識至少第一集合的圖組分以處理計算中的多個事務;和將第一組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第一事務相關聯,以及將第二組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第二事務相關聯;以及用於執行基於圖的計算以便處理至少第一事務和第二事務的部件,所述執行基於圖的計算以便處理至少第一事務和第二事務包括延遲由第一集合的圖組分對與第二組的初始數據記錄對應的數據操作的執行,直到由第一集合的圖組分執行了與第一組的最後的數據記錄相對應的數據操作之後。
全文摘要
基於圖的計算具有多個節點,所述節點表示由一個或多個鏈路連接的圖組分,所述鏈路表示組分之間的數據流。準備所述計算包括標識至少第一集合的組件以處理計算中的多個事務;以及將第一組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第一事務相關聯,並且將第二組的一個或多個數據記錄以及與該數據記錄對應的數據操作與第二事務相關聯。執行所述計算以便處理至少第一事務和第二事務包括延遲由第一集合的組件對與第二組的初始數據記錄對應的數據操作的執行,直到第一集合的組件執行了與第一組的最後數據記錄相對應的數據操作之後。
文檔編號G06F15/16GK102576347SQ201080042716
公開日2012年7月11日 申請日期2010年9月23日 優先權日2009年9月25日
發明者B.P.杜羅斯, C.W.斯坦菲爾, H.M.布羅姆利, J.S.沃利三世, M.D.阿特伯裡 申請人:起元技術有限責任公司