<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

引言

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

1 Perst基本概念介紹

1.1 頁(yè)Page

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

1.2 對象標識符OID

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

1.3 Root Object

Perst的每個(gè)數據庫文件都必須有且只能有一個(gè)稱(chēng)作Root Object的類(lèi)。在這個(gè)類(lèi)中定義了數據庫文件中的所有索引結構。通過(guò)這個(gè)類(lèi),程序可以定位到數據庫文件中的所有記錄對象。

2 數據庫Header信息的存儲格式

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

圖2.1 數據庫的Header信息

表2.1 數據庫Header信息前3個(gè)字節意義

01

01

02

1 byte

1 byte

1 byte

root數組的下標

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

數據庫版本

表2.2數組root[0]結構

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

最后分配的位圖頁(yè)的索引

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

對象索引中擴展位圖頁(yè)的開(kāi)始

數組root[1]是root[0]的備份,每個(gè)元素對應的意義相同


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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>