大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構的制作方法
【專利摘要】本發(fā)明公開了一種大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構,包括存儲結構和記錄內容兩部分,存儲結構的數(shù)據(jù)頁包括存儲文件頭、空間管理段、元數(shù)據(jù)管理段和數(shù)據(jù)塊四種類型,記錄內容包含有數(shù)據(jù)記錄頭和數(shù)據(jù)記錄兩部分,記錄內容用于存儲記錄的相關信息。其結構能夠對使用非定長數(shù)據(jù)頁的非關系型數(shù)據(jù)庫,在使用常數(shù)個IO開銷(O(1))的前提下找到一個空閑空間進行數(shù)據(jù)插入,以適應非定長數(shù)據(jù)頁中快速檢索與變更數(shù)據(jù)的需求,可持續(xù)對復雜程度與大小日益增長的數(shù)據(jù)進行快速,靈活的檢索和更新。
【專利說明】大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構
【技術領域】
[0001]本發(fā)明涉及一種數(shù)據(jù)存儲結構,特別涉及一種關于大數(shù)據(jù)頁的高效存儲非定常數(shù)據(jù)結構,屬于信息管理系統(tǒng)領域。
【背景技術】
[0002]在數(shù)據(jù)庫領域中,高效存儲、檢索數(shù)據(jù)是數(shù)據(jù)庫性能的一個重要指標。經過30年的發(fā)展,傳統(tǒng)的關系型數(shù)據(jù)庫在這一領域已經有了近乎統(tǒng)一的磁盤存儲模式,傳統(tǒng)的關系型數(shù)據(jù)庫的每個數(shù)據(jù)頁長度固定,起始為一個數(shù)據(jù)頁頭,之后使用若干定長的槽位作為‘指針’,分別指向數(shù)據(jù)頁內的某一偏移,該偏移即為數(shù)據(jù)的起始偏移。使用中,槽位的增長從前向后,數(shù)據(jù)的增加從后向前,兩者之間的空間即為該數(shù)據(jù)頁的剩余空間。當查詢一條記錄時,對于順序查詢可以從頭至尾遍歷槽位,然后對每一個槽位指向的偏移進行訪問即可;當指定查詢時,首先跳轉至該數(shù)據(jù)頁的槽位,讀取其偏移,然后訪問該偏移所指向的數(shù)據(jù)即可;當刪除記錄時,將被刪除記錄的槽位置為一個無效值即可;當插入記錄時,需要從槽位的起始開始掃描,直至槽位的結束或者遇到一個無效值,然后將新插入記錄的偏移記錄到該槽位中,從而完成記錄插入。
[0003]這種數(shù)據(jù)結構對于傳統(tǒng)關系型數(shù)據(jù)庫的小數(shù)據(jù)頁(4KB,8KB,16KB等占用磁盤空間較小的數(shù)據(jù)頁)比較合適,但是在非關系型數(shù)據(jù)庫的領域,一條數(shù)據(jù)記錄可能遠遠大于這種小數(shù)據(jù)頁的長度,因此在非關系型數(shù)據(jù)庫的實現(xiàn)中,數(shù)據(jù)頁的大小往往是非定長的,并且可能增長到相當大的地步(如32MB、64MB等)。這種大數(shù)據(jù)頁的情況下,傳統(tǒng)數(shù)據(jù)庫的磁盤頁形式會對性能造成極大的影響。試想一個16MB的數(shù)據(jù)頁存取了很多100字節(jié)的數(shù)據(jù),也就是說一個數(shù)據(jù)頁可以容納大約16萬條記錄。如果存儲數(shù)據(jù)時從前向后掃描槽位,最壞情況下需要掃描16萬次,也就是大約160個4KB大小的磁盤頁。這樣會造成任何插入操作都要執(zhí)行160個I / 0,而不像傳統(tǒng)數(shù)據(jù)庫那樣每個數(shù)據(jù)頁僅占一個或者很少個磁盤頁,同樣,對于越大的數(shù)據(jù)頁,需要越多的磁盤訪問數(shù)量才能找到相應的位置插入數(shù)據(jù),其關系為
O(η)的開銷。因此,關系型數(shù)據(jù)庫磁盤格式的局限性,已不適用于新型的非關系型數(shù)據(jù)庫,在非關系型數(shù)據(jù)庫中,我們亟需一種新的磁盤存取方式,以取代傳統(tǒng)關系型數(shù)據(jù)庫的數(shù)據(jù)模型。
【發(fā)明內容】
[0004]鑒于上述現(xiàn)有技術的不足,本發(fā)明旨在提供一種適合非定常大數(shù)據(jù)頁的高效數(shù)據(jù)訪問與存取數(shù)據(jù)結構,使磁盤訪問量能維持在0(1)的水平上,以滿足非關系型數(shù)據(jù)庫的存儲和使用需要。
[0005]本發(fā)明是通過以下技術方案來實現(xiàn)的:
[0006]一種大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構,包括存儲結構和記錄內容兩部分,存儲結構的數(shù)據(jù)頁包括存儲文件頭、空間管理段、元數(shù)據(jù)管理段和數(shù)據(jù)塊四種類型。
[0007]所述存儲文件頭,用于記錄存儲文件的基本信息,存儲文件頭位于數(shù)據(jù)頁的開始端。
[0008]所述空間管理段,用于維護和管理整個存儲文件的空閑數(shù)據(jù)頁信息,并以O代表數(shù)據(jù)頁未分配,I代表數(shù)據(jù)頁已分配但未被占用,2代表數(shù)據(jù)頁被占用。
[0009]所述元數(shù)據(jù)管理段,存儲和管理存儲文件中所包含的全部集合信息。
[0010]所述數(shù)據(jù)塊,用于存儲用戶數(shù)據(jù)的空間,數(shù)據(jù)塊包含有數(shù)據(jù)塊頭信息及用戶數(shù)據(jù)信息,一個數(shù)據(jù)塊由一個或多個數(shù)據(jù)頁構成。
[0011]所述記錄內容包含有數(shù)據(jù)記錄頭和數(shù)據(jù)記錄兩部分,記錄內容用于存儲記錄的相關信息。
[0012]所述存儲文件頭內記錄的基本信息包括:文件標示串、數(shù)據(jù)頁長度、存儲文件長度、存儲文件名和序列號。文件標示串用于標識數(shù)據(jù)存儲文件的格式;數(shù)據(jù)頁長度為數(shù)據(jù)塊中每個數(shù)據(jù)頁的大小,所有數(shù)據(jù)頁以該大小為標準;存儲文件長度表示存儲文件頭、空間管理段以及全部數(shù)據(jù)塊文件所占據(jù)的數(shù)據(jù)頁的數(shù)量,并以數(shù)據(jù)頁的個數(shù)為單位;存儲文件名代表了存儲文件的名稱;序列號代表存儲文件在當前數(shù)據(jù)庫中所屬的編號。
[0013]所述元數(shù)據(jù)管理段包括一個以上的元數(shù)據(jù)單元,每個數(shù)據(jù)單元包含的信息有:集合名、標示、集合ID、起始數(shù)據(jù)塊ID、終結數(shù)據(jù)塊ID、刪除列表和邏輯ID。集合名代表了該集合的名稱;標示采用標示符代表該集合的狀態(tài);集合ID表示該集合在元數(shù)據(jù)管理段中所占據(jù)的地址;起始數(shù)據(jù)塊ID表示該集合中包含的第一個數(shù)據(jù)塊所在的數(shù)據(jù)頁;終結數(shù)據(jù)塊ID表示該集合中包含的最后一個數(shù)據(jù)塊所在的數(shù)據(jù)頁;刪除列表中記錄了該集合中不同長度記錄被刪除的第一條記錄的位置;邏輯ID代表了該集合創(chuàng)建時的邏輯位置。
[0014]所述數(shù)據(jù)塊頭信息及用戶數(shù)據(jù)信息包含有:字符標示串、數(shù)據(jù)塊長度、所屬集合ID、數(shù)據(jù)塊標示、數(shù)據(jù)塊版本、數(shù)據(jù)塊邏輯ID、前一個數(shù)據(jù)塊ID、后一個數(shù)據(jù)塊ID、記錄數(shù)、第一條記錄偏移、最后一條記錄偏移、空閑空間。字符標示串代表一個數(shù)據(jù)塊起始的信息,并以字符標示數(shù)據(jù)塊是否為非法數(shù)據(jù)塊;數(shù)據(jù)塊長度代表了該數(shù)據(jù)塊所占數(shù)據(jù)頁的數(shù)量,數(shù)據(jù)頁在文件中必須連續(xù),并且不能被別的集合所使用;所屬集合ID代表了該數(shù)據(jù)塊所屬于的集合ID ;數(shù)據(jù)塊標示代表該數(shù)據(jù)塊的狀態(tài);數(shù)據(jù)塊版本代表該數(shù)據(jù)塊的格式信息;數(shù)據(jù)塊邏輯ID是以邏輯遞增方式標示出在每個集合中創(chuàng)建的新的數(shù)據(jù)塊;前一個數(shù)據(jù)塊ID標示了該數(shù)據(jù)塊的前塊ID ;后一個數(shù)據(jù)塊ID標示了該數(shù)據(jù)塊的后塊ID ;記錄數(shù)代表著該數(shù)據(jù)塊內包含的用戶記錄個數(shù);第一條記錄偏移代表了該數(shù)據(jù)塊內第一條記錄的偏移地址;最后一條記錄偏移代表了該數(shù)據(jù)塊內最后一條記錄的偏移地址;空閑空間代表了該數(shù)據(jù)塊內的可用空間大小。
[0015]所述數(shù)據(jù)記錄頭包含的信息有:記錄標示、記錄長度、記錄在數(shù)據(jù)塊中偏移、前一條記錄偏移、后一條記錄偏移。記錄標示代表了該數(shù)據(jù)記錄的狀態(tài);記錄長度代表了該數(shù)據(jù)記錄的長度;記錄在數(shù)據(jù)塊中偏移代表了該數(shù)據(jù)記錄在當前數(shù)據(jù)塊內的偏移地址;前一條記錄偏移標示了該數(shù)據(jù)記錄的前一條記錄的偏移指針;后一條記錄偏移標示了該數(shù)據(jù)記錄的后一條記錄的偏移指針。
[0016]本發(fā)明所述的大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構,其有益效果在于:能夠對使用非定長數(shù)據(jù)頁的非關系型數(shù)據(jù)庫,在使用常數(shù)個IO開銷(0(1))的前提下找到一個空閑空間進行數(shù)據(jù)插入,以適應非定長數(shù)據(jù)頁中快速檢索與變更數(shù)據(jù)的需求,可持續(xù)對復雜程度與大小日益增長的數(shù)據(jù)進行快速,靈活的檢索和更新??朔藗鹘y(tǒng)數(shù)據(jù)庫結構在非定常數(shù)據(jù)頁中,其空閑空間查找效率為0(n)的弊端。查找效率和使用靈活性明顯提高,方便了大數(shù)據(jù)頁非定常數(shù)據(jù)的存儲需要。
【具體實施方式】
[0017]下面對本發(fā)明所述的大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構在實際應用中的具體結構做進一步的詳細描述:
[0018]本發(fā)明所述的一種大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構,包括存儲結構和記錄內容兩部分。記錄內容用于存儲記錄的相關信息,存儲結構用于反映和指示存儲的相關狀態(tài)。
[0019]一、存儲結構的數(shù)據(jù)頁包括存儲文件頭、空間管理段、元數(shù)據(jù)管理段和數(shù)據(jù)塊四種類型,各類型數(shù)據(jù)頁包含的具體信息內容如下:
[0020]1、存儲文件頭
[0021]存儲文件頭用于記錄存儲文件的基本信息,存儲文件頭位于數(shù)據(jù)頁的開始端,并且占據(jù)了 65536個字節(jié),其余部分以O補位。存儲文件頭內記錄的基本信息包括:文件標示串、數(shù)據(jù)頁長度、存儲文件長度、存儲文件名和序列號。如下表:
[0022]
【權利要求】
1.一種大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構,其特征在于,包括存儲結構和記錄內容兩部分,所述存儲結構的數(shù)據(jù)頁包括存儲文件頭、空間管理段、元數(shù)據(jù)管理段和數(shù)據(jù)塊四種類型; 所述存儲文件頭,用于記錄存儲文件的基本信息,存儲文件頭位于數(shù)據(jù)頁的開始端;所述空間管理段,用于維護和管理整個存儲文件的空閑數(shù)據(jù)頁信息,并以O代表數(shù)據(jù)頁未分配,I代表數(shù)據(jù)頁已分配但未被占用,2代表數(shù)據(jù)頁被占用; 所述元數(shù)據(jù)管理段,存儲和管理存儲文件中所包含的全部集合信息; 所述數(shù)據(jù)塊,用于存儲用戶數(shù)據(jù)的空間,數(shù)據(jù)塊包含有數(shù)據(jù)塊頭信息及用戶數(shù)據(jù)信息,一個數(shù)據(jù)塊由一個或多個數(shù)據(jù)頁構成; 所述記錄內容包含有數(shù)據(jù)記錄頭和數(shù)據(jù)記錄兩部分,記錄內容用于存儲記錄的相關信息。
2.根據(jù)權利要求1所述的大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構,其特征在于,所述存儲文件頭內記錄的基本信息包括:文件標示串、數(shù)據(jù)頁長度、存儲文件長度、存儲文件名和序列號; 所述文件標示串用于標識數(shù)據(jù)存儲文件的格式; 所述數(shù)據(jù)頁長度為數(shù)據(jù)塊中每個數(shù)據(jù)頁的大小,所有數(shù)據(jù)頁以該大小為標準; 所述存儲文件長度表示存儲文件頭、空間管理段以及全部數(shù)據(jù)塊文件所占據(jù)的數(shù)據(jù)頁的數(shù)量,并以數(shù)據(jù)頁的個數(shù)為單位; 所述存儲文件名代表了存儲文件的名稱; 所述序列號代表存儲文件在當前數(shù)據(jù)庫中所屬的編號。
3.根據(jù)權利要求1所述的大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構,其特征在于,所述元數(shù)據(jù)管理段包括一個以上的元數(shù)據(jù)單元,每個數(shù)據(jù)單元包含的信息有:集合名、標示、集合ID、起始數(shù)據(jù)塊ID、終結數(shù)據(jù)塊ID、刪除列表和邏輯ID ; 所述集合名代表了該集合的名稱; 所述標示采用標示符代表該集合的狀態(tài); 所述集合ID表示該集合在元數(shù)據(jù)管理段中所占據(jù)的地址; 所述起始數(shù)據(jù)塊ID表示該集合中包含的第一個數(shù)據(jù)塊所在的數(shù)據(jù)頁; 所述終結數(shù)據(jù)塊ID表示該集合中包含的最后一個數(shù)據(jù)塊所在的數(shù)據(jù)頁; 所述刪除列表中記錄了該集合中不同長度記錄被刪除的第一條記錄的位置; 所述邏輯ID代表了該集合創(chuàng)建時的邏輯位置。
4.根據(jù)權利要求1所述的大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構,其特征在于,所述數(shù)據(jù)塊頭信息及用戶數(shù)據(jù)信息包含有:字符標示串、數(shù)據(jù)塊長度、所屬集合ID、數(shù)據(jù)塊標示、數(shù)據(jù)塊版本、數(shù)據(jù)塊邏輯ID、前一個數(shù)據(jù)塊ID、后一個數(shù)據(jù)塊ID、記錄數(shù)、第一條記錄偏移、最后一條記錄偏移、空閑空間; 所述字符標示串代表一個數(shù)據(jù)塊起始的信息,并以字符標示數(shù)據(jù)塊是否為非法數(shù)據(jù)塊; 所述數(shù)據(jù)塊長度代表了該數(shù)據(jù)塊所占數(shù)據(jù)頁的數(shù)量,數(shù)據(jù)頁在文件中必須連續(xù),并且不能被別的集合所使用; 所述所屬集合ID代表了該數(shù)據(jù)塊所屬于的集合ID ;所述數(shù)據(jù)塊標示代表該數(shù)據(jù)塊的狀態(tài); 所述數(shù)據(jù)塊版本代表該數(shù)據(jù)塊的格式信息; 所述數(shù)據(jù)塊邏輯ID是以邏輯遞增方式標示出在每個集合中創(chuàng)建的新的數(shù)據(jù)塊; 所述前一個數(shù)據(jù)塊ID標示了該數(shù)據(jù)塊的前塊ID ; 所述后一個數(shù)據(jù)塊ID標示了該數(shù)據(jù)塊的后塊ID ; 所述記錄數(shù)代表著該數(shù)據(jù)塊內包含的用戶記錄個數(shù); 所述第一條記錄偏移代表了該數(shù)據(jù)塊內第一條記錄的偏移地址; 所述最后一條記錄偏移代表了該數(shù)據(jù)塊內最后一條記錄的偏移地址; 所述空閑空間代表了該數(shù)據(jù)塊內的可用空間大小。
5.根據(jù)權利要求1所述的大數(shù)據(jù)頁中高效存儲非定常數(shù)據(jù)結構,其特征在于,所述數(shù)據(jù)記錄頭包含的信息有:記錄標示、記錄長度、記錄在數(shù)據(jù)塊中偏移、前一條記錄偏移、后一條記錄偏移; 所述記錄標示代表了該數(shù)據(jù)記錄的狀態(tài); 所述記錄長度代表了該數(shù)據(jù)記錄的長度; 所述記錄在數(shù)據(jù)塊中偏移代表了該數(shù)據(jù)記錄在當前數(shù)據(jù)塊內的偏移地址; 所述前一條記錄偏移標示了該數(shù)據(jù)記錄的前一條記錄的偏移指針; 所述后一條記錄偏移標示了該數(shù)據(jù) 記錄的后一條記錄的偏移指針。
【文檔編號】G06F17/30GK103488710SQ201310406735
【公開日】2014年1月1日 申請日期:2013年9月10日 優(yōu)先權日:2013年9月10日
【發(fā)明者】唐迅, 王濤 申請人:廣州巨杉軟件開發(fā)有限公司