公務(wù)員期刊網(wǎng) 論文中心 正文

內(nèi)存數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)研究

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了內(nèi)存數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)研究范文,希望能給你帶來靈感和參考,敬請(qǐng)閱讀。

內(nèi)存數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)研究

內(nèi)存數(shù)據(jù)庫(kù)在數(shù)據(jù)密集型行業(yè)領(lǐng)域的日常工作中起到了十分關(guān)鍵的作用,能夠?qū)崟r(shí)、高效地滿足技術(shù)人員對(duì)于數(shù)據(jù)的訪問需求。本文分別對(duì)內(nèi)存數(shù)據(jù)庫(kù)的記錄數(shù)據(jù)組織結(jié)構(gòu)以及內(nèi)存數(shù)據(jù)庫(kù)的索引數(shù)據(jù)結(jié)構(gòu)進(jìn)行了詳細(xì)地說明和分析,進(jìn)而對(duì)內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行更好地掌握,來不斷提升內(nèi)存數(shù)據(jù)庫(kù)的性能。

1內(nèi)存數(shù)據(jù)庫(kù)的記錄數(shù)據(jù)結(jié)構(gòu)

1.1區(qū)段式數(shù)據(jù)結(jié)構(gòu)

從目前的發(fā)展情況來看,大部分內(nèi)存數(shù)據(jù)都是數(shù)據(jù)在關(guān)系表的基礎(chǔ)上所建立的一種關(guān)系數(shù)據(jù)庫(kù),而技術(shù)人員將數(shù)據(jù)存儲(chǔ)到內(nèi)存數(shù)據(jù)庫(kù)中時(shí),往往使用的是二維關(guān)系表來進(jìn)行的,因此,二維關(guān)系表在當(dāng)前的內(nèi)存數(shù)據(jù)庫(kù)中也得到了廣泛的應(yīng)用。一方面,利用二維關(guān)系表保存數(shù)據(jù)可以維護(hù)數(shù)據(jù)的描述信息。描述信息包含了數(shù)據(jù)的字段名、表名、索引、類型等內(nèi)容,這些信息是用于描述數(shù)據(jù)在關(guān)系表中的信息。另一方面,利用二維關(guān)系表保存數(shù)據(jù)可以維護(hù)數(shù)據(jù)的記錄信息。記錄信息指的是數(shù)據(jù)被存儲(chǔ)在關(guān)系表中的每一條記錄內(nèi)容。這類基于關(guān)系表的內(nèi)存數(shù)據(jù)庫(kù)通常會(huì)采用區(qū)段式的數(shù)據(jù)組織結(jié)構(gòu),來將內(nèi)存數(shù)據(jù)庫(kù)的共享內(nèi)存劃分為若干個(gè)不同的分區(qū),在每一個(gè)分區(qū)中存儲(chǔ)一個(gè)內(nèi)存數(shù)據(jù)庫(kù)中的關(guān)系;而每一個(gè)分區(qū)又要分成若干個(gè)長(zhǎng)度相等的段,這些段就是內(nèi)存數(shù)據(jù)庫(kù)共享內(nèi)存進(jìn)行動(dòng)態(tài)分配的一個(gè)單位,而內(nèi)存數(shù)據(jù)庫(kù)中的數(shù)據(jù),就是存儲(chǔ)在段中的一個(gè)記錄塊當(dāng)中。在內(nèi)存數(shù)據(jù)庫(kù)中采取區(qū)段式的數(shù)據(jù)組織結(jié)構(gòu),需要對(duì)每一項(xiàng)數(shù)據(jù)都標(biāo)志其區(qū)號(hào)、斷號(hào)以及槽號(hào)。這樣一來,就可以快速查詢到數(shù)據(jù)在內(nèi)存數(shù)據(jù)庫(kù)中的具體位置,大大提升了數(shù)據(jù)查詢的效率。值得注意的是,數(shù)據(jù)的分區(qū)號(hào)必須對(duì)應(yīng)其關(guān)系表名;而數(shù)據(jù)的槽號(hào)要對(duì)數(shù)控在段內(nèi)的偏移和長(zhǎng)度進(jìn)行記錄。

