一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法及系統(tǒng),管理方法包括:響應(yīng)數(shù)據(jù)寫入請求,生成用于在HBase數(shù)據(jù)庫中保存的待存儲HBase記錄;將所述待存儲HBase記錄中所包括的內(nèi)容的大小超過預(yù)設(shè)字段閾值的字段作為大字段,提取所述大字段的內(nèi)容生成大字段數(shù)據(jù)塊;向保存在HDFS文件系統(tǒng)中的容器文件寫入所述大字段數(shù)據(jù)塊;將所述大字段數(shù)據(jù)塊在所述HDFS文件系統(tǒng)中的位置作為索引,將所述待存儲HBase記錄中的大字段的內(nèi)容替換為所述索引;在HBase中保存所述待存儲HBase記錄。本發(fā)明可以很好地發(fā)揮HBase及HDFS的優(yōu)勢,而回避HBase對大字段處理的不足,以及HDFS在存儲小文件時資源消耗過大的不足,較好地滿足了業(yè)務(wù)的需要,在實際應(yīng)用中取得了良好的效果。
【專利說明】一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫相關(guān)【技術(shù)領(lǐng)域】,特別是一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著業(yè)務(wù)量的激增,IT運營系統(tǒng)需要處理的數(shù)據(jù)量與訪問量也隨之猛增,傳統(tǒng)的以O(shè)racle為代表的數(shù)據(jù)庫解決方案因其效率低下、擴(kuò)展性差等問題,已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足用戶的存儲與查詢需求,而逐漸讓位于以HBase為代表的新一代分布式數(shù)據(jù)庫。
[0003]HBase - Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。HBase對大小在千字節(jié)級的記錄可以很好的支持,但受其實現(xiàn)原理的限制,對業(yè)務(wù)中常見的記錄與資料文件(如表格、文檔、圖片掃描件等,即是本發(fā)明所描述的大字段,典型大小從幾百千字節(jié)到幾十兆字節(jié))聯(lián)合存儲,則不能很好的支持,會造成冗余磁盤文件讀寫、并發(fā)度不高、查詢低效等問題。由于從業(yè)務(wù)角度來看,是以記錄為主,文件內(nèi)容是記錄的一個組成部分,問題的實質(zhì)是HBase記錄中的某個或某些字段超出常規(guī)大小,故將其統(tǒng)稱為HBase大字段存儲問題。而針對此問題的傳統(tǒng)解決方案有:大字段單獨存儲到磁盤、大字段單獨存儲到HDFS(Hadoop Distributed File System,簡稱HDFS,是一個分布式文件系統(tǒng))都有各自的缺陷,而不能較好地從整體上解決上述問題。以下分別闡述每種方案的缺陷:
[0004]1.將文件內(nèi)容作為業(yè)務(wù)記錄中的一個字段,直接記錄在HBase中。
[0005]這種方案會導(dǎo)致嚴(yán)重的HBase性能問題。
[0006]HBase服務(wù)端收到寫入請求后,向表中寫入數(shù)據(jù)時是先向內(nèi)存中的緩存寫入,一段時間后受觸發(fā)才將數(shù)據(jù)寫入HDFS (持久化)。因此HBase有重做日志,以實現(xiàn)在數(shù)據(jù)從寫入緩存到寫入HDFS之間服務(wù)器故障而導(dǎo)致內(nèi)存中數(shù)據(jù)丟失的情況下,仍能從重做日志中恢復(fù)此部分?jǐn)?shù)據(jù)。
[0007]重做日志的大小是有限的,當(dāng)重做日志裝滿,就需要回收一部分重做日志,即把這部分重做日志中仍在內(nèi)存的表數(shù)據(jù)寫入HDFS實現(xiàn)持久化,這會導(dǎo)致這部分重做日志所涉及到的每個有未持久化數(shù)據(jù)的表的底層數(shù)據(jù)存儲都增加一個文件,若文件超過一定數(shù)量,則會影響讀寫效率,而需要合并。通常情況下記錄較小,重做日志裝滿需要較長時間,回收重做日志的頻率較低,因回收重做日志而導(dǎo)致的文件合并操作是罕有的。然而在大字段的情況下,重做日志會很快裝滿,導(dǎo)致無關(guān)表的底層數(shù)據(jù)存儲增加大量的小文件,并造成頻繁的文件合并操作,極大影響HBase的性能。因此這種方案是不可行的。
[0008]2.文件單獨存儲在共享存儲磁盤中,HBase業(yè)務(wù)記錄中的一個字段記錄文件的路徑。
[0009]本方案的主要問題包括:用戶操作復(fù)雜化且無事務(wù)保證、數(shù)據(jù)安全性低、系統(tǒng)可用性降低。
[0010]I)用戶操作復(fù)雜化且無事務(wù)保證。[0011]在本方案中用戶需要分別負(fù)責(zé)對HBase和共享存儲的寫入,增加了復(fù)雜度,而且這兩步操作對用戶來說是分離的,沒有事務(wù)的原子性保證,也就是說如果用戶在第一步操作完成后,第二步操作提交前,系統(tǒng)或網(wǎng)絡(luò)發(fā)生故障,用戶操作中斷,系統(tǒng)就會處于不一致狀態(tài)。
[0012]2)數(shù)據(jù)安全性降級
[0013]HBase和HDFS的數(shù)據(jù)存儲原則是分布式冗余,在標(biāo)準(zhǔn)配置下能保證集群中任意兩臺服務(wù)器發(fā)生故障時數(shù)據(jù)不丟失。而共享存儲通常沒有這樣的強(qiáng)安全性保證,又或者為了實現(xiàn)這樣的安全性需要付出很高的硬件成本。
[0014]3)系統(tǒng)可用性降低
[0015]系統(tǒng)的主要組件是HBase,而HBase的數(shù)據(jù)存儲是HDFS。本方案引入共享存儲,若共享存儲不能正常工作,整個系統(tǒng)也就無法運行,即是在系統(tǒng)中增加了一個可能出故障的組件,導(dǎo)致整個系統(tǒng)的可用性降低。
[0016]3.文件單獨存儲在HDFS中,HBase業(yè)務(wù)記錄中的一個字段記錄文件的路徑。
[0017]本方案的主要問題包括:用戶操作復(fù)雜化且無事務(wù)保證(與上一方案相同)、HDFS不適于存儲小文件。
[0018]HDFS的實現(xiàn)是為大文件存儲和處理優(yōu)化,使用一個較大的內(nèi)存數(shù)據(jù)結(jié)構(gòu)保存每個文件的狀態(tài),如果存儲的文件數(shù)過多,就會導(dǎo)致內(nèi)存占用過大,而增加集群壓力,降低集群性能。
【發(fā)明內(nèi)容】
[0019]基于此,有必要針對現(xiàn)有技術(shù)在HBase數(shù)據(jù)庫中,對大字段數(shù)據(jù)無法很好地存儲和讀取的技術(shù)問題,提供一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法及系統(tǒng)。
[0020]一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法,包括:
[0021]響應(yīng)數(shù)據(jù)寫入請求,生成用于在HBase數(shù)據(jù)庫中保存的待存儲HBase記錄;
[0022]將所述待存儲HBase記錄中所包括的內(nèi)容的大小超過預(yù)設(shè)字段閾值的字段作為大字段,提取所述大字段的內(nèi)容生成大字段數(shù)據(jù)塊;
[0023]向保存在HDFS文件系統(tǒng)中的容器文件寫入所述大字段數(shù)據(jù)塊;
[0024]將所述大字段數(shù)據(jù)塊在所述HDFS文件系統(tǒng)中的位置作為索引,將所述待存儲HBase記錄中的大字段的內(nèi)容替換為所述索引;
[0025]在HBase中保存所述待存儲HBase記錄。
[0026]一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理系統(tǒng),包括:
[0027]數(shù)據(jù)寫入請求響應(yīng)模塊,用于響應(yīng)數(shù)據(jù)寫入請求,生成用于在HBase數(shù)據(jù)庫中保存的待存儲HBase記錄;
[0028]大字段數(shù)據(jù)塊生成模塊,用于將所述待存儲HBase記錄中所包括的內(nèi)容的大小超過預(yù)設(shè)字段閾值的字段作為大字段,提取所述大字段的內(nèi)容生成大字段數(shù)據(jù)塊;
[0029]大字段數(shù)據(jù)塊寫入模塊,用于向保存在HDFS文件系統(tǒng)中的容器文件寫入所述大字段數(shù)據(jù)塊;
[0030]待存儲HBase記錄替換模塊,用于將所述大字段數(shù)據(jù)塊在所述HDFS文件系統(tǒng)中的位置作為索引,將所述待存儲HBase記錄中的大字段的內(nèi)容替換為所述索引;[0031 ] 待存儲HBase記錄保存模塊,用于在HBase中保存所述待存儲HBase記錄。
[0032]本發(fā)明為了解決HBase數(shù)據(jù)庫不能很好地處理包含大字段的大量記錄的問題,通過結(jié)合HBase和HDFS兩者的優(yōu)點,把HBase記錄與影響HBase性能的大字段在物理存儲層面分離,把大字段的內(nèi)容保存在HDFS的容器文件中,在HBase中實際保存的數(shù)據(jù)是大字段的索引而非大字段本身。從而可以很好地發(fā)揮HBase對記錄處理的高響應(yīng)時間、高吞吐量、高并發(fā)度的優(yōu)勢,而回避HBase對大字段處理的不足。每個容器文件中可存儲多個大字段內(nèi)容(應(yīng)用中可達(dá)到億級),實現(xiàn)索引機(jī)制,可通過索引迅速定位一個大字段在容器文件中的具體位置并讀取。由于整個替換工作是在數(shù)據(jù)寫入HBase數(shù)據(jù)庫的過程中執(zhí)行,因此是一個完整的原子操作,保證了用戶寫數(shù)據(jù)操作的易用性、原子性和數(shù)據(jù)一致性。另外,將多個大字段打包存儲在系統(tǒng)的必備組件HDFS的容器文件中,以發(fā)揮HDFS存儲大文件的高容量、高可靠性、高傳輸率、高并發(fā)度的優(yōu)勢,而回避HDFS在存儲小文件時資源消耗過大的不足。本發(fā)明較好地滿足了業(yè)務(wù)的需要,在實際應(yīng)用中取得了良好的效果。
【專利附圖】
【附圖說明】
[0033]圖1為本發(fā)明一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法的工作流程圖;
[0034]圖2為本發(fā)明一個例子的大字段的數(shù)據(jù)存儲結(jié)構(gòu)圖;
[0035]圖3為本發(fā)明一個例子的結(jié)構(gòu)示意圖;
[0036]圖4為本發(fā)明一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理系統(tǒng)的結(jié)構(gòu)模塊圖。
【具體實施方式】
[0037]下面結(jié)合附圖和具體實施例對本發(fā)明做進(jìn)一步詳細(xì)的說明。
[0038]如圖1所示為本發(fā)明一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法的工作流程圖,包括:
[0039]步驟S101,響應(yīng)數(shù)據(jù)寫入請求,生成用于在HBase數(shù)據(jù)庫中保存的待存儲HBase記錄;
[0040]步驟S102,將所述待存儲HBase記錄中所包括的內(nèi)容的大小超過預(yù)設(shè)字段閾值的字段作為大字段,提取所述大字段的內(nèi)容生成大字段數(shù)據(jù)塊;
[0041]步驟S103,向保存在HDFS文件系統(tǒng)中的容器文件寫入所述大字段數(shù)據(jù)塊;
[0042]步驟S104,將所述大字段數(shù)據(jù)塊在所述HDFS文件系統(tǒng)中的位置作為索引,將所述待存儲HBase記錄中的大字段的內(nèi)容替換為所述索引;
[0043]步驟S105,在HBase中保存所述待存儲HBase記錄。
[0044]當(dāng)用戶請求向HBase數(shù)據(jù)庫寫入數(shù)據(jù)時,系統(tǒng)首先執(zhí)行步驟S101,然后,在步驟S102將大字段的內(nèi)容從HBase記錄中提取出來作為大字段數(shù)據(jù)塊,步驟S103則將大字段數(shù)據(jù)塊寫入HDFS中的容器文件,步驟S104則生成用于記錄該大字段數(shù)據(jù)塊在HDFS文件系統(tǒng)中的位置的索引,并替換到HBase記錄中,在步驟S105將替換后的HBase記錄寫入HBase數(shù)據(jù)庫。這樣在HBase中實際保存的數(shù)據(jù)就成了大字段的索引而非大字段本身,從而減小HBase的負(fù)擔(dān),提高HBase性能。同時,在HDFS中保存的是包括多個大字段數(shù)據(jù)塊的容器文件,因此,HDFS也無需處理小文件,從而在整體上克服了現(xiàn)有技術(shù)在HBase數(shù)據(jù)庫中,對大字段數(shù)據(jù)無法很好地管理的技術(shù)問題,提高HBase性能。
[0045]其中向HBase數(shù)據(jù)庫寫入是通過HBase的Coprocessor機(jī)制實現(xiàn)的。Coprocessor機(jī)制是HBase制定的用于擴(kuò)展其功能的組件開發(fā)規(guī)范,本例子根據(jù)該規(guī)范,開發(fā)出了一個符合規(guī)范的Coprocessor,可以嵌到HBase系統(tǒng)中,實現(xiàn)本文檔所描述功能的,下文中如無特殊說明,則Coprocessor —詞專指上述實現(xiàn)本例子所描述功能的Coprocessor。
[0046]如圖2所示為一個例子的大字段的數(shù)據(jù)存儲結(jié)構(gòu)圖,在HBase數(shù)據(jù)庫21中的
HBase表211中的一條HBase記錄中包括多個字段2111、2112、......、211n,而其中內(nèi)容的
大小超過預(yù)設(shè)字段閾值的字段作為大字段,如大字段211i,將大字段211i的內(nèi)容提取并放到HDFS文件系統(tǒng)22的其中一個容器文件221中,在大字段數(shù)據(jù)塊2211、大字段數(shù)據(jù)塊2212、……的最后加入,成為大字段數(shù)據(jù)塊221i。
[0047]大字段在記錄中的分離是在HBase服務(wù)端完成,對用戶是透明的。
[0048]在其中一個實施例中,所述索引包括所述容器文件的文件名,以及所述大字段數(shù)據(jù)塊在所述容器文件中的偏移量。
[0049]通過容器文件的文件名則可以定位到對應(yīng)的容器文件,然后根據(jù)偏移量(從容器文件開始算起的字節(jié)數(shù))以及長度。通過這些信息可以唯一定位到一個大字段數(shù)據(jù)塊,從而為以后的讀取提供便利。
[0050]在其中一個實施例中,所述提取所述大字段的內(nèi)容生成大字段數(shù)據(jù)塊,具體包括:
[0051]新建一個包括起始標(biāo)志的大字段數(shù)據(jù)塊; [0052]獲取所述大字段所在的待存儲HBase記錄的至少一個屬性,并在所述大字段數(shù)據(jù)塊保存;
[0053]提取所述大字段的內(nèi)容,并在所述大字段數(shù)據(jù)塊保存;
[0054]獲取所述大字段數(shù)據(jù)塊在容器文件中的序號,并在所述大字段數(shù)據(jù)塊保存;
[0055]獲取所述大字段數(shù)據(jù)塊的大小,并在所述大字段數(shù)據(jù)塊保存;
[0056]生成對所述大字段數(shù)據(jù)塊的校驗碼,并在所述大字段數(shù)據(jù)塊保存。容器文件是以表_列族-RegionServer為維度進(jìn)行組織,一個表中的一個列族在每臺RegionServer上對應(yīng)一個容器文件組,即是說由該RegionServer執(zhí)行的向一個表的一個列族中插入包含大字段的記錄的所有請求,其大字段數(shù)據(jù)會寫入到同一個HDFS容器文件組中。一個容器文件組中包含多個容器文件,這多個容器文件是隨著大字段的寫入和單文件長度的增長,由容器文件切分策略控制分割而逐漸增加的。每個容器文件組中的文件是順序生成的,同一時刻只有最新的文件可以寫入,該文件即是當(dāng)前文件。當(dāng)RegionSever重新啟動時,會建立新的容器文件。
[0057]目前容器文件切分策略有兩種:根據(jù)文件大小,即是在當(dāng)前文件大小超過指定值時創(chuàng)建一個新文件;或是根據(jù)文件產(chǎn)生時長,即是一個文件從創(chuàng)建算起,超過指定時長后創(chuàng)建一個新文件。這兩種策略也可以結(jié)合起來同時應(yīng)用。
[0058]一個容器文件中可容納多個大字段,每個大字段的內(nèi)容及其輔助信5息組織成一段連續(xù)的字節(jié)流,以連續(xù)追加寫入的方式寫入容器文件。每個大字段的內(nèi)容寫入容器文件的字節(jié)流稱為一個大字段數(shù)據(jù)塊,在本發(fā)明一個例子中,大字段數(shù)據(jù)塊分為三個區(qū)域:頭部、主體和尾部。每個區(qū)域的具體信息如下表所述:
【權(quán)利要求】
1.一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法,其特征在于,包括: 響應(yīng)數(shù)據(jù)寫入請求,生成用于在HBase數(shù)據(jù)庫中保存的待存儲HBase記錄; 將所述待存儲HBase記錄中所包括的內(nèi)容的大小超過預(yù)設(shè)字段閾值的字段作為大字段,提取所述大字段的內(nèi)容生成大字段數(shù)據(jù)塊; 向保存在HDFS文件系統(tǒng)中的容器文件寫入所述大字段數(shù)據(jù)塊; 將所述大字段數(shù)據(jù)塊在所述HDFS文件系統(tǒng)中的位置作為索引,將所述待存儲HBase記錄中的大字段的內(nèi)容替換為所述索引; 在HBase中保存所述待存儲HBase記錄。
2.根據(jù)權(quán)利要求1所述的HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法,其特征在于,所述索引包括所述容器文件的文件名,以及所述大字段數(shù)據(jù)塊在所述容器文件中的偏移量。
3.根據(jù)權(quán)利要求1所述的HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法,其特征在于,還包括: 響應(yīng)數(shù)據(jù)讀取請求,從HBase數(shù)據(jù)庫中獲取所請求的待讀取HBase記錄; 如果所述待讀取HBase記錄的字段中包含有所述索引,則所述索引作為待讀取索引,根據(jù)所述待讀取索引從所述HDFS文件系統(tǒng)中獲取對應(yīng)的大字段數(shù)據(jù)塊作為待讀取大字段數(shù)據(jù)塊; 在所述待讀取HBase記 錄中,將從所述待讀取大字段數(shù)據(jù)塊中提取的大字段的內(nèi)容替換對應(yīng)的所述待讀取索引; 返回所述待讀取HBase記錄。
4.根據(jù)權(quán)利要求1所述的HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法,其特征在于,還包括: 獲取所述HBase數(shù)據(jù)庫中的所有HBase記錄中的索引作為待緊縮索引; 從所述HDFS文件系統(tǒng)中的容器文件中選擇待緊縮容器文件; 將包括有所述待緊縮索引對應(yīng)的大字段數(shù)據(jù)塊的待緊縮容器文件作為原容器文件,對所述原容器文件執(zhí)行緊縮操作; 所述緊縮操作包括: 將原容器文件中所述待緊縮索引對應(yīng)的大字段數(shù)據(jù)塊遷移到新建立的容器文件中,并獲取每個所述待緊縮索引對應(yīng)的大字段數(shù)據(jù)塊在新建立的容器文件中的索引作為緊縮后索引; 將所述待緊縮索引替換為對應(yīng)的緊縮后索引; 刪除所述原容器文件。
5.根據(jù)權(quán)利要求4所述的HBase數(shù)據(jù)庫的數(shù)據(jù)管理方法,其特征在于,所述從所述HDFS文件系統(tǒng)中的容器文件中選擇待緊縮容器文件,具體包括: 將所述待緊縮索引根據(jù)容器文件分組,統(tǒng)計出每個容器文件的所包括與所述待緊縮索引對應(yīng)的大字段數(shù)據(jù)塊的數(shù)量,作為每個容器文件的有效大字段數(shù)據(jù)塊數(shù)量; 獲取每個容器文件中所包括的大字段數(shù)據(jù)塊的數(shù)量,作為每個容器文件的總大字段數(shù); 將有效大字段數(shù)據(jù)塊數(shù)量占總大字段數(shù)的比例小于預(yù)設(shè)比例閾值的容器文件作為待緊縮容器文件。
6.一種HBase數(shù)據(jù)庫的數(shù)據(jù)管理系統(tǒng),其特征在于,包括: 數(shù)據(jù)寫入請求響應(yīng)模塊,用于響應(yīng)數(shù)據(jù)寫入請求,生成用于在HBase數(shù)據(jù)庫中保存的待存儲HBase記錄; 大字段數(shù)據(jù)塊生成模塊,用于將所述待存儲HBase記錄中所包括的內(nèi)容的大小超過預(yù)設(shè)字段閾值的字段作為大字段,提取所述大字段的內(nèi)容生成大字段數(shù)據(jù)塊; 大字段數(shù)據(jù)塊寫入模塊,用于向保存在HDFS文件系統(tǒng)中的容器文件寫入所述大字段數(shù)據(jù)塊; 待存儲HBase記錄替換模塊,用于將所述大字段數(shù)據(jù)塊在所述HDFS文件系統(tǒng)中的位置作為索引,將所述待存儲HBase記錄中的大字段的內(nèi)容替換為所述索引; 待存儲HBase記錄保存模塊,用于在HBase中保存所述待存儲HBase記錄。
7.根據(jù)權(quán)利要求6所述的HBase數(shù)據(jù)庫的數(shù)據(jù)管理系統(tǒng),其特征在于,所述索引包括所述容器文件的文件名,以及所述大字段數(shù)據(jù)塊在所述容器文件中的偏移量。
8.根據(jù)權(quán)利要求6所述的HBase數(shù)據(jù)庫的數(shù)據(jù)管理系統(tǒng),其特征在于,還包括: 數(shù)據(jù)讀取請求響應(yīng)模塊,用于響應(yīng)數(shù)據(jù)讀取請求,從HBase數(shù)據(jù)庫中獲取所請求的待讀取HBase記錄; 待讀取大字段數(shù)據(jù)塊獲取模塊,用于如果所述待讀取HBase記錄的字段中包含有所述索引,則所述索引作為待讀取索引,根據(jù)所述待讀取索引從所述HDFS文件系統(tǒng)中獲取對應(yīng)的大字段數(shù)據(jù)塊作為待讀取大字段數(shù)據(jù)塊; 待讀取HBase記錄替換模塊,用于在所述待讀取HBase記錄中,將從所述待讀取大字段數(shù)據(jù)塊中提取的大字段的內(nèi)容替換對應(yīng)的所述待讀取索引; 待讀取HBase記錄返回模塊,用于返回所述待讀取HBase記錄。
9.根據(jù)權(quán)利要求6所述的HBase數(shù)據(jù)庫的數(shù)據(jù)管理系統(tǒng),其特征在于,還包括: 待緊縮索引獲取模塊,用于獲取所述HBase數(shù)據(jù)庫中的所有HBase記錄中的索引作為待緊縮索引; 待緊縮容器文件選擇模塊,用于從所述HDFS文件系統(tǒng)中的容器文件中選擇待緊縮容器文件; 緊縮操作模塊,用于將包括有所述待緊縮索引對應(yīng)的大字段數(shù)據(jù)塊的待緊縮容器文件作為原容器文件,對所述原容器文件執(zhí)行緊縮操作; 所述緊縮操作包括: 將原容器文件中所述待緊縮索引對應(yīng)的大字段數(shù)據(jù)塊遷移到新建立的容器文件中,并獲取每個所述待緊縮索引對應(yīng)的大字段數(shù)據(jù)塊在新建立的容器文件中的索引作為緊縮后索引; 將所述待緊縮索引替換為對應(yīng)的緊縮后索引; 刪除所述原容器文件。
10.根據(jù)權(quán)利要求9所述的HBase數(shù)據(jù)庫的數(shù)據(jù)管理系統(tǒng),其特征在于,所述待緊縮容器文件選擇模塊,具體用于: 將所述待緊縮索引根據(jù)容器文件分組,統(tǒng)計出每個容器文件的所包括與所述待緊縮索引對應(yīng)的大字段數(shù)據(jù)塊的數(shù)量,作為每個容器文件的有效大字段數(shù)據(jù)塊數(shù)量; 獲取每個容器文件中所包括的大字段數(shù)據(jù)塊的數(shù)量,作為每個容器文件的總大字段數(shù);將有效大字段數(shù)據(jù)塊數(shù)量占總大字段數(shù)的比例小于預(yù)設(shè)比例閾值的容器文件作為待緊縮容器文件。
【文檔編號】G06F17/30GK103838830SQ201410055361
【公開日】2014年6月4日 申請日期:2014年2月18日 優(yōu)先權(quán)日:2014年2月18日
【發(fā)明者】鐘堅, 何廣柏, 鄒國棟, 張偉, 王騰, 石巍, 賴志堅 申請人:廣東億迅科技有限公司