新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Perst嵌入式数据库存储结构分析与研究

Perst嵌入式数据库存储结构分析与研究

作者:时间:2012-03-20来源:网络收藏

表2.3 数组root[1]结构

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


数据库文件的第一页(4K)存放了整个数据库文件的Header信息。程序从数据库文件的Header信息中分离出数据库文件的使用情况和索引结构的存储位置,这样可以很快的定位数据库中的记录数据。

3 Perst的Object Index

Perst专门开辟了一段空间,称Object Index区,存放持久化对象在文件中的实际存储位置。一般这个区在文件的第2-10页,第11-19页存放这个区的备份。第2-9页的数据被标识为空闲文件区,第10页存放实际Object Index。

在Object Index区中,每个元素称为Object Handle,每Object Handle用8个字节表示,存放对应对象在文件中的实际存储位置,即对象的OID。对于4K的页,可以存放512个Object Handles。Object Index区的结构如图3.1所示。

图3.1 Object Index结构图

在图3.1的0x00012000h位置以前都是空闲区,之后的才是真正存放Object Handle的Object Index区。如果Perst数据库文件中的持久化对象的OID个数超过512个,Perst会在数据库文件的另一个区开辟更大的存储空间充当 Object Index区,以存放更多的Object Handle。

4 Perst记录数据及类的

Perst中记录数据存放位置是根据当前数据库的使用情况来为记录数据分配存储空间。Perst中每个记录数据的存放格式都是统一的,每个记录数据的开头占用8个字节存放记录数据的基本信息。前4个字节存放这条记录占用的字节个数,后4个字节存放构建这个记录对象的类的 OID,通过这个OID就可以动态的加载该类的对象。以类Test.User的记录为例,该记录包含一个int类型的数据和一个变量名为“name”的 String类型,其如图4.1所示:

占的总字节数

类Test.User的OID

Int类型的值

“name”的字符个数M

“name”的字节数组形式

4 bytes

4 bytes

4 bytes

4 bytes

2*M bytes

图4.1 记录数据的存储结构



评论


相关推荐

技术专区

关闭