1.2基于對(duì)象的數(shù)據(jù)結(jié)構(gòu)

近年來,基于對(duì)象的數(shù)據(jù)結(jié)構(gòu)技術(shù)不斷進(jìn)行發(fā)展,因此在內(nèi)存數(shù)據(jù)庫(kù)中也得到了更加廣泛的應(yīng)用,與區(qū)段式的數(shù)據(jù)組織結(jié)構(gòu)成為了內(nèi)存數(shù)據(jù)庫(kù)中兩種重要的數(shù)據(jù)結(jié)構(gòu)。在內(nèi)存數(shù)據(jù)庫(kù)中使用基于對(duì)象的數(shù)據(jù)組織結(jié)構(gòu)時(shí),無論是對(duì)數(shù)據(jù)的存儲(chǔ)、記錄,還是對(duì)數(shù)據(jù)的索引,都是要通過對(duì)象來完成。因此,基于對(duì)象的數(shù)據(jù)組織結(jié)構(gòu),是以對(duì)象為單位,來將內(nèi)存數(shù)據(jù)庫(kù)的共享內(nèi)存進(jìn)行分配,主要記錄了對(duì)象與對(duì)象之間,以及索引對(duì)象之間的聯(lián)系,整個(gè)內(nèi)存數(shù)據(jù)庫(kù)的運(yùn)行都是通過對(duì)象自身來維持的?;诖?,在內(nèi)存數(shù)據(jù)庫(kù)中建立基于對(duì)象的數(shù)據(jù)組織結(jié)構(gòu)時(shí),需要利用指針來維持對(duì)象之間的聯(lián)系,進(jìn)而達(dá)到對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)、記錄、處理以及索引等目的。目前,在內(nèi)存數(shù)據(jù)庫(kù)中應(yīng)用基于對(duì)象的數(shù)據(jù)組織結(jié)構(gòu),主要是通過對(duì)象之間的聯(lián)系,來提升對(duì)于數(shù)據(jù)管理工作的效率和質(zhì)量。相比較于區(qū)段式的數(shù)據(jù)組織結(jié)構(gòu)來說,基于對(duì)象的數(shù)據(jù)組織結(jié)構(gòu)更加簡(jiǎn)單,只要為各項(xiàng)數(shù)據(jù)及其記錄建立相應(yīng)的對(duì)象,就能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的管理工作。

1.3影子內(nèi)存式數(shù)據(jù)結(jié)構(gòu)

影子內(nèi)存式數(shù)據(jù)組織結(jié)構(gòu)在內(nèi)存數(shù)據(jù)庫(kù)中主要包含了兩個(gè)部分,第一個(gè)部分就是數(shù)據(jù)在內(nèi)存數(shù)據(jù)庫(kù)中的主拷貝;而另外一個(gè)部分,就是數(shù)據(jù)在內(nèi)存數(shù)據(jù)庫(kù)中的影子拷貝。在內(nèi)存數(shù)據(jù)的日常運(yùn)行當(dāng)中,每次技術(shù)人員在對(duì)數(shù)據(jù)進(jìn)行查詢時(shí),都會(huì)同時(shí)產(chǎn)生兩個(gè)地址,一個(gè)在內(nèi)存數(shù)據(jù)庫(kù)的主拷貝當(dāng)中,另一個(gè)是在內(nèi)存數(shù)據(jù)庫(kù)的影子內(nèi)存當(dāng)中,所產(chǎn)生的雙地址先使對(duì)內(nèi)存數(shù)據(jù)庫(kù)的影子內(nèi)存進(jìn)行試探,在試探失敗的情況下再對(duì)內(nèi)粗?jǐn)?shù)據(jù)庫(kù)的主拷貝進(jìn)行試探。除此之外,在內(nèi)存數(shù)據(jù)庫(kù)中建立影子內(nèi)存式數(shù)據(jù)組織結(jié)構(gòu),在數(shù)據(jù)進(jìn)行更新時(shí),主要環(huán)節(jié)和流程都是在內(nèi)存數(shù)據(jù)庫(kù)的影子內(nèi)存當(dāng)中進(jìn)行,并在內(nèi)存數(shù)據(jù)庫(kù)的活動(dòng)日志中進(jìn)行記錄;同時(shí),在數(shù)據(jù)進(jìn)行提交時(shí),還會(huì)在內(nèi)存數(shù)據(jù)庫(kù)的影子內(nèi)存中產(chǎn)生一個(gè)后映像,并拷貝到內(nèi)存數(shù)據(jù)庫(kù)的主拷貝當(dāng)中。首先,影子內(nèi)存式數(shù)據(jù)組織結(jié)構(gòu)將后映像與用戶區(qū)進(jìn)行了整合,減少了數(shù)據(jù)的日志緩沖區(qū),提升了數(shù)據(jù)管理工作的效率。其次,影子內(nèi)存式數(shù)據(jù)組織結(jié)構(gòu)在內(nèi)存數(shù)據(jù)庫(kù)產(chǎn)生故障,或是數(shù)據(jù)錯(cuò)誤時(shí),只刪除影子內(nèi)存中的數(shù)據(jù)就可以,使數(shù)據(jù)管理工作更加便捷。

