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

關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法及裝置的制作方法

文檔序號(hào):6355747閱讀:450來(lái)源:國(guó)知局

專(zhuān)利名稱(chēng)::關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法及裝置的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及數(shù)據(jù)庫(kù)
技術(shù)領(lǐng)域
,尤其涉及關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法及裝置。
背景技術(shù)
:現(xiàn)有技術(shù)提供了多種實(shí)現(xiàn)數(shù)據(jù)庫(kù)存儲(chǔ)的方法。例如,現(xiàn)有技術(shù)一提供一種行存儲(chǔ)數(shù)據(jù)庫(kù)的方法,如0raCle(0raCleDatabaseConcepts)等方法。該方法按照先入先存儲(chǔ)的規(guī)則對(duì)關(guān)系型數(shù)據(jù)庫(kù)的記錄按行進(jìn)行存儲(chǔ),并對(duì)主鍵建立B+樹(shù)等類(lèi)型的唯一性索引。但是,現(xiàn)有技術(shù)一存在如下不足首先主鍵索引占有一定的存儲(chǔ)空間,增加了系統(tǒng)開(kāi)銷(xiāo),盡管某些現(xiàn)有的數(shù)據(jù)庫(kù)采取了按列分區(qū)的機(jī)制來(lái)提高某些查詢(xún)性能,但這又提高了檢查主鍵是否唯一的開(kāi)銷(xiāo),因?yàn)椋到y(tǒng)不得不檢查所有分區(qū)中主鍵的唯一性,分區(qū)越多,檢查的開(kāi)銷(xiāo)越大;其次由于按行存儲(chǔ),所有的列存儲(chǔ)在一起,不能按需讀取列,讀取部分列不得不先讀取全部列然后過(guò)濾掉不需要的列,這樣就增加了硬盤(pán)10,降低了性能。現(xiàn)有技術(shù)二提供一種實(shí)現(xiàn)基于列存儲(chǔ)的關(guān)系型數(shù)據(jù)庫(kù)的方法及裝置(申請(qǐng)?zhí)?專(zhuān)利號(hào)200810187227)。但是,盡管現(xiàn)有技術(shù)二解決了行存儲(chǔ)數(shù)據(jù)庫(kù)不能按需讀取列的問(wèn)題,但是仍存在如下缺陷插入記錄時(shí),按列分開(kāi)存儲(chǔ),并且每個(gè)列的值按排序存儲(chǔ),增加了存儲(chǔ)時(shí)的開(kāi)銷(xiāo);由于將列分開(kāi)存儲(chǔ),需要連接數(shù)據(jù)把列連在一起來(lái)重構(gòu)原始的記錄,維護(hù)連接數(shù)據(jù)還增加了系統(tǒng)的負(fù)擔(dān)。現(xiàn)有技術(shù)三提供一種MonetDB列存儲(chǔ)數(shù)據(jù)庫(kù)(P.A.Boncz."Monet=ANext-GenerationDBMSKernelForQuery-IntensiveApplications,,)?,F(xiàn)有技術(shù)三的MonetDB雖然也是按列存儲(chǔ)的數(shù)據(jù)庫(kù)系統(tǒng),它也有列數(shù)據(jù)庫(kù)的按需讀取列的優(yōu)點(diǎn),但是,仍存在如下缺陷存儲(chǔ)每個(gè)列時(shí)需要存儲(chǔ)記錄的R0WID,系統(tǒng)需要通過(guò)ROWID來(lái)連接列值從而重建記錄,且ROWID通常是長(zhǎng)整形或者更長(zhǎng)的類(lèi)型,這樣增加了系統(tǒng)的開(kāi)銷(xiāo)?,F(xiàn)有技術(shù)四提供一種GoogleBigTable(FayChang等Bigtable:ADistributedStorageSystemforStructuredData)。盡管GoogleBigTable是按RowKey排序及分段來(lái)存儲(chǔ)記錄,但是,它引入了列族(即ColumnFamily)的概念,即一條記錄由一個(gè)或多個(gè)列族組成,存儲(chǔ)時(shí)按列族存儲(chǔ),每個(gè)列族對(duì)應(yīng)一個(gè)數(shù)據(jù)文件(即GoogleSSTable文件),這樣,一個(gè)表段(Tablet)就會(huì)對(duì)應(yīng)一個(gè)或多個(gè)數(shù)據(jù)文件(SSTable文件),而且,它在列族中存儲(chǔ)的值都是Key/Value形式,不適合用于存儲(chǔ)關(guān)系型數(shù)據(jù)。事實(shí)上,BigTable是一個(gè)多維的分布式的映射表的存儲(chǔ)系統(tǒng),這種存儲(chǔ)結(jié)構(gòu)不適合作為關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)基礎(chǔ)。
發(fā)明內(nèi)容本發(fā)明實(shí)施例提供一種關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法,用以實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)的自動(dòng)分段并按列存儲(chǔ),并節(jié)省存儲(chǔ)時(shí)的開(kāi)銷(xiāo),且存儲(chǔ)結(jié)構(gòu)適合于作為關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)基礎(chǔ),該方法包括建立控制表,用以存儲(chǔ)表段的標(biāo)識(shí)和表段所存儲(chǔ)記錄的最小及最大主鍵值,并按表段最小主鍵值排序;當(dāng)有新的記錄插入表時(shí)若表中沒(méi)有記錄,則新建該表的表段,將新的記錄插入該表段的內(nèi)存表,將該表段的標(biāo)識(shí)存儲(chǔ)至控制表,將新的記錄的主鍵值作為該表段所存儲(chǔ)記錄的最小及最大主鍵值存儲(chǔ)至控制表;若表中已有記錄,則根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,查找新的記錄應(yīng)插入的表段,將新的記錄插入該表段的內(nèi)存表,插入時(shí)按主鍵值排序;若插入改變了該表段所存儲(chǔ)記錄的最小或最大主鍵值,則在控制表中進(jìn)行相應(yīng)更新;當(dāng)有表段的內(nèi)存表中所有記錄所占用內(nèi)存達(dá)到預(yù)定義的上限時(shí)將該表段內(nèi)存表中所有記錄存儲(chǔ)至硬盤(pán)上該表段對(duì)應(yīng)的一個(gè)表段數(shù)據(jù)文件,并清空該表段的內(nèi)存表;存儲(chǔ)記錄時(shí)按列存儲(chǔ),且保持按主鍵值排序;若硬盤(pán)上沒(méi)有該表段數(shù)據(jù)文件,則新建該表段數(shù)據(jù)文件;若硬盤(pán)上已有該表段數(shù)據(jù)文件,則在存儲(chǔ)時(shí)將內(nèi)存表中的記錄與該表段數(shù)據(jù)文件中已有的記錄合并。本發(fā)明實(shí)施例還提供一種關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)裝置,用以實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)的自動(dòng)分段并按列存儲(chǔ),并節(jié)省存儲(chǔ)時(shí)的開(kāi)銷(xiāo),且存儲(chǔ)結(jié)構(gòu)適合于作為關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)基礎(chǔ),該裝置包括控制表建立模塊,用于建立控制表,用以存儲(chǔ)表段的標(biāo)識(shí)和表段所存儲(chǔ)記錄的最小及最大主鍵值,并按表段最小主鍵值排序;表段建立模塊,用于當(dāng)有新的記錄插入表時(shí)若表中沒(méi)有記錄,則新建該表的表段;第一記錄插入模塊,用于將新的記錄插入該新建的表段的內(nèi)存表;第一控制表更新模塊,用于將該新建的表段的標(biāo)識(shí)存儲(chǔ)至控制表,將新的記錄的主鍵值作為該新建的表段所存儲(chǔ)記錄的最小及最大主鍵值存儲(chǔ)至控制表;表段查找模塊,用于當(dāng)有新的記錄插入表時(shí)若表中已有記錄,則根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,查找新的記錄應(yīng)插入的表段;第二記錄插入模塊,用于將新的記錄插入該查找的表段的內(nèi)存表,插入時(shí)按主鍵值排序;第二控制表更新模塊,用于若插入改變了該查找的表段所存儲(chǔ)記錄的最小或最大主鍵值,則在控制表中進(jìn)行相應(yīng)更新;記錄轉(zhuǎn)存處理模塊,用于當(dāng)有表段的內(nèi)存表中所有記錄所占用內(nèi)存達(dá)到預(yù)定義的上限時(shí)將該表段內(nèi)存表中所有記錄存儲(chǔ)至硬盤(pán)上該表段對(duì)應(yīng)的一個(gè)表段數(shù)據(jù)文件,并清空該表段的內(nèi)存表;存儲(chǔ)記錄時(shí)按列存儲(chǔ),且保持按主鍵值排序;若硬盤(pán)上沒(méi)有該表段數(shù)據(jù)文件,則新建該表段數(shù)據(jù)文件;若硬盤(pán)上已有該表段數(shù)據(jù)文件,則在存儲(chǔ)時(shí)將內(nèi)存表中的記錄與該表段數(shù)據(jù)文件中已有的記錄合并。本發(fā)明實(shí)施例與現(xiàn)有技術(shù)一相比,無(wú)需對(duì)主鍵建立索引,可節(jié)省存儲(chǔ)時(shí)的開(kāi)銷(xiāo);且本發(fā)明實(shí)施例按列存儲(chǔ),可解決行存儲(chǔ)數(shù)據(jù)庫(kù)不能按需讀取列的問(wèn)題;本發(fā)明實(shí)施例將表分段并按主鍵值對(duì)記錄進(jìn)行排序,與現(xiàn)有技術(shù)二相比可降低存儲(chǔ)時(shí)的開(kāi)銷(xiāo);且不同于現(xiàn)有技術(shù)二需要連接數(shù)據(jù)將分開(kāi)存儲(chǔ)的列連在一起重構(gòu)原始記錄,本發(fā)明實(shí)施例無(wú)需連接數(shù)據(jù)來(lái)重構(gòu)記錄,不會(huì)增加維護(hù)連接數(shù)據(jù)的負(fù)擔(dān);同樣的,不同于現(xiàn)有技術(shù)三需要ROWID連接列值從而重建記錄,本發(fā)明實(shí)施例無(wú)6需存儲(chǔ)記錄的ROWID來(lái)重建記錄,不會(huì)增加存儲(chǔ)時(shí)的負(fù)擔(dān);與現(xiàn)有技術(shù)四相比,本發(fā)明實(shí)施例中的表段只對(duì)應(yīng)一個(gè)數(shù)據(jù)文件,而且存儲(chǔ)的是關(guān)系型數(shù)據(jù)庫(kù)的記錄,并不是Key/Value形式的數(shù)據(jù),存儲(chǔ)時(shí)本發(fā)明實(shí)施例是按記錄的列存儲(chǔ),沒(méi)有列族的概念,完全適合作為關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)基礎(chǔ)。本發(fā)明實(shí)施例可以提高關(guān)系型數(shù)據(jù)庫(kù)的查詢(xún)性能,且基于主鍵排序及分段來(lái)實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ),可以作為實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)的并行計(jì)算的基本存儲(chǔ)方式,將分段存儲(chǔ)的表數(shù)據(jù)均衡分配到并行數(shù)據(jù)庫(kù)的節(jié)點(diǎn)中,再利用Map/Reduce算法實(shí)施并行運(yùn)算。為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在附圖中圖1為本發(fā)明實(shí)施例中關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法的流程圖;圖2為本發(fā)明實(shí)施例中控制表的結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例中插入記錄到一個(gè)空表中的示意圖;圖4為本發(fā)明實(shí)施例中插入記錄到非空表中情形一的示意圖;圖5為本發(fā)明實(shí)施例中插入記錄到非空表中情形二的示意圖;圖6為本發(fā)明實(shí)施例中插入記錄導(dǎo)致表段的內(nèi)存表中記錄所占用的內(nèi)存達(dá)到上限的示意圖;圖7為本發(fā)明實(shí)施例中表示表段數(shù)據(jù)文件的格式示意圖;圖8為本發(fā)明實(shí)施例中表示表段分裂的示意圖;圖9為本發(fā)明實(shí)施例中一個(gè)投影查詢(xún)的示意圖;圖10為本發(fā)明實(shí)施例中一個(gè)條件查詢(xún)的示意圖;圖11為本發(fā)明實(shí)施例中一個(gè)并行數(shù)據(jù)庫(kù)分配表段數(shù)據(jù)的示意圖;圖12為本發(fā)明實(shí)施例中關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)裝置的結(jié)構(gòu)圖。具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例做進(jìn)一步詳細(xì)說(shuō)明。在此,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,但并不作為對(duì)本發(fā)明的限定。如圖1所示,本發(fā)明實(shí)施例中關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法流程可以包括先執(zhí)行步驟101建立控制表,用以存儲(chǔ)表段的標(biāo)識(shí)和表段所存儲(chǔ)記錄的最小及最大主鍵值,并按表段最小主鍵值排序;當(dāng)有新的記錄插入表時(shí)若表中沒(méi)有記錄,則執(zhí)行步驟102新建該表的表段,將新的記錄插入該表段的內(nèi)存表;接著執(zhí)行步驟103將該表段的標(biāo)識(shí)存儲(chǔ)至控制表,將新的記錄的主鍵值作為該表段所存儲(chǔ)記錄的最小及最大主鍵值存儲(chǔ)至控制表;若表中已有記錄,則執(zhí)行步驟104根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,查找新的記錄應(yīng)插入的表段,將新的記錄插入該表段的內(nèi)存表,插入時(shí)按主鍵值排序;若插入改變了該表段所存儲(chǔ)記錄的最小或最大主鍵值,則還需執(zhí)行步驟105在控制表中進(jìn)行相應(yīng)更新;當(dāng)有表段的內(nèi)存表中所有記錄所占用內(nèi)存達(dá)到預(yù)定義的上限時(shí)執(zhí)行步驟106將該表段內(nèi)存表中所有記錄存儲(chǔ)至硬盤(pán)上該表段對(duì)應(yīng)的一個(gè)表段數(shù)據(jù)文件,存儲(chǔ)記錄時(shí)按列存儲(chǔ),且保持按主鍵值排序;接著執(zhí)行步驟107清空該表段的內(nèi)存表;其中在執(zhí)行步驟106時(shí),若硬盤(pán)上沒(méi)有該表段數(shù)據(jù)文件,則還包括新建該表段數(shù)據(jù)文件(步驟106a);若硬盤(pán)上已有該表段數(shù)據(jù)文件,則還包括在存儲(chǔ)時(shí)將內(nèi)存表中的記錄與該表段數(shù)據(jù)文件中已有的記錄合并(步驟106b)。下面對(duì)圖1所示流程作如下詳細(xì)說(shuō)明本發(fā)明實(shí)施例中,關(guān)系型數(shù)據(jù)庫(kù)中的表被分成段稱(chēng)之為表段,每個(gè)表段中的記錄數(shù)有一個(gè)上限。表段由內(nèi)存表和表段數(shù)據(jù)文件組成。內(nèi)存表是表段中常駐內(nèi)存的數(shù)據(jù)結(jié)構(gòu),用以存儲(chǔ)新插入的記錄,并按記錄的主鍵值排序,所存儲(chǔ)的記錄占用的內(nèi)存不能超過(guò)預(yù)定義的上限,否則需要將記錄存儲(chǔ)到表段數(shù)據(jù)文件中,然后清空內(nèi)存表。表段數(shù)據(jù)文件用以存儲(chǔ)表段的記錄,按列存儲(chǔ),并且按記錄的主鍵值排序??刂票碛靡怨芾肀矶危鎯?chǔ)每個(gè)表段的信息,包括表段的標(biāo)識(shí)和表段所存儲(chǔ)記錄的最小及最大主鍵值??刂票硭鎯?chǔ)的表段信息可以按表段所存儲(chǔ)的最小主鍵值排序。具體實(shí)施時(shí),首先建立控制表,用以存儲(chǔ)表段的信息,包括表段的標(biāo)識(shí)(ID)和表段所存儲(chǔ)記錄的最小及最大主鍵值。例如,圖2為本發(fā)明實(shí)施例中控制表的結(jié)構(gòu)示意圖。如圖2所示,控制表中包括表段的標(biāo)識(shí)(TABLET_ID),表段所存儲(chǔ)記錄的最小主鍵值(MIN_PK)及最大主鍵值(MAX_PK)。在沒(méi)有記錄插入表時(shí),控制表為空。具體實(shí)施時(shí),當(dāng)有新的記錄插入表時(shí),分成兩種情況一是表中沒(méi)有記錄,此時(shí)控制表為空,需要新建該表的表段,將新的記錄插入該表段的內(nèi)存表中,將該表段的信息存儲(chǔ)到控制表中,具體包括將該表段的標(biāo)識(shí)存儲(chǔ)至控制表,將新的記錄的主鍵值作為該表段所存儲(chǔ)記錄的最小及最大主鍵值存儲(chǔ)至控制表。由于表段中只有一條記錄,表段所存儲(chǔ)記錄的最小和最大主鍵值為插入記錄的主鍵值。例如,圖3為本發(fā)明實(shí)施例中插入記錄到一個(gè)空表中的示意圖。如圖3所示,本例中表的結(jié)構(gòu)為(ID,NAME),插入的記錄為(1001,中國(guó)),表段的內(nèi)存表中插入了記錄(1001,中國(guó)),控制表中插入了新的表段信息(1,1001,1001),即表段的ID為1,表段所存儲(chǔ)記錄的最小主鍵值為1001,而存儲(chǔ)的最大主鍵值也為1001。二是表中已有記錄,此時(shí)控制表不為空,需要根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,查找新的記錄應(yīng)插入的表段,然后,在查找到的表段的內(nèi)存表中插入新的記錄,插入時(shí)按主鍵值排序。如果插入的記錄改變了該表段所存儲(chǔ)記錄的最小或最大主鍵值,則需要更新控制表中對(duì)應(yīng)表段的信息。其中,在查找新的記錄應(yīng)插入的表段時(shí),可以根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,采用二分法進(jìn)行查找。之所以用二分法查找的原因是由于在實(shí)際應(yīng)用中會(huì)有成百上千乃至上萬(wàn)個(gè)表段,為了提高性能,用二分法查找,由于控制表中存儲(chǔ)的表段信息是按最小主鍵值排序,查找插入的目標(biāo)表段可根據(jù)插入記錄的主鍵值以及所有表段的最小主鍵值用二分法查找定位當(dāng)有新的記錄插入表時(shí),若新的記錄的主鍵值介于兩個(gè)表段的最小主鍵值之間,則將前一個(gè)表段作為新的記錄應(yīng)插入的表段;若新的記錄的主鍵值在第一個(gè)表段的最小主鍵值之前,則將第一個(gè)表段作為新的記錄應(yīng)插入的表段;若新的記錄的主鍵值在最后一個(gè)表段的最小主鍵值之后,則將最后一個(gè)表段作為新的記錄應(yīng)插入的表段。例如,圖4為本發(fā)明實(shí)施例中插入記錄到非空表中控制表無(wú)變化的示意圖。如圖4所示,控制表中有兩個(gè)表段(1,1001,1005)和(2,1010,1011),其中表段1中有記錄(1001,中國(guó)),(1005,韓國(guó)),表段2中有記錄(1010,美國(guó)),(1011,加拿大)。插入記錄(1003,日本),控制表中所有表段所存儲(chǔ)記錄的最小主鍵值從小到大為1001,1010,二分法查找的結(jié)果是表段1(由于表段1和2的最小主鍵值從小到大為1001、1010,這樣當(dāng)存儲(chǔ)主鍵值為1003的記錄時(shí),由于1003大于1001而小于1010,所以應(yīng)插入表段1),所以在表段1中插入記錄(1003,日本),表段1的內(nèi)存表中插入了(1003,日本),按照主鍵值次序,依次為(1001,中國(guó)),(1003,日本),(1005,韓國(guó)),由于記錄被插入在表段的中間,表段所存儲(chǔ)記錄的最小和最大主鍵值沒(méi)有發(fā)生變化,因此無(wú)需改變控制表中該表段的信息。又如,圖5為本發(fā)明實(shí)施例中插入記錄到非空表中引起控制表變化的示意圖。如圖5所示,控制表中有兩個(gè)表段(1,1001,1005)和(2,1010,1011),其中表段1中有記錄(1001,中國(guó)),(1005,韓國(guó)),表段2中有記錄(1010,美國(guó)),(1011,加拿大)。插入記錄(1006,印度),控制表中所有表段所存儲(chǔ)記錄的最小主鍵值為1001,1010,二分法查找的結(jié)果是表段1(由于表段1和2的最小主鍵值從小到大為1001、1010,這樣當(dāng)存儲(chǔ)主鍵值為1006的記錄時(shí),由于1006大于1001而小于1010,所以應(yīng)插入表段1),所以在表段1中插入記錄(1006,印度),表段1的內(nèi)存表中插入了(1006,印度),按照主鍵值次序,依次為(1001,中國(guó)),(1005,韓國(guó)),(1006,印度)。由于記錄被插入到表段的最后,表段所存儲(chǔ)記錄的最大主鍵值發(fā)生了變化,更新控制表中的第一個(gè)表段的最大主鍵值為1006:(1,1001,1006)。具體實(shí)施時(shí),當(dāng)有表段的內(nèi)存表中所有記錄所占用內(nèi)存達(dá)到預(yù)定義的上限時(shí)將該表段內(nèi)存表中所有記錄存儲(chǔ)至硬盤(pán)上該表段對(duì)應(yīng)的一個(gè)表段數(shù)據(jù)文件,然后將內(nèi)存表清空以減少內(nèi)存的使用,該操作可稱(chēng)之為緊縮內(nèi)存表;存儲(chǔ)記錄時(shí)按列存儲(chǔ),且保持按主鍵值排序;若硬盤(pán)上沒(méi)有該表段數(shù)據(jù)文件,則新建該表段數(shù)據(jù)文件;若硬盤(pán)上已有該表段數(shù)據(jù)文件,表明以前做過(guò)緊縮內(nèi)存表的操作,則在存儲(chǔ)時(shí)將內(nèi)存表中的記錄與該表段數(shù)據(jù)文件中已有的記錄合并,仍按列存儲(chǔ),并保持按主鍵值排序。例如,圖6為本發(fā)明實(shí)施例中插入記錄導(dǎo)致表段的內(nèi)存表中記錄所占用的內(nèi)存達(dá)到上限的示意圖。如圖6所示,表段的內(nèi)存表中有記錄(1001,中國(guó)),(1003,日本),(1005,韓國(guó)),表段的表段數(shù)據(jù)文件中存儲(chǔ)有記錄(1002,越南),(1006,印度)。插入記錄(1004,馬來(lái)西亞)導(dǎo)致內(nèi)存表所占內(nèi)存達(dá)到預(yù)定義的上限,例如假設(shè)ID是整數(shù)類(lèi)型,NAME是字符類(lèi)型,整數(shù)所占內(nèi)存是4個(gè)字節(jié),每個(gè)中文字符占2個(gè)字節(jié),那么,插入(1004,馬來(lái)西亞)到內(nèi)存表后內(nèi)存表中的記錄為:(1001,中國(guó)),(1003,日本),(1004,馬來(lái)西亞),(1005,韓國(guó)),內(nèi)存表所占的內(nèi)存應(yīng)為G+2X2)+(4+2X2)+(4+2X4)+(4+2X2)=36,假設(shè)預(yù)定義的內(nèi)存上限為32,那么內(nèi)存表所占的內(nèi)存達(dá)到上限。將內(nèi)存表中的記錄和表段數(shù)據(jù)文件中已有記錄合并存儲(chǔ),保持主鍵值的排序,(1001,1002,1003,1004,1005,1006),對(duì)應(yīng)的名稱(chēng)列值為(中國(guó),越南,日本,馬來(lái)西亞,韓國(guó),印度),表段的內(nèi)存表被清空。具體實(shí)施時(shí),表段數(shù)據(jù)文件中所存儲(chǔ)的數(shù)據(jù)可以包括記錄對(duì)應(yīng)的列值數(shù)據(jù)和元數(shù)據(jù);列值數(shù)據(jù)是記錄的組成部分,比如有ID列值數(shù)據(jù)和NAME列值數(shù)據(jù),所有的列值數(shù)據(jù)組合在一起構(gòu)成記錄。存儲(chǔ)時(shí),ID列值數(shù)據(jù)和NAME列值數(shù)據(jù)分開(kāi)存儲(chǔ)。其中每個(gè)列的列值數(shù)據(jù)個(gè)數(shù)相等;由于記錄的個(gè)數(shù)決定列值數(shù)據(jù)個(gè)數(shù),所以它們必然相等。比如有記錄(1001,中國(guó)),(1002,美國(guó)),記錄數(shù)為2,按列存儲(chǔ)ID:1001,1002;NAME中國(guó),美國(guó);每個(gè)列的列值數(shù)據(jù)個(gè)數(shù)為2,都等于記錄的個(gè)數(shù)2;每個(gè)列的列值數(shù)據(jù)按固定的列值數(shù)據(jù)個(gè)數(shù)劃分為數(shù)據(jù)塊,形成列值數(shù)據(jù)塊;元數(shù)據(jù)存儲(chǔ)于元數(shù)據(jù)塊中;元數(shù)據(jù)記錄每個(gè)列值數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置、表段數(shù)據(jù)文件中的記錄個(gè)數(shù)和元數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置。記錄個(gè)數(shù)=每個(gè)列值數(shù)據(jù)的個(gè)數(shù),而不是所有的列值數(shù)據(jù)個(gè)數(shù),比如有記錄(1001,中國(guó)),(1002,美國(guó)),按列存儲(chǔ)時(shí),ID=1001,1002;NAME中國(guó),美國(guó);記錄數(shù)為2,每個(gè)列值數(shù)據(jù)的個(gè)數(shù)也為2,所有的列值數(shù)據(jù)個(gè)數(shù)加起來(lái)為4。具體實(shí)施時(shí),表段數(shù)據(jù)文件中列值數(shù)據(jù)和元數(shù)據(jù)的存儲(chǔ)次序可以是第一個(gè)列的列值數(shù)據(jù)、第二個(gè)列的列值數(shù)據(jù)直至最后一個(gè)列的列值數(shù)據(jù)、以及元數(shù)據(jù)。元數(shù)據(jù)記錄的列值數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置可以在按列存儲(chǔ)列值數(shù)據(jù)時(shí)獲得,元數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置是緊接最后一個(gè)列的最后一個(gè)列值數(shù)據(jù)塊。由于元數(shù)據(jù)通常很小,可以在內(nèi)存中緩存一份拷貝以加快訪問(wèn)速度。例如,圖7為本發(fā)明實(shí)施例中表段數(shù)據(jù)文件的格式示意圖。如圖7所示,存儲(chǔ)記錄為(1001,中國(guó)),(1002,越南),(1003,日本),(1004,馬來(lái)西亞),(1005,韓國(guó))和(1006,印度)。劃分列值數(shù)據(jù)成列值數(shù)據(jù)塊的列值數(shù)據(jù)個(gè)數(shù)為2,第一個(gè)列的列值數(shù)據(jù)塊共有三個(gè),分別為(1001,1002),(1003,1004),(1005,1006),第二個(gè)列的列值數(shù)據(jù)塊共有三個(gè),分別為:(中國(guó),越南),(日本,馬來(lái)西亞),(韓國(guó),印度),元數(shù)據(jù)塊為:(0,8,16,32,48,68,6,84),其中,0為列值數(shù)據(jù)塊(1001,100在表段數(shù)據(jù)文件中的位置,8為列值數(shù)據(jù)塊(1003,1004)在表段數(shù)據(jù)文件中的位置,16為列值數(shù)據(jù)塊(1005,1006)在表段數(shù)據(jù)文件中的位置,32為列值數(shù)據(jù)塊(中國(guó),越南)在表段數(shù)據(jù)文件中的位置,48為列值數(shù)據(jù)塊(日本,馬來(lái)西亞)在表段數(shù)據(jù)文件中的位置,68為列值數(shù)據(jù)塊(韓國(guó),印度)在表段數(shù)據(jù)文件中的位置,6為記錄個(gè)數(shù),84為元數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置。具體實(shí)施時(shí),當(dāng)有表段所存儲(chǔ)的所有記錄數(shù)目達(dá)到預(yù)定義的上限時(shí)將部分記錄保留在該表段中,并新建表段,將其余記錄存儲(chǔ)至新建的表段;例如,將前一半記錄保留在該表段中,并新建表段,將后一半記錄存儲(chǔ)至新建的表段。由于該表段的最大主鍵值發(fā)生變化,在控制表中更新該表段的最大主鍵值;在控制表中新增新建表段的標(biāo)識(shí)及所存儲(chǔ)記錄的最小及最大主鍵值,插入時(shí)按表段最小主鍵值排序。例如,圖8為本發(fā)明實(shí)施例中表段分裂的示意圖。如圖8所示,表段中存儲(chǔ)記錄為(1001,中國(guó)),(1002,越南),(1003,日本),(1004,馬來(lái)西亞),(1005,韓國(guó))和(1006,印度),插入記錄(1007,中國(guó)香港)導(dǎo)致表段達(dá)到表段的最大記錄數(shù)7,對(duì)表段進(jìn)行分裂,變成兩個(gè)表段表段1(1,1001,1004)和表段2(2,1005,1007),其中表段1存儲(chǔ)的記錄為(1001,中國(guó)),(1002,越南),(1003,日本),(1004,馬來(lái)西亞),而表段2存儲(chǔ)的記錄為(1005,韓國(guó)),(1006,印度),(1007,中國(guó)香港),控制表中表段1的最大主鍵值從1006改為1004,并新增加表段2的信息表段標(biāo)識(shí)為2,最小主鍵值為1005,最大主鍵值為1007。下面簡(jiǎn)單介紹按本發(fā)明實(shí)施例方法存儲(chǔ)的關(guān)系型數(shù)據(jù)庫(kù)的一些基本的數(shù)據(jù)庫(kù)查詢(xún)操作。一、投影查詢(xún)投影查詢(xún)是指查詢(xún)表中記錄的某些列,由于本發(fā)明實(shí)施例是按列存儲(chǔ)記錄,這樣就可以按需讀取列,而不同于行存儲(chǔ)的數(shù)據(jù)庫(kù)那樣需要讀取所有列的數(shù)據(jù),這樣就大大減少了硬盤(pán)輸入輸出,從而提高了關(guān)系型數(shù)據(jù)庫(kù)的查詢(xún)性能。例如,圖9為本發(fā)明實(shí)施例中一個(gè)投影查詢(xún)的示意圖。如圖9所示,投影查詢(xún)語(yǔ)句是“SELECTNAMEFROMCOUNTRY”,由于本發(fā)明實(shí)施例按列存儲(chǔ)記錄數(shù)據(jù),可以只讀入列NAME的數(shù)據(jù),輸出結(jié)果,而列ID的值數(shù)據(jù)沒(méi)有被讀取,從而提高了查詢(xún)性能。二、條件查詢(xún)條件查詢(xún)是指查詢(xún)語(yǔ)句有查詢(xún)條件,由于本發(fā)明實(shí)施例是按列存儲(chǔ)記錄,可以根據(jù)查詢(xún)條件讀取相關(guān)的列的記錄,一旦記錄的列值通過(guò)了這些查詢(xún)條件,所有其他需要輸出的列值就被讀取,輸出到最終的結(jié)果當(dāng)中,這樣比行數(shù)據(jù)庫(kù)減少了10。例如,圖10為本發(fā)明實(shí)施例中一個(gè)條件查詢(xún)的示意圖。如圖10所示,條件查詢(xún)的語(yǔ)句是“SELECTIDFROMCOUNTRYWHERENAME=‘韓國(guó),”,查詢(xún)時(shí)可首先利掃描列NAME的值數(shù)據(jù)查到第五個(gè)記錄滿(mǎn)足條件,這樣讀取第五個(gè)記錄的列ID的值,由于本發(fā)明實(shí)施例中每個(gè)列值數(shù)據(jù)塊中存取有固定數(shù)目的列值數(shù)據(jù),如圖10中每個(gè)列值數(shù)據(jù)塊存取的列值數(shù)據(jù)個(gè)數(shù)為2,這樣可以計(jì)算得到符合條件的ID值在第三個(gè)數(shù)據(jù)塊中,然后,可以利用元數(shù)據(jù)中存儲(chǔ)的列值數(shù)據(jù)塊的位置數(shù)據(jù)快速定位列ID第三個(gè)數(shù)據(jù)塊,從而讀取符合條件的ID值,即1005。三、并行處理由于本發(fā)明實(shí)施例中的表被分成表段,這樣,如果在一個(gè)集群及云計(jì)算的環(huán)境中,由于有多個(gè)服務(wù)器的存在,可以將表段均勻分配給每一個(gè)服務(wù)器,查詢(xún)表中的記錄時(shí),集群中的服務(wù)器就可以同時(shí)展開(kāi)運(yùn)算,各自處理自己硬盤(pán)中的記錄數(shù)據(jù),達(dá)到并行處理的目的,這就能大大提高數(shù)據(jù)庫(kù)的性能。例如,圖11為本發(fā)明實(shí)施例中一個(gè)集群數(shù)據(jù)庫(kù)并行處理的示意圖。如圖11所示,集群數(shù)據(jù)庫(kù)由兩個(gè)服務(wù)器組成,表由兩個(gè)表段組成,分別存儲(chǔ)在兩個(gè)服務(wù)器中,每個(gè)服務(wù)器提供有關(guān)表段的記錄查詢(xún)服務(wù)。本發(fā)明實(shí)施例中還提供了一種關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)裝置,如下面的實(shí)施例所述。由于該裝置解決問(wèn)題的原理與關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法相似,因此該裝置的實(shí)施可以參見(jiàn)關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法的實(shí)施,重復(fù)之處不再贅述。如圖12所示,本發(fā)明實(shí)施例中關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)裝置可以包括控制表建立模塊1201,用于建立控制表,用以存儲(chǔ)表段的標(biāo)識(shí)和表段所存儲(chǔ)記錄的最小及最大主鍵值,并按表段最小主鍵值排序;表段建立模塊1202,用于當(dāng)有新的記錄插入表時(shí)若表中沒(méi)有記錄,則新建該表11的表段;第一記錄插入模塊1203,用于將新的記錄插入該新建的表段的內(nèi)存表;第一控制表更新模塊1204,用于將該新建的表段的標(biāo)識(shí)存儲(chǔ)至控制表,將新的記錄的主鍵值作為該新建的表段所存儲(chǔ)記錄的最小及最大主鍵值存儲(chǔ)至控制表;表段查找模塊1205,用于當(dāng)有新的記錄插入表時(shí)若表中已有記錄,則根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,查找新的記錄應(yīng)插入的表段;第二記錄插入模塊1206,用于將新的記錄插入該查找的表段的內(nèi)存表,插入時(shí)按主鍵值排序;第二控制表更新模塊1207,用于若插入改變了該查找的表段所存儲(chǔ)記錄的最小或最大主鍵值,則在控制表中進(jìn)行相應(yīng)更新;記錄轉(zhuǎn)存處理模塊1208,用于當(dāng)有表段的內(nèi)存表中所有記錄所占用內(nèi)存達(dá)到預(yù)定義的上限時(shí)將該表段內(nèi)存表中所有記錄存儲(chǔ)至硬盤(pán)上該表段對(duì)應(yīng)的一個(gè)表段數(shù)據(jù)文件,并清空該表段的內(nèi)存表;存儲(chǔ)記錄時(shí)按列存儲(chǔ),且保持按主鍵值排序;若硬盤(pán)上沒(méi)有該表段數(shù)據(jù)文件,則新建該表段數(shù)據(jù)文件;若硬盤(pán)上已有該表段數(shù)據(jù)文件,則在存儲(chǔ)時(shí)將內(nèi)存表中的記錄與該表段數(shù)據(jù)文件中已有的記錄合并。一個(gè)實(shí)施例中,表段查找模塊1205具體可以用于根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,采用二分法查找新的記錄應(yīng)插入的表段若新的記錄的主鍵值介于兩個(gè)表段的最小主鍵值之間,則將前一個(gè)表段作為新的記錄應(yīng)插入的表段;若新的記錄的主鍵值在第一個(gè)表段的最小主鍵值之前,則將第一個(gè)表段作為新的記錄應(yīng)插入的表段;若新的記錄的主鍵值在最后一個(gè)表段的最小主鍵值之后,則將最后一個(gè)表段作為新的記錄應(yīng)插入的表段。一個(gè)實(shí)施例中,表段數(shù)據(jù)文件中所存儲(chǔ)的數(shù)據(jù)包括記錄對(duì)應(yīng)的列值數(shù)據(jù)和元數(shù)據(jù);其中每個(gè)列的列值數(shù)據(jù)個(gè)數(shù)相等;每個(gè)列的列值數(shù)據(jù)按固定的列值數(shù)據(jù)個(gè)數(shù)劃分為數(shù)據(jù)塊,形成列值數(shù)據(jù)塊;元數(shù)據(jù)存儲(chǔ)于元數(shù)據(jù)塊中;元數(shù)據(jù)記錄每個(gè)列值數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置、表段數(shù)據(jù)文件中的記錄個(gè)數(shù)和元數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置。一個(gè)實(shí)施例中,表段數(shù)據(jù)文件中列值數(shù)據(jù)和元數(shù)據(jù)的存儲(chǔ)次序?yàn)榈谝粋€(gè)列的列值數(shù)據(jù)、第二個(gè)列的列值數(shù)據(jù)直至最后一個(gè)列的列值數(shù)據(jù)、以及元數(shù)據(jù)。一個(gè)實(shí)施例中,元數(shù)據(jù)緩存于內(nèi)存中。一個(gè)實(shí)施例中,圖12所示的關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)裝置還可以包括表段拆分模塊,用于當(dāng)有表段所存儲(chǔ)的所有記錄數(shù)目達(dá)到預(yù)定義的上限時(shí)將部分記錄保留在該表段中,并新建表段,將其余記錄存儲(chǔ)至新建的表段;第三控制更新模塊,用于若該表段所存儲(chǔ)記錄的最小或最大主鍵值發(fā)生改變,則在控制表中進(jìn)行相應(yīng)更新;在控制表中新增新建表段的標(biāo)識(shí)及所存儲(chǔ)記錄的最小及最大主鍵值,插入時(shí)按表段最小主鍵值排序。一個(gè)實(shí)施例中,表段拆分模塊具體可以用于將前一半記錄保留在該表段中,并新建表段,將后一半記錄存儲(chǔ)至新建的表段。12本發(fā)明實(shí)施例與現(xiàn)有技術(shù)一相比,無(wú)需對(duì)主鍵建立索引,可節(jié)省系統(tǒng)開(kāi)銷(xiāo);且本發(fā)明實(shí)施例按列存儲(chǔ),可解決行存儲(chǔ)數(shù)據(jù)庫(kù)不能按需讀取列的問(wèn)題;本發(fā)明實(shí)施例將表分段并按主鍵值對(duì)記錄進(jìn)行排序,與現(xiàn)有技術(shù)二相比可降低存儲(chǔ)時(shí)的開(kāi)銷(xiāo);且不同于現(xiàn)有技術(shù)二需要連接數(shù)據(jù)將分開(kāi)存儲(chǔ)的列連在一起重構(gòu)原始記錄,本發(fā)明實(shí)施例無(wú)需連接數(shù)據(jù)來(lái)重構(gòu)記錄,不會(huì)增加維護(hù)連接數(shù)據(jù)的系統(tǒng)負(fù)擔(dān);同樣的,不同于現(xiàn)有技術(shù)三需要ROWID連接列值從而重建記錄,本發(fā)明實(shí)施例無(wú)需存儲(chǔ)記錄的ROWID來(lái)重建記錄,不會(huì)增加系統(tǒng)負(fù)擔(dān);與現(xiàn)有技術(shù)四相比,本發(fā)明實(shí)施例中的表段只對(duì)應(yīng)一個(gè)數(shù)據(jù)文件,而且存儲(chǔ)的是關(guān)系型數(shù)據(jù)庫(kù)的記錄,并不是Key/Value形式的數(shù)據(jù),存儲(chǔ)時(shí)本發(fā)明實(shí)施例是按記錄的列存儲(chǔ),沒(méi)有列族的概念,完全適合作為關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)基礎(chǔ)。本發(fā)明實(shí)施例可以提高數(shù)據(jù)庫(kù)的查詢(xún)性能,且基于主鍵排序及分段來(lái)實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ),可以作為實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)的并行計(jì)算的基本存儲(chǔ)方式,將分段存儲(chǔ)的表數(shù)據(jù)均衡分配到并行數(shù)據(jù)庫(kù)的節(jié)點(diǎn)中,再利用Map/Reduce算法實(shí)施并行運(yùn)算。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。1權(quán)利要求1.一種關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法,其特征在于,包括建立控制表,用以存儲(chǔ)表段的標(biāo)識(shí)和表段所存儲(chǔ)記錄的最小及最大主鍵值,并按表段最小主鍵值排序;當(dāng)有新的記錄插入表時(shí)若表中沒(méi)有記錄,則新建該表的表段,將新的記錄插入該表段的內(nèi)存表,將該表段的標(biāo)識(shí)存儲(chǔ)至控制表,將新的記錄的主鍵值作為該表段所存儲(chǔ)記錄的最小及最大主鍵值存儲(chǔ)至控制表;若表中已有記錄,則根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,查找新的記錄應(yīng)插入的表段,將新的記錄插入該表段的內(nèi)存表,插入時(shí)按主鍵值排序;若插入改變了該表段所存儲(chǔ)記錄的最小或最大主鍵值,則在控制表中進(jìn)行相應(yīng)更新;當(dāng)有表段的內(nèi)存表中所有記錄所占用內(nèi)存達(dá)到預(yù)定義的上限時(shí)將該表段內(nèi)存表中所有記錄存儲(chǔ)至硬盤(pán)上該表段對(duì)應(yīng)的一個(gè)表段數(shù)據(jù)文件,并清空該表段的內(nèi)存表;存儲(chǔ)記錄時(shí)按列存儲(chǔ),且保持按主鍵值排序;若硬盤(pán)上沒(méi)有該表段數(shù)據(jù)文件,則新建該表段數(shù)據(jù)文件;若硬盤(pán)上已有該表段數(shù)據(jù)文件,則在存儲(chǔ)時(shí)將內(nèi)存表中的記錄與該表段數(shù)據(jù)文件中已有的記錄合并。2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,確定新的記錄應(yīng)插入的表段,包括根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,采用二分法查找新的記錄應(yīng)插入的表段若新的記錄的主鍵值介于兩個(gè)表段的最小主鍵值之間,則將前一個(gè)表段作為新的記錄應(yīng)插入的表段;若新的記錄的主鍵值在第一個(gè)表段的最小主鍵值之前,則將第一個(gè)表段作為新的記錄應(yīng)插入的表段;若新的記錄的主鍵值在最后一個(gè)表段的最小主鍵值之后,則將最后一個(gè)表段作為新的記錄應(yīng)插入的表段。3.如權(quán)利要求1所述的方法,其特征在于,表段數(shù)據(jù)文件中所存儲(chǔ)的數(shù)據(jù)包括記錄對(duì)應(yīng)的列值數(shù)據(jù)和元數(shù)據(jù);其中每個(gè)列的列值數(shù)據(jù)個(gè)數(shù)相等;每個(gè)列的列值數(shù)據(jù)按固定的列值數(shù)據(jù)個(gè)數(shù)劃分為數(shù)據(jù)塊,形成列值數(shù)據(jù)塊;元數(shù)據(jù)存儲(chǔ)于元數(shù)據(jù)塊中;元數(shù)據(jù)記錄每個(gè)列值數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置、表段數(shù)據(jù)文件中的記錄個(gè)數(shù)和元數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置。4.如權(quán)利要求3所述的方法,其特征在于,表段數(shù)據(jù)文件中列值數(shù)據(jù)和元數(shù)據(jù)的存儲(chǔ)次序?yàn)榈谝粋€(gè)列的列值數(shù)據(jù)、第二個(gè)列的列值數(shù)據(jù)直至最后一個(gè)列的列值數(shù)據(jù)、以及元數(shù)據(jù)。5.如權(quán)利要求3所述的方法,其特征在于,元數(shù)據(jù)緩存于內(nèi)存中。6.如權(quán)利要求1所述的方法,其特征在于,還包括當(dāng)有表段所存儲(chǔ)的所有記錄數(shù)目達(dá)到預(yù)定義的上限時(shí)將部分記錄保留在該表段中,并新建表段,將其余記錄存儲(chǔ)至新建的表段;若該表段所存儲(chǔ)記錄的最小或最大主鍵值發(fā)生改變,則在控制表中進(jìn)行相應(yīng)更新;在控制表中新增新建表段的標(biāo)識(shí)及所存儲(chǔ)記錄的最小及最大主鍵值,插入時(shí)按最小主鍵值排序。7.如權(quán)利要求6所述的方法,其特征在于,所述將部分記錄保留在該表段中,并新建表段,將其余記錄存儲(chǔ)至新建的表段,包括將前一半記錄保留在該表段中,并新建表段,將后一半記錄存儲(chǔ)至新建的表段。8.一種關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)裝置,其特征在于,包括控制表建立模塊,用于建立控制表,用以存儲(chǔ)表段的標(biāo)識(shí)和表段所存儲(chǔ)記錄的最小及最大主鍵值,并按表段最小主鍵值排序;表段建立模塊,用于當(dāng)有新的記錄插入表時(shí)若表中沒(méi)有記錄,則新建該表的表段;第一記錄插入模塊,用于將新的記錄插入該新建的表段的內(nèi)存表;第一控制表更新模塊,用于將該新建的表段的標(biāo)識(shí)存儲(chǔ)至控制表,將新的記錄的主鍵值作為該新建的表段所存儲(chǔ)記錄的最小及最大主鍵值存儲(chǔ)至控制表;表段查找模塊,用于當(dāng)有新的記錄插入表時(shí)若表中已有記錄,則根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,查找新的記錄應(yīng)插入的表段;第二記錄插入模塊,用于將新的記錄插入該查找的表段的內(nèi)存表,插入時(shí)按主鍵值排序;第二控制表更新模塊,用于若插入改變了該查找的表段所存儲(chǔ)記錄的最小或最大主鍵值,則在控制表中進(jìn)行相應(yīng)更新;記錄轉(zhuǎn)存處理模塊,用于當(dāng)有表段的內(nèi)存表中所有記錄所占用內(nèi)存達(dá)到預(yù)定義的上限時(shí)將該表段內(nèi)存表中所有記錄存儲(chǔ)至硬盤(pán)上該表段對(duì)應(yīng)的一個(gè)表段數(shù)據(jù)文件,并清空該表段的內(nèi)存表;存儲(chǔ)記錄時(shí)按列存儲(chǔ),且保持按主鍵值排序;若硬盤(pán)上沒(méi)有該表段數(shù)據(jù)文件,則新建該表段數(shù)據(jù)文件;若硬盤(pán)上已有該表段數(shù)據(jù)文件,則在存儲(chǔ)時(shí)將內(nèi)存表中的記錄與該表段數(shù)據(jù)文件中已有的記錄合并。9.如權(quán)利要求8所述的裝置,其特征在于,所述表段查找模塊具體用于根據(jù)新的記錄的主鍵值及控制表中所有表段所存儲(chǔ)記錄的最小主鍵值,采用二分法查找新的記錄應(yīng)插入的表段若新的記錄的主鍵值介于兩個(gè)表段的最小主鍵值之間,則將前一個(gè)表段作為新的記錄應(yīng)插入的表段;若新的記錄的主鍵值在第一個(gè)表段的最小主鍵值之前,則將第一個(gè)表段作為新的記錄應(yīng)插入的表段;若新的記錄的主鍵值在最后一個(gè)表段的最小主鍵值之后,則將最后一個(gè)表段作為新的記錄應(yīng)插入的表段。10.如權(quán)利要求8所述的裝置,其特征在于,表段數(shù)據(jù)文件中所存儲(chǔ)的數(shù)據(jù)包括記錄對(duì)應(yīng)的列值數(shù)據(jù)和元數(shù)據(jù);其中每個(gè)列的列值數(shù)據(jù)個(gè)數(shù)相等;每個(gè)列的列值數(shù)據(jù)按固定的列值數(shù)據(jù)個(gè)數(shù)劃分為數(shù)據(jù)塊,形成列值數(shù)據(jù)塊;元數(shù)據(jù)存儲(chǔ)于元數(shù)據(jù)塊中;元數(shù)據(jù)記錄每個(gè)列值數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置、表段數(shù)據(jù)文件中的記錄個(gè)數(shù)和元數(shù)據(jù)塊在表段數(shù)據(jù)文件中的位置。11.如權(quán)利要求10所述的裝置,其特征在于,表段數(shù)據(jù)文件中列值數(shù)據(jù)和元數(shù)據(jù)的存儲(chǔ)次序?yàn)榈谝粋€(gè)列的列值數(shù)據(jù)、第二個(gè)列的列值數(shù)據(jù)直至最后一個(gè)列的列值數(shù)據(jù)、以及元數(shù)據(jù)。12.如權(quán)利要求10所述的裝置,其特征在于,元數(shù)據(jù)緩存于內(nèi)存中。13.如權(quán)利要求8所述的裝置,其特征在于,還包括表段拆分模塊,用于當(dāng)有表段所存儲(chǔ)的所有記錄數(shù)目達(dá)到預(yù)定義的上限時(shí)將部分記錄保留在該表段中,并新建表段,將其余記錄存儲(chǔ)至新建的表段;第三控制更新模塊,用于若該表段所存儲(chǔ)記錄的最小或最大主鍵值發(fā)生改變,則在控制表中進(jìn)行相應(yīng)更新;在控制表中新增新建表段的標(biāo)識(shí)及所存儲(chǔ)記錄的最小及最大主鍵值,插入時(shí)按最小主鍵值排序。14.如權(quán)利要求13所述的裝置,其特征在于,所述表段拆分模塊具體用于將前一半記錄保留在該表段中,并新建表段,將后一半記錄存儲(chǔ)至新建的表段。全文摘要本發(fā)明公開(kāi)一種關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)方法及裝置,包括建立控制表,用以存儲(chǔ)表段的信息,包括表段的標(biāo)識(shí)和表段所存儲(chǔ)記錄的最小及最大主鍵值;當(dāng)有新的記錄插入表時(shí),將新的記錄插入該表表段的內(nèi)存表,并在該表段的信息改變時(shí),在控制表中進(jìn)行相應(yīng)更新;當(dāng)有表段的內(nèi)存表中所有記錄所占用內(nèi)存達(dá)到預(yù)定義的上限時(shí),將該表段內(nèi)存表中所有記錄存儲(chǔ)至硬盤(pán)上該表段對(duì)應(yīng)的一個(gè)表段數(shù)據(jù)文件,并清空該表段的內(nèi)存表。采用本發(fā)明可以實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)自動(dòng)分段并按列存儲(chǔ),并節(jié)省存儲(chǔ)時(shí)的開(kāi)銷(xiāo),且本發(fā)明的關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)適合于作為關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)基礎(chǔ)。文檔編號(hào)G06F17/30GK102129458SQ20111005670公開(kāi)日2011年7月20日申請(qǐng)日期2011年3月9日優(yōu)先權(quán)日2011年3月9日發(fā)明者胡勁松申請(qǐng)人:胡勁松
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
汉寿县| 奉化市| 炎陵县| 通辽市| 格尔木市| 巴塘县| 仙居县| 咸丰县| 娄烦县| 香河县| 延长县| 西昌市| 南澳县| 永年县| 牡丹江市| 平凉市| 古浪县| 汽车| 高要市| 建昌县| 嵊州市| 山西省| 白山市| 额尔古纳市| 阿拉善左旗| 万源市| 酒泉市| 吉水县| 榆社县| 黄浦区| 宁远县| 通化县| 姜堰市| 循化| 集贤县| 罗山县| 大余县| 乡宁县| 玛多县| 贵港市| 收藏|