前言:想要寫出一篇引人入勝的文章?我們特意為您整理了內(nèi)存數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)研究范文,希望能給你帶來靈感和參考,敬請閱讀。
內(nèi)存數(shù)據(jù)庫在數(shù)據(jù)密集型行業(yè)領(lǐng)域的日常工作中起到了十分關(guān)鍵的作用,能夠?qū)崟r、高效地滿足技術(shù)人員對于數(shù)據(jù)的訪問需求。本文分別對內(nèi)存數(shù)據(jù)庫的記錄數(shù)據(jù)組織結(jié)構(gòu)以及內(nèi)存數(shù)據(jù)庫的索引數(shù)據(jù)結(jié)構(gòu)進行了詳細(xì)地說明和分析,進而對內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)進行更好地掌握,來不斷提升內(nèi)存數(shù)據(jù)庫的性能。
1內(nèi)存數(shù)據(jù)庫的記錄數(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ù)庫,而技術(shù)人員將數(shù)據(jù)存儲到內(nèi)存數(shù)據(jù)庫中時,往往使用的是二維關(guān)系表來進行的,因此,二維關(guān)系表在當(dāng)前的內(nèi)存數(shù)據(jù)庫中也得到了廣泛的應(yīng)用。一方面,利用二維關(guān)系表保存數(shù)據(jù)可以維護數(shù)據(jù)的描述信息。描述信息包含了數(shù)據(jù)的字段名、表名、索引、類型等內(nèi)容,這些信息是用于描述數(shù)據(jù)在關(guān)系表中的信息。另一方面,利用二維關(guān)系表保存數(shù)據(jù)可以維護數(shù)據(jù)的記錄信息。記錄信息指的是數(shù)據(jù)被存儲在關(guān)系表中的每一條記錄內(nèi)容。這類基于關(guān)系表的內(nèi)存數(shù)據(jù)庫通常會采用區(qū)段式的數(shù)據(jù)組織結(jié)構(gòu),來將內(nèi)存數(shù)據(jù)庫的共享內(nèi)存劃分為若干個不同的分區(qū),在每一個分區(qū)中存儲一個內(nèi)存數(shù)據(jù)庫中的關(guān)系;而每一個分區(qū)又要分成若干個長度相等的段,這些段就是內(nèi)存數(shù)據(jù)庫共享內(nèi)存進行動態(tài)分配的一個單位,而內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù),就是存儲在段中的一個記錄塊當(dāng)中。在內(nèi)存數(shù)據(jù)庫中采取區(qū)段式的數(shù)據(jù)組織結(jié)構(gòu),需要對每一項數(shù)據(jù)都標(biāo)志其區(qū)號、斷號以及槽號。這樣一來,就可以快速查詢到數(shù)據(jù)在內(nèi)存數(shù)據(jù)庫中的具體位置,大大提升了數(shù)據(jù)查詢的效率。值得注意的是,數(shù)據(jù)的分區(qū)號必須對應(yīng)其關(guān)系表名;而數(shù)據(jù)的槽號要對數(shù)控在段內(nèi)的偏移和長度進行記錄。
1.2基于對象的數(shù)據(jù)結(jié)構(gòu)
近年來,基于對象的數(shù)據(jù)結(jié)構(gòu)技術(shù)不斷進行發(fā)展,因此在內(nèi)存數(shù)據(jù)庫中也得到了更加廣泛的應(yīng)用,與區(qū)段式的數(shù)據(jù)組織結(jié)構(gòu)成為了內(nèi)存數(shù)據(jù)庫中兩種重要的數(shù)據(jù)結(jié)構(gòu)。在內(nèi)存數(shù)據(jù)庫中使用基于對象的數(shù)據(jù)組織結(jié)構(gòu)時,無論是對數(shù)據(jù)的存儲、記錄,還是對數(shù)據(jù)的索引,都是要通過對象來完成。因此,基于對象的數(shù)據(jù)組織結(jié)構(gòu),是以對象為單位,來將內(nèi)存數(shù)據(jù)庫的共享內(nèi)存進行分配,主要記錄了對象與對象之間,以及索引對象之間的聯(lián)系,整個內(nèi)存數(shù)據(jù)庫的運行都是通過對象自身來維持的?;诖?,在內(nèi)存數(shù)據(jù)庫中建立基于對象的數(shù)據(jù)組織結(jié)構(gòu)時,需要利用指針來維持對象之間的聯(lián)系,進而達到對數(shù)據(jù)進行存儲、記錄、處理以及索引等目的。目前,在內(nèi)存數(shù)據(jù)庫中應(yīng)用基于對象的數(shù)據(jù)組織結(jié)構(gòu),主要是通過對象之間的聯(lián)系,來提升對于數(shù)據(jù)管理工作的效率和質(zhì)量。相比較于區(qū)段式的數(shù)據(jù)組織結(jié)構(gòu)來說,基于對象的數(shù)據(jù)組織結(jié)構(gòu)更加簡單,只要為各項數(shù)據(jù)及其記錄建立相應(yīng)的對象,就能夠?qū)崿F(xiàn)對數(shù)據(jù)的管理工作。
1.3影子內(nèi)存式數(shù)據(jù)結(jié)構(gòu)
影子內(nèi)存式數(shù)據(jù)組織結(jié)構(gòu)在內(nèi)存數(shù)據(jù)庫中主要包含了兩個部分,第一個部分就是數(shù)據(jù)在內(nèi)存數(shù)據(jù)庫中的主拷貝;而另外一個部分,就是數(shù)據(jù)在內(nèi)存數(shù)據(jù)庫中的影子拷貝。在內(nèi)存數(shù)據(jù)的日常運行當(dāng)中,每次技術(shù)人員在對數(shù)據(jù)進行查詢時,都會同時產(chǎn)生兩個地址,一個在內(nèi)存數(shù)據(jù)庫的主拷貝當(dāng)中,另一個是在內(nèi)存數(shù)據(jù)庫的影子內(nèi)存當(dāng)中,所產(chǎn)生的雙地址先使對內(nèi)存數(shù)據(jù)庫的影子內(nèi)存進行試探,在試探失敗的情況下再對內(nèi)粗?jǐn)?shù)據(jù)庫的主拷貝進行試探。除此之外,在內(nèi)存數(shù)據(jù)庫中建立影子內(nèi)存式數(shù)據(jù)組織結(jié)構(gòu),在數(shù)據(jù)進行更新時,主要環(huán)節(jié)和流程都是在內(nèi)存數(shù)據(jù)庫的影子內(nèi)存當(dāng)中進行,并在內(nèi)存數(shù)據(jù)庫的活動日志中進行記錄;同時,在數(shù)據(jù)進行提交時,還會在內(nèi)存數(shù)據(jù)庫的影子內(nèi)存中產(chǎn)生一個后映像,并拷貝到內(nèi)存數(shù)據(jù)庫的主拷貝當(dāng)中。首先,影子內(nèi)存式數(shù)據(jù)組織結(jié)構(gòu)將后映像與用戶區(qū)進行了整合,減少了數(shù)據(jù)的日志緩沖區(qū),提升了數(shù)據(jù)管理工作的效率。其次,影子內(nèi)存式數(shù)據(jù)組織結(jié)構(gòu)在內(nèi)存數(shù)據(jù)庫產(chǎn)生故障,或是數(shù)據(jù)錯誤時,只刪除影子內(nèi)存中的數(shù)據(jù)就可以,使數(shù)據(jù)管理工作更加便捷。
2內(nèi)存數(shù)據(jù)庫的索引數(shù)據(jù)結(jié)構(gòu)
2.1磁盤和內(nèi)存
通常情況下,數(shù)據(jù)庫內(nèi)部存儲的索引構(gòu)成同磁盤系統(tǒng)中的索引構(gòu)成存在差異,磁盤中的索引工作是對最小磁盤多次查找及對其內(nèi)部空間的實際占用,內(nèi)存中的索引工作不會對磁盤最小化進行多次查找,工作的重心全部放在內(nèi)存中。因此,內(nèi)存中的索引工作是最小程度占用內(nèi)存并使整體時間減少,這種關(guān)系構(gòu)建在磁盤內(nèi)存的基礎(chǔ)上,在索引時不需要保存精確的數(shù)值,內(nèi)在的存儲能夠為元組指明方向,必要的時候可以對這些指針進行查看以便能夠獲得精確的數(shù)值,這種做法有以下幾種優(yōu)勢:第一,通過單一元組內(nèi)部指針就能夠查找到其和內(nèi)在的精確數(shù)值,在一定程度上能夠減少磁盤索引的實際大小。第二,在對長段字節(jié)索引時可以將長段字節(jié)進行壓縮,使搜索變得容易。第三,當(dāng)需要更新磁盤中的索引時,可移動的指針價值會低于移動屬性數(shù)值。第四,獨立元組指針可以對內(nèi)部任意字段展開訪問,索引中使用特別的方式多屬性要求將會變少。
2.2哈希索引
這種索引方式會對哈希函數(shù)進行定義,使用系統(tǒng)中數(shù)據(jù)搜索將其傳送到哈希函數(shù)相匹配的哈希數(shù)值進行計算,將索引項目同匹配的哈希數(shù)值在某種程度上建立聯(lián)系。因為儲存不同的哈希數(shù)值對應(yīng)的索引數(shù)據(jù)地址通常是線性變化的,因此使用這種方式能夠更加迅速的找出不同哈希數(shù)值的第一個地址,通過哈希索引方式完成數(shù)據(jù)的準(zhǔn)確查找往往只用常數(shù)復(fù)雜的時間。對不同的數(shù)據(jù)進行索引通常會獲得相同的答案,因此需要對不同的哈希值設(shè)置動態(tài)數(shù)據(jù)表,用來存儲對應(yīng)的哈希數(shù)據(jù)搜索記錄。想要設(shè)置一條索引時,在其中運用哈希函數(shù)就可以輕易得到對應(yīng)的數(shù)值,通過獲取的數(shù)值快速找到哈希值數(shù)據(jù)庫中的第一個地址,將地址信息傳送到數(shù)據(jù)鏈中。如果想要通過這種方式尋找特定的信息時,可以對索引中存在的數(shù)值使用哈希函數(shù)獲得哈希數(shù)值,通過這個數(shù)值找到對應(yīng)的第一個地址,在數(shù)據(jù)鏈中找到想要獲得的真正地址數(shù)據(jù)。日常中對哈希索引進行建立和維護并不困難,但選擇正確的哈希函數(shù)卻十分困難,當(dāng)哈希函數(shù)中的哈希數(shù)值過小,很可能會使數(shù)據(jù)鏈變長,最終導(dǎo)致數(shù)據(jù)鏈循環(huán)時間過久,工作效率降低。
2.3T樹索引
人們在過去使用的大多數(shù)磁盤中的數(shù)據(jù)庫都是運用B樹這種索引方式,使用B樹這種索引方式對數(shù)據(jù)進行查找能夠在一定程度上使磁盤實際查找次數(shù)得到減少,提升磁盤內(nèi)部的I/0效率。在內(nèi)部存儲數(shù)據(jù)中使用B樹方式,會使數(shù)據(jù)庫中實際的覆蓋比例降低?,F(xiàn)階段,內(nèi)部存儲數(shù)據(jù)中使用較多的索引是將B樹同AVL樹兩種相融合最終形成的T形樹。這種T形樹定點中有數(shù)據(jù)、指針兩種區(qū)域,其中數(shù)據(jù)區(qū)域又包括大量的目標(biāo),即按照一定順序組合不同的重要數(shù)值,指針區(qū)域包括一個父定點指向和兩個子定點指向,定點有著邊界數(shù)值(GLB)和邊界數(shù)值(LUB)。從內(nèi)部定點角度說,GLB數(shù)值是進行相關(guān)操作時上一定點中的最大數(shù)據(jù),LUB數(shù)值是進行相關(guān)操作時下一定點中的最小數(shù)據(jù)。T形樹是一種樹形結(jié)構(gòu),具備優(yōu)秀的二叉索引屬性,在其內(nèi)部獨立定點中存在不同的數(shù)據(jù),同時具備著不錯的保存修改功能。T樹定點還具有兩種屬性:最小和最大兩種充滿度,充滿度含義為定點中所有信息值的數(shù)量。T樹在不同定點中存儲資料,避免出現(xiàn)大量資料在定點中保存導(dǎo)致數(shù)據(jù)范圍覆蓋比例小的狀況。定點中數(shù)據(jù)保存方式使樹形結(jié)構(gòu)查詢數(shù)據(jù)總量變小,因為T樹型是AVL樹型的優(yōu)化,具備后者的平衡優(yōu)勢,提升實際索引功效。在使用T樹這種方式搜索時,主要索引操作有:中序遍歷、平衡、旋轉(zhuǎn)及定點維護。哈希索引在查找數(shù)值時速度相對較快,T樹這種索引方式具備樹形索引本身的二叉優(yōu)勢,且內(nèi)部設(shè)計擁有良好的存儲屬性,這兩種索引方式如今應(yīng)用均較為頻繁。
2.4數(shù)組索引
用戶想要在短暫時間內(nèi)查詢到需要的數(shù)據(jù),索引是數(shù)據(jù)查詢中的必備條件。內(nèi)部存儲數(shù)據(jù)中的索引不能夠保存精確的數(shù)據(jù),存儲時將信息向元組指引,如果有需求可以通過這些指引獲得數(shù)值。將數(shù)組用作一種索引結(jié)構(gòu)優(yōu)勢為占用相對較小的內(nèi)部空間,內(nèi)部構(gòu)成并不復(fù)雜,能夠在短暫時間完成搜索。這種方式同樣有一些缺點,在數(shù)據(jù)變換時移動的方式為O(n),在不間斷移動的環(huán)境中效果相對較低,如果查詢的背景為相對靜止,這種方式為最優(yōu)的選擇。數(shù)據(jù)索引過程中使用B樹結(jié)構(gòu),受其自身屬性影響在搜索時會接觸少量的定點。大多數(shù)系統(tǒng)運行中將B樹優(yōu)化為B+樹,這種方式能夠?qū)⑷繑?shù)據(jù)存儲在內(nèi)部樹枝節(jié)點位置,但從內(nèi)部存儲數(shù)據(jù)角度思考,B樹結(jié)構(gòu)優(yōu)勢大于B+樹結(jié)構(gòu),這是因為內(nèi)部存儲時將數(shù)據(jù)分散保存會造成空間的浪費。B樹中內(nèi)部存儲的利用效果較好,因此在內(nèi)部存儲數(shù)據(jù)時多數(shù)使用這種方式。哈希結(jié)構(gòu)連接多用于數(shù)據(jù)內(nèi)部存儲平穩(wěn)環(huán)境中,它是一種相對靜止的結(jié)構(gòu)工作速度較快,但這種優(yōu)勢也對其工作帶來一定局限,這種結(jié)構(gòu)只可以在靜態(tài)環(huán)境中使用,如果背景轉(zhuǎn)換為動態(tài)它將不會運行,在補充哈希數(shù)據(jù)表格時需要嚴(yán)格參考其設(shè)定的大小,如果預(yù)計的數(shù)值過小運行的效果將會大幅度下降,如果數(shù)值過大將會浪費大量的運行空間。能夠擴展的哈希索引使用哈希動態(tài)表格,因此并不能知道設(shè)定的大小,一個哈希定點能夠存儲不同的數(shù)據(jù),如果容量已滿將會自動形成兩個定點。
結(jié)論:
綜上所述,記錄數(shù)據(jù)組織結(jié)構(gòu)和索引數(shù)據(jù)結(jié)構(gòu)是內(nèi)存數(shù)據(jù)庫中重要的組成部分,在實際應(yīng)用的過程中,技術(shù)人員必須要根據(jù)實際情況來對內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)進行調(diào)整和完善;同時,技術(shù)人員在使用內(nèi)存數(shù)據(jù)庫的同時,還要配以磁盤數(shù)據(jù)庫作為備份數(shù)據(jù)庫,進而更好地防止數(shù)據(jù)出現(xiàn)丟失、泄露等嚴(yán)重問題。
作者:陳露娟 令狐東楊 單位:貴州輕工職業(yè)技術(shù)學(xué)院