2內(nèi)存數(shù)據(jù)庫(kù)的索引數(shù)據(jù)結(jié)構(gòu)

2.1磁盤和內(nèi)存

通常情況下,數(shù)據(jù)庫(kù)內(nèi)部存儲(chǔ)的索引構(gòu)成同磁盤系統(tǒng)中的索引構(gòu)成存在差異,磁盤中的索引工作是對(duì)最小磁盤多次查找及對(duì)其內(nèi)部空間的實(shí)際占用,內(nèi)存中的索引工作不會(huì)對(duì)磁盤最小化進(jìn)行多次查找,工作的重心全部放在內(nèi)存中。因此,內(nèi)存中的索引工作是最小程度占用內(nèi)存并使整體時(shí)間減少,這種關(guān)系構(gòu)建在磁盤內(nèi)存的基礎(chǔ)上,在索引時(shí)不需要保存精確的數(shù)值,內(nèi)在的存儲(chǔ)能夠?yàn)樵M指明方向,必要的時(shí)候可以對(duì)這些指針進(jìn)行查看以便能夠獲得精確的數(shù)值,這種做法有以下幾種優(yōu)勢(shì):第一,通過單一元組內(nèi)部指針就能夠查找到其和內(nèi)在的精確數(shù)值,在一定程度上能夠減少磁盤索引的實(shí)際大小。第二,在對(duì)長(zhǎng)段字節(jié)索引時(shí)可以將長(zhǎng)段字節(jié)進(jìn)行壓縮,使搜索變得容易。第三,當(dāng)需要更新磁盤中的索引時(shí),可移動(dòng)的指針價(jià)值會(huì)低于移動(dòng)屬性數(shù)值。第四,獨(dú)立元組指針可以對(duì)內(nèi)部任意字段展開訪問,索引中使用特別的方式多屬性要求將會(huì)變少。

2.2哈希索引

