王淑梅
摘 要:內(nèi)存數(shù)據(jù)庫是適應(yīng)互聯(lián)網(wǎng)技術(shù)以及大數(shù)據(jù)的發(fā)展需求形成的,同時硬件技術(shù)的發(fā)展降低了內(nèi)存的制造成本,也為內(nèi)存數(shù)據(jù)庫的發(fā)展創(chuàng)造了更好的條件。目前已經(jīng)研發(fā)出的各種內(nèi)存數(shù)據(jù)庫在實際運行中發(fā)揮著良好的作用。本文將圍繞內(nèi)存數(shù)據(jù)庫的一些關(guān)鍵技術(shù)展開研究,希望能夠通過本文的分析,為數(shù)據(jù)庫的建設(shè)和發(fā)展提供更好廣闊的空間。
關(guān)鍵詞:內(nèi)存數(shù)據(jù)庫;關(guān)鍵技術(shù);概論;特點
數(shù)據(jù)庫技術(shù)長期以來扮演著重要的角色,并且具有強大的性能以及完備的事務(wù)處理能力,在各行各業(yè)中有著廣泛的應(yīng)用。為了實現(xiàn)數(shù)據(jù)庫更多的價值,有必要加強對內(nèi)存數(shù)據(jù)庫的持久化策略的研究,因而對數(shù)據(jù)庫相關(guān)技術(shù)的研究也就提出了新的要求。并且,隨著科技的進步和信息技術(shù)的不斷發(fā)展,數(shù)據(jù)庫的理論基礎(chǔ)也得到了進一步的豐富。
一、內(nèi)存數(shù)據(jù)庫概論及其特點
(一)內(nèi)存數(shù)據(jù)庫概論
內(nèi)存數(shù)據(jù)庫是一種能夠進行直接操作的數(shù)據(jù)庫,它是將相關(guān)的數(shù)據(jù)存儲在內(nèi)存之中。在計算機技術(shù)中,對內(nèi)存數(shù)據(jù)庫進行了規(guī)范的定義:設(shè)定數(shù)據(jù)庫系統(tǒng)DBS,該數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫是DB,DBM(t)代表t時刻中出現(xiàn)在DB中的數(shù)據(jù)集合,AT(t)代表t時期時處于活動狀態(tài)的事物集合,Dt(T)則是事物集在t時刻進行操作的數(shù)據(jù)集。在滿足運行需要的情況下,任一時刻t,滿足T隸屬于AT(t)且Dt(T)隸屬于DBM(t),則將DBS成為一個內(nèi)存數(shù)據(jù)庫系統(tǒng),一般用MMDBS簡稱;同時稱DB為一個內(nèi)存數(shù)據(jù)庫,并簡稱為MMDB。
(二)內(nèi)存數(shù)據(jù)庫的特點
在分析內(nèi)存數(shù)據(jù)庫特點的時候,可以從結(jié)構(gòu)、性能等方面展開分析。首先,內(nèi)存數(shù)據(jù)庫擁有常駐的內(nèi)存;在結(jié)構(gòu)上其設(shè)計的目標(biāo)主要是為了更好的提高CPU的效率和內(nèi)存;在性能方面,MMDB性能非常高,主要體現(xiàn)在對事物的處理不用訪問相應(yīng)的磁盤。
二、內(nèi)存數(shù)據(jù)庫的存儲結(jié)構(gòu)
內(nèi)存數(shù)據(jù)庫存儲過程中所需要的存取時間較短,甚至?xí)_到10-8量級的標(biāo)準(zhǔn)。在訪問時間上內(nèi)存的順序訪問和隨機訪問是一樣的,因此系統(tǒng)所追求的就是盡可能的提高內(nèi)存空間的利用效率。內(nèi)存在數(shù)據(jù)物力組織方面大多采用區(qū)-段的模式,其中段是內(nèi)外存I/O的單位,也是內(nèi)存空間分配和數(shù)據(jù)庫恢復(fù)的單位。這種關(guān)系模型主要是實現(xiàn)對存儲空間的劃分,通過將存儲空間劃分為相應(yīng)的區(qū),再將區(qū)劃分為段,形成獨立的存儲關(guān)系。
三、索引技術(shù)
內(nèi)存數(shù)據(jù)庫索引技術(shù)主要包括B+樹索引和T樹索引兩種形式,而全表遍歷的方式比使用索引方式效率更高,并且在操作這兩種索引技術(shù)各有優(yōu)勢。1、B+樹索引是基于二叉樹索引技術(shù)發(fā)展形成的的一種索引,該技術(shù)將節(jié)點設(shè)置為一個內(nèi)存頁面的大小,節(jié)點與節(jié)點之前按照其內(nèi)部元素的最大關(guān)鍵字從小到大排列,利用二分法在節(jié)點內(nèi)部快速的篩選出符合條件的數(shù)據(jù)。B+樹索引能夠很好的方便范圍查詢,因而能夠在磁盤數(shù)據(jù)庫中得到廣泛的應(yīng)用。但是在在內(nèi)存數(shù)據(jù)庫中,B+樹索引的最大優(yōu)勢很難得到充分的展現(xiàn),制了其在內(nèi)存數(shù)據(jù)庫中的應(yīng)用空間。2、T樹索引是一種專門針對內(nèi)存數(shù)據(jù)庫特點所設(shè)計的索引,通過采取在同一個滿的T樹節(jié)點中插入元素時的處理方式,提高了空間利用率,并且在內(nèi)存數(shù)據(jù)庫中發(fā)揮了良好的作用。
四、事務(wù)技術(shù)
事務(wù)是用戶自定義的一個數(shù)據(jù)操作集合,如果對數(shù)據(jù)的執(zhí)行出現(xiàn)問題,就會造成整個集合中的所有操作的撤銷。只有在數(shù)據(jù)庫中只有完成了事務(wù)的提交,才能保證事務(wù)相關(guān)的數(shù)據(jù)的安全性和準(zhǔn)確性。事務(wù)的備份恢復(fù)策略是確保數(shù)據(jù)庫重啟后能夠保持一致的重要策略。數(shù)據(jù)一致性是事務(wù)的備份與恢復(fù)機制的主要目的,而事務(wù)的備份與恢復(fù)機制通常情況下包含正常運行時的備份恢復(fù)與意外重啟后的恢復(fù)兩種。1、數(shù)據(jù)庫正常運行的情況下,可以設(shè)置相應(yīng)大的回滾區(qū)對事務(wù)進行回滾。與此同時,還有影子內(nèi)存的備份恢復(fù)的策略,這種操作是指事務(wù)中的所有操作都在影子內(nèi)存中進行,通過影子內(nèi)存實現(xiàn)對數(shù)據(jù)的替換,如果這種功能運行不正確,就會導(dǎo)致影子內(nèi)存丟失,從而能夠很好的減小事務(wù)回滾的開銷。2、當(dāng)數(shù)據(jù)庫出現(xiàn)意外重啟的情況后,日志的策略可以實現(xiàn)對數(shù)據(jù)的恢復(fù),現(xiàn)在使用比較常見的日志策略有Undo日志、Redo日志與Undo/Redo日志三種。
五、并發(fā)控制技術(shù)
并發(fā)控制技術(shù)是數(shù)據(jù)庫中的關(guān)鍵技術(shù)之一。根據(jù)事務(wù)的執(zhí)行順序,可以分為串行化事務(wù)和并行化事務(wù),指一個事務(wù)執(zhí)行完成之后直接執(zhí)行下一個事務(wù)的稱為串行化事務(wù),以同一時間接收多個事務(wù)的則稱為并行化事務(wù)。并行事務(wù)可以有效的提高資源的利用率,因而得到了廣泛的應(yīng)用,但同時也存在數(shù)據(jù)庫資源訪問沖突的問題,最終可能會引發(fā)丟失修改數(shù)據(jù)、讀“臟”數(shù)據(jù)、數(shù)據(jù)不可重復(fù)讀取的問題。基于鎖的并發(fā)控制技術(shù)、基于時間戳的并發(fā)控制技術(shù)以及基于有效檢查點的并發(fā)控制技術(shù)這三種技術(shù)是根據(jù)事務(wù)的并發(fā)控制技術(shù)研發(fā)的控制技術(shù),結(jié)合不同級別的封鎖協(xié)議,實現(xiàn)了數(shù)據(jù)的可重復(fù)讀取。鎖的粒度是內(nèi)存數(shù)據(jù)庫與磁盤數(shù)據(jù)庫最顯著的區(qū)別,細(xì)粒度鎖是指對數(shù)據(jù)庫中記錄、塊、或者索引節(jié)點進行加鎖,在內(nèi)存數(shù)據(jù)中,通過采用不同程度的粒度鎖,可以有效縮短事務(wù)的處理時間,便于進行事務(wù)處理。下面針對兩種常用的粒度鎖進行細(xì)致的分析。
(一)多粒度鎖
內(nèi)存數(shù)據(jù)不但能夠提供系統(tǒng)級或表級鎖,還能提供更加精細(xì)的塊級鎖與行級鎖,并且在實際的運行過程中,可以根據(jù)需要加鎖的對象以及數(shù)據(jù)庫系統(tǒng)中并發(fā)事務(wù)的總量,通過綜合的分析和研究選擇最佳粒度的鎖。在對內(nèi)存數(shù)據(jù)庫加鎖的時候,要堅持優(yōu)先選擇粗粒度鎖的原則,并且在數(shù)據(jù)庫并發(fā)事務(wù)較少的情況下進行優(yōu)化選擇。如果并發(fā)事務(wù)較多,則需要根據(jù)加鎖對象的級別選擇同等級別的鎖。多粒度鎖的方式導(dǎo)致了在對某對象顯式加鎖的同時還可能對其他對象隱式加鎖,隱式加鎖按照樹形加鎖協(xié)議進行加鎖。多粒度加鎖結(jié)構(gòu)中每一個節(jié)點都與數(shù)據(jù)庫的邏輯等級進行對應(yīng),并且每一個節(jié)點都可以顯式的進行加鎖,提高了數(shù)據(jù)庫的并發(fā)性。由于顯式鎖和隱式鎖有著完全相同的作用,所以在對某節(jié)點顯式加鎖之前需要遍歷其所有的子孫節(jié)點判斷在子孫節(jié)點上是否已顯式的加上了不相容的鎖。所以在此基礎(chǔ)上又提出了意向鎖的改進方案。
(二)意向鎖
意向鎖也可以稱為是一種邏輯規(guī)則,并且在該規(guī)則中明確了當(dāng)向某個節(jié)點加上意向鎖時,就相當(dāng)于顯式的對當(dāng)前節(jié)點的所有子孫節(jié)點進行了加鎖。這樣通過一個節(jié)點上意向鎖的種類,就可以判斷其子孫節(jié)點的加鎖情況,而無需對子孫節(jié)點進行遍歷。而對于一個節(jié)點顯式加鎖之前,需要對該節(jié)點的所有父親節(jié)點加意向鎖。意向鎖有三種:意向共享鎖(IS鎖)、意向排它鎖(IX鎖)、共享意向排它鎖(SIX鎖),當(dāng)向一個節(jié)點加IS鎖時,等價于在其所有子孫節(jié)點上顯式的加共享鎖,當(dāng)向一個節(jié)點加IX鎖時,可以在其子孫節(jié)點上加共享鎖和排它鎖,若向一個節(jié)點加SIX鎖,相當(dāng)于對該節(jié)點的直接孩子節(jié)點加共享鎖,而對其余節(jié)點加互斥鎖。
六、結(jié)語
隨著內(nèi)存數(shù)據(jù)庫的應(yīng)用范圍逐漸擴大,人們對數(shù)據(jù)庫的研究也逐漸深入,通過對實際的應(yīng)用效果進行深入的分析,不斷的完善著數(shù)據(jù)庫技術(shù)。通過對數(shù)據(jù)庫技術(shù)中的關(guān)鍵技術(shù)進行分析,能發(fā)現(xiàn)其在數(shù)據(jù)處理方面存在的優(yōu)勢,因而對數(shù)據(jù)庫技術(shù)的應(yīng)用也就成為了一種發(fā)展方向。在實際的研究和運行中,結(jié)合數(shù)據(jù)庫技術(shù)的特點,熟悉其中的索引技術(shù)、事務(wù)技術(shù)、并發(fā)控制技術(shù)等關(guān)鍵技術(shù),深入分析,為數(shù)據(jù)庫的發(fā)展提供更有利的條件。
參考文獻:
[1]張浩陽.內(nèi)存數(shù)據(jù)庫關(guān)鍵技術(shù)的研究與設(shè)計[D].四川師范大學(xué),2016.
[2]郭一帆,陳亞峰.內(nèi)存數(shù)據(jù)庫關(guān)鍵技術(shù)研究[J].數(shù)字技術(shù)與應(yīng)用,2013,05:141.
[3]段敏娟,何強.淺析內(nèi)存數(shù)據(jù)庫中的幾種關(guān)鍵技術(shù)[J].技術(shù)與市場,2015,01:69.