欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

只讀表的連接方法和只讀表的連接系統(tǒng)的制作方法

文檔序號:6552399閱讀:170來源:國知局
只讀表的連接方法和只讀表的連接系統(tǒng)的制作方法【專利摘要】本發(fā)明提供了一種只讀表的連接方法和連接系統(tǒng),包括:分割步驟,將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,其中每個屬性對應所述數(shù)據(jù)表中的一列;存儲步驟,將每個所述數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲;數(shù)據(jù)匹配步驟,當接收到對所述海量數(shù)據(jù)表進行讀取的指令時,依次讀取每個所述數(shù)據(jù)表對應的數(shù)據(jù)頁,在讀取當前數(shù)據(jù)頁中的任一元組數(shù)據(jù)時,從與所述當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁中提取出與所述任一元組數(shù)據(jù)具有相同偏移量的目標元組數(shù)據(jù),并將所述任一元組數(shù)據(jù)和所述目標元組數(shù)據(jù)進行匹配輸出。通過本發(fā)明的技術方案,可以在節(jié)約只讀表的列數(shù)的同時提高表裝載數(shù)據(jù)的效率,減少內存和CPU資源占用,提高存儲效率。【專利說明】只讀表的連接方法和只讀表的連接系統(tǒng)【
技術領域
】[0001]本發(fā)明涉及數(shù)據(jù)【
技術領域
】,具體而言,涉及一種只讀表的連接方法和一種只讀表的連接系統(tǒng)?!?br>背景技術
】[0002]當今,關系數(shù)據(jù)庫的主流應用已經慢慢從0LTP應用轉向0LAP的應用,例如決策支持系統(tǒng)(DecisionSupportSystem,簡稱DSS)。讀數(shù)據(jù)的地位在不斷上升,以讀為主的關系數(shù)據(jù)庫的應用場景在不斷地增多。另一方面,很多數(shù)據(jù)在經過ETUExtractionTransformationLoading,提取、轉換和加載)操作放在數(shù)據(jù)倉庫(主要是關系數(shù)據(jù)庫)之后,幾乎不發(fā)生變化。[0003]在生物學領域,一個研究對象可以有很多的屬性。例如一個物種的單核苷酸多態(tài)性(singlenucleotidepolymorphism)可以有成千上萬個屬性(對應數(shù)據(jù)庫中的列),遠遠超出了傳統(tǒng)數(shù)據(jù)庫的一個表可以容納的列的數(shù)目,這些屬性常常會被分割成多個表,這些表的連接效率成為讀取研究對象所有屬性的關鍵。[0004]ANSI標準的SQL給出了五種JOIN方式:內連接(Inner),全外連接(FullOuter),左外連接(LeftOuter),右外連接(RightOuter)和交叉連接(Cross)。這些連接都是基于兩點:1、笛卡爾積連接;2、磁盤數(shù)據(jù)隨機存取。[0005]傳統(tǒng)的數(shù)據(jù)表連接方式主要是基于笛卡爾積連接,如圖1所示,笛卡爾積連接是驅動表的每一條數(shù)據(jù)和匹配表中每一條數(shù)據(jù)依次匹配輸出。不同的連接會對輸出數(shù)據(jù)有不同的過濾。有過濾條件存在時候,可以采用了諸如索引機制提升性能的策略,使得驅動表的一條數(shù)據(jù)可以跳過多個匹配表數(shù)據(jù)來提升性能。但是當數(shù)據(jù)量大的時候,連接操作仍然是查詢的一個比較大的性能瓶頸,傳統(tǒng)數(shù)據(jù)庫中表的數(shù)據(jù)是不能保證順序的,一般情況下,被更改的數(shù)據(jù)或者插入的數(shù)據(jù)都會被放在最后。[0006]-個只讀表的列數(shù)過多,超過傳統(tǒng)關系型數(shù)據(jù)庫所能容納的列數(shù)的時候,我們只能使用多個表裝載數(shù)據(jù),在讀取所有數(shù)據(jù)時候需要使用連接技術,因此,現(xiàn)有的關系數(shù)據(jù)庫表連接技術的效率低下,已經無法滿足使用需求。[0007]因此,如何在節(jié)約只讀表的列數(shù)的同時提高表裝載數(shù)據(jù)的效率,成為目前亟待解決的問題。【
發(fā)明內容】[0008]本發(fā)明正是基于上述問題,提出了一種新的技術方案,可以在節(jié)約只讀表的列數(shù)的同時提高表裝載數(shù)據(jù)的效率。[0009]有鑒于此,本發(fā)明提出了一種只讀表的連接方法,包括:分割步驟,將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,其中每個屬性對應所述數(shù)據(jù)表中的一列;存儲步驟,將每個所述數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲;數(shù)據(jù)匹配步驟,當接收到對所述海量數(shù)據(jù)表進行讀取的指令時,依次讀取每個所述數(shù)據(jù)表對應的數(shù)據(jù)頁,在讀取當前數(shù)據(jù)頁中的任一元組數(shù)據(jù)時,從與所述當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁中提取出與所述任一元組數(shù)據(jù)具有相同偏移量的目標元組數(shù)據(jù),并將所述任一元組數(shù)據(jù)和所述目標元組數(shù)據(jù)進行匹配輸出。[0010]在該技術方案中,通過將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,并將每個所述數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲,形成了一種新的數(shù)據(jù)庫連接技術--順序連接。該連接技術可以不再基于笛卡爾連接技術,并且只面向于只讀表。通過順序連接,可以避免驅動表一條數(shù)據(jù)對匹配表所有數(shù)據(jù)的掃描匹配,而是對驅動表的指定位置進行數(shù)據(jù)順序輸出,從而提高數(shù)據(jù)提取速度。另外,對于一些針對少數(shù)列的聚合操作可以減少內存消耗,提高計算速度。[0011]在上述技術方案中,優(yōu)選地,所述指定格式的數(shù)據(jù)頁包括頁頭數(shù)據(jù),數(shù)據(jù)項指針,元組數(shù)據(jù)和空閑空間。[0012]在上述技術方案中,優(yōu)選地,所述數(shù)據(jù)項指針和所述元組數(shù)據(jù)一一對應,所述頁頭數(shù)據(jù)中包含所述空閑空間的起止位置,所述數(shù)據(jù)項指針的起止位置和所述空閑空間的大小,所述數(shù)據(jù)項指針中包含對應的元組數(shù)據(jù)的位置和大小,所述元組數(shù)據(jù)從所述數(shù)據(jù)頁的頁尾依次進行分配,所述元組數(shù)據(jù)對應的數(shù)據(jù)項指針從所述數(shù)據(jù)頁的頁頭依次進行分配。[0013]在該技術方案中,順序連接可以用于多種格式的數(shù)據(jù)頁,拓寬了使用范圍,且數(shù)據(jù)項指針和元組數(shù)據(jù)一一對應,提高了數(shù)據(jù)查詢的效率。[0014]在上述技術方案中,優(yōu)選地,所述數(shù)據(jù)匹配步驟具體包括:確定當前數(shù)據(jù)表,讀取所述當前數(shù)據(jù)表對應的所述當前數(shù)據(jù)頁,在讀取所述當前數(shù)據(jù)頁中任一元組數(shù)據(jù)時,獲取所述任一元組數(shù)據(jù)的偏移量;根據(jù)所述任一元組數(shù)據(jù)的偏移量確定所述任一元組數(shù)據(jù)的初始地址和元組長度,以讀取出所述任一元組數(shù)據(jù);確定與所述當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁,并根據(jù)所述任一元組數(shù)據(jù)的偏移量確定所述下一個數(shù)據(jù)頁的目標偏移量;根據(jù)所述下一個數(shù)據(jù)頁的目標偏移量確定所述目標元組數(shù)據(jù)的初始地址和元組長度,以提取出所述目標元組數(shù)據(jù)。[0015]在該技術方案中,根據(jù)任一元組數(shù)據(jù)的偏移量確認其初始地址和元組長度,并根據(jù)相鄰數(shù)據(jù)頁確定相鄰的元組數(shù)據(jù)的偏移量,將驅動表和匹配表中的元組順序連接,順序連接使得驅動表的每一條元組不用與匹配表的所有元組進行匹配連接,而與特定元組匹配,大大降低了連接的時間消耗,提高了數(shù)據(jù)查詢的效率。[0016]在上述技術方案中,優(yōu)選地,還包括:判斷所述當前數(shù)據(jù)頁的偏移量是否大于所述當前數(shù)據(jù)頁的元組個數(shù),在判斷結果為是時,重新確定所述當前數(shù)據(jù)頁。[0017]在該技術方案中,可以根據(jù)偏移量來重新確定當前頁,以使偏移量與當前數(shù)據(jù)頁的元組個數(shù)相匹配,這樣,通過順序連接技術將數(shù)據(jù)表的縱向分割,克服了單個表的列個數(shù)過多超出傳統(tǒng)數(shù)據(jù)庫表列個數(shù)限制的問題。[0018]根據(jù)本發(fā)明第二方面的實施例,提出了一種只讀表的連接系統(tǒng),包括:分割單元,用于將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,其中每個屬性對應所述數(shù)據(jù)表中的一列;存儲單元,用于將每個所述數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲;數(shù)據(jù)匹配單元,當接收到對所述海量數(shù)據(jù)表進行讀取的指令時,依次讀取每個所述數(shù)據(jù)表對應的數(shù)據(jù)頁,在讀取當前數(shù)據(jù)頁中的任一元組數(shù)據(jù)時,從與所述當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁中提取出與所述任一元組數(shù)據(jù)具有相同偏移量的目標元組數(shù)據(jù),并將所述任一元組數(shù)據(jù)和所述目標元組數(shù)據(jù)進行匹配輸出。[0019]在該技術方案中,通過將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,并將每個所述數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲,形成了一種新的數(shù)據(jù)庫連接技術一順序連接。該連接技術可以不再基于笛卡爾連接技術,并且只面向于只讀表。通過順序連接,可以避免驅動表一條數(shù)據(jù)對匹配表所有數(shù)據(jù)的掃描匹配,而是對驅動表的指定位置進行數(shù)據(jù)順序輸出,從而提高數(shù)據(jù)提取速度。另外,對于一些針對少數(shù)列的聚合操作可以減少內存消耗,提高計算速度。[0020]在上述技術方案中,優(yōu)選地,所述指定格式的數(shù)據(jù)頁包括頁頭數(shù)據(jù),數(shù)據(jù)項指針,元組數(shù)據(jù)和空閑空間。[0021]在上述技術方案中,優(yōu)選地,所述數(shù)據(jù)項指針和所述元組數(shù)據(jù)一一對應,所述頁頭數(shù)據(jù)中包含所述空閑空間的起止位置,所述數(shù)據(jù)項指針的起止位置和所述空閑空間的大小,所述數(shù)據(jù)項指針中包含對應的元組數(shù)據(jù)的位置和大小,所述元組數(shù)據(jù)從所述數(shù)據(jù)頁的頁尾依次進行分配,所述元組數(shù)據(jù)對應的數(shù)據(jù)項指針從所述數(shù)據(jù)頁的頁頭依次進行分配。[0022]在該技術方案中,順序連接可以用于多種格式的數(shù)據(jù)頁,拓寬了使用范圍,且數(shù)據(jù)項指針和元組數(shù)據(jù)一一對應,提高了數(shù)據(jù)查詢的效率。[0023]在上述技術方案中,優(yōu)選地,所述數(shù)據(jù)匹配單元具體包括:確定當前數(shù)據(jù)表,讀取所述當前數(shù)據(jù)表對應的所述當前數(shù)據(jù)頁,在讀取所述當前數(shù)據(jù)頁中任一元組數(shù)據(jù)時,獲取所述任一元組數(shù)據(jù)的偏移量;根據(jù)所述任一元組數(shù)據(jù)的偏移量確定所述任一元組數(shù)據(jù)的初始地址和元組長度,以讀取出所述任一元組數(shù)據(jù);確定與所述當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁,并根據(jù)所述任一元組數(shù)據(jù)的偏移量確定所述下一個數(shù)據(jù)頁的目標偏移量;根據(jù)所述下一個數(shù)據(jù)頁的目標偏移量確定所述目標元組數(shù)據(jù)的初始地址和元組長度,以提取出所述目標元組數(shù)據(jù)。[0024]在該技術方案中,根據(jù)任一元組數(shù)據(jù)的偏移量確認其初始地址和元組長度,并根據(jù)相鄰數(shù)據(jù)頁確定相鄰的元組數(shù)據(jù)的偏移量,將驅動表和匹配表中的元組順序連接,順序連接使得驅動表的每一條元組不用與匹配表的所有元組進行匹配連接,而與特定元組匹配,大大降低了連接的時間消耗,提高了數(shù)據(jù)查詢的效率。[0025]在上述技術方案中,優(yōu)選地,還包括:判斷所述當前數(shù)據(jù)頁的偏移量是否大于所述當前數(shù)據(jù)頁的元組個數(shù),在判斷結果為是時,重新確定所述當前數(shù)據(jù)頁。[0026]在該技術方案中,可以根據(jù)偏移量來重新確定當前頁,以使偏移量與當前數(shù)據(jù)頁的元組個數(shù)相匹配,這樣,通過順序連接技術將數(shù)據(jù)表的縱向分割,克服了單個表的列個數(shù)過多超出傳統(tǒng)數(shù)據(jù)庫表列個數(shù)限制的問題。[0027]通過以上技術方案,可以在數(shù)據(jù)只讀的前提下,將驅動表和匹配表中的元組順序連接。首先,順序連接技術使得驅動表的每一條元組不用與匹配表的所有元組進行匹配連接,而與特定元組匹配,大大降低了連接的時間消耗,提高了數(shù)據(jù)查詢的效率。其次,順序連接技術支持數(shù)據(jù)表的縱向分割,克服了單個表的列個數(shù)過多超出傳統(tǒng)數(shù)據(jù)庫表列個數(shù)限制的問題。最后順序連接技術可以保證常用的字段單獨成表,在使用諸如聚合運算等復雜計算時候,只將部分數(shù)據(jù)提取到內存參與計算,可以將減少內存和cpu資源的使用?!緦@綀D】【附圖說明】[0028]圖1示出了現(xiàn)有技術中笛卡爾連接的示意圖;[0029]圖2示出了根據(jù)本發(fā)明的實施例的只讀表的連接方法的流程圖;[0030]圖3示出了根據(jù)本發(fā)明的實施例的只讀表的連接系統(tǒng)的框圖;[0031]圖4示出了根據(jù)本發(fā)明的實施例的只讀表的連接方法的順序連接的示意圖;[0032]圖5示出了根據(jù)本發(fā)明的實施例的只讀表的連接方法的邏輯頁結構示意圖。【具體實施方式】[0033]為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結合附圖和具體實施方式對本發(fā)明進行進一步的詳細描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。[0034]在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明的保護范圍并不受下面公開的具體實施例的限制。[0035]圖2示出了根據(jù)本發(fā)明的實施例的只讀表的連接方法的流程圖。[0036]如圖2所示,根據(jù)本發(fā)明的實施例的只讀表的連接方法,包括以下步驟:[0037]步驟202,將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,其中每個屬性對應數(shù)據(jù)表中的一列。[0038]步驟204,將每個數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲。[0039]步驟206,當接收到對海量數(shù)據(jù)表進行讀取的指令時,依次讀取每個數(shù)據(jù)表對應的數(shù)據(jù)頁,在讀取當前數(shù)據(jù)頁中的任一元組數(shù)據(jù)時,從與當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁中提取出與任一元組數(shù)據(jù)具有相同偏移量的目標元組數(shù)據(jù),并將任一元組數(shù)據(jù)和目標元組數(shù)據(jù)進行匹配輸出。[0040]在該技術方案中,通過將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,并將每個數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲,形成了一種新的數(shù)據(jù)庫連接技術一順序連接。該連接技術可以不再基于笛卡爾連接技術,并且只面向于只讀表。通過順序連接,可以避免驅動表一條數(shù)據(jù)對匹配表所有數(shù)據(jù)的掃描匹配,而是對驅動表的指定位置進行數(shù)據(jù)順序輸出,從而提高數(shù)據(jù)提取速度。另外,對于一些針對少數(shù)列的聚合操作可以減少內存消耗,提高計算速度。[0041]在上述技術方案中,優(yōu)選地,指定格式的數(shù)據(jù)頁包括頁頭數(shù)據(jù),數(shù)據(jù)項指針,元組數(shù)據(jù)和空閑空間。[0042]在上述技術方案中,優(yōu)選地,數(shù)據(jù)項指針和元組數(shù)據(jù)一一對應,頁頭數(shù)據(jù)中包含空閑空間的起止位置,數(shù)據(jù)項指針的起止位置和空閑空間的大小,數(shù)據(jù)項指針中包含對應的元組數(shù)據(jù)的位置和大小,元組數(shù)據(jù)從數(shù)據(jù)頁的頁尾依次進行分配,元組數(shù)據(jù)對應的數(shù)據(jù)項指針從數(shù)據(jù)頁的頁頭依次進行分配。[0043]在該技術方案中,順序連接可以用于多種格式的數(shù)據(jù)頁,拓寬了使用范圍,且數(shù)據(jù)項指針和元組數(shù)據(jù)一一對應,提高了數(shù)據(jù)查詢的效率。[0044]在上述技術方案中,優(yōu)選地,數(shù)據(jù)匹配步驟具體包括:確定當前數(shù)據(jù)表,讀取當前數(shù)據(jù)表對應的當前數(shù)據(jù)頁,在讀取當前數(shù)據(jù)頁中任一元組數(shù)據(jù)時,獲取任一元組數(shù)據(jù)的偏移量;根據(jù)任一元組數(shù)據(jù)的偏移量確定任一元組數(shù)據(jù)的初始地址和元組長度,以讀取出任一元組數(shù)據(jù);確定與當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁,并根據(jù)任一元組數(shù)據(jù)的偏移量確定下一個數(shù)據(jù)頁的目標偏移量;根據(jù)下一個數(shù)據(jù)頁的目標偏移量確定目標元組數(shù)據(jù)的初始地址和元組長度,以提取出目標元組數(shù)據(jù)。[0045]在該技術方案中,根據(jù)任一元組數(shù)據(jù)的偏移量確認其初始地址和元組長度,并根據(jù)相鄰數(shù)據(jù)頁確定相鄰的元組數(shù)據(jù)的偏移量,將驅動表和匹配表中的元組順序連接,順序連接使得驅動表的每一條元組不用與匹配表的所有元組進行匹配連接,而與特定元組匹配,大大降低了連接的時間消耗,提高了數(shù)據(jù)查詢的效率。[0046]在上述技術方案中,優(yōu)選地,還包括:判斷當前數(shù)據(jù)頁的偏移量是否大于當前數(shù)據(jù)頁的元組個數(shù),在判斷結果為是時,重新確定當前數(shù)據(jù)頁。[0047]在該技術方案中,可以根據(jù)偏移量來重新確定當前頁,以使偏移量與當前數(shù)據(jù)頁的元組個數(shù)相匹配,這樣,通過順序連接技術將數(shù)據(jù)表的縱向分割,克服了單個表的列個數(shù)過多超出傳統(tǒng)數(shù)據(jù)庫表列個數(shù)限制的問題。[0048]圖3示出了根據(jù)本發(fā)明的實施例的只讀表的連接系統(tǒng)的框圖。[0049]如圖3所示,根據(jù)本發(fā)明的實施例的只讀表的連接系統(tǒng)300,包括:分割單元202,用于將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,其中每個屬性對應數(shù)據(jù)表中的一列;存儲單元204,用于將每個數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲;數(shù)據(jù)匹配單元206,當接收到對海量數(shù)據(jù)表進行讀取的指令時,依次讀取每個數(shù)據(jù)表對應的數(shù)據(jù)頁,在讀取當前數(shù)據(jù)頁中的任一元組數(shù)據(jù)時,從與當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁中提取出與任一元組數(shù)據(jù)具有相同偏移量的目標元組數(shù)據(jù),并將任一元組數(shù)據(jù)和目標元組數(shù)據(jù)進行匹配輸出。[0050]在該技術方案中,通過將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,并將每個數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲,形成了一種新的數(shù)據(jù)庫連接技術--順序連接。該連接技術可以不再基于笛卡爾連接技術,并且只面向于只讀表。通過順序連接,可以避免驅動表一條數(shù)據(jù)對匹配表所有數(shù)據(jù)的掃描匹配,而是對驅動表的指定位置進行數(shù)據(jù)順序輸出,從而提高數(shù)據(jù)提取速度。另外,對于一些針對少數(shù)列的聚合操作可以減少內存消耗,提高計算速度。[0051]在上述技術方案中,優(yōu)選地,指定格式的數(shù)據(jù)頁包括頁頭數(shù)據(jù),數(shù)據(jù)項指針,元組數(shù)據(jù)和空閑空間。[0052]在上述技術方案中,優(yōu)選地,數(shù)據(jù)項指針和元組數(shù)據(jù)一一對應,頁頭數(shù)據(jù)中包含空閑空間的起止位置,數(shù)據(jù)項指針的起止位置和空閑空間的大小,數(shù)據(jù)項指針中包含對應的元組數(shù)據(jù)的位置和大小,元組數(shù)據(jù)從數(shù)據(jù)頁的頁尾依次進行分配,元組數(shù)據(jù)對應的數(shù)據(jù)項指針從數(shù)據(jù)頁的頁頭依次進行分配。[0053]在該技術方案中,順序連接可以用于多種格式的數(shù)據(jù)頁,拓寬了使用范圍,且數(shù)據(jù)項指針和元組數(shù)據(jù)一一對應,提高了數(shù)據(jù)查詢的效率。[0054]在上述技術方案中,優(yōu)選地,數(shù)據(jù)匹配單元具體包括:確定當前數(shù)據(jù)表,讀取當前數(shù)據(jù)表對應的當前數(shù)據(jù)頁,在讀取當前數(shù)據(jù)頁中任一元組數(shù)據(jù)時,獲取任一元組數(shù)據(jù)的偏移量;根據(jù)任一元組數(shù)據(jù)的偏移量確定任一元組數(shù)據(jù)的初始地址和元組長度,以讀取出任一元組數(shù)據(jù);確定與當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁,并根據(jù)任一元組數(shù)據(jù)的偏移量確定下一個數(shù)據(jù)頁的目標偏移量;根據(jù)下一個數(shù)據(jù)頁的目標偏移量確定目標元組數(shù)據(jù)的初始地址和元組長度,以提取出目標元組數(shù)據(jù)。[0055]在該技術方案中,根據(jù)任一元組數(shù)據(jù)的偏移量確認其初始地址和元組長度,并根據(jù)相鄰數(shù)據(jù)頁確定相鄰的元組數(shù)據(jù)的偏移量,將驅動表和匹配表中的元組順序連接,順序連接使得驅動表的每一條元組不用與匹配表的所有元組進行匹配連接,而與特定元組匹配,大大降低了連接的時間消耗,提高了數(shù)據(jù)查詢的效率。[0056]在上述技術方案中,優(yōu)選地,還包括:判斷當前數(shù)據(jù)頁的偏移量是否大于當前數(shù)據(jù)頁的元組個數(shù),在判斷結果為是時,重新確定當前數(shù)據(jù)頁。[0057]在該技術方案中,可以根據(jù)偏移量來重新確定當前頁,以使偏移量與當前數(shù)據(jù)頁的元組個數(shù)相匹配,這樣,通過順序連接技術將數(shù)據(jù)表的縱向分割,克服了單個表的列個數(shù)過多超出傳統(tǒng)數(shù)據(jù)庫表列個數(shù)限制的問題。[0058]圖4示出了根據(jù)本發(fā)明的實施例的只讀表的連接方法的順序連接的示意圖。[0059]如圖4所示,驅動表outertable中的元組數(shù)據(jù)tuplel、tuple2、tuple3與匹配表innertable中的元組數(shù)據(jù)相同偏移量的元組數(shù)據(jù)tuple1、tuple2、tuple3--對應。[0060]本發(fā)明提出順序連接方式,不再以笛卡爾連接為基礎。在保證元組數(shù)據(jù)沒有刪除和修改并且增加的元組數(shù)據(jù)是逐條插入的情況下,以驅動表的一條元組,與匹配表的相同偏移量的元組進行匹配。[0061]圖5示出了根據(jù)本發(fā)明的實施例的只讀表的連接方法的邏輯頁結構示意圖。[0062]如圖5所示,PageHeaderData是頁頭數(shù)據(jù),包含該文件塊的一般信息,例如空閑空間的起止位置、項指針的起止位置、剩余空間大小等;Linp是描述Tuple的項,主要包括元組的位置、大小等;Freespace是指未分配的空間(空閑空間),新插入的元組從隊尾部開始順序分配空間;而對應的Linp項是從隊首開始分配。Tuple是具體的元組數(shù)據(jù)。[0063]數(shù)據(jù)表的數(shù)據(jù)在磁盤中的物理存儲是隨機的,但是其邏輯結構卻是可以控制的,在上述技術方案中,使用邏輯頁來組織磁盤數(shù)據(jù)。在保證邏輯頁插入數(shù)據(jù)之后不再進行刪除和修改操作前提下,對驅動表的元組提取順序在頭文件之后的某個元組數(shù)據(jù),更新偏移量參數(shù)(初始為〇),提取匹配表的相同偏移量的元組數(shù)據(jù)并匹配和輸出。具體的操作過程如下:[0064]步驟一:定義且初始化全局變量OuterOffset和InnerOffset值分別為0,分別用來標志驅動表和匹配表的當前邏輯文件塊中元組的id偏移量;定義且初始化全局變量OuterTupNum和InnerTupNum值為0,分別用來標志驅動表和匹配表當前頁含有Tuple的個數(shù);如果驅動表是首次讀取邏輯文件塊,轉向步驟二;否則轉向步驟三。[0065]步驟二:通過驅動表的數(shù)據(jù)元信息獲取第一個邏輯文件塊作為驅動表的當前數(shù)據(jù)頁,將OuterOffset值初始化為0,用OuterTupNum從PageHeaderData結構中獲取兀組個數(shù),進入步驟四。[0066]步驟三:順序掃描驅動表的邏輯文件塊,獲取驅動表的當前頁;通過上一個表邏輯文件塊的PageHeaderData信息獲取下一個邏輯文件塊作為驅動表的當前數(shù)據(jù)頁;將OuterOffset值初始化為0,OuterTupNum從PageHeaderData結構中獲取兀組個數(shù),進入步驟四。[0067]步驟四:判斷OuterOffset是否大于OuterTupNum,當判斷結果為是時,返回步驟三,否則,通過驅動表當前數(shù)據(jù)頁的PageHeaderData結構獲取ID偏移量為OuterOffset的Linp結構OuterLinp;如果獲取結果為空,則標志查詢結束,結束進程;如果獲取成功,OuterOffset自加1,進入步驟五。[0068]步驟五:驅動表根據(jù)OuterLinp結構獲取Tuple的初始地址和元組長度,讀取Tuple的數(shù)據(jù),如果是首次讀取匹配表的邏輯文件塊,進入步驟六,否則進入步驟七。[0069]步驟六:通過匹配表的元數(shù)據(jù)信息獲取第一個邏輯文件塊作為驅動表的當前數(shù)據(jù)頁,將IuterOffset值初始化為0,InnerTupNum從PageHeaderData結構中獲取兀組個數(shù),進入步驟八。[0070]步驟七:順序掃描匹配表邏輯文件塊,獲取匹配表當前頁,并通過上一個匹配表邏輯文件塊的PageHeaderData信息獲取下一個邏輯文件塊作為驅動表的當前數(shù)據(jù)頁,將InnerOffset值初始化為0,InnerTupNum從PageHeaderData結構中獲取兀組個數(shù),進入步驟八。[0071]步驟八:判斷InnerOffset是否大于InnerTupNum,當判斷結果為是時,返回步驟七,否則,通過當前數(shù)據(jù)頁的PageHeaderData獲取ID偏移量為InnerOffset的Linp結構InnerLinp。InnerOffset自加1〇[0072]步驟九:匹配表根據(jù)InnerLinp獲取Tuple的初始地址和元組長度。讀取Tuple的數(shù)據(jù),連接驅動表提取的Tuple數(shù)據(jù)輸出后,返回步驟三。[0073]以上結合附圖詳細說明了本發(fā)明的技術方案。通過以上技術方案,可以在數(shù)據(jù)只讀的前提下,將驅動表和匹配表中的元組順序連接。首先,順序連接技術使得驅動表的每一條元組不用與匹配表的所有元組進行匹配連接,而與特定元組匹配,大大降低了連接的時間消耗,提高了數(shù)據(jù)查詢的效率。其次,順序連接技術支持數(shù)據(jù)表的縱向分割,克服了單個表的列個數(shù)過多超出傳統(tǒng)數(shù)據(jù)庫表列個數(shù)限制的問題。最后順序連接技術可以保證常用的字段單獨成表,在使用諸如聚合運算等復雜計算時候,只將部分數(shù)據(jù)提取到內存參與計算,可以將減少內存和cpu資源的使用。[0074]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內?!緳嗬蟆?.一種只讀表的連接方法,其特征在于,包括:分割步驟,將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,其中每個屬性對應所述數(shù)據(jù)表中的一列;存儲步驟,將每個所述數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲;數(shù)據(jù)匹配步驟,當接收到對所述海量數(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ù)和空閑空間。3.根據(jù)權利要求2所述的只讀表的連接方法,其特征在于,所述數(shù)據(jù)項指針和所述元組數(shù)據(jù)一一對應,所述頁頭數(shù)據(jù)中包含所述空閑空間的起止位置,所述數(shù)據(jù)項指針的起止位置和所述空閑空間的大小,所述數(shù)據(jù)項指針中包含對應的元組數(shù)據(jù)的位置和大小,所述元組數(shù)據(jù)從所述數(shù)據(jù)頁的頁尾依次進行分配,所述元組數(shù)據(jù)對應的數(shù)據(jù)項指針從所述數(shù)據(jù)頁的頁頭依次進行分配。4.根據(jù)權利要求1至3中任一項所述的只讀表的連接方法,其特征在于,所述數(shù)據(jù)匹配步驟具體包括:確定當前數(shù)據(jù)表,讀取所述當前數(shù)據(jù)表對應的所述當前數(shù)據(jù)頁,在讀取所述當前數(shù)據(jù)頁中任一元組數(shù)據(jù)時,獲取所述任一元組數(shù)據(jù)的偏移量;根據(jù)所述任一元組數(shù)據(jù)的偏移量確定所述任一元組數(shù)據(jù)的初始地址和元組長度,以讀取出所述任一元組數(shù)據(jù);確定與所述當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁,并根據(jù)所述任一元組數(shù)據(jù)的偏移量確定所述下一個數(shù)據(jù)頁的目標偏移量;根據(jù)所述下一個數(shù)據(jù)頁的目標偏移量確定所述目標元組數(shù)據(jù)的初始地址和元組長度,以提取出所述目標元組數(shù)據(jù)。5.根據(jù)權利要求4所述的只讀表的連接方法,其特征在于,還包括:判斷所述當前數(shù)據(jù)頁的偏移量是否大于所述當前數(shù)據(jù)頁的元組個數(shù),在判斷結果為是時,重新確定所述當前數(shù)據(jù)頁。6.-種只讀表的連接系統(tǒng),其特征在于,包括:分割單元,用于將具有多個屬性的海量數(shù)據(jù)表縱向分割成多個數(shù)據(jù)表,其中每個屬性對應所述數(shù)據(jù)表中的一列;存儲單元,用于將每個所述數(shù)據(jù)表中的元組數(shù)據(jù)按照指定格式的數(shù)據(jù)頁進行存儲;數(shù)據(jù)匹配單元,當接收到對所述海量數(shù)據(jù)表進行讀取的指令時,依次讀取每個所述數(shù)據(jù)表對應的數(shù)據(jù)頁,在讀取當前數(shù)據(jù)頁中的任一元組數(shù)據(jù)時,從與所述當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁中提取出與所述任一元組數(shù)據(jù)具有相同偏移量的目標元組數(shù)據(jù),并將所述任一元組數(shù)據(jù)和所述目標元組數(shù)據(jù)進行匹配輸出。7.根據(jù)權利要求6所述的只讀表的連接方法,其特征在于,所述指定格式的數(shù)據(jù)頁包括頁頭數(shù)據(jù),數(shù)據(jù)項指針,元組數(shù)據(jù)和空閑空間。8.根據(jù)權利要求7所述的只讀表的連接方法,其特征在于,所述數(shù)據(jù)項指針和所述元組數(shù)據(jù)一一對應,所述頁頭數(shù)據(jù)中包含所述空閑空間的起止位置,所述數(shù)據(jù)項指針的起止位置和所述空閑空間的大小,所述數(shù)據(jù)項指針中包含對應的元組數(shù)據(jù)的位置和大小,所述元組數(shù)據(jù)從所述數(shù)據(jù)頁的頁尾依次進行分配,所述元組數(shù)據(jù)對應的數(shù)據(jù)項指針從所述數(shù)據(jù)頁的頁頭依次進行分配。9.根據(jù)權利要求6至8中任一項所述的只讀表的連接系統(tǒng),其特征在于,所述數(shù)據(jù)匹配單元具體包括:確定當前數(shù)據(jù)表,讀取所述當前數(shù)據(jù)表對應的所述當前數(shù)據(jù)頁,在讀取所述當前數(shù)據(jù)頁中任一元組數(shù)據(jù)時,獲取所述任一元組數(shù)據(jù)的偏移量;根據(jù)所述任一元組數(shù)據(jù)的偏移量確定所述任一元組數(shù)據(jù)的初始地址和元組長度,以讀取出所述任一元組數(shù)據(jù);確定與所述當前數(shù)據(jù)頁相鄰的下一個數(shù)據(jù)頁,并根據(jù)所述任一元組數(shù)據(jù)的偏移量確定所述下一個數(shù)據(jù)頁的目標偏移量;根據(jù)所述下一個數(shù)據(jù)頁的目標偏移量確定所述目標元組數(shù)據(jù)的初始地址和元組長度,以提取出所述目標元組數(shù)據(jù)。10.根據(jù)權利要求9所述的只讀表的連接系統(tǒng),其特征在于,還包括:判斷所述當前數(shù)據(jù)頁的偏移量是否大于所述當前數(shù)據(jù)頁的元組個數(shù),在判斷結果為是時,重新確定所述當前數(shù)據(jù)頁?!疚臋n編號】G06F17/30GK104090954SQ201410318952【公開日】2014年10月8日申請日期:2014年7月4日優(yōu)先權日:2014年7月4日【發(fā)明者】宋曉眉,劉永偉申請人:用友軟件股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
夹江县| 柯坪县| 海南省| 科尔| 抚顺县| 华池县| 霍邱县| 寿光市| 吴川市| 曲松县| 吴堡县| 彩票| 剑川县| 松桃| 莫力| 龙陵县| 黄龙县| 鲁山县| 万载县| 平利县| 郧西县| 葵青区| 鹤壁市| 苍山县| 洪雅县| 拜城县| 苍溪县| 额敏县| 灵台县| 积石山| 布尔津县| 顺义区| 沈丘县| 大石桥市| 双鸭山市| 汉源县| 布拖县| 尖扎县| 乐都县| 营山县| 绥中县|