這種索引方式會(huì)對(duì)哈希函數(shù)進(jìn)行定義,使用系統(tǒng)中數(shù)據(jù)搜索將其傳送到哈希函數(shù)相匹配的哈希數(shù)值進(jìn)行計(jì)算,將索引項(xiàng)目同匹配的哈希數(shù)值在某種程度上建立聯(lián)系。因?yàn)閮?chǔ)存不同的哈希數(shù)值對(duì)應(yīng)的索引數(shù)據(jù)地址通常是線性變化的,因此使用這種方式能夠更加迅速的找出不同哈希數(shù)值的第一個(gè)地址,通過哈希索引方式完成數(shù)據(jù)的準(zhǔn)確查找往往只用常數(shù)復(fù)雜的時(shí)間。對(duì)不同的數(shù)據(jù)進(jìn)行索引通常會(huì)獲得相同的答案,因此需要對(duì)不同的哈希值設(shè)置動(dòng)態(tài)數(shù)據(jù)表,用來存儲(chǔ)對(duì)應(yīng)的哈希數(shù)據(jù)搜索記錄。想要設(shè)置一條索引時(shí),在其中運(yùn)用哈希函數(shù)就可以輕易得到對(duì)應(yīng)的數(shù)值,通過獲取的數(shù)值快速找到哈希值數(shù)據(jù)庫(kù)中的第一個(gè)地址,將地址信息傳送到數(shù)據(jù)鏈中。如果想要通過這種方式尋找特定的信息時(shí),可以對(duì)索引中存在的數(shù)值使用哈希函數(shù)獲得哈希數(shù)值,通過這個(gè)數(shù)值找到對(duì)應(yīng)的第一個(gè)地址,在數(shù)據(jù)鏈中找到想要獲得的真正地址數(shù)據(jù)。日常中對(duì)哈希索引進(jìn)行建立和維護(hù)并不困難,但選擇正確的哈希函數(shù)卻十分困難,當(dāng)哈希函數(shù)中的哈希數(shù)值過小,很可能會(huì)使數(shù)據(jù)鏈變長(zhǎng),最終導(dǎo)致數(shù)據(jù)鏈循環(huán)時(shí)間過久,工作效率降低。

2.3T樹索引

人們?cè)谶^去使用的大多數(shù)磁盤中的數(shù)據(jù)庫(kù)都是運(yùn)用B樹這種索引方式,使用B樹這種索引方式對(duì)數(shù)據(jù)進(jìn)行查找能夠在一定程度上使磁盤實(shí)際查找次數(shù)得到減少,提升磁盤內(nèi)部的I/0效率。在內(nèi)部存儲(chǔ)數(shù)據(jù)中使用B樹方式,會(huì)使數(shù)據(jù)庫(kù)中實(shí)際的覆蓋比例降低?,F(xiàn)階段,內(nèi)部存儲(chǔ)數(shù)據(jù)中使用較多的索引是將B樹同AVL樹兩種相融合最終形成的T形樹。這種T形樹定點(diǎn)中有數(shù)據(jù)、指針兩種區(qū)域,其中數(shù)據(jù)區(qū)域又包括大量的目標(biāo),即按照一定順序組合不同的重要數(shù)值,指針區(qū)域包括一個(gè)父定點(diǎn)指向和兩個(gè)子定點(diǎn)指向,定點(diǎn)有著邊界數(shù)值(GLB)和邊界數(shù)值(LUB)。從內(nèi)部定點(diǎn)角度說,GLB數(shù)值是進(jìn)行相關(guān)操作時(shí)上一定點(diǎn)中的最大數(shù)據(jù),LUB數(shù)值是進(jìn)行相關(guān)操作時(shí)下一定點(diǎn)中的最小數(shù)據(jù)。T形樹是一種樹形結(jié)構(gòu),具備優(yōu)秀的二叉索引屬性,在其內(nèi)部獨(dú)立定點(diǎn)中存在不同的數(shù)據(jù),同時(shí)具備著不錯(cuò)的保存修改功能。T樹定點(diǎn)還具有兩種屬性:最小和最大兩種充滿度,充滿度含義為定點(diǎn)中所有信息值的數(shù)量。T樹在不同定點(diǎn)中存儲(chǔ)資料,避免出現(xiàn)大量資料在定點(diǎn)中保存導(dǎo)致數(shù)據(jù)范圍覆蓋比例小的狀況。定點(diǎn)中數(shù)據(jù)保存方式使樹形結(jié)構(gòu)查詢數(shù)據(jù)總量變小,因?yàn)門樹型是AVL樹型的優(yōu)化,具備后者的平衡優(yōu)勢(shì),提升實(shí)際索引功效。在使用T樹這種方式搜索時(shí),主要索引操作有:中序遍歷、平衡、旋轉(zhuǎn)及定點(diǎn)維護(hù)。哈希索引在查找數(shù)值時(shí)速度相對(duì)較快,T樹這種索引方式具備樹形索引本身的二叉優(yōu)勢(shì),且內(nèi)部設(shè)計(jì)擁有良好的存儲(chǔ)屬性,這兩種索引方式如今應(yīng)用均較為頻繁。

