一种嵌入式数据库变长字段存储的实现方法及装置制造方法及图纸

技术编号:2827434 阅读:309 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种嵌入式数据库变长字段存储的实现方法及装置,所述方法为数据库的每张数据表分配一个作为该表变长字段的专有内存区的大内存块,并将该内存块划分为若干个固定大小的BLOCK,该若干BLOCK可以通过索引前后相连形成BOLCK链。当所述变长字段的实际长度小于等于一个BLOCK的长度时,分配一个BLOCK来存储该变长字段;当所述变长字段的实际长度大于一个BLOCK的长度时,分配由多个BLOCK形成的BLOCK链来存储该变长字段。本发明专利技术的应用有效的解决了内存碎片问题,同时提高了内存利用率。

【技术实现步骤摘要】

本专利技术涉及计算机数据库存储领域中嵌入式系统的数据库存储,特别涉及一种嵌入式数据库中变长字段存储的实现方法及装置。
技术介绍
数据库广泛应用在各种计算机数据存储系统中,随着嵌入式设备的发展,嵌入式终端上的应用也变得越来越复杂,对大量数据的存储管理需求使得嵌入式数据库应运而生。与桌面计算机不同的是,嵌入式终端硬件资源受限,所以往往内存比较小,另外由于缺乏虚拟存储管理,频繁的申请释放内存会造成内存碎片,最终导致即使有内存却由于碎片过多也无法分配到。上述两点是考虑嵌入式数据库设计的重要因素。字段是数据库记录中的一个数据单元,变长字段即表示该字段的数据长度是不固定的,且会动态变化,它的设计是嵌入式数据库设计中的难点部分,现有技术的方法有以下两种:参考图1:一种是为变长字段准备固定大小的内存,为了满足变长的需要,这个固定的长度往往要准备的比较大,它能在一定程度上满足需要,但是本质上它仍然是固定长度的字段,只是对于用户来说,它可以是变长的。它的优点是不需要动态申请小内存块,不会产生内存碎片,但是不管该字段实际用了多少内存,该字段始终会占据一块较大内存区,造成内存利用率低,浪费严重。参考图2,第二种方法是用动态申请内存的方式来存放变长字段,对每一个变长字段记录根据需要的大小分配一块相应的内存。该方法对内存的利用效率高,几乎没有浪费现象,但是对于嵌入式系统而言却不是好的方法。如果数据库中存在大量的带有变长字段的数据记录,那么会动态分配出大量的小内存块,如果这些字段被不停的更新,那么对小块内存的释放分配将更加频繁,由于嵌入式系统的资源受限特性,这会产生大量内存碎片,最终导致系统内存无法分配。因此,设计一个良好的变长字段实现方法对改善嵌入式数据库的性能是至-->关重要的。
技术实现思路
本专利技术所要解决的技术问题在于,提供一种嵌入式数据库变长字段存储的实现方法及装置,有效的解决了内存碎片问题,同时提高了内存利用率。为达到上述目的,本专利技术提供的嵌入式数据库变长字段存储的实现方法,为所述数据库的每张数据表分配一个作为该表变长字段的专有内存区的大内存块,并将该内存块划分为若干个固定大小的BLOCK,该若干BLOCK可以通过索引前后相连形成BOLCK链。上述嵌入式数据库变长字段存储的实现方法,当所述变长字段的实际长度小于等于一个BLOCK的长度时,分配一个BLOCK来存储该变长字段;当所述变长字段的实际长度大于一个BLOCK的长度时,分配由多个BLOCK形成的BLOCK链来存储该变长字段。上述嵌入式数据库变长字段存储的实现方法,当所述变长字段更新时,将原分配给该变长字段的BOLCK归还给所述专有内存区,然后重新从给专有内存区分配出一定数据的BLOCK来存储更新后的变长字段。上述嵌入式数据库变长字段存储的实现方法,当所述变长字段要存储一段数据时,从所述变长字段的专有内存区中寻找未被使用的BLOCK,根据数据长度将该数据存储在一个BLOCK或若干的BLOCK形成的BLOCK链中,然后记录该变长字段的起始BLOCK索引号和数据长度。上述嵌入式数据库变长字段存储的实现方法,当变长字段的数据被释放时,依次遍历所述BLOCK链并将BLOCK置为未使用状态。上述嵌入式数据库变长字段存储的实现方法,所述起始BLOCK索引号表示所述变长字段的数据起始存储位置的BLOCK。上述嵌入式数据库变长字段存储的实现方法,所述数据长度表示所述变长字段的数据长度时多少。上述嵌入式数据库变长字段存储的实现方法,所述数据表中的所有变长字段存储区都从所述变长字段的专有内存区获取。上述嵌入式数据库变长字段存储的实现方法,所述每个BLOCK是一个变长字段的存储单元。-->进一步的,本专利技术还提供了一种采用上述方法的实现装置,包括:一内存配置模块,用于在创建数据表时,从系统中分配一块内存作为该表变长字段的专有内存区,并将该专有内存区划分为若干个固定大小的BLOCK,该若干BLOCK可以通过索引前后相连形成BOLCK链;一存储控制模块,用于在所述变长字段需要存储一段数据时,从所述变长字段的专有内存区中寻找未被使用的BLOCK,根据数据长度将该数据存储在一个BLOCK或若干的BLOCK形成的BLOCK链中,然后记录该变长字段的起始BLOCK索引号和数据长度。与现有技术相比,本专利技术提供的嵌入式数据库变长字段存储的设计实现方法,通过变长字段之间共享专有内存块的方式,有效地避免了嵌入式系统中内存碎片的产生,同时提高了内存利用率。附图说明图1是现有技术固定长度内存实现变长字段存储示意图;图2是现有技术动态内存实现变长字段存储示意图;图3是本专利技术BLOCK共享内存实现变长字段存储的示意图;图4是本专利技术变长字段记录存储实施例;图5是本专利技术嵌入式数据库变长字段存储的实现装置的示意框图。具体实施方式下面结合附图和具体实施例对本专利技术技术方案进行详细的描述,以更进一步了解本专利技术之目的、方案及功效,但并非作为对本专利技术所附权利要求保护范围的限制。本专利技术的核心思想是:为变长字段划分共享专有内存块。参考图3,数据库一般以表为组织单位,一张表拥有多条记录,为每张表分配一个大内存块作为变长字段的专有内存区30,同时将这块内存划分成若干固定大小的BLOCK300,表中所有的变长字段存储区都从这块专有内存区30中获取。每个BLOCK是一个变长字段的存储单元,这些BLOCK可以通过索引前后相连形成BLOCK链。当变长字段的实际内容较小时(不足一个BLOCK的长度),可以通过分配一个BLCOK来容纳。当变长字段实际内容-->的数据长度超过一个BLOCK的长度后,可以分配多个BLCOK来存储,多个BLOCK链接起来存储实际的数据。当字段内容需要更新时,只需要将BLOCK归还给专有内存区30,然后重新从里面分配出一定数量BLCOK链,因为BLOCK都是在专有内存区里分配的,所以可以避免系统内存碎片的产生。由于表中所有记录的变长字段共享专有内存,当变长字段的实际长度大小不一时可以最大限度的共享内存区域,在考虑最坏情况时每条记录的内存浪费也只是一个BLOCK的零头,因此内存使用效率很高。采用本专利技术的方法,当变长字段需要存储一段数据时,从专有内存区30中寻找没有被使用的BLOCK,如果一个BLOCK不够,那么再寻找下一个BLOCK并将其链接在第一个BLOCK的后面,直至可以容纳下变长字段的数据,然后将第一块BLOCK的索引号和数据长度记录在record中。当释放变长字段数据时,依次遍历BLOCK链并将BLOCK置为未使用状态即可。下面以实施例具体说明本专利技术方法的具体实施方式:创建数据表时从系统分配一块内存作为变长字段专有内存,这块内存假定为100K的大小,可以将这块内存划分成若干BLOCK,如果每个BLOCK为20个字节,那么可以分成5000个BLOCK。这5000个BLOCK可以被所有的变长字段共享,每个BLOCK的索引号就是BLOCK的顺序号。记录中的变长字段用起始BLOCK索引号和数据长度来表示,起始BLOCK索引号表示变长字段的数据起始存储位置的BLOCK,BLOCK本身可以相串成链以存储大容量数据,数据长度表示该变长纪录的数据长度是多少。一个含有变长字段的记录存储示意图如图4所示,其中record1中的(10本文档来自技高网
...

【技术保护点】
一种嵌入式数据库变长字段存储的实现方法,其特征在于,为所述数据库的每张数据表分配一个作为该表变长字段的专有内存区的大内存块,并将该内存块划分为若干个固定大小的BLOCK,该若干BLOCK可以通过索引前后相连形成BOLCK链。

【技术特征摘要】
1.一种嵌入式数据库变长字段存储的实现方法,其特征在于,为所述数据库的每张数据表分配一个作为该表变长字段的专有内存区的大内存块,并将该内存块划分为若干个固定大小的BLOCK,该若干BLOCK可以通过索引前后相连形成BOLCK链。2.根据权利要求1所述的嵌入式数据库变长字段存储的实现方法,其特征在于,当所述变长字段的实际长度小于等于一个BLOCK的长度时,分配一个BLOCK来存储该变长字段;当所述变长字段的实际长度大于一个BLOCK的长度时,分配由多个BLOCK形成的BLOCK链来存储该变长字段。3.根据权利要求2所述的嵌入式数据库变长字段存储的实现方法,其特征在于,当所述变长字段更新时,将原分配给该变长字段的BOLCK归还给所述专有内存区,然后重新从给专有内存区分配出一定数据的BLOCK来存储更新后的变长字段。4.根据权利要求2所述的嵌入式数据库变长字段存储的实现方法,其特征在于,当所述变长字段要存储一段数据时,从所述变长字段的专有内存区中寻找未被使用的BLOCK,根据数据长度将该数据存储在一个BLOCK或若干的BLOCK形成的BLOCK链中,然后记录该变长字段的起始BLOCK索引号和数据长度。5.根据权利要求2所述的嵌入式数据库变长字段存储的实现方法,其特征在于,当变长字段...

【专利技术属性】
技术研发人员:殷飞童晓演薛晨曦
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

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

1