一种提升嵌入式数据库实时性的数据存储方法技术

技术编号:7287106 阅读:306 留言:0更新日期:2012-04-21 19:03
本发明专利技术提供一种提升嵌入式数据库实时性的数据存储方法。该方法中,数据库文件存储空间分为四部分,依次包含数据库头信息、对象索引、位图页和其它对象占用空间,其中,对象索引是以对象标识为下标的对象数组。本发明专利技术通过对象位图结合的对象存储技术,提高了数据库的存储效率。通过对象位图访问数据库对象的方式,可以在实现时使用数组,以提高元数据的访问速度。特别是在数据库容量相对较小的应用场景下,这种方法可以大大提升访问速度。

【技术实现步骤摘要】

本专利技术涉及一种数据库数据存储方法,尤其涉及,属于嵌入式实时数据库

技术介绍
随着嵌入式系统的广泛应用及嵌入式实时操作系统的不断普及,嵌入式环境下的数据管理问题成为系统中的重要环节,构建嵌入式实时数据库系统成为嵌入式开发中必须解决的问题。这里所说的嵌入式是指可在嵌入式设备中独立运行的一种数据库系统,用以处理大量的、时效性强且有严格时序的数据,它以高可靠性、高实时性和高信息吞吐量为目标,其数据的正确性不仅依赖于逻辑结果,而且依赖于逻辑结果产生的时间。目前嵌入式环境下的数据库系统多数采用了关系模型结构,这也是商用数据库系统的数据模型,该模型结构是利用二维关系表来实现数据存储,利用索引访问和查询数据, 这种模型结构是建立在严格的数学基础上的,结构简单灵活,独立性好,但在嵌入式环境下的内存开销和数据冗余较大,用户必须对其进行优化,增加了开发数据库系统的难度;有些嵌入式数据库则采用了网状模型结构,该模型通过指针来确定数据间的显式连接关系,它比关系模型中利用冗余数据和索引文件要节约大量的存储空间,具有一定的数据独立性和共享特性,运行效率较高,而且由于它避免了索引操作,比关系型数据库模式要节省存储空间,数据操作速度也更快。但是这种模型结构比较复杂,尤其当嵌入式系统规模增大时,其数据库的结构变得非常庞大,会影响到系统的实时性能。ORACLE提供了以下几种索引B-Tree、哈希(hash)、位图(bitmap)等索引类型, 基于原始表的索引,基于函数的索引,域(Domain)索引。实际应用中主要是B-Tree索引和位图索引。位图索引主要用于决策支持系统或静态数据。位图索引可以是简单的(单列) 也可以是连接的(多列),但在实践中绝大多数是简单的。位图索引最好用于低到中群集 (cardinality)列,在这些列上多位图索引可以与AND或OR操作符结合使用。位图索引使用位图作为键值,对于表中的每一数据行位图包含了 TRUE(1)、FALSE(0)、或NULL值。位图索引的位图存放在B-Tree结构的页节点中。Β-Tree结构使查找位图非常方便和快速。另外,位图以一种压缩格式存放,因此占用的磁盘空间比B-Tree索引要小得多。甲骨文公司推出的!^astDB内存数据库是一个高效率的内存数据库系统,在磁盘上的数据库文件和使用该数据库的每一个应用程序占用的虚拟内存空间相映射,这样取消了数据文件和缓冲池中的数据传输。再将整个文件数据读入内存,并且使用了高性能的锁工具实现了只读模式线程间、单个更改模式线程和多个只读模式线程间的并发执行。通过位图实现对内存进行分配,最小单位块是分配量子(字节)。如此大大提高了数据引用的局部性(对象数据尽可能分配在连续的内存区域),最小化了修改页的数目和减少了事务提交时间。事务提交协议基于一个影子根页算法,对数据库执行原子更新操作,恢复效率很高,在存储数据结构上可以采用结构(和相似,只是中每个节点中顺序存储了多个值),对于大量相似重复性数据的查询性能相当高。fastdb事务提交是影子根页算法,有两个数组current index和shadow index,当前数组和影子数组,里面存放的是对象的地址偏移。当对象被修改时,内存中的对象被拷贝,位图bitmap也被拷贝了一份,影子数组依然存放原对象的地址偏移,指向原位图的页面,而当前数组指向新的拷贝的地址偏移,新的位图页, 所有的修改也在拷贝的地址中进行。当事务成功提交后,就把当前数组的内容复制到影子数组,这样它们就都指向新的偏移了,而原来指向的内存空间可以释放掉,而且修改页的内容被刷新到磁盘上。如果事务提交失败,需要回滚,就把影子数组的内容复制到当前数组。
技术实现思路
本专利技术所要解决的技术问题在于提供。该方法可以明显提升嵌入式实时数据库的实时性,满足嵌入式数据库应用的实时性要求。为实现上述目的,本专利技术提供,其特征在于数据库文件存储空间分为四部分,依次包含数据库头信息、对象索引、位图页和其它对象占用空间,其中,对象索引是以对象标识为下标的对象数组。较优选的,所述对象索引是将对象的OID映射为对象的存储位置的数组,对象索引的值为该对象在所述数据库文件存储空间中的偏移量,所述偏移量将该对象的内存映像定位到数据库文件存储空间中。本专利技术通过对象位图结合的对象存储技术,提高了数据库的存储效率。通过对象位图访问数据库对象的方式,可以在实现时使用数组,以提高元数据的访问速度。特别是在数据库容量相对较小的应用场景下,这种方法可以大大提升访问速度。附图说明下面结合附图和具体实施方式对本专利技术作进一步的详细说明。图1为数据库空间布局示意图;图2为记录对象之间逻辑关系示意图。图3为表对象之间逻辑关系示意图。图4为记录对象的存储映像示意图。具体实施例方式本专利技术中定义的存储设计是指嵌入式实时数据库中数据库元数据的存储结构、方案等,专利技术中的存储设计区别于一般数据库存储设计,为了保证数据库的实时性,使用了存取速度优先的存储结构,在存取方法上,也设计了符合此种结构,且速度优先的存取方法。本专利技术的目的是通过方案中的存储设计,使嵌入式数据库系统在嵌入式应用场景下,提高数据库系统的实时性,这种实时性包括两方面的内容,一是在嵌入式场景下的实时系统中应用数据库,通过设计针对存储结构的存取方法,保证实时系统针对应用的实时性; 二是根据数据库存储结构,设计专门的事务调试策略,达到事务的实时性。本专利技术适用于嵌入式实时数据库,在进行嵌入式实时数据库的存储设计时,把数据库的各种概念进行相应的对象设计,使数据库中存储的都是对象,比如表记录是对象,表描述符是对象,索引是对象,索引的结点也是对象,内存页是对象,诸如此类。数据库中每个对象有自己唯一的标示,称之为OID (Object Identifier,也写作oid)。Index 是oid 所代表的对象在数据库空间中的实际存储位置。针对这些对象的特点进行分类,之后进行存储,存取时以对象标识oid为索引信息,通过对象数组进行访问,可以大大提高嵌入式数据库的实时性。根据数据库中存储的对象的特点进行分类,将存储对象分为通用对象 (db Varying)、记录对象(dbRecord)、表对象(dbTable)、字段对象(dbField)、哈希表对象 (dbHashTable)和哈希表结点对象(dbHashTableltem),这六种对象类型。可以理解,根据实际的需要,还可以划分为其他对象类型。同一页只存储同一类型的对象。同一类型的对象有固定大小的长度,不同类型的对象的长度可以不同。这样就把对象区分成多个(本专利技术实施例中为6个)具有固定长度的数据类型了。通过把需要建立位图索引的列设置为固定长度的数据类型,就可以提高查询的效率。因为使用固定长度的数据类型的情况下,要比可变长度的数据类型的情况下,位图索引的性能更加优越,有利于提高数据库的实时性。上述存储设计所实现的物理存储结果,如图1所示,完整的数据库文件存储空间分为四部分,依次包含数据库头信息(dbHeader)、对象索引(object index)、位图页 (bitmap page)和其它对象占用空间。在本专利技术的一个较佳实施例中,头信息始终存储在数据库文件首页中,其大小例如是4K。对象索引用于将对象的OID本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:杨经正陈东刘建立李恒寇立涛
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术