2.4數(shù)組索引

用戶想要在短暫時(shí)間內(nèi)查詢到需要的數(shù)據(jù),索引是數(shù)據(jù)查詢中的必備條件。內(nèi)部存儲(chǔ)數(shù)據(jù)中的索引不能夠保存精確的數(shù)據(jù),存儲(chǔ)時(shí)將信息向元組指引,如果有需求可以通過這些指引獲得數(shù)值。將數(shù)組用作一種索引結(jié)構(gòu)優(yōu)勢(shì)為占用相對(duì)較小的內(nèi)部空間,內(nèi)部構(gòu)成并不復(fù)雜,能夠在短暫時(shí)間完成搜索。這種方式同樣有一些缺點(diǎn),在數(shù)據(jù)變換時(shí)移動(dòng)的方式為O(n),在不間斷移動(dòng)的環(huán)境中效果相對(duì)較低,如果查詢的背景為相對(duì)靜止,這種方式為最優(yōu)的選擇。數(shù)據(jù)索引過程中使用B樹結(jié)構(gòu),受其自身屬性影響在搜索時(shí)會(huì)接觸少量的定點(diǎn)。大多數(shù)系統(tǒng)運(yùn)行中將B樹優(yōu)化為B+樹,這種方式能夠?qū)⑷繑?shù)據(jù)存儲(chǔ)在內(nèi)部樹枝節(jié)點(diǎn)位置,但從內(nèi)部存儲(chǔ)數(shù)據(jù)角度思考,B樹結(jié)構(gòu)優(yōu)勢(shì)大于B+樹結(jié)構(gòu),這是因?yàn)閮?nèi)部存儲(chǔ)時(shí)將數(shù)據(jù)分散保存會(huì)造成空間的浪費(fèi)。B樹中內(nèi)部存儲(chǔ)的利用效果較好,因此在內(nèi)部存儲(chǔ)數(shù)據(jù)時(shí)多數(shù)使用這種方式。哈希結(jié)構(gòu)連接多用于數(shù)據(jù)內(nèi)部存儲(chǔ)平穩(wěn)環(huán)境中,它是一種相對(duì)靜止的結(jié)構(gòu)工作速度較快,但這種優(yōu)勢(shì)也對(duì)其工作帶來一定局限,這種結(jié)構(gòu)只可以在靜態(tài)環(huán)境中使用,如果背景轉(zhuǎn)換為動(dòng)態(tài)它將不會(huì)運(yùn)行,在補(bǔ)充哈希數(shù)據(jù)表格時(shí)需要嚴(yán)格參考其設(shè)定的大小,如果預(yù)計(jì)的數(shù)值過小運(yùn)行的效果將會(huì)大幅度下降,如果數(shù)值過大將會(huì)浪費(fèi)大量的運(yùn)行空間。能夠擴(kuò)展的哈希索引使用哈希動(dòng)態(tài)表格,因此并不能知道設(shè)定的大小,一個(gè)哈希定點(diǎn)能夠存儲(chǔ)不同的數(shù)據(jù),如果容量已滿將會(huì)自動(dòng)形成兩個(gè)定點(diǎn)。

結(jié)論:

綜上所述,記錄數(shù)據(jù)組織結(jié)構(gòu)和索引數(shù)據(jù)結(jié)構(gòu)是內(nèi)存數(shù)據(jù)庫(kù)中重要的組成部分,在實(shí)際應(yīng)用的過程中,技術(shù)人員必須要根據(jù)實(shí)際情況來對(duì)內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行調(diào)整和完善;同時(shí),技術(shù)人員在使用內(nèi)存數(shù)據(jù)庫(kù)的同時(shí),還要配以磁盤數(shù)據(jù)庫(kù)作為備份數(shù)據(jù)庫(kù),進(jìn)而更好地防止數(shù)據(jù)出現(xiàn)丟失、泄露等嚴(yán)重問題。

作者:陳露娟 令狐東楊 單位:貴州輕工職業(yè)技術(shù)學(xué)院