專利名稱:一種數據存儲方法及裝置的制作方法
技術領域:
本發明涉及數據存儲領域,尤其涉及一種高效率數據存儲方法及裝置。
背景技術:
在當今網絡時代,網絡業務服務系統越來越普通,隨著寬帶網絡、3G技術應用的普及,多媒體內容的存儲對這些系統越來越重要。如圖1所示,網絡業務服務系統在向用戶提供多媒體服務時,該系統先存儲多媒體,待收到用戶A發出獲取多媒體請求后,查詢特定多媒體,然后向用戶A提供查詢結果以提供多媒體服務。再如圖2所示多媒體服務中,也涉及多媒體的存儲。多媒體存儲的應用還有很多,這里不一一列舉。總之,網絡服務系統在為客戶提供服務之前都需要快速存儲、查詢、刪除對應的多媒體記錄。
在Internet、無線網絡技術不完善的時代,網絡帶寬受到很大的限制,客戶訪問、轉發的媒體往往是簡短的文字,網絡應用系統往往使用普通商用數據庫即可實現媒體的存儲、快速訪問。
隨著網絡技術越來越完善,使用越來越普及,所傳遞的媒體不再僅局限于簡短的文字內容,而是內容與表現形式極大豐富的多媒體內容,包括聲音、圖像、電影、商用文件等,且需要存儲的多媒體記錄數目巨大,單條記錄大小不定,往往從幾K到幾百K不等。普通商用數據庫用來存儲這些多媒體數據力不從心,效率低下,對于那些對效率要求較高的系統不適用。有的系統轉而直接求助于操作系統,直接采用操作系統文件來存儲媒體,具體方案是一個文件對應于一條多媒體消息,以后按照文件名來訪問多媒體消息。該方案對于那些效率要求不高,小型系統尚可,卻無法滿足大規模系統的要求,因為該方案導致系統中不可避免地存在大量文件,操作系統負擔極大地增加,從而導致系統整體性能低下。而且操作系統增加、刪除文件操作性能不高,且不可避免地會產生磁盤碎片,使得系統的性能每況愈下。總之,對于數目巨大,單條記錄大小不大的多媒體存儲需求,這不是一個可行方案。
有的系統則采用數據庫+大文件方案將多媒體,統一存儲在一個(或一組)大文件中,將具體多媒體消息存放的起始地址存放在數據庫中。該方案需要增加一個昂貴的商用數據庫系統,成本很高;并且必須輾轉多次訪問數據庫、多媒體文件才能訪問到多媒體內容,因而效率不盡如人意。而多媒體內容在大文件中存儲組織一樣復雜,沒有因數據庫的使用而降低。
發明內容
針對現有技術的上述缺陷,本發明的目的在于提供一種數據存儲方法及裝置以實現數據的快速存儲、快速訪問、快速刪除,且成本低。
本發明提供一種數據存儲的方法,該方法為為待存儲的數據記錄分配一個數據記錄標識(ID);將所述數據記錄保存在一個被分割成簇的文件中;將存儲所述數據記錄的頭一個簇的地址保存于索引存儲區,并建立該地址與數據記錄ID的一一映射關系。
其中建立數據記錄ID空閑堆棧,當刪除某一數據記錄時,將該記錄的ID放置于數據記錄ID空閑堆棧中,并保存已經分配出去的ID的最大值。
為待存儲的數據記錄分配數據記錄ID時,首先判斷數據記錄ID空閑堆棧中是否有空閑ID,如果有,則優先使用該空閑ID,如沒有空閑ID則接續已經分配出去的ID的最大值生成新的ID。
為存放數據記錄的文件的簇建立空閑簇指針堆棧,當刪除某一數據記錄時,將該記錄的對應的簇指針放置于空閑簇指針堆棧中,并保存已經分配出去的簇指針的最大值。
將所述數據記錄存儲在文件中時,首先判斷數據記錄空閑簇堆棧中是否有空閑簇指針,如果有,則優先使用該空閑簇;否則,接續已經分配出去的簇使用新的簇。
當訪問數據記錄時,通過該數據記錄的ID訪問所述記錄。
保存一個數據記錄的所有簇中,每個簇保存下一個簇的地址。
本發明提供一種數據存儲裝置,所述裝置包括業務處理模塊、存儲控制模塊和物理數據存儲區,所述業務處理模塊用于接受數據記錄操作請求,并完成所述數據記錄的應用具體數據結構到二進制數據塊的相互轉換,轉換后的二進制數據記錄塊將由存儲控制模塊進行存儲;所述存儲控制模塊用于為所述數據記錄分配數據記錄ID,并建立該數據記錄ID和數據記錄在物理數據存儲區存儲地址的關系;所述物理數據存儲區用于存儲所有數據記錄。
所述業務處理模塊包括業務處理樁模塊,所述樁模塊用于提供樁類及完成數據記錄的串化及反串化。
所述物理數據存儲區包括索引存儲區和數據存儲區,分別用于以文件形式存儲數據記錄的索引和數據記錄;數據存儲區形成的數據文件被分割為一個個的簇,每個簇保存下一個簇的地址;所述數據存儲區還包括空閑簇堆棧,用于當數據記錄刪除時,保存該記錄對應簇的指針;所述索引存儲區還包括數據記錄ID堆棧,用于當數據記錄刪除時,保存該記錄對應的ID。
所述存儲控制模塊進一步包括存儲管理器和至少一個分組存儲管理器,所述存儲管理器用于將實際的存儲管理工作分配給分組存儲器,每個分組管理器對應一個工作線程。
所述分組存儲器進一步包括索引存儲管理器和數據存儲管理器,所述索引存儲管理器用于管理空閑數據記錄ID堆棧和索引存儲區,當新增數據記錄時,首先從空閑ID堆棧中為該記錄申請空閑ID,假如沒有空閑ID則接續已經分配的ID號生成新的ID;所述數據存儲管理器用于管理空閑簇指針堆棧和數據存儲區,當新增數據記錄時,首先從空閑簇指針堆棧中為該記錄申請空閑簇,假如沒有空閑簇則將該記錄存儲在新的簇中。
所述數據記錄ID是由該記錄索引存儲地址的對應的文件偏移量通過一一映射變換得到。
所述數據記錄是多媒體記錄。
索引存儲管理器進一步包括數據記錄ID管理器,用于管理空閑數據記錄ID堆棧。
所述一種數據存儲裝置與應用系統相連,接受應用系統的存儲請求,依請求進行相應的存儲、訪問及刪除操作,應用系統通過數據記錄ID訪問數據記錄。
本發明為數據記錄分配ID號,且該ID是由該數據記錄索引存儲區對應的文件偏移量通過一一映射變換得到。應用系統靠該ID來訪問時,可變換得到對應存儲區地址,完全避免復雜的查詢搜索動作,達到效率最大化。且數據記錄存儲是由分組存儲管理器完成,以充分利用系統I/O帶寬,且不需要昂貴的商用數據庫系統支持,成本低。
圖1為多媒體應用樣例一流程圖;圖2為多媒體應用樣例二流程圖;圖3為數據存儲裝置體系結構示意圖;圖4為存儲控制模塊體系結構示意圖;圖5為數據存儲區結構示意圖;圖6為空閑ID堆棧算法示意圖;圖7為本發明方案中存儲方法流程圖。
具體實施例方式
為使本發明的目的、技術方案和優點更加清楚明白,在數據記錄中選擇多媒體記錄作為實施例,結合實施例和附圖對本發明進一步詳細說明。
如圖3所示,本發明提供的數據存儲裝置與應用系統相連,接受應用系統的存儲請求,依請求進行相應的存儲、訪問及刪除操作。
該數據存儲裝置包括業務處理模塊、存儲控制模塊、物理數據存儲區。其中業務處理模塊又包括業務處理樁模塊,其向應用系統提供樁類,該樁提供串化(marshaling)、反串化(demarshaling)功能,完成應用具體數據結構到二進制數據塊的相互轉換。它向“存儲控制模塊”屏蔽應用系統的數據結構的多樣性,便于存儲控制模塊實現統一的存儲管理。
如圖4所示,存儲控制模塊由存儲管理器和分組存儲管理器組成。存儲管理器起存儲管理代理的作用,它將實際的存儲管理工作委托給分組存儲管理器去完成。它通過業務處理樁模塊向應用系統提供統一的虛擬多媒體存儲設備。其為每條多媒體記錄分配一個多媒體記錄標識(ID),并完成多媒體記錄ID到數據塊的綁定。該ID可以設計為一個定長的數值,如下表所示,其共計12位數,11~12位是“分組號”、1~10是統一編號,當然實際實施時可以適當縮小或擴大取值范圍,一切看目標系統規模。當應用系統訪問多媒體記錄時,依該多媒體記錄對應的ID號進行訪問。
分組存儲管理器具體完成存儲管理任務。將存儲管理分組的主要目標是通過分組可以將多媒體內容分別存儲在不同的文件上,進而可映射到不同的磁盤上,如此,可提高系統I/O效率。每個分組存儲管理器擁有一個自己的工作線程,這樣還可以簡便地實現并行存儲動作。當然,也可將所有多媒體的數據存儲在同一文件上,在這種情況下,存儲控制模塊不需要分組存儲管理器,由存儲管理器完成具體的存儲管理任務。
物理數據存儲區分為索引存儲區和多媒體數據存儲區,統一采用大文件存儲方式。其中索引存儲區存儲每個多媒體記錄的索引,還包括多媒體記錄ID堆棧,用于當多媒體記錄刪除時,保存該記錄對應的ID。當應用系統請求存儲一條多媒體記錄時,存儲管理層為每條多媒體記錄分配的ID都是由索引存儲區對應的文件偏移量通過一一映射變換得到的。近而,通過索引存儲區建立起了每個多媒體記錄的ID與該多媒體記錄在多媒體數據存儲區的索引的一一對應關系。多媒體數據存儲區采用大文件加按簇分配的方案,即將數據大文件分割成一個個的簇,每個簇保存下一個簇的地址,實現方式類同于鏈表。在索引區中保存多媒體記錄對應的頭一個簇的地址。故,通過索引存儲區建立起了每個多媒體記錄的ID與該多媒體記錄在多媒體數據存儲區的索引的一一對應關系。又通過索引區中保存的多媒體記錄對應的頭一個簇的地址進而訪問到相關多媒體記錄數據。所述數據存儲區還包括空閑簇指針堆棧,用于當多媒體記錄刪除時,保存該記錄對應的簇指針。物理數據存儲區結構如圖5所示。
在上述系統中,存儲控制模塊是整個多媒體存儲裝置的核心,每個分組存儲管理器內部又包含索引存儲管理器和數據存儲管理器,而索引存儲管理器及數據存儲管理器中又相應的包括多媒體記錄ID管理器和空閑簇指針管理器。索引存儲管理器用于管理索引數據存儲區及空閑的多媒體記錄ID堆棧。當要刪除某多媒體記錄時,將該記錄的ID放置到空閑的多媒體記錄ID堆棧中,當新增記錄時,首先從空閑的ID堆棧中申請多媒體記錄ID,假如沒有空閑ID再生成新的多媒體記錄ID。多媒體數據存儲管理器用于管理多媒體存儲區及空閑的簇指針,當刪除某記錄時,將該記錄所對應的簇指針放置到空閑簇指針堆棧中,當新增多媒體記錄時,首先從空閑的簇指針堆棧中申請資源,假如沒有空閑簇時,再生成新的簇。
其中,多媒體記錄ID管理器是存儲管理層實現的關鍵,Server、Portal訪問多媒體記錄存儲裝置時必須首先來申請獲取ID,存儲數據釋放后必須回收ID。其實現原理是ID管理器內部保存內存空閑ID堆棧,文件中有相應的后援文件堆棧,同時保存一個已經分配出去的ID最大值,優先使用已經回收的ID。且內存堆棧與對應文件后援堆棧交互當以批讀寫形式進行,如圖6所示。
外部應用系統在訪問多媒體記錄時,以多媒體記錄ID來訪問避免復雜的查詢搜索動作。
本發明提供一種數據存儲方法,如圖7所示,其核心是為每條數據記錄分配一個ID,根據該ID映射變換可得到該多數據記錄的索引存儲區地址,將該數據記錄保存在一個被分割成許多簇的文件中,將存儲該多媒體記錄的頭一個簇的地址保存于所述索引存儲區內。該ID為一個定長的數值,統一編號,當然實際實施時可以適當縮小或擴大取值范圍。當刪除某一多媒體記錄時,將該記錄的ID放置于對應的多媒體記錄ID空閑堆棧中。
先建立多媒體記錄ID空閑堆棧,當刪除某一多媒體記錄時,將該記錄的ID放置于對應的多媒體記錄ID空閑堆棧中,并保存已經分配出去的ID的最大值。當新增多媒體記錄時,首先判斷多媒體記錄ID空閑堆棧中是否有空閑ID,如果有,則優先使用該空閑ID,假如沒有空閑ID則接續已經分配出去的ID的最大值生成新的ID。
為存放多媒體的文件的簇建立空閑簇指針堆棧,當刪除某一多媒體記錄時,將該記錄的對應的簇指針壓入空閑簇堆棧中,并保存已經分配出去的簇的最大值。當新增多媒體記錄時,首先判斷空閑簇堆棧中是否有空閑簇,如果有,則優先使用該空閑簇,假如沒有空閑簇則接續已經分配出去的簇使用新的簇。
綜上所述,當需要存儲一多媒體記錄時,為多媒體記錄分配一個多媒體記錄ID,分配時優先分配已經空閑的ID,如沒有空閑ID則申請新的ID,根據該ID映射可變換得到該多媒體記錄的索引存儲區地址。將多媒體記錄存儲在文件中,存儲時,優先存儲于該文件中的空閑的簇,如果沒有空閑簇,則存儲在新的簇中,將該簇的地址存儲于該多媒體記錄的索引存儲區地址中。當外部應用系統訪問多媒體記錄時,通過該多媒體記錄對應的ID進行,進而實現了該多媒體記錄的快速存儲、訪問及刪除。
以上所述僅為本發明方案的較佳實施例,并不用以限定本發明的保護范圍。
權利要求
1.一種數據存儲的方法,其特征在于該方法包括步驟為待存儲的數據記錄分配一個數據記錄標識(ID);將所述數據記錄保存在一個被分割成簇的文件中;將存儲所述數據記錄的頭一個簇的地址保存于索引存儲區,并建立該地址與數據記錄ID的一一映射關系。
2.如權利要求1所述的方法,其特征在于,建立數據記錄ID空閑堆棧,當刪除某一數據記錄時,將該記錄的ID放置于數據記錄ID空閑堆棧中,并保存已經分配出去的ID的最大值。
3.如權利要求2所述的方法,其特征在于為待存儲的數據記錄分配數據記錄ID時,首先判斷數據記錄ID空閑堆棧中是否有空閑ID,如果有,則優先使用該空閑ID,如沒有空閑ID則接續已經分配出去的ID的最大值生成新的ID。
4.如權利要求1所述的方法,其特征在于為存放數據記錄的文件的簇建立空閑簇指針堆棧,當刪除某一數據記錄時,將該記錄的對應的簇指針放置于空閑簇指針堆棧中,并保存已經分配出去的簇指針的最大值。
5.如權利要求4所述的方法,其特征在于將所述數據記錄存儲在文件中時,首先判斷數據記錄空閑簇堆棧中是否有空閑簇指針,如果有,則優先使用該空閑簇;否則,接續已經分配出去的簇使用新的簇。
6.如權利要求1所述的方法,其特征在于當訪問數據記錄時,通過該數據記錄的ID訪問所述記錄。
7.如權利要求1所述的方法,其特征在于保存一個數據記錄的所有簇中,每個簇保存下一個簇的地址。
8.如權利要求1至7任一所述的方法,其特征在于所述數據記錄ID是一定長度的數值。
9.如權利要求8所述的方法,其特征在于所述數據記錄是指多媒體記錄。
10.一種數據存儲裝置,其特征在于所述裝置包括業務處理模塊、存儲控制模塊和物理數據存儲區;所述業務處理模塊用于接受數據記錄操作請求,并完成所述數據記錄的應用具體數據結構到二進制數據塊的相互轉換,轉換后的二進制數據記錄塊將由存儲控制模塊進行存儲;所述存儲控制模塊用于為所述數據記錄分配數據記錄ID,并建立該數據記錄ID和數據記錄在物理數據存儲區存儲地址的關系;所述物理數據存儲區用于存儲所有數據記錄。
11.如權利要求10所述的裝置,其特征在于所述業務處理模塊包括業務處理樁模塊,所述樁模塊用于提供樁類及完成數據記錄的串化及反串化。
12.如權利要求10所述的裝置,其特征在于所述物理數據存儲區包括索引存儲區和數據存儲區,分別用于以文件形式存儲數據記錄的索引和數據記錄;數據存儲區形成的數據文件被分割為一個個的簇,每個簇保存下一個簇的地址;所述數據存儲區還包括空閑簇堆棧,用于當數據記錄刪除時,保存該記錄對應簇的指針;所述索引存儲區還包括數據記錄ID堆棧,用于當數據記錄刪除時,保存該記錄對應的ID。
13.如權利要求10所述的裝置,其特征在于所述存儲控制模塊進一步包括存儲管理器和至少一個分組存儲管理器,所述存儲管理器用于將實際的存儲管理工作分配給分組存儲器,每個分組管理器對應一個工作線程。
14.如權利要求13所述的裝置,其特征在于所述分組存儲器進一步包括索引存儲管理器和數據存儲管理器;所述索引存儲管理器用于管理空閑數據記錄ID堆棧和索引存儲區,當新增數據記錄時,首先從空閑ID堆棧中為該記錄申請空閑ID,假如沒有空閑ID則接續已經分配的ID號生成新的ID;所述數據存儲管理器用于管理空閑簇指針堆棧和數據存儲區,當新增數據記錄時,首先從空閑簇指針堆棧中為該記錄申請空閑簇,假如沒有空閑簇則將該記錄存儲在新的簇中。
15.如權利要求10至14中任一項所述的裝置,其特征在于所述數據記錄ID是由該記錄索引存儲地址的對應的文件偏移量通過一一映射變換得到。
16.如權利要求10至14中任一項所述的裝置,其特征在于所述數據記錄是多媒體記錄。
17.如權利要求10至14中任一項所述的裝置,其特征在于所述一種數據存儲裝置與應用系統相連,接受應用系統的存儲請求,依請求進行相應的存儲、訪問及刪除操作,應用系統通過數據記錄ID訪問數據記錄。
18.如權利要求14所述的裝置,其特征在于索引存儲管理器進一步包括數據記錄ID管理器,用于管理空閑記錄ID堆棧。
全文摘要
本發明公開了一種數據存儲的方法,為每條數據記錄分配一個ID,根據該ID映射變換得到該數據記錄的索引存儲區地址,將該數據記錄保存在一個被分割成許多簇的文件中,將存儲該數據記錄的頭一個簇的地址保存于所述索引存儲區內。當外部應用系統訪問數據記錄時,通過該數據記錄對應的ID進行,進而實現了該數據記錄的快速存儲、訪問及刪除。
文檔編號H04L12/00GK1632779SQ200310121069
公開日2005年6月29日 申請日期2003年12月24日 優先權日2003年12月24日
發明者方文, 李益民, 李大偉, 柏廣昌, 劉明海, 徐學濤, 趙毅 申請人:華為技術有限公司