一种程序执行方法技术

技术编号:10668792 阅读:117 留言:0更新日期:2014-11-20 13:58
本发明专利技术提供了一种程序执行方法,用于在Flash数据库中进行索引,该方法包括:对AVL树索引结点进行更新时,在日志缓存产生缓存日志;当日志缓存被写满时,以结点日志组为单位进行组合,将缓存的日志写入日志存储区;建立结点日志查找表,记录结点和日志所在Flash页之间的映射关系;对结点进行日志整合并写入到结点逻辑区中。本发明专利技术减少数据库更新时写NAND Flash的次数,保证索引的更新效率。

【技术实现步骤摘要】
【专利摘要】本专利技术提供了,用于在Flash数据库中进行索引,该方法包括:对AVL树索引结点进行更新时,在日志缓存产生缓存日志;当日志缓存被写满时,以结点日志组为单位进行组合,将缓存的日志写入日志存储区;建立结点日志查找表,记录结点和日志所在Flash页之间的映射关系;对结点进行日志整合并写入到结点逻辑区中。本专利技术减少数据库更新时写NAND?Flash的次数,保证索引的更新效率。【专利说明】
本专利技术涉及程序执行方法,特别涉及一种嵌入式系统的程序执行方法。
技术介绍
NAND Flash存储器已广泛应用于各类嵌入式系统,具有读写性能高、非易失性、低 功耗、高密度和良好的抗震性等优势。在用于环境在线分析的嵌入式设备中,一般采用NAND 来存储传感器网络所感测的指标信息。同时,一些嵌入式系统如实时环境监测系统需要感 测和存储大量的数据,数据库作为一种高效的数据管理工具,在嵌入式系统中使用数据库 将成为一种趋势。 目前成熟的数据库都是应用于磁盘存储系统,大部分数据库采用树形索引结构, 以减少数据库更新和检索时对磁盘的访问,然而,NAND Flash读写以页为单位,写入前必须 先进行擦除。如果直接将传统磁盘的树索引结构应用于NAND Flash,对于数据库大量的细 粒度更新,必须擦除索引所在的块然后重新写入,导致数据库的更新效率低。 因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。
技术实现思路
为解决上述现有技术所存在的问题,本专利技术提出了,包括: 当对AVL树索引结点进行更新时,在日志缓存产生一条缓存日志,将属于同一结 点的日志归为一个结点日志组; 当日志缓存被写满时,以结点日志组为单位进行组合,将缓存的日志写入Flash 的日志存储区; 在对经过更新操作分散在日志存储区多个页记录内的日志进行遍历之前,在内存 中建立结点日志查找表,记录结点和结点日志所在Flash页之间的映射关系; 对结点进行日志整合,将日志存储区中属于同一结点的所有日志解析合并为一个 完整的AVL树结点,并写入到结点逻辑区中。 优选地,所述日志缓存和结点缓存位于嵌入式系统内存中;日志存储区和结点逻 辑区存储于嵌入式系统的NAND Flash中。 toon] 优选地,所述日志存储区中索引结点以日志的方式进行存储,每次以页长度为单 位进行写入;索引结点包含日志部分和逻辑部分,索引检索时通过结点日志查找表读取结 点日志部分,并将日志部分和逻辑部分合并为结点完整的信息,将最近访问的索引结点缓 存在结点缓存中。当结点缓存满时,根据结点访问次数、结点最近访问时间和从Flash中读 取结点的代价来替换结点。 优选地,当日志缓存满时,将日志从日志缓存写入日志存储区采用以下步骤进 行: 步骤1 :按照η个结点日志组的大小降序排序得到序列S = {Sl"?sn},如果单个结 点日志组大于一页,将大于部分的日志写入日志存储区,剩余部分作为该结点日志组重新 排序; 步骤2 :取出S中第1个元素 Sl,即最大的日志组,写入虚拟的Flash页vp,更新该 虚拟页剩余容量sp为sp-Si ; 步骤3 :取出S中第i个元素 Sp遍历已有的虚拟页vp,查找剩余容量sp大于Si 且sp-Si最小的虚拟页,将该Si写入该虚拟页并更新sp,如果没有满足条件的虚拟页,将该 日志组写入新的虚拟页; 步骤4 :i增1,重复步骤3,直到i = η ; 步骤5 :将所有的虚拟页νρ写入Flash。 优选地,所述结点日志查找表,维护了结点和日志所在Flash页面之间的对应关 系,该结点日志查找表初始化为一个固定大小的数组,每个数组元素维护一个结点链表,通 过散列映射的方式将结点映射到数组的相应位置,通过结点日志查找表,该路径上的所有 结点均通过散列表査出其在日志中的位置,如果日志页中含有同一结点的日志,则这些日 志页组成该结点的日志链表,结点链表上每个元素都有一个指针指向其日志页组成的链 表。 本专利技术相比现有技术,具有以下优点: 减少数据库更新时写NAND Flash的次数,保证索引的更新效率,和数据库的检索 性能。 【专利附图】【附图说明】 图1是根据本专利技术实施例的程序执行方法的流程图。 【具体实施方式】 下文与图示本专利技术原理的附图一起提供对本专利技术一个或者多个实施例的详细描 述。结合这样的实施例描述本专利技术,但是本专利技术不限于任何实施例。本专利技术的范围仅由权 利要求书限定,并且本专利技术涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节 以便提供对本专利技术的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中 的一些或者所有细节也可以根据权利要求书实现本专利技术。 本专利技术提出一种高效的索引方法,该索引方法能够减少数据库更新时写NAND Flash次数,保证索引的更新效率,同时兼顾数据库的检索性能。图1是根据本专利技术实施例 的程序执行方法流程图。本专利技术首先将数据库索引分为日志缓存、日志存储区、结点逻辑区 以及结点缓存4个区域存储。 日志缓存和结点缓存位于嵌入式系统内存中;日志存储区和结点逻辑区存储于嵌 入式系统的Flash中。 当每次对AVL树索引结点进行更新时,在日志缓存产生一条缓存日志,并将属于 同一结点的日志归为一个结点日志组。当日志缓存被写满时,以结点日志组为单位进行组 合,采用降序最佳适应方法将缓存的日志写入NAND Flash的日志存储区。 日志存储区中索引结点以日志的方式进行存储,每次以页长度为单位进行写入, 更新效率高。 结点经过多次更新操作后,其日志分散在日志存储区的多个页记录内,检索时需 要对所有日志页进行遍历,导致检索效率相对较低。因此,本专利技术在内存中建立结点日志查 找表,记录结点和结点日志所在Flash页之间的映射关系,避免了读取单个结点日志而遍 历日志存储区,从而提高了索引检索效率。 AVL树的检索特点是对树进行深度搜索,从叶结点获取最后的检索结果,共检索出 L个结点(i为AVL树深度)。经结点日志查找表优化后,日志方式的结点检索代价取决于这 L个结点的日志页总和,也就是这L个结点被更新的次数越多,检索效率越低。因此本专利技术 设计结点逻辑区来进行索引存储。结点逻辑区中索引以完整的AVL树结点的形式存储,保 存在一个Flash页上,本专利技术称该页为结点的逻辑页。在结点逻辑区中,索引的检索代价仅 为读取i个结点的逻辑页的代价(i为AVL树深度)。由于索引采用日志方式更新,本专利技术 进一步对结点进行日志整合,即将日志存储区中属于同一结点的所有日志解析合并为一个 完整的AVL树结点,然后写入到结点逻辑区中,以提高索引的检索效率。由于日志整合是索 引检索的额外开销,通过日志整合方法,权衡日志整合的开销和其带来检索性能上的提升, 选择适当时机进行日志整合,以提高结点检索效率。 由于索引结点包含日志部分和逻辑部分,索引检索时需要读取两部分,通过结点 日志查找表读取结点日志部分,并将日志部分和结点逻辑部分合并为结点完整的信息。为 进一步提高结点检索效率,本专利技术设计了结点缓存来缓存最近访问的索引结点。当结点缓 存满时,基于权值本文档来自技高网...

【技术保护点】
一种程序执行方法,用于在嵌入式系统NAND Flash数据库中进行索引,其特征在于,包括:当对AVL树索引结点进行更新时,在日志缓存产生一条缓存日志,将属于同一结点的日志归为一个结点日志组;当日志缓存被写满时,以结点日志组为单位进行组合,将缓存的日志写入Flash的日志存储区;在对经过更新操作分散在日志存储区多个页记录内的日志进行遍历之前,在内存中建立结点日志查找表,记录结点和结点日志所在Flash页之间的映射关系;对结点进行日志整合,将日志存储区中属于同一结点的所有日志解析合并为一个完整的AVL树结点,并写入到结点逻辑区中。

【技术特征摘要】

【专利技术属性】
技术研发人员:毛力
申请(专利权)人:四川九成信息技术有限公司
类型:发明
国别省市:四川;51

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

1