本發(fā)明實(shí)施例涉及數(shù)據(jù)庫(kù)相關(guān)技術(shù)領(lǐng)域,尤其涉及一種大字段數(shù)據(jù)的處理方法及裝置。
背景技術(shù):
大字段是數(shù)據(jù)庫(kù)中的一種數(shù)據(jù)類(lèi)型,以大字段類(lèi)型進(jìn)行存儲(chǔ)的數(shù)據(jù)稱(chēng)為大字段數(shù)據(jù)。一般地,以大字段類(lèi)型存儲(chǔ)的數(shù)據(jù)可以分為兩類(lèi):一類(lèi)是長(zhǎng)文本,普通的文本類(lèi)型最多只能存儲(chǔ)4000個(gè)漢字,而基于大字段類(lèi)型存儲(chǔ)的長(zhǎng)文本遠(yuǎn)可以大于4000字;另一類(lèi)是二進(jìn)制信息,如圖片或者文件等。與其他數(shù)據(jù)類(lèi)型相比,大字段需要采用特殊的存儲(chǔ)方式。
因?yàn)榇笞侄螖?shù)據(jù)的大小一般都很大,甚至大于數(shù)據(jù)庫(kù)規(guī)定的最大行大小。這就意味著很多大字段數(shù)據(jù)無(wú)法直接在存儲(chǔ)在數(shù)據(jù)庫(kù)表中行單元中?,F(xiàn)有存儲(chǔ)大字段數(shù)據(jù)的方法中,通常是為大字段數(shù)據(jù)專(zhuān)門(mén)定義一種數(shù)據(jù)頁(yè)的類(lèi)型,稱(chēng)為大字段數(shù)據(jù)頁(yè),以用該類(lèi)型的數(shù)據(jù)頁(yè)獨(dú)立存儲(chǔ)大字段數(shù)據(jù),且在行記錄中只記錄首個(gè)大字段數(shù)據(jù)頁(yè)的頁(yè)地址信息。
對(duì)于該種簡(jiǎn)單的大字段獨(dú)立存儲(chǔ)方法,局限之處在于:對(duì)于需要存儲(chǔ)大字段數(shù)據(jù),至少需要一個(gè)大字段數(shù)據(jù)頁(yè),然而,對(duì)于一個(gè)大字段數(shù)據(jù)頁(yè)來(lái)說(shuō),只能用來(lái)存儲(chǔ)一個(gè)大字段數(shù)據(jù)。但在實(shí)際應(yīng)用中,很多的大字段數(shù)據(jù)長(zhǎng)度都不會(huì)超過(guò)數(shù)據(jù)頁(yè)的一半,對(duì)于該種情況,大字段數(shù)據(jù)頁(yè)在存儲(chǔ)一個(gè)大字段數(shù)據(jù)之后,會(huì)剩余大量的空閑空間,而這些空閑空間也不能再用來(lái)存儲(chǔ)其他數(shù)據(jù)。由此造成了大字段數(shù)據(jù)頁(yè)的空間浪費(fèi);同時(shí),當(dāng)對(duì)大字段數(shù)據(jù)進(jìn)行批量查詢(xún)時(shí),也會(huì)增加大字段數(shù)據(jù)頁(yè)的輸入輸出代價(jià),從而降低數(shù)據(jù)庫(kù)的執(zhí)行效率。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提出一種大字段數(shù)據(jù)的處理方法及裝置,以實(shí)現(xiàn)對(duì)大字段數(shù)據(jù)的優(yōu)化處理。
一方面,本發(fā)明實(shí)施例提供了一種大字段數(shù)據(jù)的處理方法,該處理方法包括:
接收對(duì)指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令;
如果所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值,則根據(jù)所述處理指令確定所述大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理,其中,所述數(shù)據(jù)頁(yè)記為大字段記錄頁(yè),所述大字段記錄頁(yè)用于存儲(chǔ)至少兩條大字段數(shù)據(jù)的數(shù)據(jù)信息。
另一方面,本發(fā)明實(shí)施例還提供了一種大字段數(shù)據(jù)的處理裝置,該處理裝置包括:
指令接收模塊,用于接收對(duì)指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令;
數(shù)據(jù)處理模塊,用于當(dāng)所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值時(shí),根據(jù)所述處理指令確定所述大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理,其中,所述數(shù)據(jù)頁(yè)記為大字段記錄頁(yè),所述大字段記錄頁(yè)用于存儲(chǔ)至少兩條大字段數(shù)據(jù)的數(shù)據(jù)信息。
本發(fā)明實(shí)施例提供了一種大字段數(shù)據(jù)的處理方法及裝置,該處理方法可概括為:首先接收對(duì)指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令;在確定大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值時(shí),根據(jù)接收的處理指令確定大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理。利用該處理方法,由于大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè)至少存儲(chǔ)兩條大字段數(shù)據(jù)的數(shù)據(jù)信息,能夠節(jié)省數(shù)據(jù)庫(kù)的存儲(chǔ)空間,由此降低了存儲(chǔ)空間的資源浪費(fèi),此外,還能夠減少大字段數(shù)據(jù)處理時(shí)的數(shù)據(jù)頁(yè)加載量,由此降低了大字段數(shù)據(jù)處理時(shí)的輸入輸出代價(jià),從而提高了數(shù)據(jù)庫(kù)的執(zhí)行效率。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例一提供的一種大字段數(shù)據(jù)的處理方法的流程示意圖;
圖2為本發(fā)明實(shí)施例二提供的一種大字段數(shù)據(jù)的處理方法的流程示意圖;
圖3為本發(fā)明實(shí)施例三提供的一種大字段數(shù)據(jù)的處理方法的流程示意圖;
圖4為本發(fā)明實(shí)施例四提供的一種大字段數(shù)據(jù)的處理裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面結(jié)合附圖并通過(guò)具體實(shí)施方式來(lái)進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案??梢岳斫獾氖?,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
實(shí)施例一
圖1為本發(fā)明實(shí)施例一提供的一種大字段數(shù)據(jù)的處理方法的流程示意圖。該方法適用于對(duì)大字段數(shù)據(jù)進(jìn)行處理的情況,可以由大字段數(shù)據(jù)的處理裝置執(zhí)行,其中該裝置可由軟件和/或硬件實(shí)現(xiàn),并一般集成于數(shù)據(jù)庫(kù)管理系統(tǒng)中。
如圖1所示,本發(fā)明實(shí)施例一提供的一種大字段數(shù)據(jù)的處理方法,具體包括如下操作:
S101、接收對(duì)指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令。
在本實(shí)施例中,所述指定數(shù)據(jù)庫(kù)表具體可理解為創(chuàng)建于數(shù)據(jù)庫(kù)中的,且包含數(shù)據(jù)類(lèi)型為大字段的列的任一基本表。在本實(shí)施例中,所述大字段數(shù)據(jù)具體可理解為所述指定數(shù)據(jù)庫(kù)表中數(shù)據(jù)類(lèi)型為大字段的列所對(duì)應(yīng)的數(shù)據(jù),如長(zhǎng)文本、圖片或者文件等,其中,對(duì)所述大字段數(shù)據(jù)的處理并不直接在所屬列對(duì)應(yīng)的行單元中進(jìn)行,可以基于本發(fā)明實(shí)施例提供的大字段數(shù)據(jù)的處理方法進(jìn)行。
一般地,在對(duì)所述大字段數(shù)據(jù)進(jìn)行處理時(shí),可以首先進(jìn)行接收處理所述大字段數(shù)據(jù)所需處理指令的操作。具體的,所述處理指令可以包括大字段數(shù)據(jù)的存儲(chǔ)指令、修改指令以及刪除指令等。
S102、如果所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值,則根據(jù)所述處理指令確定所述大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理,其中,所述數(shù)據(jù)頁(yè)記為大字段記錄頁(yè),所述大字段記錄頁(yè)用于存儲(chǔ)至少兩條大字段數(shù)據(jù)的數(shù)據(jù)信息。
一般地,在接收到所述處理指令之后,可以基于所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度與所述設(shè)定閾值的大小關(guān)系來(lái)確定處理所述大字段數(shù)據(jù)所對(duì)應(yīng)的處理方法。通常情況下,在接收到處理指令后,對(duì)于數(shù)據(jù)長(zhǎng)度大于設(shè)定閾值的大字段數(shù)據(jù)而言,所使用的處理方法可以是現(xiàn)有的常規(guī)處理方法;對(duì)于數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值的大字段數(shù)據(jù)而言,就可以使用本發(fā)明實(shí)施例所提供的處理方法來(lái)進(jìn)行處理。
具體的,所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度具體可指數(shù)據(jù)類(lèi)型為大字段的數(shù)據(jù)所具有的數(shù)據(jù)大小,一般以字節(jié)為單位來(lái)表示。所述設(shè)定閾值可人為設(shè)定,也可默認(rèn)設(shè)定,其中,所述設(shè)定閾值可優(yōu)選設(shè)定為一個(gè)數(shù)據(jù)頁(yè)的頁(yè)大小的一半或者更小,示例性的,若數(shù)據(jù)頁(yè)的頁(yè)大小為4KB,則所述設(shè)定閾值可以為2KB或者1.8KB等。
在本實(shí)施例中,當(dāng)所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值時(shí),表明所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度較小,此時(shí)可以基于步驟S102實(shí)現(xiàn)對(duì)所述大字段數(shù)據(jù)的處理。具體的,首先根據(jù)所述處理指令確定所述大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),然后,再基于處理指令對(duì)所述大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理,其中,基于步驟S102所確定的數(shù)據(jù)頁(yè)與基于現(xiàn)有處理方法確定的數(shù)據(jù)頁(yè)不同,基于S102確定出的數(shù)據(jù)頁(yè)中至少可以存儲(chǔ)兩條大字段數(shù)據(jù)的數(shù)據(jù)信息,為了便于區(qū)分,本發(fā)明實(shí)施例中記所述數(shù)據(jù)頁(yè)為大字段記錄頁(yè);而基于現(xiàn)有處理方法確定的數(shù)據(jù)頁(yè)僅允許存儲(chǔ)一條大字段數(shù)據(jù)。由此可知,基于步驟S102的處理步驟可以節(jié)省數(shù)據(jù)庫(kù)的存儲(chǔ)空間,減少存儲(chǔ)空間的浪費(fèi)。
在本實(shí)施例中,基于S102確定出所述大字段數(shù)據(jù)所屬的大字段記錄頁(yè)后,還可以基于不同的處理指令對(duì)大字段數(shù)據(jù)進(jìn)行不同的處理操作,示例性的,如基于存儲(chǔ)指令對(duì)大字段數(shù)據(jù)進(jìn)行存儲(chǔ)操作,或基于修改指令對(duì)大字段數(shù)據(jù)進(jìn)行修改操作等。
本發(fā)明實(shí)施例一提供了一種大字段數(shù)據(jù)的處理方法,該處理方法首先接收對(duì)指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令;在確定大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值時(shí),根據(jù)接收的處理指令確定大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理。利用該處理方法,由于大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè)至少存儲(chǔ)兩條大字段數(shù)據(jù)的數(shù)據(jù)信息,節(jié)省了數(shù)據(jù)庫(kù)的存儲(chǔ)空間,由此降低了存儲(chǔ)空間的資源浪費(fèi),此外,很大程度減少了大字段數(shù)據(jù)處理時(shí)的數(shù)據(jù)頁(yè)加載量,由此降低了大字段數(shù)據(jù)處理時(shí)的輸入輸出代價(jià),從而提高了數(shù)據(jù)庫(kù)的執(zhí)行效率。
實(shí)施例二
圖2為本發(fā)明實(shí)施例二提供的一種大字段數(shù)據(jù)的處理方法的流程示意圖。本發(fā)明實(shí)施例二以上述實(shí)施例為基礎(chǔ)進(jìn)行優(yōu)化,在本實(shí)施例中,該處理方法還優(yōu)化包括了:在創(chuàng)建所述指定數(shù)據(jù)庫(kù)表時(shí),如果檢測(cè)到所述指定數(shù)據(jù)庫(kù)表中存在數(shù)據(jù)類(lèi)型為大字段的列,則為所述列創(chuàng)建專(zhuān)屬的大字段數(shù)據(jù)段,所述大字段數(shù)據(jù)段為處理大字段數(shù)據(jù)所需的數(shù)據(jù)環(huán)境;在所述大字段數(shù)據(jù)段中創(chuàng)建至少一個(gè)控制組,并為所述控制組對(duì)應(yīng)分配一個(gè)數(shù)據(jù)頁(yè),記所述數(shù)據(jù)頁(yè)為大字段控制頁(yè)。
如圖2所示,本發(fā)明實(shí)施例二提供的一種大字段數(shù)據(jù)的處理方法,具體包括如下操作:
需要說(shuō)明的是,由于對(duì)大字段數(shù)據(jù)的處理不能直接在所屬列對(duì)應(yīng)的行單元中進(jìn)行,所以在對(duì)大字段數(shù)據(jù)進(jìn)行處理操作之前,需要為所述大字段數(shù)據(jù)創(chuàng)建處理操作所需的數(shù)據(jù)環(huán)境,下述步驟S201~S203為本發(fā)明實(shí)施例提出的處理所述大字段數(shù)據(jù)所需數(shù)據(jù)環(huán)境的創(chuàng)建過(guò)程。
S201、在創(chuàng)建所述指定數(shù)據(jù)庫(kù)表時(shí),檢測(cè)所述指定數(shù)據(jù)庫(kù)表中是否存在數(shù)據(jù)類(lèi)型為大字段的列。
具體的,在最初創(chuàng)建所述指定數(shù)據(jù)庫(kù)表時(shí),確定在所述指定數(shù)據(jù)庫(kù)表中要形成的列的數(shù)據(jù)類(lèi)型,并確定是否存在數(shù)據(jù)類(lèi)型為大字段的列。示例性的,不同的數(shù)據(jù)庫(kù)對(duì)大字段類(lèi)型的表示不同,如Oracle數(shù)據(jù)庫(kù)中常見(jiàn)的大字段類(lèi)型有二進(jìn)制大對(duì)象(Binary Large Object,BLOB)以及字符大對(duì)象(Character Large Object,CLOB)等,又如SQL Server數(shù)據(jù)庫(kù)常見(jiàn)的大字段類(lèi)型有text(文本)以及image(圖片)等。
S202、如果存在所述列,則為所述列創(chuàng)建專(zhuān)屬的大字段數(shù)據(jù)段,所述大字段數(shù)據(jù)段為處理大字段數(shù)據(jù)所需的數(shù)據(jù)環(huán)境。
在本實(shí)施例中,如果檢測(cè)到存在數(shù)據(jù)類(lèi)型為大字段的列,則相應(yīng)的為所述列創(chuàng)建專(zhuān)屬的大字段數(shù)據(jù)段,且所述大字段數(shù)據(jù)段用于作為處理大字段數(shù)據(jù)所需的數(shù)據(jù)環(huán)境。一般地,所述大字段數(shù)據(jù)段可以抽象的看作一個(gè)存儲(chǔ)容器,用于存放所分配的數(shù)據(jù)頁(yè),而存放于所述大字段數(shù)據(jù)段中的數(shù)據(jù)頁(yè)一般用來(lái)記錄與所述列相關(guān)的大字段數(shù)據(jù)。
需要說(shuō)明的是,本發(fā)明實(shí)施例提供的處理方法,如果想要實(shí)現(xiàn)在一個(gè)數(shù)據(jù)頁(yè)(記作大字段記錄頁(yè))中至少記錄兩條大字段數(shù)據(jù)的數(shù)據(jù)信息,就需要?jiǎng)?chuàng)建一個(gè)能夠管理所述大字段記錄頁(yè)的控制組,則可以基于步驟S203實(shí)現(xiàn)控制組的創(chuàng)建。
S203、在所述大字段數(shù)據(jù)段中創(chuàng)建至少一個(gè)控制組,并為所述控制組對(duì)應(yīng)分配一個(gè)數(shù)據(jù)頁(yè),記所述數(shù)據(jù)頁(yè)為大字段控制頁(yè)。
在本實(shí)施例中,可以在所述大字段數(shù)據(jù)段中創(chuàng)建多個(gè)控制組,以此提高處理進(jìn)程并發(fā)效率。此外,由于控制組僅是一個(gè)邏輯上的名稱(chēng),所以需要為每個(gè)控制組對(duì)應(yīng)分配一個(gè)數(shù)據(jù)頁(yè)(記為大字段控制頁(yè))來(lái)實(shí)現(xiàn)控制組對(duì)大字段記錄頁(yè)的管理控制。需要說(shuō)明的是,所述大字段記錄頁(yè)以及大字段控制頁(yè)均為數(shù)據(jù)頁(yè),在實(shí)際操作中,主要基于數(shù)據(jù)頁(yè)的頁(yè)頭中記錄的頁(yè)類(lèi)型來(lái)區(qū)分。
進(jìn)一步的,所述控制組基于對(duì)應(yīng)的大字段控制頁(yè)中存儲(chǔ)的目錄項(xiàng)信息管理大字段記錄頁(yè),其中,所述目錄項(xiàng)信息中的一條目錄項(xiàng)對(duì)應(yīng)記錄一個(gè)大字段記錄頁(yè)的頁(yè)地址以及頁(yè)剩余空間大小。
此外,所述大字段記錄頁(yè)包括頁(yè)頭、數(shù)據(jù)以及數(shù)據(jù)索引三部分,其中,所述頁(yè)頭中記錄有所述大字段記錄頁(yè)所屬控制組的控制組地址;所述控制組地址為與所述控制組對(duì)應(yīng)的大字段控制頁(yè)的頁(yè)地址。
在本實(shí)施例中,一個(gè)控制組可以管理至少一個(gè)大字段記錄頁(yè),對(duì)所述大字段記錄頁(yè)的管理主要基于控制組對(duì)應(yīng)大字段控制頁(yè)中存儲(chǔ)的目錄項(xiàng)信息實(shí)現(xiàn);所述目錄項(xiàng)信息中可以存在多條目錄項(xiàng),每條目錄項(xiàng)對(duì)應(yīng)記錄一個(gè)大字段記錄頁(yè)的頁(yè)地址以及頁(yè)剩余空間大小。需要說(shuō)明的是,對(duì)于新創(chuàng)建的控制組,其對(duì)應(yīng)的大字段控制頁(yè)中的目錄項(xiàng)信息初始化為空,只有在將大字段數(shù)據(jù)記錄到大字段記錄頁(yè)后,才會(huì)將所述大字段記錄頁(yè)的目錄項(xiàng)更新至所述控制組對(duì)應(yīng)的大字段控制頁(yè)中。
在本實(shí)施例中,所形成的大字段記錄頁(yè)的組成部分與現(xiàn)有的數(shù)據(jù)頁(yè)的組成部分不同,現(xiàn)有的數(shù)據(jù)頁(yè)由頁(yè)頭和數(shù)據(jù)兩部分組成,而所述大字段記錄頁(yè)由頁(yè)頭、數(shù)據(jù)以及數(shù)據(jù)索引三部分組成,其中,所述頁(yè)頭中除了包含原有的頁(yè)頭標(biāo)準(zhǔn)信息(如頁(yè)地址、頁(yè)類(lèi)型等)外,還記錄了當(dāng)前大字段記錄頁(yè)中存儲(chǔ)的數(shù)據(jù)記錄條數(shù)、已使用的字節(jié)數(shù)以及所屬控制組的控制組地址等;所述數(shù)據(jù)部分可用于記錄至少兩條大字段數(shù)據(jù)的數(shù)據(jù)信息;所述數(shù)據(jù)索引部分則記錄了已存儲(chǔ)的各大字段數(shù)據(jù)的數(shù)據(jù)ID及其頁(yè)內(nèi)偏移量,可以用于后續(xù)對(duì)已存儲(chǔ)大字段數(shù)據(jù)的查詢(xún)定位。在本實(shí)施例中,上述大字段控制頁(yè)以及大字段記錄頁(yè)中的信息均會(huì)隨著對(duì)大字段數(shù)據(jù)進(jìn)行的處理操作而發(fā)生相應(yīng)的更新變化。
S204、接收對(duì)所述指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令。
S205、如果所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值,則根據(jù)所述處理指令確定所述大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理。
本發(fā)明實(shí)施例二提供的一種大字段數(shù)據(jù)的處理方法,優(yōu)化增加了創(chuàng)建大字段數(shù)據(jù)段的操作,所創(chuàng)建的大字段數(shù)據(jù)段為大字段數(shù)據(jù)的處理提供了所需的數(shù)據(jù)環(huán)境基礎(chǔ),使得大字段數(shù)據(jù)能夠正常進(jìn)行處理操作;此外,還優(yōu)化增加了控制組的創(chuàng)建操作,在大字段數(shù)據(jù)段中所創(chuàng)建的控制組則可用來(lái)確定大字段數(shù)據(jù)具體所屬的數(shù)據(jù)頁(yè),利用該處理方法,能夠節(jié)省數(shù)據(jù)庫(kù)的存儲(chǔ)空間,還能夠降低大字段數(shù)據(jù)處理時(shí)的輸入輸出代價(jià),進(jìn)而達(dá)到提升數(shù)據(jù)庫(kù)執(zhí)行效率的目的。
實(shí)施例三
圖3為本發(fā)明實(shí)施例三提供的一種大字段數(shù)據(jù)的處理方法的流程示意圖。本發(fā)明實(shí)施例三以上述實(shí)施例為基礎(chǔ)進(jìn)行優(yōu)化,在本實(shí)施例中,將“根據(jù)所述處理指令確定所述大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理”具體優(yōu)化為:當(dāng)所述處理指令為存儲(chǔ)指令時(shí),確定存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行存儲(chǔ)操作;當(dāng)所述處理指令為修改指令時(shí),確定所述大字段數(shù)據(jù)所屬的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行修改操作;當(dāng)所述處理指令為刪除指令時(shí),確定所述大字段數(shù)據(jù)所屬的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行刪除操作。
如圖3所示,本發(fā)明實(shí)施例三提供的一種大字段數(shù)據(jù)的處理方法,具體包括如下操作:
S301、在創(chuàng)建所述指定數(shù)據(jù)庫(kù)表時(shí),如果檢測(cè)到所述指定數(shù)據(jù)庫(kù)表中存在數(shù)據(jù)類(lèi)型為大字段的列,則為所述列創(chuàng)建專(zhuān)屬的大字段數(shù)據(jù)段。
示例性的,所述大字段數(shù)據(jù)段可以作為處理大字段數(shù)據(jù)所需的數(shù)據(jù)環(huán)境。
S302、在所述大字段數(shù)據(jù)段中創(chuàng)建至少一個(gè)控制組,并為所述控制組對(duì)應(yīng)分配一個(gè)數(shù)據(jù)頁(yè),記所述數(shù)據(jù)頁(yè)為大字段控制頁(yè)。
示例性的,所述控制組可以基于對(duì)應(yīng)大字段控制頁(yè)中存儲(chǔ)的目錄項(xiàng)信息來(lái)控制目錄項(xiàng)信息中存在的大字段記錄頁(yè),所述大字段記錄頁(yè)用于存儲(chǔ)至少兩條大字段數(shù)據(jù)的數(shù)據(jù)信息。
S303、接收對(duì)指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令。
S304、如果所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值,則基于所接收的處理指令執(zhí)行步驟S305、步驟S306或步驟S307。
示例性的,如果確定出所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值,則可基于本發(fā)明實(shí)施例提供的處理方法進(jìn)行處理操作。
S305、當(dāng)所述處理指令為存儲(chǔ)指令時(shí),確定存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行存儲(chǔ)操作。
在本實(shí)施例中,對(duì)所述大字段數(shù)據(jù)進(jìn)行存儲(chǔ)操作具體可理解為將大字段數(shù)據(jù)存儲(chǔ)至確定的大字段記錄頁(yè)中。
進(jìn)一步的,所述確定存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行存儲(chǔ)操作,包括:
將所述大字段數(shù)據(jù)分配到所述大字段數(shù)據(jù)段的任一個(gè)未封鎖的控制組中,并封鎖所述控制組;基于所述控制組對(duì)應(yīng)的目錄項(xiàng)信息確定存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè);將所述大字段數(shù)據(jù)的數(shù)據(jù)信息寫(xiě)入所述大字段記錄頁(yè);更新所述大字段記錄頁(yè)在所述控制組中的目錄項(xiàng)信息,并釋放對(duì)所述控制組的封鎖。
在本實(shí)施例中,在所述控制組內(nèi)對(duì)大字段數(shù)據(jù)進(jìn)行處理操作之前一般先對(duì)控制組進(jìn)行封鎖,由此避免多個(gè)并發(fā)處理進(jìn)程同時(shí)對(duì)在一個(gè)控制組內(nèi)進(jìn)行操作。其中,封鎖操作為數(shù)據(jù)庫(kù)中的一個(gè)基本操作,這里不再贅述。
在本實(shí)施例中,在將所述大字段數(shù)據(jù)寫(xiě)入所述大字段記錄頁(yè)后,會(huì)在所述指定數(shù)據(jù)庫(kù)表的指定行中存儲(chǔ)所述大字段數(shù)據(jù)的數(shù)據(jù)ID以及所述大字段記錄頁(yè)的頁(yè)地址,由此形成所述大字段數(shù)據(jù)的行記錄信息,以便于后續(xù)所述大字段數(shù)據(jù)進(jìn)行索引查詢(xún)。
此外,在將所述大字段數(shù)據(jù)寫(xiě)入所述大字段記錄頁(yè)后,還要更新所述大字段記錄頁(yè)在所述控制組中的目錄項(xiàng)信息,以保證控制組對(duì)應(yīng)的目錄項(xiàng)信息與其管理的大字段記錄頁(yè)的信息能夠保持一致。
進(jìn)一步的,所述基于所述控制組對(duì)應(yīng)的目錄項(xiàng)信息確定存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè),包括:如果所述控制組對(duì)應(yīng)的目錄項(xiàng)信息為空,則為所述大字段數(shù)據(jù)分配一個(gè)新的大字段記錄頁(yè);否則,確定所述控制組對(duì)應(yīng)的目錄項(xiàng)信息中是否存在滿足設(shè)定條件的目錄項(xiàng),如果存在滿足所述設(shè)定條件的目錄項(xiàng),則確定所述目錄項(xiàng)中頁(yè)地址對(duì)應(yīng)的大字段記錄頁(yè)為存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè);否則,為所述大字段數(shù)據(jù)分配一個(gè)新的大字段記錄頁(yè)。其中,所述設(shè)定條件為:目錄項(xiàng)的頁(yè)剩余空間大小大于或等于所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度。
S306、當(dāng)所述處理指令為修改指令時(shí),確定所述大字段數(shù)據(jù)所屬的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行修改操作。
在本實(shí)施例中,所述對(duì)所述大字段數(shù)據(jù)進(jìn)行修改操作具體可理解為對(duì)已確定的大字段記錄頁(yè)中存儲(chǔ)的大字段數(shù)據(jù)的數(shù)據(jù)信息進(jìn)行修改。
進(jìn)一步的,所述確定所述大字段數(shù)據(jù)所屬的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行修改操作,包括:
基于所述大字段數(shù)據(jù)在所述指定數(shù)據(jù)庫(kù)表中對(duì)應(yīng)的行記錄信息,確定所述大字段數(shù)據(jù)所屬數(shù)據(jù)頁(yè)的頁(yè)地址;基于所述頁(yè)地址在所述大字段數(shù)據(jù)段中確定對(duì)應(yīng)的大字段記錄頁(yè);檢查所述大字段記錄頁(yè)的頁(yè)頭中記錄的控制組地址是否為空;如果所述控制組地址不為空,則封鎖所述控制組地址對(duì)應(yīng)的控制組;確定所述大字段數(shù)據(jù)修改后的數(shù)據(jù)長(zhǎng)度是否小于或等于所述大字段記錄頁(yè)的頁(yè)剩余空間大小,若是,則直接在所述大字段記錄頁(yè)內(nèi)修改所述大字段數(shù)據(jù);若否,則將記錄于所述大字段記錄頁(yè)中的大字段數(shù)據(jù)復(fù)制到緩存區(qū)進(jìn)行修改,并從所述大字段記錄頁(yè)中刪除與所述大字段數(shù)據(jù)相關(guān)的記錄,對(duì)修改后的大字段數(shù)據(jù)重新進(jìn)行存儲(chǔ)操作;如果對(duì)所述控制組進(jìn)行了封鎖,更新所述大字段記錄頁(yè)在所述控制組中的目錄項(xiàng)信息,并釋放對(duì)所述控制組的封鎖。
在本實(shí)施例中,所述大字段記錄頁(yè)的頁(yè)頭中記錄的控制組地址存在為空的情況,在出現(xiàn)該情況時(shí),表明所述大字段記錄頁(yè)的頁(yè)剩余空間已經(jīng)不多,因此后續(xù)不會(huì)再考慮將新的大字段數(shù)據(jù)存儲(chǔ)進(jìn)來(lái),由此進(jìn)行存儲(chǔ)操作時(shí)節(jié)省了不必要的判定;此外,由于所述大字段記錄頁(yè)不屬于任何控制組,此時(shí)也不必再進(jìn)行控制組的封鎖操作,進(jìn)而也不必進(jìn)行控制組目錄信息的更新操作以及相應(yīng)的封鎖釋放操作,這里不再詳述。
在本實(shí)施例中,如果對(duì)修改后的大字段數(shù)據(jù)重新進(jìn)行了存儲(chǔ)操作,則在對(duì)修改后的大字段數(shù)據(jù)重新進(jìn)行存儲(chǔ)操作后,會(huì)在所述指定數(shù)據(jù)庫(kù)表中的指定行中存儲(chǔ)所述大字段數(shù)據(jù)的數(shù)據(jù)ID以及所述修改后的大字段數(shù)據(jù)對(duì)應(yīng)的大字段記錄頁(yè)的頁(yè)地址,由此形成所述大字段數(shù)據(jù)的新的行記錄信息,以便于后續(xù)所述大字段數(shù)據(jù)進(jìn)行正確的索引查詢(xún)。
S307、當(dāng)所述處理指令為刪除指令時(shí),確定所述大字段數(shù)據(jù)所屬的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行刪除操作。
進(jìn)一步的,所述確定所述大字段數(shù)據(jù)所屬的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行刪除操作,包括:
基于所述大字段數(shù)據(jù)在所述指定數(shù)據(jù)庫(kù)表中對(duì)應(yīng)的行記錄信息,確定所述大字段數(shù)據(jù)所屬數(shù)據(jù)頁(yè)的頁(yè)地址;基于所述頁(yè)地址在所述大字段數(shù)據(jù)段中確定對(duì)應(yīng)的大字段記錄頁(yè);檢查所述大字段記錄頁(yè)的頁(yè)頭中包含的控制組地址是否為空;如果所述控制組地址不為空,則封鎖所述控制組地址對(duì)應(yīng)的控制組;確定所述大字段數(shù)據(jù)在所述大字段記錄頁(yè)中的記錄位置,并從所述大字段記錄頁(yè)中刪除與所述大字段數(shù)據(jù)相關(guān)的記錄;如果對(duì)所述控制組進(jìn)行了封鎖,更新所述大字段記錄頁(yè)在所述控制組中的目錄項(xiàng)信息,并釋放對(duì)所述控制組的封鎖。
在本實(shí)施例中,在對(duì)待刪除的大字段數(shù)據(jù)進(jìn)行刪除操作后,需要將所述大字段數(shù)據(jù)在指定數(shù)據(jù)庫(kù)表的指定行中的行記錄信息也相應(yīng)的刪除,使得所述指定行的行記錄信息為空,由此保證大字段數(shù)據(jù)的正確索引查詢(xún)。
本發(fā)明實(shí)施例三提供的一種大字段數(shù)據(jù)的處理方法,具體化了基于接收的處理指令的不同進(jìn)行不同處理操作的過(guò)程。利用該處理方法,實(shí)現(xiàn)了對(duì)大字段數(shù)據(jù)在數(shù)據(jù)庫(kù)中的存儲(chǔ)操作、修改操作以及刪除操作,由于存儲(chǔ)大字段數(shù)據(jù)的數(shù)據(jù)頁(yè)至少能夠存儲(chǔ)兩條大字段數(shù)據(jù)的數(shù)據(jù)信息,所以與現(xiàn)有的存儲(chǔ)操作相比,很大程度節(jié)省了數(shù)據(jù)庫(kù)的存儲(chǔ)空間,由此降低存儲(chǔ)空間的資源浪費(fèi),同時(shí),在對(duì)存儲(chǔ)于特殊數(shù)據(jù)頁(yè)的大字段數(shù)據(jù)據(jù)進(jìn)行修改或刪除操作時(shí),能夠減少大字段數(shù)據(jù)的數(shù)據(jù)頁(yè)加載量,由此降低大字段數(shù)據(jù)處理時(shí)的輸入輸出代價(jià),從而提高了數(shù)據(jù)庫(kù)的執(zhí)行效率。
在上述實(shí)施例的基礎(chǔ)上,本發(fā)明實(shí)施例三還將“更新所述大字段記錄頁(yè)在所述控制組中的目錄項(xiàng)信息”優(yōu)化為:a、確定所述大字段記錄頁(yè)的頁(yè)地址;b、檢測(cè)所述控制組對(duì)應(yīng)的各目錄項(xiàng)中是否存在包含所述頁(yè)地址的目錄項(xiàng),若存在,則執(zhí)行步驟c;若不存在,則執(zhí)行步驟f;c、確定所述目錄項(xiàng)中的頁(yè)剩余空間大小是否小于預(yù)設(shè)的頁(yè)空間下限值,若是,則執(zhí)行步驟d;若否,則執(zhí)行步驟e;d、從所述控制組的目錄項(xiàng)信息中刪除所述目錄項(xiàng),并將所述大字段記錄頁(yè)的頁(yè)頭中的控制組地址設(shè)置為空,結(jié)束當(dāng)前更新操作;e、更新所述目錄項(xiàng)中的頁(yè)剩余空間大小,并結(jié)束當(dāng)前更新操作;f、檢測(cè)所述大字段記錄頁(yè)的數(shù)據(jù)部分是否為空或者所述大字段記錄頁(yè)的頁(yè)剩余空間是否小于預(yù)設(shè)的頁(yè)空間下限值,若是,則執(zhí)行步驟g;若否,則執(zhí)行步驟h;g、直接結(jié)束當(dāng)前更新操作;h、如果所述控制組對(duì)應(yīng)的目錄項(xiàng)條數(shù)沒(méi)有達(dá)到預(yù)設(shè)的上限制,則執(zhí)行步驟i;否則,執(zhí)行步驟j;i、添加所述大字段記錄頁(yè)的目錄項(xiàng)到所述控制組對(duì)應(yīng)的目錄項(xiàng)信息中,并在所述大字段記錄頁(yè)的頁(yè)頭中記錄所述控制組的控制組地址,結(jié)束當(dāng)前更新操作。j、查找所述控制組對(duì)應(yīng)的目錄項(xiàng)信息中頁(yè)剩余空間最小的目錄項(xiàng),如果所述目錄項(xiàng)的頁(yè)剩余空間大小大于所述大字段記錄頁(yè)的頁(yè)剩余空間大小,則結(jié)束當(dāng)前操作;否則,則執(zhí)行步驟k;k、刪除所述目錄項(xiàng)信息中頁(yè)剩余空間最小的目錄項(xiàng),將所述目錄項(xiàng)對(duì)應(yīng)的數(shù)據(jù)頁(yè)頁(yè)頭中的控制頁(yè)地址置為空;將所述大字段記錄頁(yè)的目錄項(xiàng)添加到所述控制組對(duì)應(yīng)的目錄項(xiàng)信息中,并在所述大字段記錄頁(yè)的頁(yè)頭中記錄所述控制組的控制組地址,結(jié)束當(dāng)前更新操作。
在本實(shí)施例中,如果存在所述大字段記錄頁(yè)中的數(shù)據(jù)部分為空的情況,可以認(rèn)為是對(duì)所述大字段記錄頁(yè)中的大字段數(shù)據(jù)進(jìn)行了刪除或者修改操作而造成的,此時(shí),如果所述控制組的目錄項(xiàng)信息中不存在所述大字段記錄頁(yè)的目錄項(xiàng)記錄,則可以執(zhí)行上述步驟g的操作。
在本實(shí)施例中,上述步驟a至步驟k給出了更新所述大字段記錄頁(yè)在所述控制組中的目錄項(xiàng)信息的具體實(shí)現(xiàn)方法,基于上述步驟a至步驟k的更新操作,可以將符合條件的大字段記錄頁(yè)加入至所述控制組中,以便于后續(xù)插入新的大字段數(shù)據(jù)時(shí),能夠通過(guò)控制組的管理將符合條件的大字段記錄頁(yè)分配給新的大字段數(shù)據(jù)進(jìn)行存儲(chǔ);同時(shí),還可以將不符合條件的大字段記錄頁(yè)目錄項(xiàng)從控制組中的目錄項(xiàng)信息中刪除,以避免后續(xù)再將新的大字段數(shù)據(jù)存儲(chǔ)其中。由此在保證控制組目錄項(xiàng)信息與其管理的大字段記錄頁(yè)的信息保持一致的同時(shí),還提高了大字段數(shù)據(jù)的處理效率。
實(shí)施例四
圖4為本發(fā)明實(shí)施例提供的一種大字段數(shù)據(jù)的處理裝置,該處理裝置適用于對(duì)大字段數(shù)據(jù)進(jìn)行處理的情況,該處理裝置可由軟件和/或硬件實(shí)現(xiàn),并一般集成于數(shù)據(jù)庫(kù)管理系統(tǒng)中。如圖4所示,該處理裝置包括:指令接收模塊41和數(shù)據(jù)處理模塊42。
其中,指令接收模塊41,用于接收對(duì)指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令。
數(shù)據(jù)處理模塊42,用于當(dāng)所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值時(shí),根據(jù)所述處理指令確定所述大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理,其中,所述數(shù)據(jù)頁(yè)記為大字段記錄頁(yè),所述大字段記錄頁(yè)用于存儲(chǔ)至少兩條大字段數(shù)據(jù)的數(shù)據(jù)信息。
在本實(shí)施例中,該處理裝置首先通過(guò)指令接收模塊41接收對(duì)指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令;然后通過(guò)數(shù)據(jù)處理模塊42在所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值時(shí),根據(jù)所述處理指令確定所述大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理。
本發(fā)明實(shí)施例提供的一種大字段數(shù)據(jù)的處理裝置,集成在數(shù)據(jù)庫(kù)管理系統(tǒng)中,在指定數(shù)據(jù)庫(kù)表出現(xiàn)需要處理的大字段數(shù)據(jù)時(shí),能夠基于該處理裝置的指令接收模塊接收對(duì)指定數(shù)據(jù)庫(kù)表的大字段數(shù)據(jù)進(jìn)行處理的處理指令,并能夠通過(guò)數(shù)據(jù)處理模塊在所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值時(shí),根據(jù)所述處理指令確定所述大字段數(shù)據(jù)所屬的數(shù)據(jù)頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行相應(yīng)的處理。利用該處理裝置,能夠節(jié)省數(shù)據(jù)庫(kù)的存儲(chǔ)空間,降低存儲(chǔ)空間的資源浪費(fèi),還能夠很大程度的減少大字段數(shù)據(jù)處理的數(shù)據(jù)頁(yè)加載量,降低大字段數(shù)據(jù)處理時(shí)的輸入輸出代價(jià),從而提高了數(shù)據(jù)庫(kù)的執(zhí)行效率。
進(jìn)一步的,該處理裝置,還包括:數(shù)據(jù)段創(chuàng)建模塊,用于在創(chuàng)建所述指定數(shù)據(jù)庫(kù)表時(shí),如果檢測(cè)到所述指定數(shù)據(jù)庫(kù)表中存在數(shù)據(jù)類(lèi)型為大字段的列,則為所述列創(chuàng)建專(zhuān)屬的大字段數(shù)據(jù)段,所述大字段數(shù)據(jù)段為處理大字段數(shù)據(jù)所需的數(shù)據(jù)環(huán)境;控制組創(chuàng)建模塊,用于在所述大字段數(shù)據(jù)段中創(chuàng)建至少一個(gè)控制組,并為所述控制組對(duì)應(yīng)分配一個(gè)數(shù)據(jù)頁(yè),記所述數(shù)據(jù)頁(yè)為大字段控制頁(yè)。
在上述實(shí)施例的基礎(chǔ)上,所述控制組基于對(duì)應(yīng)的大字段控制頁(yè)中存儲(chǔ)的目錄項(xiàng)信息管理大字段記錄頁(yè),其中,所述目錄項(xiàng)信息中的一條目錄項(xiàng)對(duì)應(yīng)記錄一個(gè)大字段記錄頁(yè)的頁(yè)地址以及頁(yè)剩余空間大??;所述大字段記錄頁(yè)包括頁(yè)頭、數(shù)據(jù)以及數(shù)據(jù)索引三部分,其中,所述頁(yè)頭中記錄有所述大字段記錄頁(yè)所屬控制組的控制組地址;所述控制組地址為與所述控制組對(duì)應(yīng)的大字段控制頁(yè)的頁(yè)地址。
進(jìn)一步的,所述數(shù)據(jù)處理模塊42,具體包括:
存儲(chǔ)操作單元,用于當(dāng)所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值且所述處理指令為存儲(chǔ)指令時(shí),確定存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行存儲(chǔ)操作;
修改操作單元,用于當(dāng)所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值且所述處理指令為修改指令時(shí),確定所述大字段數(shù)據(jù)所屬的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行修改操作;
刪除操作單元,用于當(dāng)所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度小于或等于設(shè)定閾值且所述處理指令為刪除指令時(shí),確定所述大字段數(shù)據(jù)所屬的大字段記錄頁(yè),并對(duì)所述大字段數(shù)據(jù)進(jìn)行刪除操作。
在上述實(shí)施例的基礎(chǔ)上,所述存儲(chǔ)操作單元,具體用于:
將所述大字段數(shù)據(jù)分配到所述大字段數(shù)據(jù)段的任一個(gè)未封鎖的控制組中,并封鎖所述控制組;基于所述控制組對(duì)應(yīng)的目錄項(xiàng)信息確定存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè);將所述大字段數(shù)據(jù)的數(shù)據(jù)信息寫(xiě)入所述大字段記錄頁(yè);更新所述大字段記錄頁(yè)在所述控制組中的目錄項(xiàng)信息,并釋放對(duì)所述控制組的封鎖。
在本實(shí)施例中,基于存儲(chǔ)操作單元完成所述大字段數(shù)據(jù)的存儲(chǔ)操作后,可以在所述指定數(shù)據(jù)庫(kù)表的指定行中存儲(chǔ)所述大字段數(shù)據(jù)的數(shù)據(jù)ID以及所述大字段記錄頁(yè)的頁(yè)地址,由此形成所述大字段數(shù)據(jù)的行記錄信息,以便于后續(xù)所述大字段數(shù)據(jù)進(jìn)行索引查詢(xún)。
進(jìn)一步的,所述基于所述控制組對(duì)應(yīng)的目錄項(xiàng)信息確定存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè),包括:如果所述控制組對(duì)應(yīng)的目錄項(xiàng)信息為空,則為所述大字段數(shù)據(jù)分配一個(gè)新的大字段記錄頁(yè);否則,確定所述控制組對(duì)應(yīng)的目錄項(xiàng)信息中是否存在滿足設(shè)定條件的目錄項(xiàng),如果存在滿足所述設(shè)定條件的目錄項(xiàng),則確定所述目錄項(xiàng)中頁(yè)地址對(duì)應(yīng)的大字段記錄頁(yè)為存儲(chǔ)所述大字段數(shù)據(jù)所需的大字段記錄頁(yè);否則,為所述大字段數(shù)據(jù)分配一個(gè)新的大字段記錄頁(yè);其中,所述設(shè)定條件為:目錄項(xiàng)的頁(yè)剩余空間大小大于或等于所述大字段數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度。
在上述實(shí)施例的基礎(chǔ)上,所述修改操作單元,具體用于:
基于所述大字段數(shù)據(jù)在所述指定數(shù)據(jù)庫(kù)表中對(duì)應(yīng)的行記錄信息,確定所述大字段數(shù)據(jù)所屬數(shù)據(jù)頁(yè)的頁(yè)地址;基于所述頁(yè)地址在所述大字段數(shù)據(jù)段中確定對(duì)應(yīng)的大字段記錄頁(yè);檢查所述大字段記錄頁(yè)的頁(yè)頭中記錄的控制組地址是否為空;如果所述控制組地址不為空,則封鎖所述控制組地址對(duì)應(yīng)的控制組;確定所述大字段數(shù)據(jù)修改后的數(shù)據(jù)長(zhǎng)度是否小于或等于所述大字段記錄頁(yè)的頁(yè)剩余空間大小,若是,則直接在所述大字段記錄頁(yè)內(nèi)修改所述大字段數(shù)據(jù);若否,則將記錄于所述大字段記錄頁(yè)中的大字段數(shù)據(jù)復(fù)制到緩存區(qū)進(jìn)行修改,并從所述大字段記錄頁(yè)中刪除與所述大字段數(shù)據(jù)相關(guān)的記錄,對(duì)修改后的大字段數(shù)據(jù)重新進(jìn)行存儲(chǔ)操作;如果對(duì)所述控制組進(jìn)行了封鎖,更新所述大字段記錄頁(yè)在所述控制組中的目錄項(xiàng)信息,并釋放對(duì)所述控制組的封鎖。
在本實(shí)施例中,如果基于修改操作單元進(jìn)行了大字段數(shù)據(jù)的修改,并重新對(duì)所述修改后的大字段數(shù)據(jù)進(jìn)行了存儲(chǔ)操作,則可以在所述指定數(shù)據(jù)庫(kù)表中的指定行中存儲(chǔ)所述大字段數(shù)據(jù)的數(shù)據(jù)ID以及所述修改后的大字段數(shù)據(jù)對(duì)應(yīng)的大字段記錄頁(yè)的頁(yè)地址,由此形成所述大字段數(shù)據(jù)的新的行記錄信息,以便于后續(xù)所述大字段數(shù)據(jù)進(jìn)行正確的索引查詢(xún)。。
在上述實(shí)施例的基礎(chǔ)上,所述刪除操作單元,具體用于:
基于所述大字段數(shù)據(jù)在所述指定數(shù)據(jù)庫(kù)表中對(duì)應(yīng)的行記錄信息,確定所述大字段數(shù)據(jù)所屬數(shù)據(jù)頁(yè)的頁(yè)地址;基于所述頁(yè)地址在所述大字段數(shù)據(jù)段中確定對(duì)應(yīng)的大字段記錄頁(yè);檢查所述大字段記錄頁(yè)的頁(yè)頭中包含的控制組地址是否為空;如果所述控制組地址不為空,則封鎖所述控制組地址對(duì)應(yīng)的控制組;確定所述大字段數(shù)據(jù)在所述大字段記錄頁(yè)中的記錄位置,并從所述大字段記錄頁(yè)中刪除與所述大字段數(shù)據(jù)相關(guān)的記錄;如果對(duì)所述控制組進(jìn)行了封鎖,更新所述大字段記錄頁(yè)在所述控制組中的目錄項(xiàng)信息,并釋放對(duì)所述控制組的封鎖。
在本實(shí)施例中,在基于刪除操作單元對(duì)待刪除的大字段數(shù)據(jù)進(jìn)行刪除操作后,需要將所述大字段數(shù)據(jù)在指定數(shù)據(jù)庫(kù)表的指定行中的行記錄信息也相應(yīng)的刪除,使得所述指定行的行記錄信息為空,由此保證大字段數(shù)據(jù)的正確索引查詢(xún)。
注意,上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理。本領(lǐng)域技術(shù)人員會(huì)理解,本發(fā)明不限于這里所述的特定實(shí)施例,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會(huì)脫離本發(fā)明的保護(hù)范圍。因此,雖然通過(guò)以上實(shí)施例對(duì)本發(fā)明進(jìn)行了較為詳細(xì)的說(shuō)明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。