一種基于Hbase的數(shù)據(jù)讀寫操作方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于Hbase數(shù)據(jù)庫的數(shù)據(jù)讀寫操作方法及系統(tǒng),其中,基于Hbase數(shù)據(jù)庫的數(shù)據(jù)讀寫操作方法包括:獲取至少一個數(shù)據(jù)源文件中的數(shù)據(jù);將各數(shù)據(jù)源文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,為該數(shù)據(jù)記錄合理設(shè)計Rowkey,并將所述數(shù)據(jù)記錄存儲于Hbase數(shù)據(jù)庫的第一數(shù)據(jù)表;通過Rowkey讀取Hbase數(shù)據(jù)庫的第一數(shù)據(jù)表中的數(shù)據(jù)記錄;對所述讀取的數(shù)據(jù)記錄進(jìn)行預(yù)定處理后,以相同的Rowkey將所述預(yù)定處理后的數(shù)據(jù)記錄存儲于Hbase數(shù)據(jù)庫的第二數(shù)據(jù)表。通過本發(fā)明的方法,將數(shù)據(jù)源文件中的數(shù)據(jù)存儲于Hbase數(shù)據(jù)庫中,既滿足了對存儲云化的需求,也滿足了數(shù)據(jù)讀寫的性能要求。
【專利說明】-種基于化ase的數(shù)據(jù)讀寫操作方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫【技術(shù)領(lǐng)域】,具體涉及一種基于化ase的數(shù)據(jù)讀寫操作方法及系 統(tǒng)。
【背景技術(shù)】
[0002] 在單機(jī)版的應(yīng)用軟件系統(tǒng)中,傳統(tǒng)的文件存放在文件系統(tǒng)上,用讀文件和寫文件 的方式來獲取和存放數(shù)據(jù)。參見圖1,一般情況下,采用本地文件系統(tǒng)來存放文件,比如, 在計費(fèi)系統(tǒng)中,可W將采集下來的話單文件存放于本地文件系統(tǒng)中,然后從話單文件中獲 取數(shù)據(jù)文件,經(jīng)過預(yù)處理后,將經(jīng)過預(yù)處理后的數(shù)據(jù)文件存放于本地文件系統(tǒng)中,隨后的剔 重、批價和詳單存儲采用相同的方法。
[0003] 隨著云計算的發(fā)展,在應(yīng)用軟件系統(tǒng)云化后,只采用普通的文件系統(tǒng)(即本地文 件系統(tǒng))來存放數(shù)據(jù)已經(jīng)不能滿足云化后系統(tǒng)的需求,所W分布式文件系統(tǒng)就應(yīng)運(yùn)而生。
[0004] 采用分布式文件系統(tǒng)來存放數(shù)據(jù),沿用了單機(jī)版采用文件系統(tǒng)的傳統(tǒng),理解和使 用上比較方便,但是存在數(shù)據(jù)的讀寫性能問題和數(shù)據(jù)的正確性問題:分布式文件系統(tǒng)幾乎 所有的讀寫、打開或關(guān)閉文件都是跨網(wǎng)絡(luò)操作,數(shù)據(jù)的讀寫性能相對單機(jī)版的文件系統(tǒng)低 很多;在分布式文件系統(tǒng)讀寫數(shù)據(jù)的過程中,通常會采用緩存技術(shù),此時可能會存在數(shù)據(jù) 的不正確性。
[0005] 應(yīng)用軟件系統(tǒng)云化后,本地文件系統(tǒng)已經(jīng)不適合,而使用分布式文件系統(tǒng)又會存 在性能問題和數(shù)據(jù)的正確性問題。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明所要解決的技術(shù)問題是提供一種基于化ase的數(shù)據(jù)讀寫操作方法及系統(tǒng), 能夠滿足存儲云化的需求,也能夠滿足數(shù)據(jù)讀寫的性能問題。
[0007] 依據(jù)本發(fā)明的一個方面,提供了一種基于化ase的數(shù)據(jù)讀寫操作方法,包括:
[0008] 獲取至少一個數(shù)據(jù)源文件中的數(shù)據(jù);
[0009] 將各數(shù)據(jù)源文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,為該數(shù)據(jù)記錄合理設(shè)計Rowkey,并 將所述數(shù)據(jù)記錄存儲于化ase數(shù)據(jù)庫的第一數(shù)據(jù)表;
[0010] 通過Rowkey讀取化ase數(shù)據(jù)庫的第一數(shù)據(jù)表中的數(shù)據(jù)記錄;
[0011] 對所述讀取的數(shù)據(jù)記錄進(jìn)行預(yù)定處理后,W相同的Rowkey將所述預(yù)定處理后的 數(shù)據(jù)記錄存儲于化ase數(shù)據(jù)庫的第二數(shù)據(jù)表。
[0012] 依據(jù)本發(fā)明的另一個方面,提供了一種基于化ase的數(shù)據(jù)讀寫操作系統(tǒng),包括:
[0013] 數(shù)據(jù)獲取模塊,用于獲取至少一個數(shù)據(jù)源文件中的數(shù)據(jù);
[0014] 第一數(shù)據(jù)存儲模塊,用于將各數(shù)據(jù)源文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,為該數(shù)據(jù) 記錄合理設(shè)計Rowkey,并將所述數(shù)據(jù)記錄存儲于化ase數(shù)據(jù)庫的第一數(shù)據(jù)表;
[0015] 數(shù)據(jù)讀取模塊,用于通過Rowkey讀取化ase數(shù)據(jù)庫的第一數(shù)據(jù)表中的數(shù)據(jù)記錄;
[0016] 第二數(shù)據(jù)存儲模塊,用于對所述讀取的數(shù)據(jù)記錄進(jìn)行預(yù)定處理后,W相同的 Rowkey將所述預(yù)定處理后的數(shù)據(jù)記錄存儲于化ase數(shù)據(jù)庫第二數(shù)據(jù)表。
[0017] 本發(fā)明提供的一種基于化ase的數(shù)據(jù)讀寫操作方法及系統(tǒng),首先獲取數(shù)據(jù)源文件 中的數(shù)據(jù),將數(shù)據(jù)源文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,為該數(shù)據(jù)記錄設(shè)計合理的Rowkey,并 將其存儲于化ase數(shù)據(jù)庫的第一數(shù)據(jù)表中,然后通過Rowkey從第一數(shù)據(jù)表中獲取數(shù)據(jù)記 錄,經(jīng)過預(yù)定處理后,W相同的Rowkey將處理后的數(shù)據(jù)記錄存儲于化ase數(shù)據(jù)庫的第二數(shù) 據(jù)表中。本發(fā)明方法將化ase作為文件系統(tǒng)來存儲和讀寫臨時過程文件(也可稱為臨時過 程數(shù)據(jù)),能夠滿足應(yīng)用軟件云化后對存儲云化的需求;由于化ase合理利用內(nèi)存,相對于 分布式文件系統(tǒng),數(shù)據(jù)的讀寫性能非常高,因此也能滿足數(shù)據(jù)存儲和讀寫的性能要求。
【專利附圖】
【附圖說明】
[0018] 圖1為現(xiàn)有技術(shù)本地文件系統(tǒng)存放數(shù)據(jù)示意圖;
[0019] 圖2為本發(fā)明實施例一的一種基于化ase的數(shù)據(jù)讀寫操作方法流程圖;
[0020] 圖3為本發(fā)明實施例二的一種基于化ase的數(shù)據(jù)讀寫操作方法流程圖;
[0021] 圖4為本發(fā)明實施例二的一種基于化ase的數(shù)據(jù)讀寫操作系統(tǒng)示意圖。
【具體實施方式】
[0022] W下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實例只用于解釋本發(fā)明,并 非用于限定本發(fā)明的范圍。
[0023] 實施例一、一種基于化ase的數(shù)據(jù)讀寫操作方法。下面結(jié)合圖2對本實施例提供 的方法進(jìn)行詳細(xì)說明。
[0024] 圖2中,S201、獲取至少一個數(shù)據(jù)源文件中的數(shù)據(jù)。
[00巧]具體的,由于化ase數(shù)據(jù)庫主要用于存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù),通常 存儲數(shù)據(jù)量大的數(shù)據(jù),數(shù)據(jù)一旦存儲入化ase數(shù)據(jù)庫,不再做改動,只對外提供查詢,通常 根據(jù)主鍵(rowkey)和主鍵的range來查詢檢索數(shù)據(jù)?;痑se數(shù)據(jù)庫合理利用內(nèi)存,數(shù)據(jù)讀 寫性能非常高,本實施例采用化ase數(shù)據(jù)庫作為文件系統(tǒng)來讀寫各個臨時過程文件中的數(shù) 據(jù)。在將臨時過程文件中的數(shù)據(jù)存儲于化ase數(shù)據(jù)庫之前,需要獲取數(shù)據(jù)源文件(或者稱 為臨時過程文件)中的數(shù)據(jù)。為了提高數(shù)據(jù)源文件中的數(shù)據(jù)存入化ase數(shù)據(jù)庫的效率,通 常同時獲取多個數(shù)據(jù)源文件中的數(shù)據(jù)。同時,為了能夠分批對數(shù)據(jù)源文件中出的數(shù)據(jù)進(jìn)行 存儲,可W按照預(yù)定時間間隔定時獲取數(shù)據(jù)源文件中的數(shù)據(jù),并記錄下數(shù)據(jù)源文件的文件 名稱,數(shù)據(jù)源文件的文件名稱與該數(shù)據(jù)源文件中的數(shù)據(jù)存在一一對應(yīng)關(guān)系。
[0026] S202、將各數(shù)據(jù)源文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,為該數(shù)據(jù)記錄合理設(shè)計 Rowkey,并將所述數(shù)據(jù)記錄存儲于化ase數(shù)據(jù)庫的第一數(shù)據(jù)表。
[0027] 具體的,步驟S201獲取了數(shù)據(jù)源文件中的數(shù)據(jù),該步驟將獲取的數(shù)據(jù)源文件中的 數(shù)據(jù)作為一條數(shù)據(jù)記錄,即將每個數(shù)據(jù)源文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,并為該數(shù)據(jù)記 錄合理設(shè)計rowkey,即為數(shù)據(jù)記錄設(shè)計的rowkey能區(qū)分出各數(shù)據(jù)源文件中的數(shù)據(jù),并將 數(shù)據(jù)記錄按照設(shè)計的rowkey存儲于化ase數(shù)據(jù)庫的第一數(shù)據(jù)表中。其中,rowkey能唯一 標(biāo)識該條數(shù)據(jù)記錄,相當(dāng)于本地文件系統(tǒng)中的路徑名+文件名。具體實施時,參見下述的 表1所示,將數(shù)據(jù)記錄對應(yīng)的數(shù)據(jù)源文件的文件名稱(例如表1中的"a. txt"、"b. txt"或 "c. txt")作為該數(shù)據(jù)記錄的rowkey,數(shù)據(jù)源文件的文件名稱是無重復(fù)的,因此將數(shù)據(jù)源文 件的文件名稱作為對應(yīng)的數(shù)據(jù)記錄的rowkey能夠唯一標(biāo)識該條數(shù)據(jù)記錄。
[0028] 另外,在將數(shù)據(jù)存儲于第一數(shù)據(jù)表之前,根據(jù)多個數(shù)據(jù)源文件中的數(shù)據(jù)內(nèi)容為數(shù) 據(jù)源文件對應(yīng)的數(shù)據(jù)記錄設(shè)計列簇(column family)和列(column),為了方面數(shù)據(jù)的存儲 和讀寫,本實施例為數(shù)據(jù)源文件對應(yīng)的數(shù)據(jù)記錄設(shè)計一個column family和column即可。 為數(shù)據(jù)源文件中的數(shù)據(jù)設(shè)計好了 rowkey、column family及column后,將按照表1中的存 儲結(jié)構(gòu)將數(shù)據(jù)源文件中的數(shù)據(jù)存儲于化ase數(shù)據(jù)庫的第一數(shù)據(jù)表中。
[0029] 表 1
[0030]
【權(quán)利要求】
1. 一種基于ffiase數(shù)據(jù)庫的數(shù)據(jù)讀寫操作方法,其特征在于,包括: 步驟S201、獲取至少一個數(shù)據(jù)源文件中的數(shù)據(jù); 步驟S202、將各數(shù)據(jù)源文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,為該數(shù)據(jù)記錄合理設(shè)計 Rowkey,并將所述數(shù)據(jù)記錄存儲于Hbase數(shù)據(jù)庫的第一數(shù)據(jù)表; 步驟S203、通過Rowkey讀取Hbase數(shù)據(jù)庫的第一數(shù)據(jù)表中的數(shù)據(jù)記錄; 步驟S204、對所述讀取的數(shù)據(jù)記錄進(jìn)行預(yù)定處理后,以相同的Rowkey將所述預(yù)定處理 后的數(shù)據(jù)記錄存儲于ffiase數(shù)據(jù)庫的第二數(shù)據(jù)表。
2. 如權(quán)利要求1所述的數(shù)據(jù)讀寫操作方法,其特征在于,所述步驟S201包括: 按照預(yù)定時間間隔定時獲取至少一個數(shù)據(jù)源文件中的數(shù)據(jù); 所述步驟S202包括: 在Hbase數(shù)據(jù)庫中建立若干個第一數(shù)據(jù)表,所述第一數(shù)據(jù)表存儲各數(shù)據(jù)源文件中的數(shù) 據(jù),其中,第一數(shù)據(jù)表存儲各源數(shù)據(jù)文件中的數(shù)據(jù)的時間與獲取各數(shù)據(jù)源文件中的數(shù)據(jù)的 時間存在對應(yīng)關(guān)系; 所述步驟S204還包括: 在Hbase數(shù)據(jù)庫中建立若干個第二數(shù)據(jù)表,所述第二數(shù)據(jù)表存儲對第一數(shù)據(jù)表中的數(shù) 據(jù)記錄經(jīng)過預(yù)定處理后的數(shù)據(jù)記錄,其中,第二數(shù)據(jù)表存儲所述對第一數(shù)據(jù)表中的數(shù)據(jù)經(jīng) 過記錄預(yù)定處理后的數(shù)據(jù)記錄的時間與第一數(shù)據(jù)表存儲各數(shù)據(jù)源文件中的數(shù)據(jù)的時間存 在對應(yīng)關(guān)系。
3. 如權(quán)利要求2所述的數(shù)據(jù)讀寫操作方法,其特征在于,當(dāng)兩個第一數(shù)據(jù)表存儲各數(shù) 據(jù)源文件中的數(shù)據(jù)的時間間隔達(dá)到預(yù)定時間閾值時,刪除存儲數(shù)據(jù)時間在前的第一數(shù)據(jù) 表; 或者, 當(dāng)兩個第二數(shù)據(jù)表存儲對第一數(shù)據(jù)表中的數(shù)據(jù)記錄經(jīng)過預(yù)定處理后的數(shù)據(jù)記錄的時 間間隔達(dá)到預(yù)定時間閾值時,刪除存儲數(shù)據(jù)時間在前的第二數(shù)據(jù)表。
4. 如權(quán)利要求1所述的數(shù)據(jù)讀寫操作方法,其特征在于,所述步驟S202中將各數(shù)據(jù)源 文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,為該數(shù)據(jù)記錄合理設(shè)計Rowkey具體包括: 將獲取的各數(shù)據(jù)源文件的文件名稱作為該數(shù)據(jù)源文件中的數(shù)據(jù)記錄的Rowkey。
5. 如權(quán)利要求1或2所述的數(shù)據(jù)讀寫操作方法,其特征在于,在步驟S202將所述數(shù)據(jù) 記錄存儲于ffiase數(shù)據(jù)庫的第一數(shù)據(jù)表之前還包括: 根據(jù)各數(shù)據(jù)源文件的數(shù)據(jù)內(nèi)容為各數(shù)據(jù)源文件中的數(shù)據(jù)記錄統(tǒng)一設(shè)計一個合理的列 簇和列。
6. -種基于Hbase數(shù)據(jù)庫的數(shù)據(jù)讀寫操作系統(tǒng),其特征在于,包括: 數(shù)據(jù)獲取模塊,用于獲取至少一個數(shù)據(jù)源文件中的數(shù)據(jù); 第一數(shù)據(jù)存儲模塊,用于將各數(shù)據(jù)源文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,為該數(shù)據(jù)記錄 合理設(shè)計Rowkey,并將所述數(shù)據(jù)記錄存儲于Hbase數(shù)據(jù)庫的第一數(shù)據(jù)表; 數(shù)據(jù)讀取模塊,用于通過Rowkey讀取Hbase數(shù)據(jù)庫的第一數(shù)據(jù)表中的數(shù)據(jù)記錄; 第二數(shù)據(jù)存儲模塊,用于對所述讀取的數(shù)據(jù)記錄進(jìn)行預(yù)定處理后,以相同的Rowkey將 所述預(yù)定處理后的數(shù)據(jù)記錄存儲于ffiase數(shù)據(jù)庫第二數(shù)據(jù)表。
7. 如權(quán)利要求6所述的數(shù)據(jù)讀寫操作系統(tǒng),其特征在于,所述數(shù)據(jù)獲取模塊用于獲取 至少一個數(shù)據(jù)源文件中的數(shù)據(jù)具體包括: 按照預(yù)定時間間隔定時獲取至少一個數(shù)據(jù)源文件中的數(shù)據(jù); 所述第一數(shù)據(jù)存儲模塊還包括: 第一建立模塊,用于在ffiase數(shù)據(jù)庫中建立若干個第一數(shù)據(jù)表,所述第一數(shù)據(jù)表存儲 各數(shù)據(jù)源文件中的數(shù)據(jù),其中,第一數(shù)據(jù)表存儲各源數(shù)據(jù)文件中的數(shù)據(jù)的時間與獲取各數(shù) 據(jù)源文件中的數(shù)據(jù)的時間存在對應(yīng)關(guān)系; 第二數(shù)據(jù)存儲模塊還包括: 第二建立模塊,用于在ffiase數(shù)據(jù)庫中建立若干個第二數(shù)據(jù)表,所述第二數(shù)據(jù)表存儲 對第一數(shù)據(jù)表中的數(shù)據(jù)記錄經(jīng)過預(yù)定處理后的數(shù)據(jù)記錄,其中,第二數(shù)據(jù)表存儲所述對第 一數(shù)據(jù)表中的數(shù)據(jù)記錄經(jīng)過預(yù)定處理后的數(shù)據(jù)記錄的時間與第一數(shù)據(jù)表存儲各數(shù)據(jù)源文 件中的數(shù)據(jù)的時間存在對應(yīng)關(guān)系。
8. 如權(quán)利要求7所述的數(shù)據(jù)讀寫操作系統(tǒng),其特征在于,當(dāng)兩個第一數(shù)據(jù)表存儲各數(shù) 據(jù)源文件中的數(shù)據(jù)的時間間隔達(dá)到預(yù)定時間閾值時,刪除存儲數(shù)據(jù)時間在前的第一數(shù)據(jù) 表; 或者, 當(dāng)兩個第二數(shù)據(jù)表存儲對第一數(shù)據(jù)表中的數(shù)據(jù)記錄預(yù)定處理后的數(shù)據(jù)記錄的時間間 隔達(dá)到預(yù)定時間閾值時,刪除存儲數(shù)據(jù)時間在前的第二數(shù)據(jù)表。
9. 如權(quán)利要求6所述的數(shù)據(jù)讀寫操作系統(tǒng),其特征在于,所述第一數(shù)據(jù)存儲模塊,用于 將各數(shù)據(jù)源文件中的數(shù)據(jù)作為一條數(shù)據(jù)記錄,為該數(shù)據(jù)記錄合理設(shè)計Rowkey具體包括: 將獲取的各數(shù)據(jù)源文件的文件名稱作為該數(shù)據(jù)源文件中的數(shù)據(jù)記錄的Rowkey。
10. 如權(quán)利要求6所述的數(shù)據(jù)讀寫操作系統(tǒng),其特征在于,所述第一數(shù)據(jù)存儲模塊在將 所述數(shù)據(jù)記錄存儲于ffiase數(shù)據(jù)庫的第一數(shù)據(jù)表之前還包括: 根據(jù)各數(shù)據(jù)源文件的數(shù)據(jù)內(nèi)容為各數(shù)據(jù)源文件中的數(shù)據(jù)記錄統(tǒng)一設(shè)計一個合理的列 簇和列。
【文檔編號】G06F17/30GK104331460SQ201410602645
【公開日】2015年2月4日 申請日期:2014年10月31日 優(yōu)先權(quán)日:2014年10月31日
【發(fā)明者】李曉靜 申請人:北京思特奇信息技術(shù)股份有限公司