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

          新聞中心

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

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

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

          引言

          Perst是McObject公司發(fā)布的一款非常袖珍的開源,是一個簡單,快速,便捷,面向?qū)ο螅m合java與.Net的數(shù)據(jù)庫。Perst不需要專門的編譯器與預(yù)處理器,支持ACID事務(wù)[2]。對于在資源受限的移動設(shè)備(如手機(jī),PDA等)上存儲大量數(shù)據(jù)和對數(shù)據(jù)進(jìn)行頻繁的I/O操作往往要消耗很多的設(shè)備資源。由于移動設(shè)備內(nèi)存小,性能較差,如果采用關(guān)系數(shù)據(jù)庫(如 SQLServer2000,Oracle)管理數(shù)據(jù),僅靠其有限的內(nèi)存資源是不能運行這些數(shù)據(jù)庫管理系統(tǒng)的,這樣就有必要采用一些特殊的數(shù)據(jù)庫系統(tǒng)。 Perst數(shù)據(jù)庫正是為這類設(shè)備研究開發(fā)的,它們是如何在資源受限的設(shè)備上完成大量數(shù)據(jù)的訪問操作。其實這些設(shè)備的系統(tǒng)資源主要消耗在從磁盤上讀取數(shù)據(jù)的 I/O操作。如何提供一種有效的文件存儲策略來降低對磁盤的I/O操作是軟件設(shè)計的主要任務(wù)。文章將著重介紹Perst的文件存儲策略和索引結(jié)構(gòu)[3]。

          1 Perst基本概念介紹

          1.1 頁Page

          Perst對數(shù)據(jù)庫文件的基本操作都是以頁為單位進(jìn)行的。這些基本操作包括:內(nèi)存分配,從數(shù)據(jù)庫文件中讀取數(shù)據(jù),將內(nèi)存中的數(shù)據(jù)寫入文件等。Perst一頁默認(rèn)的大小是4K。

          1.2 對象標(biāo)識符OID

          Perst創(chuàng)建的每個對象都是可以持久化的,即它可以被保存在數(shù)據(jù)庫文件中。每個持久化的對象都會用對象標(biāo)識符(OID)引用,通過對象標(biāo)識符,程序可以從數(shù)據(jù)庫文件中找到該對象在文件中實際存放位置。

          1.3 Root Object

          Perst的每個數(shù)據(jù)庫文件都必須有且只能有一個稱作Root Object的類。在這個類中定義了數(shù)據(jù)庫文件中的所有索引結(jié)構(gòu)。通過這個類,程序可以定位到數(shù)據(jù)庫文件中的所有記錄對象。

          2 數(shù)據(jù)庫Header信息的存儲格式

          Perst數(shù)據(jù)庫文件開始的第一頁中,前139個字節(jié)存放Perst數(shù)據(jù)庫使用情況和數(shù)據(jù)庫當(dāng)前狀態(tài)等Header信息。它在文件中的數(shù)據(jù)結(jié)構(gòu)如圖2.1所示。表2.1到2.4對圖2.1中Header信息中的每個數(shù)據(jù)做了詳細(xì)分析。數(shù)據(jù)意義如表所示。

          圖2.1 數(shù)據(jù)庫的Header信息

          表2.1 數(shù)據(jù)庫Header信息前3個字節(jié)意義

          01

          01

          02

          1 byte

          1 byte

          1 byte

          root數(shù)組的下標(biāo)

          數(shù)據(jù)庫文件被不正常關(guān)閉?

          數(shù)據(jù)庫版本

          表2.2數(shù)組root[0]結(jié)構(gòu)

          00 00 00 00 00 01 40 00

          00 00 00 00 00 00 10 00

          00 00 00 00 00 00 A0 00

          8 bytes

          8 bytes

          8 bytes

          database file size

          offset of object index

          offset of shadow index

          00 00 00 00 00 00 00 00

          00 00 12 00

          00 00 12 00

          8 bytes

          4 bytes

          4 bytes

          size used by objects

          size of object index

          size of object index

          00 00 10 01

          00 00 00 00

          00 00 00 02

          4 bytes

          4 bytes

          4 bytes

          used part of the index

          L1 list of free descriptors

          最后分配的位圖頁的索引

          00 00 00 00

          00 00 00 00

          00 00 00 00

          4 bytes

          4 bytes

          4 bytes

          OID of root object

          List of class descriptors

          對象索引中擴(kuò)展位圖頁的開始

          數(shù)組root[1]是root[0]的備份,每個元素對應(yīng)的意義相同


          上一頁 1 2 3 4 下一頁

          評論


          相關(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); })();