一種處理時間序列數(shù)據(jù)的方法和裝置制造方法
【專利摘要】本發(fā)明提供一種處理時間序列數(shù)據(jù)的方法和裝置,其占用較小的系統(tǒng)硬件資源并且便于在不同的操作系統(tǒng)之間移植。本發(fā)明的處理時間序列數(shù)據(jù)的方法包括:接收多個時間序列數(shù)據(jù)項并緩存,其中各個時間序列數(shù)據(jù)項包含以時間為序的多個數(shù)據(jù)元;當緩存的時間序列數(shù)據(jù)項的量達到預設(shè)值,或者進行緩存的時間達到預設(shè)值時,將多個緩存的時間序列數(shù)據(jù)項持久化為一個數(shù)據(jù)文件,從而得到多個數(shù)據(jù)文件;對于各個時間序列數(shù)據(jù)項,將其在所述數(shù)據(jù)文件中的位置記錄在局部索引中的以該時間序列數(shù)據(jù)項的標識為標識的條目中,并且數(shù)據(jù)文件與局部索引唯一對應(yīng)。
【專利說明】一種處理時間序列數(shù)據(jù)的方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種處理時間序列數(shù)據(jù)的方法和裝置。
【背景技術(shù)】
[0002] 監(jiān)控系統(tǒng)中,核心功能組件包括:數(shù)據(jù)采集、數(shù)據(jù)保存、告警、數(shù)據(jù)展現(xiàn),其中,最重 要的是監(jiān)控數(shù)據(jù)的保存。監(jiān)控系統(tǒng)中的數(shù)據(jù)一般是時間序列數(shù)據(jù),即由多個以時間為序的 多個數(shù)據(jù)元組成,例如傳感器每分鐘采集的溫度數(shù)據(jù)、計算機每小時的CPU使用平均值等。 監(jiān)控系統(tǒng)如果對時效性和準確性要求比較高,則數(shù)據(jù)采集頻率一般比較高,從而得到的數(shù) 據(jù)量通常很大,在這種情況下使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫效果不佳,因此目前的慣常做法是 采用HBase等非關(guān)系型數(shù)據(jù)庫。這些數(shù)據(jù)庫對系統(tǒng)的硬件資源占用較大,并且一般不被所 有操作系統(tǒng)所支持。
【發(fā)明內(nèi)容】
[0003] 有鑒于此,本發(fā)明提供一種處理時間序列數(shù)據(jù)的方法和裝置,其占用較小的系統(tǒng) 硬件資源并且便于在不同的操作系統(tǒng)之間移植。
[0004] 為實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種處理時間序列數(shù)據(jù)的方法。
[0005] 本發(fā)明的處理時間序列數(shù)據(jù)的方法包括:接收多個時間序列數(shù)據(jù)項并緩存,其中 各個時間序列數(shù)據(jù)項包含以時間為序的多個數(shù)據(jù)元;當緩存的時間序列數(shù)據(jù)項的量達到預 設(shè)值,或者進行緩存的時間達到預設(shè)值時,將多個緩存的時間序列數(shù)據(jù)項持久化為一個數(shù) 據(jù)文件,從而得到多個數(shù)據(jù)文件;對于各個時間序列數(shù)據(jù)項,將其在所述數(shù)據(jù)文件中的位 置記錄在局部索引中的以該時間序列數(shù)據(jù)項的標識為標識的條目中,并且數(shù)據(jù)文件與局部 索引唯一對應(yīng)。
[0006] 可選地,對于多個局部索引,相同標識的數(shù)據(jù)項在不同的局部索引中的位置相同; 將時間序列數(shù)據(jù)項在所述數(shù)據(jù)文件中的位置記錄在局部索引的條目中之后,還包括:將該 條目在局部索引中的位置記錄在全局索引的條目中,并且這兩個條目的標識相同。
[0007] 可選地,還包括:在所述數(shù)據(jù)文件中記錄該數(shù)據(jù)文件中的各個時間序列數(shù)據(jù)項的 長度。
[0008] 可選地,所述數(shù)據(jù)文件及其對應(yīng)的局部索引的文件名是建立該數(shù)據(jù)文件的時間。
[0009] 根據(jù)本發(fā)明的另一方面,提供了一種處理時間序列數(shù)據(jù)的裝置。
[0010] 本發(fā)明的處理時間序列數(shù)據(jù)的裝置包括:緩存模塊,用于接收多個時間序列數(shù)據(jù) 項并緩存,其中各個時間序列數(shù)據(jù)項包含以時間為序的多個數(shù)據(jù)元;持久化模塊,用于當緩 存的時間序列數(shù)據(jù)項量達到預設(shè)值,或者進行緩存的時間達到預設(shè)值時,將緩存的時間序 列數(shù)據(jù)項持久化為一個數(shù)據(jù)文件,從而得到多個數(shù)據(jù)文件;局部索引模塊,用于對于各個時 間序列數(shù)據(jù)項,將其在所述數(shù)據(jù)文件中的位置記錄在局部索引中的以該時間序列數(shù)據(jù)項的 標識為標識的條目中,并且數(shù)據(jù)文件與局部索引唯一對應(yīng)。
[0011] 可選地,所述局部索引文件還用于:對于多個局部索引,將相同標識的數(shù)據(jù)項在不 同的局部索引中置于相同的位置;所述裝置還包括全局索引模塊,用于將局部索引的條目 的位置記錄在全局索引的條目中,并且這兩個條目的標識相同。
[0012] 可選地,所述持久化模塊還用于:在所述數(shù)據(jù)文件中記錄該數(shù)據(jù)文件中的各個時 間序列數(shù)據(jù)項的長度。
[0013] 可選地,所述持久化模塊還用于:以建立所述數(shù)據(jù)文件的時間為該數(shù)據(jù)文件的文 件名;所述局部索引模塊還用于:以數(shù)據(jù)文件的文件名作為該數(shù)據(jù)文件對應(yīng)的局部索引的 文件名。
[0014] 根據(jù)本發(fā)明的技術(shù)方案,對于時間序列數(shù)據(jù),進行緩存之后生成數(shù)據(jù)文件,并建立 局部索引,即實現(xiàn)了數(shù)據(jù)的存儲與查詢,無需采用專門的非關(guān)系型數(shù)據(jù)庫,有助于減少占用 的系統(tǒng)硬件資源;另外本方案可采用多種開發(fā)環(huán)境,以適應(yīng)不同的操作系統(tǒng)。
【專利附圖】
【附圖說明】
[0015] 附圖用于更好地理解本發(fā)明,不構(gòu)成對本發(fā)明的不當限定。其中:
[0016] 圖1是根據(jù)本發(fā)明實施例的處理時間序列數(shù)據(jù)的方法的示意圖;
[0017] 圖2是根據(jù)本發(fā)明實施例的數(shù)據(jù)文件的一種結(jié)構(gòu)的示意圖;
[0018] 圖3是根據(jù)本發(fā)明實施例的一個索引文件的一種結(jié)構(gòu)的示意圖;
[0019] 圖4是根據(jù)本發(fā)明實施例的全局索引的一種結(jié)構(gòu)的示意圖;
[0020] 圖5是根據(jù)本發(fā)明實施例的另一個局部索引的一種結(jié)構(gòu)的示意圖; 圖6是根據(jù)本發(fā)明實施例的處理時間序列數(shù)據(jù)的裝置的示意圖。
【具體實施方式】
[0021] 以下結(jié)合附圖對本發(fā)明的示范性實施例做出說明,其中包括本發(fā)明實施例的各種 細節(jié)以助于理解,應(yīng)當將它們認為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當認識 至IJ,可以對這里描述的實施例做出各種改變和修改,而不會背離本發(fā)明的范圍和精神。同 樣,為了清楚和簡明,以下的描述中省略了對公知功能和結(jié)構(gòu)的描述。
[0022] 本實施例的技術(shù)方案專門適用于處理時間序列數(shù)據(jù)的【技術(shù)領(lǐng)域】,以下以監(jiān)控多個 計算機的CPU使用率為例加以說明。圖1是根據(jù)本發(fā)明實施例的處理時間序列數(shù)據(jù)的方法 的示意圖。
[0023] 步驟S11 :接收多個CPU的使用率數(shù)值并緩存。例如采樣頻率是每30分鐘1次, 則每30分鐘接收1次該CPU使用率數(shù)值。對于每個CPU,經(jīng)過一定時間接收的多個使用率 數(shù)值構(gòu)成一個時間序列數(shù)據(jù)項,其中有多個作為數(shù)據(jù)元的CPU使用率數(shù)值。隨著時間的推 移,該時間序列數(shù)據(jù)項也在不斷地擴充。
[0024] 步驟S12 :判斷緩存的時間是否到達預設(shè)值。若是則進入步驟S13,否則返回步驟 S11。例如設(shè)定緩存1天(24小時)就將數(shù)據(jù)持久化,即保存在磁盤中,則在上一次保存數(shù) 據(jù)并開始緩存新數(shù)據(jù)起,經(jīng)過24小時再次進行緩存。也可以在緩存的數(shù)據(jù)量達到一定值時 進行持久化。
[0025] 步驟S13 :將多個緩存的時間序列數(shù)據(jù)項持久化為一個數(shù)據(jù)文件。如每天持久化 一次,則經(jīng)過N天就得到N個數(shù)據(jù)文件,并且分別以日期命名,例如2014年03月27日的計 算機A至Η的CPU使用率數(shù)值的數(shù)據(jù)文件命名為20140327. file。
[0026] 數(shù)據(jù)文件可采用圖2所示的結(jié)構(gòu),圖2是根據(jù)本發(fā)明實施例的數(shù)據(jù)文件的一種結(jié) 構(gòu)的示意圖。該數(shù)據(jù)文件20中保存了名為A至Η的8臺計算機的CPU在2014年03月27 日的使用率??梢栽跀?shù)據(jù)文件中記錄數(shù)據(jù)的長度(即字節(jié)數(shù)),數(shù)據(jù)文件的結(jié)構(gòu)即包括計算 機A的CPU在該日的使用率數(shù)據(jù)的長度211和CPU在該日按每30分鐘采一次樣得到的一 系列使用率數(shù)據(jù)212,以及計算機B至Η的上述數(shù)據(jù)。
[0027] 步驟S14:生成唯一對應(yīng)于數(shù)據(jù)文件的局部索引。局部索引與數(shù)據(jù)文件一一對 應(yīng),因此局部索引的文件名也可采用時間,例如數(shù)據(jù)文件20140327. file對應(yīng)的局部索引是 20140327. index。
[0028] 局部索引的每個條目同樣以計算機名作為標識,分別記錄該計算機的使用率數(shù)據(jù) 在數(shù)據(jù)文件中的偏移量。例如圖3所示,圖3是根據(jù)本發(fā)明實施例的一個索引文件的一種 結(jié)構(gòu)的示意圖。圖3中的索引文件30采用了鍵名-鍵值(Key-Value)的形式,作為每個條 目的標識的鍵名采用計算機名,鍵值即為相應(yīng)的計算機的CPU使用率數(shù)據(jù)在數(shù)據(jù)文件中的 位置,如數(shù)據(jù)文件采用圖2所示結(jié)構(gòu),則該位置即為偏移量。
[0029] 在保存了局部索引之后,就可以方便地進行數(shù)據(jù)查詢。例如要查詢2014年03月 27日的計算機E的使用率,查詢請求中包含的是數(shù)據(jù)項的標識以及查詢時間,即指定要查 詢哪臺計算機在哪天的CPU使用率,則查詢步驟如下:
[0030] 步驟1 :先根據(jù)2014年03月27日獲取局部索引20140327. index ;
[0031] 步驟2:在該局部索引中按計算機E查找到鍵名為E的索引條目,例如查找到該索 引條目中相應(yīng)的鍵值為4000 ;
[0032] 步驟3 :在數(shù)據(jù)文件20140327. file中查找到偏移量為4000的位置,該位置即為 2014年03月27日的計算機E的CPU使用率數(shù)據(jù)的起始位置;
[0033] 步驟4 :在數(shù)據(jù)文件20140327. file中找到偏移量為4000的位置,從該位置起讀取 4個字節(jié)的使用率數(shù)據(jù)長度例如1000 ;
[0034] 步驟5 :從數(shù)據(jù)文件20140327. file中偏移量為4004的位置起讀取1000個字節(jié), 即得到2014年03月27日的計算機E的CPU使用率數(shù)據(jù)序列。
[0035] 可以看出應(yīng)用上述步驟可以比較快地獲取計算機的CPU使用率數(shù)據(jù)序列。在步驟 2中,是根據(jù)計算機名稱查找鍵名,這種方式需要遍歷局部索引,上述例子中有8臺計算機, 在某些情況下可能需要監(jiān)控范圍更廣,在這種情況下索引條目比較多,上述遍歷局部索引 的方式仍較為費時。因此還可以針對局部索引建立全局索引,全局索引仍可采用鍵名-鍵 值的結(jié)構(gòu),鍵名仍采用計算機名,鍵值為局部索引中以該計算機名為鍵名的條目的位置。如 圖4所示,圖4是根據(jù)本發(fā)明實施例的全局索引的一種結(jié)構(gòu)的示意圖。作為示例,圖4中仍 以上述例子為例進行示意,其中的鍵值即為局部索引中的條目位置,按照上述局部索引的 結(jié)構(gòu),該條目位置即為局部索引中的行數(shù)。
[0036] 在每次建立數(shù)據(jù)文件時建立一個局部索引,因此局部索引的數(shù)量是多個,而全局 索引是唯一的。因此對于多個局部索引來說,相同標識的數(shù)據(jù)文件在不同的局部索引中的 位置相同。以下結(jié)合圖5加以說明,圖5是根據(jù)本發(fā)明實施例的另一個局部索引的一種結(jié) 構(gòu)的示意圖。圖5示出的局部索引是2014年03月28日的計算機A至E的CPU使用率數(shù) 據(jù)。但在2014年03月28日,計算機F因故障停機,此時局部索引中鍵名為F的條目仍存 在,但其鍵值為空,這樣就保證了各天的局部索引具有相似的結(jié)構(gòu),同一個標識的數(shù)據(jù)項在 不同的局部索引中有相同的位置,例如計算機C在2014年03月27日的局部索引中位于第 3行,在2014年03月28日的局部索引中同樣位于第3行。因此全局索引中的條目內(nèi)容對 于所有局部索引都正確,這樣就能夠使用唯一的全局索引。
[0037] 在存在全局索引的情況下,收到查詢指令后,上述步驟1不變,步驟2變更為 在全局索引中按計算機名E查找到鍵名為E的索引條目,其鍵值為5 ;然后在局部索引 20140327. index中的第5行獲取鍵值4000。接下來按步驟3至步驟5進行處理。因為鍵 值4000是直接到第5行獲取,無需遍歷局部索引的鍵值,因此提高了獲取鍵值的速度。
[0038] 圖6是根據(jù)本發(fā)明實施例的處理時間序列數(shù)據(jù)的裝置的示意圖。如圖6所示,處 理時間序列數(shù)據(jù)的裝置60包括:緩存模塊61、持久化模塊62、以及局部索引模塊63。
[0039] 緩存模塊61用于接收多個時間序列數(shù)據(jù)項并緩存,其中各個時間序列數(shù)據(jù)項包 含以時間為序的多個數(shù)據(jù)元。持久化模塊62用于當緩存的時間序列數(shù)據(jù)項量達到預設(shè)值, 或者進行緩存的時間達到預設(shè)值時,將緩存的時間序列數(shù)據(jù)項持久化為一個數(shù)據(jù)文件,從 而得到多個數(shù)據(jù)文件。局部索引模塊63用于對于各個時間序列數(shù)據(jù)項,將其在數(shù)據(jù)文件 中的位置記錄在局部索引中的以該時間序列數(shù)據(jù)項的標識為標識的條目中,并且數(shù)據(jù)文件 與局部索引唯一對應(yīng)。
[0040] 局部索引文件63還可以用于對于多個局部索引,將相同標識的數(shù)據(jù)項在不同的 局部索引中置于相同的位置;并且,處理時間序列數(shù)據(jù)的裝置60還可以包括全局索引模塊 (圖中未示出),用于將局部索引的條目的位置記錄在全局索引的條目中,并且這兩個條目 的標識相同。
[0041] 持久化模塊62還可用于:在數(shù)據(jù)文件中記錄該數(shù)據(jù)文件中的各個時間序列數(shù)據(jù) 項的長度。持久化模塊62還可用于以建立數(shù)據(jù)文件的時間為該數(shù)據(jù)文件的文件名;并且 局部索引模塊63還可以用于以數(shù)據(jù)文件的文件名作為該數(shù)據(jù)文件對應(yīng)的局部索引的文件 名。
[0042] 根據(jù)本發(fā)明實施例的技術(shù)方案,對于時間序列數(shù)據(jù),進行緩存之后生成數(shù)據(jù)文件, 并建立局部索引,即實現(xiàn)了數(shù)據(jù)的存儲與查詢,無需采用專門的非關(guān)系型數(shù)據(jù)庫,有助于減 少占用的系統(tǒng)硬件資源;另外本方案可采用多種開發(fā)環(huán)境,以適應(yīng)不同的操作系統(tǒng)。
[0043] 以上結(jié)合具體實施例描述了本發(fā)明的基本原理,但是,需要指出的是,對本領(lǐng)域的 普通技術(shù)人員而言,能夠理解本發(fā)明的方法和設(shè)備的全部或者任何步驟或者部件,可以在 任何計算裝置(包括處理器、存儲介質(zhì)等)或者計算裝置的網(wǎng)絡(luò)中,以硬件、固件、軟件或者 它們的組合加以實現(xiàn),這是本領(lǐng)域普通技術(shù)人員在閱讀了本發(fā)明的說明的情況下運用他們 的基本編程技能就能實現(xiàn)的。
[0044] 因此,本發(fā)明的目的還可以通過在任何計算裝置上運行一個程序或者一組程序來 實現(xiàn)。所述計算裝置可以是公知的通用裝置。因此,本發(fā)明的目的也可以僅僅通過提供包 含實現(xiàn)所述方法或者裝置的程序代碼的程序產(chǎn)品來實現(xiàn)。也就是說,這樣的程序產(chǎn)品也構(gòu) 成本發(fā)明,并且存儲有這樣的程序產(chǎn)品的存儲介質(zhì)也構(gòu)成本發(fā)明。顯然,所述存儲介質(zhì)可 以是任何公知的存儲介質(zhì)或者將來開發(fā)出的任何存儲介質(zhì)。
[0045] 還需要指出的是,在本發(fā)明的裝置和方法中,顯然,各部件或各步驟是可以分解和 /或重新組合的。這些分解和/或重新組合應(yīng)視為本發(fā)明的等效方案。并且,執(zhí)行上述系列 處理的步驟可以自然地按照說明的順序按時間順序執(zhí)行,但是并不需要一定按照時間順序 執(zhí)行。某些步驟可以并行或彼此獨立地執(zhí)行。
[0046] 上述【具體實施方式】,并不構(gòu)成對本發(fā)明保護范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明 白的是,取決于設(shè)計要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何 在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進等,均應(yīng)包含在本發(fā)明保護范圍 之內(nèi)。
【權(quán)利要求】
1. 一種處理時間序列數(shù)據(jù)的方法,其特征在于,包括: 接收多個時間序列數(shù)據(jù)項并緩存,其中各個時間序列數(shù)據(jù)項包含以時間為序的多個數(shù) 據(jù)元; 當緩存的時間序列數(shù)據(jù)項的量達到預設(shè)值,或者進行緩存的時間達到預設(shè)值時,將多 個緩存的時間序列數(shù)據(jù)項持久化為一個數(shù)據(jù)文件,從而得到多個數(shù)據(jù)文件; 對于各個時間序列數(shù)據(jù)項,將其在所述數(shù)據(jù)文件中的位置記錄在局部索引中的以該時 間序列數(shù)據(jù)項的標識為標識的條目中,并且數(shù)據(jù)文件與局部索引唯一對應(yīng)。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 對于多個局部索引,相同標識的數(shù)據(jù)項在不同的局部索引中的位置相同; 將時間序列數(shù)據(jù)項在所述數(shù)據(jù)文件中的位置記錄在局部索引的條目中之后,還包括: 將該條目在局部索引中的位置記錄在全局索引的條目中,并且這兩個條目的標識相同。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括:在所述數(shù)據(jù)文件中記錄該數(shù) 據(jù)文件中的各個時間序列數(shù)據(jù)項的長度。
4. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述數(shù)據(jù)文件及其對應(yīng)的局部索引的 文件名是建立該數(shù)據(jù)文件的時間。
5. -種處理時間序列數(shù)據(jù)的裝置,其特征在于,包括: 緩存模塊,用于接收多個時間序列數(shù)據(jù)項并緩存,其中各個時間序列數(shù)據(jù)項包含以時 間為序的多個數(shù)據(jù)元; 持久化模塊,用于當緩存的時間序列數(shù)據(jù)項量達到預設(shè)值,或者進行緩存的時間達到 預設(shè)值時,將緩存的時間序列數(shù)據(jù)項持久化為一個數(shù)據(jù)文件,從而得到多個數(shù)據(jù)文件; 局部索引模塊,用于對于各個時間序列數(shù)據(jù)項,將其在所述數(shù)據(jù)文件中的位置記錄在 局部索引中的以該時間序列數(shù)據(jù)項的標識為標識的條目中,并且數(shù)據(jù)文件與局部索引唯一 對應(yīng)。
6. 根據(jù)權(quán)利要求5所述的裝置,其特征在于, 所述局部索引文件還用于:對于多個局部索引,將相同標識的數(shù)據(jù)項在不同的局部索 引中置于相同的位置; 所述裝置還包括全局索引模塊,用于將局部索引的條目的位置記錄在全局索引的條目 中,并且這兩個條目的標識相同。
7. 根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,所述持久化模塊還用于:在所述數(shù)據(jù) 文件中記錄該數(shù)據(jù)文件中的各個時間序列數(shù)據(jù)項的長度。
8. 根據(jù)權(quán)利要求5或6所述的裝置,其特征在于, 所述持久化模塊還用于:以建立所述數(shù)據(jù)文件的時間為該數(shù)據(jù)文件的文件名; 所述局部索引模塊還用于:以數(shù)據(jù)文件的文件名作為該數(shù)據(jù)文件對應(yīng)的局部索引的文 件名。
【文檔編號】G06F17/30GK104156385SQ201410287616
【公開日】2014年11月19日 申請日期:2014年6月24日 優(yōu)先權(quán)日:2014年6月24日
【發(fā)明者】白文志, 王鵬, 邊迪, 姬廣騰, 項奎, 趙國輝 申請人:北京京東尚科信息技術(shù)有限公司, 北京京東世紀貿(mào)易有限公司