專利名稱:數(shù)據(jù)壓縮方法和裝置以及數(shù)據(jù)解壓縮方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫技術(shù),尤其涉及一種數(shù)據(jù)壓縮方法、數(shù)據(jù)解壓縮方法、數(shù)據(jù)壓縮 裝置和數(shù)據(jù)解壓縮裝置。
背景技術(shù):
在關(guān)系數(shù)據(jù)庫技術(shù)領(lǐng)域中,數(shù)據(jù)檢索通常采用目錄數(shù)據(jù)表或主索引數(shù)據(jù)表實現(xiàn), 目錄數(shù)據(jù)通常是數(shù)據(jù)庫訪問最頻繁的部分。目前,目錄數(shù)據(jù)的存儲通常采用直接存儲原始 目錄數(shù)據(jù)的方式,一般會占用較大的存儲空間,特別是對于千萬級以上記錄數(shù)的情況,存儲 該目錄數(shù)據(jù)需要耗費巨大的存儲空間。以數(shù)據(jù)庫存儲內(nèi)容為電子健康檔案為例,電子健康檔案的目錄是電子健康的總索 引,醫(yī)生調(diào)閱患者的電子健康檔案時,首先查看目錄,然后再根據(jù)目錄逐級展開查看,因此 目錄是電子健康檔案中訪問最為頻繁的部分。表1為電子健康檔案目錄結(jié)構(gòu)表。如表1所 示,電子健康檔案目錄包括患者主索引標識(Dentity,簡稱ID)和多個就診主記錄ID,其 中,患者的主索引ID是患者在區(qū)域衛(wèi)生信息數(shù)據(jù)庫中的唯一標識,就診主記錄ID用于標識 該患者的一次完整的衛(wèi)生服務(wù)活動,通常由區(qū)域衛(wèi)生數(shù)據(jù)中心代碼、醫(yī)療機構(gòu)代碼和活動 序列號組成,其中,區(qū)域衛(wèi)生數(shù)據(jù)中心代碼、醫(yī)療機構(gòu)代碼在一個區(qū)域內(nèi)都是唯一的,活動 序列號為患者就診活動的編號,通??梢砸涝摶颊呔驮\總次數(shù)遞增。例如一次完整的衛(wèi) 生服務(wù)活動為患者李明2008年5月2日第一次到人民醫(yī)院看病就診,則患者的主索引ID 為李明,人民醫(yī)院所在的區(qū)域衛(wèi)生數(shù)據(jù)中心代碼為100,人民醫(yī)院的醫(yī)院代碼以100為例, 本次活動的序列號為001,則第一次就診主記錄ID為100100001。就診主記錄I D實際上 是區(qū)域衛(wèi)生信息數(shù)據(jù)庫的就診主記錄表的主鍵,醫(yī)生瀏覽健康檔案目錄,想要查看患者某 一次就診的詳細記錄時,健康檔案服務(wù)程序會根據(jù)該次就診的就診主記錄ID,從數(shù)據(jù)庫的 就診主記錄表中獲得詳細的就診記錄,向醫(yī)生展示出來。表1.電子健康檔案目錄結(jié)構(gòu)表
權(quán)利要求
1.一種數(shù)據(jù)壓縮方法,其特征在于,包括獲取原始數(shù)據(jù)序列(N1, N2,N3,…,Nm),其中,m…、Nm分別為原始數(shù)據(jù),m為原 始數(shù)據(jù)總個數(shù);根據(jù)
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,存儲所述差分數(shù)據(jù)序列(D1,D2, D3,…, Dffl)中的任意一個差分數(shù)據(jù)的方法包括按照從低位到高位的順序,從當前差分數(shù)據(jù)中取出指定個數(shù)的位并存儲到當前字節(jié)的 數(shù)據(jù)位中,其中,所述當前字節(jié)包括數(shù)據(jù)位和標識位,所述指定個數(shù)為當前字節(jié)的數(shù)據(jù)位的 個數(shù);判斷當前差分數(shù)據(jù)是否取盡;如果是,在當前字節(jié)的標識位存儲結(jié)束標識,并將下一個字節(jié)設(shè)置為當前字節(jié),存儲所 述差分數(shù)據(jù)序列(D1, D2, D3,…,Dm)中的下一個差分數(shù)據(jù);否則,在當前字節(jié)的標識位存儲未結(jié)束標識,并將下一個字節(jié)設(shè)置為當前字節(jié),返回執(zhí) 行所述按照從低位到高位的順序,從當前差分數(shù)據(jù)中取出指定個數(shù)的位并存儲到當前字節(jié) 的數(shù)據(jù)位中的步驟。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述指定個數(shù)為7,所述結(jié)束標識為1,所述未結(jié)束標識0 ; 或,所述指定個數(shù)為7,所述結(jié)束標識為0,所述未結(jié)束標識1。
4.一種數(shù)據(jù)解壓縮方法,其特征在于,包括獲取差分數(shù)據(jù)序列(D^D2J3,…,Dm),其中,Di、D2、D3、…、Dm分別為差分數(shù)據(jù),m為差 分數(shù)據(jù)總個數(shù); [N1=D1根據(jù)
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,獲取差分數(shù)據(jù)序列(D1,D2, D3, -,Dffl)中 的任意一個差分數(shù)據(jù)包括讀取當前字節(jié)的數(shù)據(jù)位存儲的數(shù)據(jù),其中,所述當前字節(jié)包括數(shù)據(jù)位和標識位; 判斷當前字節(jié)是否為該差分數(shù)據(jù)的第一個字節(jié),如果是,將當前字節(jié)的數(shù)據(jù)位存儲的 數(shù)據(jù)作為臨時數(shù)據(jù),否則,將當前字節(jié)的數(shù)據(jù)位左移到當前的臨時數(shù)據(jù)的最高位左側(cè),將當 前字節(jié)的數(shù)據(jù)位存儲的數(shù)據(jù)與當前的臨時數(shù)據(jù)合并后的數(shù)據(jù)作為臨時數(shù)據(jù); 判斷當前字節(jié)的標識位是結(jié)束標識或未結(jié)束標識; 如果是結(jié)束標識,將所述臨時數(shù)據(jù)作為差分數(shù)據(jù);如果是未結(jié)束標識,將下一個字節(jié)設(shè)置為當前字節(jié),返回執(zhí)行所述讀取當前字節(jié)的數(shù) 據(jù)位存儲的數(shù)據(jù)的步驟。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述將當前字節(jié)的數(shù)據(jù)位左移到當前的 臨時數(shù)據(jù)的最高位左側(cè)包括對判斷當前差分數(shù)據(jù)的字節(jié)的標識位是未結(jié)束標識的次數(shù)進行計數(shù),獲得計數(shù)值; 將當前字節(jié)的數(shù)據(jù)位左移指定位數(shù),所述指定位數(shù)為當前字節(jié)的數(shù)據(jù)位的個數(shù)與所述 計數(shù)值的乘積。
7.一種數(shù)據(jù)壓縮裝置,其特征在于,包括原始數(shù)據(jù)模塊,用于獲取原始數(shù)據(jù)序列(N1A2,R3,…,Nm),其中,N1A2為、…、Nm分別 為原始數(shù)據(jù),m為原始數(shù)據(jù)總個數(shù);差分數(shù)據(jù)模塊,用于根據(jù)
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述存儲控制模塊包括獲取單元,按照從低位到高位的順序,從當前差分數(shù)據(jù)中取出指定個數(shù)的位,所述指定 個數(shù)為當前字節(jié)的數(shù)據(jù)位的個數(shù);存儲單元,用于向當前字節(jié)的數(shù)據(jù)位存儲所述指定個數(shù)的位,其中,所述當前字節(jié)包括 數(shù)據(jù)位和標識位;控制單元,用于判斷當前差分數(shù)據(jù)是否取盡;如果是,在當前字節(jié)的標識位存儲結(jié)束標 識,并將下一個字節(jié)設(shè)置為當前字節(jié),控制所述獲取單元和存儲單元處理所述差分數(shù)據(jù)序 列(D1,D2,D3,…,Dm)中的下一個差分數(shù)據(jù);否則,在當前字節(jié)的標識位存儲未結(jié)束標識,并 將下一個字節(jié)設(shè)置為當前字節(jié),控制所述獲取單元和存儲單元再次處理當前差分數(shù)據(jù)。
9.一種數(shù)據(jù)解壓縮裝置,其特征在于,包括 差分數(shù)據(jù)模塊,用于獲取差分數(shù)據(jù)序列(D1,D2,D3…,Dm),其中,Di、D2、D3、…、Dm分別 為差分數(shù)據(jù),m為差分數(shù)據(jù)總個數(shù);原始數(shù)據(jù)模塊,用于根據(jù)
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述差分數(shù)據(jù)模塊包括讀取單元,用于讀取當前字節(jié)的數(shù)據(jù)位存儲的數(shù)據(jù),其中,所述當前字節(jié)包括數(shù)據(jù)位和 標識位;第一控制單元,用于判斷當前字節(jié)是否為該差分數(shù)據(jù)的第一個字節(jié),如果是,向數(shù)據(jù)單 元發(fā)送第一字節(jié)指令,否則,向數(shù)據(jù)單元發(fā)送非第一字節(jié)指令;數(shù)據(jù)單元,用于根據(jù)第一字節(jié)指令,將當前字節(jié)的數(shù)據(jù)位存儲的數(shù)據(jù)作為臨時數(shù)據(jù),根 據(jù)非第一字節(jié)指令,將當前字節(jié)的數(shù)據(jù)位左移到當前的臨時數(shù)據(jù)的最高位左側(cè),將當前字 節(jié)的數(shù)據(jù)位存儲的數(shù)據(jù)與當前的臨時數(shù)據(jù)合并后的數(shù)據(jù)作為臨時數(shù)據(jù);第二控制單元,用于判斷當前字節(jié)的標識位是結(jié)束標識或未結(jié)束標識;如果是結(jié)束標 識,將所述臨時數(shù)據(jù)作為差分數(shù)據(jù);如果是未結(jié)束標識,將下一個字節(jié)設(shè)置為當前字節(jié)。
全文摘要
本發(fā)明提供一種數(shù)據(jù)壓縮方法,獲取原始數(shù)據(jù)序列(N1,N2,N3,…,Nm),根據(jù)1<k≤m和原始數(shù)據(jù)序列(N1,N2,N3,…,Nm)獲取差分數(shù)據(jù)序列(D1,D2,D3,…,Dm),依次存儲差分數(shù)據(jù)序列(D1,D2,D3,…,Dm)中的每一個差分數(shù)據(jù)。本發(fā)明還提供一種數(shù)據(jù)解壓縮方法、數(shù)據(jù)壓縮裝置和數(shù)據(jù)解壓縮裝置。采用本發(fā)明提供的數(shù)據(jù)壓縮方法和裝置以及數(shù)據(jù)解壓縮方法和裝置,通過對原始數(shù)據(jù)序列進行后項減前項的計算獲得差分數(shù)據(jù)序列,依次存儲差分數(shù)據(jù)序列中的每一個差分數(shù)據(jù),由于差分數(shù)據(jù)的值小于原始數(shù)據(jù)的值,因此,存儲差分數(shù)據(jù)占用的字節(jié)數(shù)少于原始數(shù)據(jù)占用的字節(jié)數(shù),從而節(jié)省了數(shù)據(jù)存儲空間。
文檔編號G06F17/30GK102103630SQ20101059218
公開日2011年6月22日 申請日期2010年12月8日 優(yōu)先權(quán)日2010年12月8日
發(fā)明者張鳳全, 程磊, 趙文東 申請人:中國聯(lián)合網(wǎng)絡(luò)通信集團有限公司