色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

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

          00 00 00 00 00 01 60 00

          00 00 00 00 00 00 A0 00

          00 00 00 00 00 00 00 10 00

          8 bytes

          8 bytes

          8 bytes

          00 00 00 00 00 01 42 80

          00 00 12 00

          00 00 12 00

          8 bytes

          4 bytes

          4 bytes

          00 00 10 08

          00 00 00 00

          00 00 00 02

          4 bytes

          4 bytes

          4 bytes

          00 00 10 01

          00 00 10 02

          00 00 00 00

          4 bytes

          4 bytes

          4 bytes

          表2.4 事務id

          00 00 00 00 00 00 00 01

          8 bytes

          事務id


          數(shù)據(jù)庫文件的第一頁(4K)存放了整個數(shù)據(jù)庫文件的Header信息。程序從數(shù)據(jù)庫文件的Header信息中分離出數(shù)據(jù)庫文件的使用情況和索引結(jié)構(gòu)的存儲位置,這樣可以很快的定位數(shù)據(jù)庫中的記錄數(shù)據(jù)。

          3 Perst的Object Index

          Perst專門開辟了一段空間,稱Object Index區(qū),存放持久化對象在文件中的實際存儲位置。一般這個區(qū)在文件的第2-10頁,第11-19頁存放這個區(qū)的備份。第2-9頁的數(shù)據(jù)被標識為空閑文件區(qū),第10頁存放實際Object Index。

          在Object Index區(qū)中,每個元素稱為Object Handle,每Object Handle用8個字節(jié)表示,存放對應對象在文件中的實際存儲位置,即對象的OID。對于4K的頁,可以存放512個Object Handles。Object Index區(qū)的結(jié)構(gòu)如圖3.1所示。

          圖3.1 Object Index結(jié)構(gòu)圖

          在圖3.1的0x00012000h位置以前都是空閑區(qū),之后的才是真正存放Object Handle的Object Index區(qū)。如果Perst數(shù)據(jù)庫文件中的持久化對象的OID個數(shù)超過512個,Perst會在數(shù)據(jù)庫文件的另一個區(qū)開辟更大的存儲空間充當 Object Index區(qū),以存放更多的Object Handle。

          4 Perst記錄數(shù)據(jù)及類的

          Perst中記錄數(shù)據(jù)存放位置是根據(jù)當前數(shù)據(jù)庫的使用情況來為記錄數(shù)據(jù)分配存儲空間。Perst中每個記錄數(shù)據(jù)的存放格式都是統(tǒng)一的,每個記錄數(shù)據(jù)的開頭占用8個字節(jié)存放記錄數(shù)據(jù)的基本信息。前4個字節(jié)存放這條記錄占用的字節(jié)個數(shù),后4個字節(jié)存放構(gòu)建這個記錄對象的類的 OID,通過這個OID就可以動態(tài)的加載該類的對象。以類Test.User的記錄為例,該記錄包含一個int類型的數(shù)據(jù)和一個變量名為“name”的 String類型,其如圖4.1所示:

          占的總字節(jié)數(shù)

          類Test.User的OID

          Int類型的值

          “name”的字符個數(shù)M

          “name”的字節(jié)數(shù)組形式

          4 bytes

          4 bytes

          4 bytes

          4 bytes

          2*M bytes

          圖4.1 記錄數(shù)據(jù)的存儲結(jié)構(gòu)



          評論


          相關(guān)推薦

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

          關(guān)閉