新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Perst嵌入式數據庫存儲結構分析與研究

        Perst嵌入式數據庫存儲結構分析與研究

        作者: 時間:2012-03-20 來源:網絡 收藏

        在Perst中數據都是保存在對象中的,首先要將對象的每個成員轉換成字節數組的形式,然后在此字節數組前面加上8個字節的記錄數據基本信息,然后將該對象的整個字節數組保存在文件的相應位置。

        實際上Perst在保存記錄數據之前都要將記錄數據的類信息保存在數據庫文件中,主要目的是實現類對象的動態加載。以類 Test.User為例說明類的,它的兩個成員int類型(Id)和String類型(Name)。Perst先保存類的成員變量Id和Name 的信息,然后保存類信息。圖4.2是Test.User.Id的, Test.User.Name的和圖4.2類似。

        占的總字節數

        Type

        類Test.User名字的字符個數M

        “Test.User”的字節數組形式

        成員變量“Id”的字符個數N

        “Id”的字節數組形式

        4 bytes

        4 bytes

        4 bytes

        2*M bytes

        4 bytes

        2*N bytes

        圖4.2 類Test.User成員變量“Id”的存儲結構

        類Test.User的存儲結構如圖4.3所示:

        占的總字節數

        Type

        類Test.User成員變量個數

        成員變量“Id”對應得OID

        成員變量“Name”對應的OID

        4 bytes

        4 bytes

        4 bytes

        4 bytes

        4 bytes

        類“Test.User”名字的字符個數N

        類“Test.User”名字對應的字節數組形式

        4 bytes

        4 bytes

        圖4.3 類Test.User名字信息的存儲結構


        以上是Perst保存記錄對象類相關信息的存儲結構,這樣Perst可以動態的加載類對象。

        5 的存儲結構

        Perst之所以能夠應用在移動設備上,最主要的原因是它采用了存取方式效率高的結構。Perst定義的節點大,使得構建出的B+樹寬度大而深度小,這樣設備進行檢索的時候,減少了對磁盤I/O操作的次數,從而降低了設備的資源消耗[1]。

        5.1 B+樹的節點及其構成

        Perst的B+樹節點用一個頁來表示(4K),每個節點中包含4個字節的節點信息和多個key,value>,節點信息中前2個節點表示節點中 key,value >對的個數,后2個字節表示索引值占用的總字節數。 key,value >中value表示索引值,key表示對子節點或者是記錄數據對象的OID。索引值的類型不同,Perst節點的結構也不同。

        1)索引值的類型是類

        當索引是用類創建的時候,在節點的 key,value >對中,索引值就是該記錄對象的OID,key是該記錄對象的OID或者是子節點頁對象的OID。以OID1,OID3>,OID2,OID4>為例,其中OID1和OID2是key,OID3和OID4是索引值,且 OID3<OID4其結構如下圖所示:


        圖5.1.1 索引的類型是類的節點存儲結構


        2)索引值的類型是數值類型(如int,long,short等)

        當創建索引的類型是數值類型時,節點 key,value >中,索引值就是該數值,key是子節點的OID或者是和索引值相關的記錄對象的OID。以OID1,100>,OID2,125>為例說明其存儲結構,其中索引值的類型是int,存儲結構如下圖所示:

        圖5.1.2 索引的類型是數值類型的節點存儲結



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 霍邱县| 辽宁省| 民丰县| 建宁县| 陆川县| 乌海市| 广平县| 滨海县| 城固县| 长春市| 宝应县| 龙南县| 蓬莱市| 大悟县| 衡东县| 陕西省| 甘孜县| 石屏县| 岳阳县| 临清市| 大洼县| 鄂温| 泽库县| 定安县| 桂平市| 赞皇县| 习水县| 枞阳县| 西乌| 罗山县| 根河市| 东至县| 延川县| 安徽省| 天镇县| 五大连池市| 巴彦县| 铜鼓县| 日照市| 清流县| 新乡县|