一种文件访问方法技术

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

【技术实现步骤摘要】
【专利摘要】本专利技术提供了,用于在Flash数据库中进行索引,该方法包括:对AVL树索引结点进行更新时,在日志缓存产生缓存日志;当日志缓存被写满时,以结点日志组为单位进行组合,将缓存的日志写入日志存储区;建立结点日志查找表,记录结点和日志所在Flash页之间的映射关系;对结点进行日志整合并写入到结点逻辑区中。本专利技术减少数据库更新时写NAND?Flash的次数,保证索引的更新效率。【专利说明】
本专利技术涉及文件访问方法,特别涉及一种嵌入式系统的数据库文件索引方法。
技术介绍
NAND Flash存储器已广泛应用于各类嵌入式系统,具有读写性能高、非易失性、低 功耗、高密度和良好的抗震性等优势。在用于环境在线分析的嵌入式设备中,一般采用NAND 来存储传感器网络所感测的指标信息。同时,一些嵌入式系统如实时环境监测系统需要感 测和存储大量的数据,数据库作为一种高效的数据管理工具,在嵌入式系统中使用数据库 将成为一种趋势。 目前成熟的数据库都是应用于磁盘存储系统,大部分数据库采用树形索引结构, 以减少数据库文件更新和检索时对磁盘的访问,然而,NAND Flash读写以页为单位,写入前 必须先进行擦除。如果直接将传统磁盘的树索引结构应用于NAND Flash,对于数据库大量 的细粒度文件更新,必须擦除索引所在的块然后重新写入,导致数据库文件的更新效率低。 因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。
技术实现思路
为解决上述现有技术所存在的问题,本专利技术提出了,包括: 当对AVL树索引结点进行更新时,在日志缓存产生一条缓存日志,将属于同一结 点的日志归为一个结点日志组; 当日志缓存被写满时,以结点日志组为单位进行组合,将缓存的日志写入Flash 的日志存储区; 在对经过更新操作分散在日志存储区多个页记录内的日志进行遍历之前,在内存 中建立结点日志查找表,记录结点和结点日志所在Flash页之间的映射关系; 对结点进行日志整合,将日志存储区中属于同一结点的所有日志解析合并为一个 完整的AVL树结点,并写入到结点逻辑区中。 优选地,所述日志存储区中索引结点以日志的方式进行存储,每次以页长度为单 位进行写入;索引结点包含日志部分和逻辑部分,索引检索时通过结点日志查找表读取结 点日志部分,并将日志部分和逻辑部分合并为结点完整的信息,将最近访问的索引结点缓 存在结点缓存中;当结点缓存满时,根据结点访问次数、结点最近访问时间和从Flash中读 取结点的代价来替换结点。 优选地,所述对AVL树索引结点进行更新包括结点内关键字或指针的插入、删除 和修改; 对每次结点的更新产生一条日志,日志格式定义为:{type, node, time, key, dataptr},其中,type表示日志的操作类型;node标识该日志属于哪个结点;time为日志时 间戳;key和dataptr分别表示结点的关键字和关键字指向的记录保存位置; 所述日志缓存定义Flash页面整数倍长度的缓存空间,将属于同一个结点的所有 更新日志归为一个日志组,当日志缓存满时以结点日志组为单位写入日志存储区。 优选地,所述日志整合采用滑动窗口的方式进行结点检索代价的统计,并结合收 支平衡策略选择时机进行日志整合,所述整合包括以下过程: 采用滑动窗口的方式进行统计结点日志检索代价,若滑动窗口的总长度为《,并等 分为m个子窗口,以w/m步长沿时间轴滑动,每个子窗口统计结点的日志检索代价为r = Σ Q2 ; 其中Q2为路径上的所有结点通过结点日志查找表査出其在日志中的位置的检索 代价,且Q2 = Σ (qjC) (i = u,其中L为AVL树的深度,读取一页代价为C, qi为目标路径上 单个结点的日志页数为Q2,则, 当子窗口统计时间结束时,将窗口 w内m个子窗口结点检索代价r求和,得到窗口 w内结点的日志检索总代价R ; 比较结点的当前日志检索总代价R和结点日志整合的开销M,如果R>M则将该结 点进行日志整合;其中日志整合开销M = L*C,且Μ是将路径上L个结点均整合到结点逻辑 区,相当于写L个页的代价, 完成结点整合后,丢弃最早子窗口的统计信息,将滑动窗口沿时间轴前进步长w/ m,继续下一个统计周期。 优选地,所述结点缓存最近频繁访问的结点,并且结点缓存大小是固定的,当结点 缓存满时,采用以下步骤替换结点,包括: 将缓存所有的结点组织成一个链表,并且给每一个结点b赋予一个权值W,W的计 算公式为: ff = Cb*Cnt(b)/(Tnow-Tlast) 其中,Cb为从Flash读取结点b的代价;Cnt (b)为结点b的访问次数;TnOT为当前 时间;Tlast为结点最近一次的访问时间, 根据每个结点的权值W进行排序,当结点缓存满时,选择权值最小的结点替换出 缓存区。 本专利技术相比现有技术,具有以下优点: 减少数据库更新时写NAND Flash的次数,保证索引的更新效率,和数据库的检索 性能。 【专利附图】【附图说明】 图1是根据本专利技术实施例的文件访问方法的流程图。 【具体实施方式】 下文与图示本专利技术原理的附图一起提供对本专利技术一个或者多个实施例的详细描 述。结合这样的实施例描述本专利技术,但是本专利技术不限于任何实施例。本专利技术的范围仅由权 利要求书限定,并且本专利技术涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节 以便提供对本专利技术的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中 的一些或者所有细节也可以根据权利要求书实现本专利技术。 本专利技术提出一种高效的索引方法,该索引方法能够减少数据库更新时写NAND Flash次数,保证索引的更新效率,同时兼顾数据库的检索性能。图1是根据本专利技术实施例 的文件访问方法流程图。本专利技术首先将数据库索引分为日志缓存、日志存储区、结点逻辑区 以及结点缓存4个区域存储。 日志缓存和结点缓存位于嵌入式系统内存中;日志存储区和结点逻辑区存储于嵌 入式系统的Flash中。 当每次对AVL树索引结点进行更新时,在日志缓存产生一条缓存日志,并将属于 同一结点的日志归为一个结点日志组。当日志缓存被写满时,以结点日志组为单位进行组 合,采用降序最佳适应方法将缓存的日志写入NAND Flash的日志存储区。 日志存储区中索引结点以日志的方式进行存储,每次以页长度为单位进行写入, 更新效率高。 结点经过多次更新操作后,其日志分散在日志存储区的多个页记录内,检索时需 要对所有日志页进行遍历,导致检索效率相对较低。因此,本专利技术在内存中建立结点日志查 找表,记录结点和结点日志所在Flash页之间的映射关系,避免了读取单个结点日志而遍 历日志存储区,从而提高了索引检索效率。 AVL树的检索特点是对树进行深度搜索,从叶结点获取最后的检索结果,共检索出 L个结点(i为AVL树深度)。经结点日志查找表优化后,日志方式的结点检索代价取决于这 L个结点的日志页总和,也就是这L个结点被更新的次数越多,检索效率越低。因此本专利技术 设计结点逻辑区来进行索引存储。结点逻辑区中索引以完整的本文档来自技高网...

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

【技术特征摘要】

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

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

1