數(shù)據(jù)單元集合的檢查點(diǎn)設(shè)置的制作方法
【專利說明】
[0001] 相關(guān)申請(qǐng)的交叉引用
[0002] 本申請(qǐng)要求享有2013年10月21日提交的美國申請(qǐng)?zhí)?1/893,439的優(yōu)先權(quán)。
技術(shù)領(lǐng)域
[0003] 本申請(qǐng)?jiān)O(shè)及對(duì)數(shù)據(jù)單元集合設(shè)置檢查點(diǎn)。
【背景技術(shù)】
[0004] 有各種類型的數(shù)據(jù)處理系統(tǒng),其響應(yīng)于故障或其他突發(fā)事件恢復(fù)或重啟的能力是 有用的。例如,在實(shí)時(shí)流處理或復(fù)雜事件處理系統(tǒng)中,保存諸如輸入數(shù)據(jù)和/或狀態(tài)信息的 系統(tǒng)信息對(duì)于在該輸入數(shù)據(jù)上執(zhí)行的計(jì)算是有用的。設(shè)置檢查點(diǎn)(化eckpointing)是周期 性保存系統(tǒng)信息W便該系統(tǒng)能夠從最近保存的一致狀態(tài)恢復(fù)的方式的一個(gè)例子。在美國專 利號(hào)6,584,581中描述了針對(duì)在連續(xù)的數(shù)據(jù)流上操作的數(shù)據(jù)處理系統(tǒng)的檢查點(diǎn)設(shè)置技術(shù), 該專利通過引用合并于此。
【發(fā)明內(nèi)容】
[0005] -方面,通常,一種用于管理存儲(chǔ)數(shù)據(jù)的計(jì)算系統(tǒng)包括:存儲(chǔ)器模塊,被配置為存 儲(chǔ)包括多個(gè)數(shù)據(jù)單元的工作數(shù)據(jù);存儲(chǔ)系統(tǒng),被配置為存儲(chǔ)包括多組一個(gè)或多個(gè)數(shù)據(jù)單元 的恢復(fù)數(shù)據(jù);W及至少一個(gè)處理器,被配置為管理存儲(chǔ)器模塊和存儲(chǔ)系統(tǒng)之間的數(shù)據(jù)單元 的傳送。所述管理包括:維護(hù)包括在工作數(shù)據(jù)中的多個(gè)數(shù)據(jù)單元的順序,該順序定義了包括 多個(gè)數(shù)據(jù)單元中一個(gè)或多個(gè)數(shù)據(jù)單元的第一連續(xù)部分和包括多個(gè)數(shù)據(jù)單元中一個(gè)或多個(gè) 數(shù)據(jù)單元的第二連續(xù)部分;W及對(duì)于多個(gè)時(shí)間間隔中的每一個(gè),識(shí)別在該時(shí)間間隔期間從 工作數(shù)據(jù)訪問的任意數(shù)據(jù)單元,并且將一組兩個(gè)或更多個(gè)數(shù)據(jù)單元加入到恢復(fù)數(shù)據(jù),該一 組兩個(gè)或多個(gè)數(shù)據(jù)單元包括:來自于第一連續(xù)部分并包括任意已訪問數(shù)據(jù)單元的一個(gè)或多 個(gè)數(shù)據(jù)單元,W及來自于第二連續(xù)部分并包括先前已經(jīng)加入到恢復(fù)數(shù)據(jù)的至少一個(gè)數(shù)據(jù)單 元的一個(gè)或多個(gè)數(shù)據(jù)單元。
[0006] 運(yùn)些方面可包括W下一個(gè)或多個(gè)特征。
[0007] 所述管理還包括:對(duì)于多個(gè)時(shí)間間隔中的每一個(gè),從恢復(fù)數(shù)據(jù)刪除至少一組一個(gè) 或多個(gè)數(shù)據(jù)單元,對(duì)于該組一個(gè)或多個(gè)數(shù)據(jù)單元而言,仍然包括在所述工作數(shù)據(jù)中的任意 數(shù)據(jù)單元被存儲(chǔ)在至少另一組一個(gè)或多個(gè)數(shù)據(jù)單元中。
[0008] 所述管理還包括:對(duì)于多個(gè)時(shí)間間隔中的每一個(gè),識(shí)別在該時(shí)間間隔期間從工作 數(shù)據(jù)刪除的任意數(shù)據(jù)單元。
[0009] 第二連續(xù)部分不包括任何已刪除的數(shù)據(jù)單元。
[0010] 所述管理還包括:對(duì)于多個(gè)時(shí)間間隔中的每一個(gè),將識(shí)別任何已刪除的數(shù)據(jù)單元 的信息加入到恢復(fù)數(shù)據(jù)。
[0011] 識(shí)別在該時(shí)間間隔期間從工作數(shù)據(jù)訪問的任意數(shù)據(jù)單元包括將在該時(shí)間間隔期 間從工作數(shù)據(jù)訪問的任意數(shù)據(jù)單元移動(dòng)到第一連續(xù)部分中。
[0012] 包括在工作數(shù)據(jù)中的多個(gè)數(shù)據(jù)單元之間的順序建立在近來數(shù)據(jù)單元被訪問的先 后基礎(chǔ)之上。
[0013] 第一連續(xù)部分包括:包括在工作數(shù)據(jù)中的所有多個(gè)數(shù)據(jù)單元中最近被訪問的數(shù)據(jù) 單元,W及自從最近被訪問之后尚未加入到恢復(fù)數(shù)據(jù)的多個(gè)數(shù)據(jù)單元中的子集的最近最少 被訪問的數(shù)據(jù)單元。
[0014] 第二連續(xù)部分不與第一連續(xù)部分重疊。
[0015] 第二連續(xù)部分包括自從最近被訪問之后已經(jīng)加入到恢復(fù)數(shù)據(jù)的至少一個(gè)數(shù)據(jù)單 J L· 〇
[0016] 來自第二連續(xù)部分的一個(gè)或多個(gè)數(shù)據(jù)單元限于一定數(shù)量的數(shù)據(jù)單元,該一定數(shù)量 的數(shù)據(jù)單元介于來自第一連續(xù)部分的一個(gè)或多個(gè)數(shù)據(jù)單元中數(shù)據(jù)單元的大致一半數(shù)量和 來自第一連續(xù)部分的一個(gè)或多個(gè)數(shù)據(jù)單元中數(shù)據(jù)單元的大致兩倍數(shù)量之間。
[0017] 第一連續(xù)部分包括比第二連續(xù)部分中的任何數(shù)據(jù)單元都更近被訪問的數(shù)據(jù)單元。
[0018] 指示近來數(shù)據(jù)單元被訪問的先后的時(shí)間對(duì)應(yīng)于開始獨(dú)占訪問該數(shù)據(jù)單元的時(shí)間。
[0019] 指示近來數(shù)據(jù)單元被訪問的先后的時(shí)間對(duì)應(yīng)于結(jié)束獨(dú)占訪問該數(shù)據(jù)單元的時(shí)間。
[0020] 所述管理還包括響應(yīng)于故障而使用恢復(fù)數(shù)據(jù)來恢復(fù)工作數(shù)據(jù)的狀態(tài)。
[0021 ]包括在工作數(shù)據(jù)中的多個(gè)數(shù)據(jù)單元的每個(gè)都分別與一鍵值相關(guān)聯(lián)。
[0022] 包括在工作數(shù)據(jù)中的至少一個(gè)數(shù)據(jù)單元包括基于與該數(shù)據(jù)單元相關(guān)聯(lián)的鍵值而 可訪問的一個(gè)或多個(gè)值。
[0023] 與包括在工作數(shù)據(jù)中的不同數(shù)據(jù)單元相關(guān)聯(lián)的不同鍵值的總數(shù)約大于1000。
[0024] 所述時(shí)間間隔彼此互不重疊。
[0025] 識(shí)別在該時(shí)間間隔期間從工作數(shù)據(jù)訪問的任意數(shù)據(jù)單元包括識(shí)別W下至少其中 之一:在該時(shí)間間隔期間加入到工作數(shù)據(jù)的任意數(shù)據(jù)單元、在該時(shí)間間隔期間從工作數(shù)據(jù) 讀取的任意數(shù)據(jù)單元、或在該時(shí)間間隔期間工作數(shù)據(jù)內(nèi)更新的任一數(shù)據(jù)單元。
[00%]存儲(chǔ)器模塊包括易失性存儲(chǔ)設(shè)備。
[0027] 存儲(chǔ)系統(tǒng)包括非易失性存儲(chǔ)設(shè)備。
[0028] 在另一方面,通常,一種用于管理計(jì)算系統(tǒng)的存儲(chǔ)器模塊和該計(jì)算系統(tǒng)的存儲(chǔ)系 統(tǒng)之間的數(shù)據(jù)單元的傳送的方法包括:將包括多個(gè)數(shù)據(jù)單元的工作數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器模塊 中;將包括多組一個(gè)或多個(gè)數(shù)據(jù)單元的恢復(fù)數(shù)據(jù)存儲(chǔ)在該存儲(chǔ)系統(tǒng)中;維護(hù)包括在工作數(shù) 據(jù)中的多個(gè)數(shù)據(jù)單元的順序,該順序定義了包括多個(gè)數(shù)據(jù)單元中一個(gè)或多個(gè)數(shù)據(jù)單元的第 一連續(xù)部分W及包括多個(gè)數(shù)據(jù)單元中一個(gè)或多個(gè)數(shù)據(jù)單元的第二連續(xù)部分;并且對(duì)于多個(gè) 時(shí)間間隔中的每一個(gè),識(shí)別在該時(shí)間間隔期間從工作數(shù)據(jù)訪問的任意數(shù)據(jù)單元,并且將一 組兩個(gè)或更多個(gè)數(shù)據(jù)單元加入到恢復(fù)數(shù)據(jù),該組兩個(gè)或更多個(gè)數(shù)據(jù)單元包括:來自于第一 連續(xù)部分并包括任意已被訪問數(shù)據(jù)單元的一個(gè)或多個(gè)數(shù)據(jù)單元,W及來自于第二連續(xù)部分 并包括先前已經(jīng)加入到恢復(fù)數(shù)據(jù)的至少一個(gè)數(shù)據(jù)單元的一個(gè)或多個(gè)數(shù)據(jù)單元。
[0029] 在另一方面,通常,軟件W非暫時(shí)性方式存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上用于管理計(jì)算 系統(tǒng)的存儲(chǔ)器模塊和該計(jì)算系統(tǒng)的存儲(chǔ)系統(tǒng)之間的數(shù)據(jù)單元的傳送。該軟件包括用于使計(jì) 算系統(tǒng)執(zhí)行W下操作的指令:將包括多個(gè)數(shù)據(jù)單元的工作數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器模塊中;將包 括多組一個(gè)或多個(gè)數(shù)據(jù)單元的恢復(fù)數(shù)據(jù)存儲(chǔ)在該存儲(chǔ)系統(tǒng)中;維護(hù)包括在工作數(shù)據(jù)中的多 個(gè)數(shù)據(jù)單元的順序,該順序定義了包括多個(gè)數(shù)據(jù)單元中一個(gè)或多個(gè)數(shù)據(jù)單元的第一連續(xù)部 分w及包括多個(gè)數(shù)據(jù)單元中一個(gè)或多個(gè)數(shù)據(jù)單元的第二連續(xù)部分;并且對(duì)于多個(gè)時(shí)間間隔 中的每一個(gè),識(shí)別在該時(shí)間間隔期間從工作數(shù)據(jù)訪問的任意數(shù)據(jù)單元,并且將一組兩個(gè)或 更多個(gè)數(shù)據(jù)單元加入到恢復(fù)數(shù)據(jù),該一組兩個(gè)或更多個(gè)數(shù)據(jù)單元包括:來自于第一連續(xù)部 分并包括任意已被訪問數(shù)據(jù)單元的一個(gè)或多個(gè)數(shù)據(jù)單元,W及來自于第二連續(xù)部分并包括 先前已經(jīng)加入到恢復(fù)數(shù)據(jù)的至少一個(gè)數(shù)據(jù)單元的一個(gè)或多個(gè)數(shù)據(jù)單元。
[0030] 運(yùn)些方案可包括一個(gè)或多個(gè)W下優(yōu)點(diǎn)。
[0031] 在一些數(shù)據(jù)處理系統(tǒng)中,由系統(tǒng)維護(hù)的信息包括工作數(shù)據(jù),該工作數(shù)據(jù)包括隨著 處理進(jìn)行而定期更新的數(shù)據(jù)單元的集合。在復(fù)雜事件處理(Complex Event Processing, CEP)系統(tǒng)中,例如,對(duì)事件流進(jìn)行處理和聚合,同時(shí)基于結(jié)果而采取措施。針對(duì)CEP系統(tǒng)的一 組工作數(shù)據(jù)可W包括多個(gè)數(shù)據(jù)單元的狀態(tài),多個(gè)數(shù)據(jù)單元代表?xiàng)l目,針對(duì)條目正在接收各 自不同的數(shù)據(jù)流,例如與不同股票代碼相關(guān)聯(lián)的價(jià)格。由特定數(shù)據(jù)單元代表的狀態(tài)可W存 儲(chǔ)為通過唯一鍵(例如,數(shù)值)而訪問的狀態(tài)對(duì)象。在股票代碼示例中,系統(tǒng)將為每一股票代 碼維護(hù)一個(gè)狀態(tài)對(duì)象。每一個(gè)狀態(tài)對(duì)象可W具有一個(gè)或多個(gè)字段,所述字段存儲(chǔ)有諸如純 量(例如,與股票相關(guān)聯(lián)的的值)和矢量(例如,歷史價(jià)格數(shù)據(jù))的值。在一些示例中,狀態(tài)對(duì) 象的字段可W存儲(chǔ)表示應(yīng)用函數(shù),例如聚合函數(shù)(例如,和函數(shù)、計(jì)數(shù)函數(shù)、極大值函數(shù)和平 均函數(shù)),的結(jié)果的計(jì)算值,遞增地更新針對(duì)對(duì)應(yīng)的股票代碼的每一新價(jià)格值??蒞具有系 統(tǒng)內(nèi)的狀態(tài)對(duì)象的多個(gè)集合,每一個(gè)集合可W包括具有特定字段集的狀態(tài)對(duì)象。隨著加入 新的狀態(tài)對(duì)象和刪除舊的狀態(tài)對(duì)象,集合的大小可W變化,但是集合中大多數(shù)變化數(shù)據(jù)可 W歸因于存儲(chǔ)在正在更新的一部分狀態(tài)對(duì)象中的實(shí)際數(shù)據(jù)。
[0032] 在一些實(shí)施方式中,針對(duì)系統(tǒng)的工作數(shù)據(jù)存儲(chǔ)在大量的相對(duì)快速的存儲(chǔ)器中,該 存儲(chǔ)器可W是易失性存儲(chǔ)器,例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。為了確保工作數(shù)據(jù)的持久 性,采用檢查點(diǎn)方案將每一個(gè)狀態(tài)對(duì)象的最新版本定期存儲(chǔ)在更加穩(wěn)定而可靠的存儲(chǔ)設(shè)備 (例如,硬盤驅(qū)動(dòng)器、固態(tài)驅(qū)動(dòng)器或其它非易失性存儲(chǔ)介質(zhì))可W是特別有用的,同時(shí)確保對(duì) 所需資源(例如數(shù)據(jù)傳送時(shí)間和數(shù)據(jù)存儲(chǔ)空間)方面的成本進(jìn)行有效管理。雖然工作數(shù)據(jù)可 W包括大量的數(shù)據(jù)單元(例如上述的狀態(tài)對(duì)象),但是在檢查點(diǎn)操作之間的任一給定的時(shí)期 (稱之為"檢查點(diǎn)間隔"),可能有一小部分的數(shù)據(jù)單元發(fā)生變化。該檢查點(diǎn)方案應(yīng)使每一個(gè) 數(shù)據(jù)單元的最近狀態(tài)能夠在出現(xiàn)故障的情況下得W恢復(fù),包括最近已經(jīng)改變了的那些數(shù)據(jù) 單元W及尚未改變的那些數(shù)據(jù)單元。
[0033] 在運(yùn)樣的系統(tǒng)中進(jìn)行有效檢查點(diǎn)設(shè)置的技術(shù)是具有挑戰(zhàn)性的,尤其當(dāng)正在被管理 的數(shù)據(jù)單元的數(shù)量特別大時(shí)。例如,在一種情形下,工作數(shù)據(jù)包括每個(gè)為數(shù)字節(jié)的大約十億 個(gè)數(shù)據(jù)單元的集合,并且在每一檢查點(diǎn)間隔期間,有大約千分之一的數(shù)據(jù)單元(1百萬個(gè)數(shù) 據(jù)單元)發(fā)生了變化。當(dāng)然,在每一檢查點(diǎn)間隔期間,已經(jīng)發(fā)生變化的數(shù)據(jù)單元的集合可W 是不同(但可能重疊)的集合。為了恢復(fù),還可W假設(shè)只需要任意特定數(shù)據(jù)