<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Perst嵌入式數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)分析與研究

          Perst嵌入式數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)分析與研究

          作者: 時(shí)間:2012-03-20 來(lái)源:網(wǎng)絡(luò) 收藏

          對(duì)于這種類型的索引值,value占用多大的空間,是根據(jù)數(shù)值類型實(shí)際占用的空間進(jìn)行分配的。

          3)索引值的類型是字符串或字節(jié)數(shù)組類型

          對(duì)于這種類型的索引結(jié)構(gòu),在保存索引值的時(shí)候并不只是保存字符串或字節(jié)數(shù)組,還會(huì)保存字符串的一些信息,如字符串的字符個(gè)數(shù),字符串在該節(jié)點(diǎn)中存放的相對(duì)位置。以O(shè)ID1,“teacher”>為例,其如下圖所示:

          圖5.1.3 索引類型是字符串的節(jié)點(diǎn)


          從以上三種不同類型的節(jié)點(diǎn),可以看出節(jié)點(diǎn)存儲(chǔ)結(jié)構(gòu)的共同點(diǎn):1)節(jié)點(diǎn)的前4個(gè)字節(jié)保存該節(jié)點(diǎn)的基本信息;2)key,value>的存放:一個(gè)從節(jié)點(diǎn)頁(yè)的開(kāi)頭按照其插入的順序存放(從前向后),另一個(gè)則是從節(jié)點(diǎn)頁(yè)的末尾開(kāi)始存放(從后向前)。這樣處理的好處是可以很快地從節(jié)點(diǎn)中取出key,value>,不用經(jīng)過(guò)很復(fù)雜的計(jì)算過(guò)程,節(jié)省了設(shè)備資源的使用。

          5.2 在內(nèi)存中的重建

          Perst將整個(gè)的結(jié)構(gòu)保存在數(shù)據(jù)庫(kù)文件中,當(dāng)程序?qū)?shù)據(jù)操作的時(shí)候如何將整個(gè)B+樹裝入內(nèi)存呢?

          Perst中有一個(gè)可以引用所有記錄對(duì)象的Root Object的類,通過(guò)這個(gè)類Perst除了可以動(dòng)態(tài)的加載B+樹類對(duì)象,而且可以很快的從數(shù)據(jù)庫(kù)文件中定位B+樹根節(jié)點(diǎn)的文件存儲(chǔ)位置。

          Perst找到相應(yīng)的B+樹根節(jié)點(diǎn)的時(shí)候,會(huì)一次性的從數(shù)據(jù)庫(kù)文件中讀取一個(gè)節(jié)點(diǎn)大?。?K)的數(shù)據(jù)到內(nèi)存中。由于在節(jié)點(diǎn)構(gòu)建的時(shí)候索引值是順序存放的,因此程序可以用二分查找的算法在節(jié)點(diǎn)中查找符合條件的索引值,如果找到就可以定位到此節(jié)點(diǎn)的子節(jié)點(diǎn)或者是和索引值對(duì)應(yīng)的記錄對(duì)象。如果節(jié)點(diǎn)是葉節(jié)點(diǎn),程序就可以從這個(gè)節(jié)點(diǎn)中找出和索引值對(duì)應(yīng)的對(duì)象的OID,通過(guò)OID,Perst就可以從文件中讀取到整個(gè)記錄的字節(jié)數(shù)組形式,通過(guò)類對(duì)象的動(dòng)態(tài)加載機(jī)制可以把字節(jié)數(shù)組還原為記錄對(duì)象的形式。如果是內(nèi)部節(jié)點(diǎn),根據(jù)內(nèi)部節(jié)點(diǎn)的OID,Perst會(huì)將內(nèi)部節(jié)點(diǎn)的數(shù)據(jù)讀取到內(nèi)存中。這些被加載到內(nèi)存中的數(shù)據(jù)會(huì)臨時(shí)的存放在一個(gè)對(duì)象緩沖區(qū),當(dāng)需要的時(shí)候就可以直接從對(duì)象索引區(qū)讀取數(shù)據(jù),而不用重復(fù)的進(jìn)行I/O操作。只有對(duì)象緩沖區(qū)滿時(shí),Perst采用LRU置換機(jī)制把內(nèi)存中的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)文件中。

          6結(jié)論

          本文著重分析了Perst的文件存儲(chǔ)結(jié)構(gòu)。B+樹結(jié)構(gòu)的設(shè)計(jì)使其在嵌入式設(shè)備上減少了對(duì)磁盤的I/O操作,適應(yīng)了嵌入式設(shè)備資源受限的特點(diǎn)。

          參考文獻(xiàn):

          [1]Ramez Elmasri,Shamkant B.Navathe數(shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)初級(jí)篇[M].北京:人民郵電出版社,2007.305-355.

          [2]東緣.Perst獲Android平臺(tái)兼容性驗(yàn)證[EB/OL]. http://webservices.ctocio.com.cn/wsopen/114/7766114.shtml.

          [3] Abraham Silberschatz,Henry F.Korth,S.Sudarshan.數(shù)據(jù)庫(kù)系統(tǒng)概念[M].北京:機(jī)械工業(yè)出版社,2006.274-339.


          上一頁(yè) 1 2 3 4 下一頁(yè)

          關(guān)鍵詞: 嵌入式數(shù)據(jù)庫(kù) 存儲(chǔ)結(jié)構(gòu) B+樹

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();