一种基于移动通信终端的数据库索引修复方法及装置的制作方法

文档序号:6334618阅读:344来源:国知局
专利名称:一种基于移动通信终端的数据库索引修复方法及装置的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种基于移动通信终端的数据库索引修复方法及
直O
背景技术
目前,移动通信终端中有很多应用是采用数据库进行管理和控制,例如,电话薄、 通话记录、日程表等应用就是采用数据库实现的。但是移动通信终端中的数据库存在很多 不稳定因素,可能会出现数据异常的情况,一旦数据库中的数据发生异常,则可能会导致移 动通信终端数据丢失,或者是功能无法使用,甚至是出现死机或无法开机的严重后果,严重 影响开发效率。下面以基于Brew平台的移动通信终端为例进行说明,在基于Brew平台的移动通 信终端中,采用的不是关系型数据库,无法通过解析SQL等命令语句对数据库进行管理查 询等操作。例如,从数据库中删除记录时,在记录头结构中将需要删除记录的记录标识设置 为删除标记(如,Oxffff),每当对数据库文件进行改动后时,检测记录头结构中包含的删 除标记的数量,在达到预设阈值时压缩数据库文件,即将记录标识为删除标记的相应记录 从数据库文件中删除,并在压缩完成后重新建立索引表。但是,在压缩的同时,移动通信终 端可以进行其他操作,因此有可能会产生冲突,导致数据库异常。同时,在数据库工作时向 数据库中快速大量地写入数据,也可能会使得数据库出现异常。目前基于Brew平台的移动 通信终端中没有完善的容错机制,只能简单判断数据库的读取是否正常,一旦数据库异常, 则停止读取操作,从而造成数据丢失,或者无法再写入数据,也可能会因为数据库在读取时 无法跳过坏区而导致死循环,使得终端死机或无法开机,影响了移动通信终端的正常使用。

发明内容
本发明提供一种基于移动通信终端的数据库索引修复方法及装置,用以对异常数 据库进行修复,以降低数据库异常对移动通信终端的影响,保证移动通信终端的正常使用。本发明实施例提供的具体技术方案如下一种基于移动通信终端的数据库索引修复方法,包括获取数据库文件及其对应的第一索引表;确定所述第一索引表中包含重复的记录标识时,删除所述第一索引表,并针对所 述数据库文件建立第二索引表;依次获取所述数据库文件包含的记录标识并确认获取的记录标识是否已经保存 到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保 存到所述第二索引表中。一种基于移动通信终端的数据库索引修复装置,包括第一处理单元,用于获取数据库文件及其对应的第一索引表;第二处理单元,用于确定所述第一索引表中包含重复的记录标识时,删除所述第
3一索引表,并针对所述数据库文件建立第二索引表;第三处理单元,用于依次获取所述数据库文件包含的记录标识并确认获取的记录 标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应 的记录偏移地址保存到所述第二索引表中。基于上述技术方案,本发明实施例中,在确定数据库文件的第一索引表中存在重 复的记录标识时,删除第一索引表,并建立第二索引表,通过依次获取上述数据库文件包含 的记录标识并在确认获取的记录标识未保存到上述第二索引表中时,即确认第二索引表中 不存在上述获取的记录标识时,将上述获取的记录标识及相应的记录偏移地址保存到第二 索引表中,从而保证了第二索引表中保存的记录标识是唯一的,从而使得数据库基于建立 的第二索引表能够正常工作,实现对异常数据库的修复,降低了数据库异常对移动通信终 端造成的影响,保证移动通信终端的正常使用。


图1为基于Brew平台移动通信终端的数据库结构图;图2为本发明基于移动通信终端的数据库索引修复方法流程图;图3为本发明基于移动通信终端的数据库索引修复装置结构图。
具体实施例方式在移动通信终端的数据库文件中,每条记录的标识是唯一的,在建立索引表时,按 照记录标识的大小进行排序。通过索引表获取记录时,首先获取记录标识,再根据获取的记 录标识查找相应的记录在数据库文件中的偏移地址,从而获取到与该记录标识相对应的记 录。每当对数据库文件进行操作时,需要读取整个数据库文件,即首先从数据库文件中找到 索引表的偏移地址,依次根据获取索引表包含的记录标识及相应的偏移地址,找到数据库 文件中相应记录并读取。其中,在依次读取索引表时,按照当前获取的记录标识A,从索引表 中查找相应的偏移地址,再按照该偏移地址从数据库文件中获取相应的记录,再从索引表 中包含的第一条记录标识开始依次与上述记录标识A进行比较,直至找到与上述记录标识 A相匹配的记录标识,再获取相匹配记录标识的下一条记录标识,并将该下一条记录标识作 为当前记录标识,再获取相应的偏移地址,以从数据库文件中获取相应的记录。在同一数据库文件中存在相同的记录标识时,根据该数据库文件建立的索引表中 也会存在相同的记录标识,该数据库文件就会出现异常。假设在同一数据库文件中存在两 条同为记录标识A的记录B和记录C,其相对应的索引表中也会存在两条相同的记录标识 A,则索引表进行排序后两条记录标识A位于相邻的位置。当读取数据库文件时,通过索引 表获取第一条记录标识为A的记录B后,在索引表中从第一个记录标识开始依次与记录标 识A进行匹配,直至找到第一条记录标识A,则将第一条记录标识A的下一条记录标识作为 当前记录标识,则当前记录标识为第二条记录标识A,在获取偏移地址并从数据库文件获取 相应的记录后,再从索引表中第一个记录标识开始依次与记录标识A进行匹配,直至找到 第一条记录标识A,则将下一条记录标识A作为当前记录标识,可见,后续从索引表中找到 的记录标识一直都是第二条记录标识A,从而导致死循环,进而造成移动通信终端死机,影 响移动通信终端的正常使用,降低了开发效率。
4
数据库文件和索引表之间应该是一一对应的,在数据库文件中添加或删除记录 时,正常流程应该是将原索引表删除,在数据库文件的最后添加新的索引表。数据库异常还 可能会造成在数据库文件原有的索引表没有删除的情况下,建立新的索引表,这就导致在 建立新的索引表时,将原有的索引表也作为数据库文件的多条记录来解析,并将解析获得 的记录标识保存至新的索引表中,使得新的索引表中存在记录标识相同的情况,从而影响 移动通信终端的正常使用,降低开发效率。为了降低由于索引表中存在相同的记录标识导致的数据库异常,进而对移动通信 终端的正常使用所造成影响,保证移动通信终端的正常使用,本发明实施例中提供了一种 基于移动通信终端的数据库索引修复方法及装置,能够对异常数据库进行修复,降低数据 库异常对移动通信终端造成的影响,保证移动通信终端的正常使用。该方法为获取数据库 文件及其对应的第一索引表,确定第一索引表中包含重复的记录标识时,针对上述数据库 文件建立第二索引表,依次获取上述数据库文件包含的记录标识并确认获取的记录标识是 否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录 偏移地址保存到上述第二索引表中。本发明实施例中,仅以基于Brew平台的移动通信终端为例进行说明,如果基于其 他平台的移动通信终端也能够采用本发明实施例提供的方法进行数据库修复,本发明也将 其包含在内。在基于Brew平台的移动通信终端中,数据库文件的结构如附图1所示,主要包括 数据库文件头结构、多条记录和索引表三部分。索引表位于数据库文件的最后,每个数据库 文件至多包含一个索引表,有的数据库文件没有索引表。其中,数据库文件头结构主要由当 前记录数和索引表的偏移地址组成;数据库文件中每条记录的结构相同,记录主要由记录 头结构和记录内容组成,而记录头结构又包括记录标识和记录长度,在数据库文件的每条 记录中,记录内容所占的字节数,应该与上述数据库文件的记录头结构中的记录长度一致; 索引表主要由索引头结构和多个记录索引组成,其中,记录和记录索引是一一对应的,索引 头结构包括索引表中的记录索引数,记录索引包括记录标识和记录在相应数据库文件中的 偏移地址。下面结合附图对本发明实施例中优选的实施例进行详细说明。参阅附图2所示,本发明实施例中,基于移动通信终端的数据库索引修复方法的 详细流程如下步骤201 获取数据库文件及其对应的第一索引表。获取数据库文件后,根据数据库文件文件头结构中包含的索引表偏移地址,获取 与上述数据库文件一一对应的第一索引表。步骤202 确定第一索引表中包含重复的记录标识时,删除上述第一索引表,针对 上述数据库文件建立第二索引表。在获取上述数据库文件对应的第一索引表后,依次获取第一索引表包含的记录标 识,并保存获取的上述记录标识,其中,在每次获取记录标识时,将当前获取的记录标识与 已保存的每个记录标识进行比较,若不存在相同的记录标识,则保存当前获取的上述记录 标识,否则,当前获取的上述记录标识与已保存的某一记录标识相同,则可确定第一索引表 中包含重复的记录标识,需要重建索引表,则删除第一索引表,建立第二索引表。
步骤203 依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否 已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏 移地址保存到上述第二索引表中。其中,在获取数据库文件包含的记录标识,与确认获取的记录标识是否已经保存 到上述第二索引表之间,还需要判断获取的记录标识是否为删除标记,若是,则获取上述数 据库文件的下一条记录标识;否则,获取的记录标识为非删除标记,再确认获取的记录标识 是否已经保存到上述第二索引表中,即判断上述第二索引表是否已经存在上述获取的记录 标识。本发明实施例中,在确定第二索引表中不存在当前获取的上述记录标识时,获取 与该记录标识相对应的记录的偏移地址,并将该偏移地址保存到上述第二索引表,其中,在 索引表中记录标识和记录的偏移地址为一一对应关系。并且,本发明实施例中,还可以统计 上述第二索引表中包含的记录索引数以及数据库文件的删除标记数,并将统计的上述记录 索引数和删除标记数保存到上述第二索引表的相应位置。其中,依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经 保存到上述第二索引表中,并当确认结果为是时,即第二索引表中存在与上述获取的记录 标识相同的记录标识,在数据库文件中,将上述获取的记录标识修改为删除标记,本发明实 施例中,上述删除标记为Oxffff。本发明实施例中,在将获取的记录标识及相应的记录偏移地址保存到上述第二索 引表中后,将上述第二索引表中包含的记录标识及相应的记录偏移地址按照记录标识的大 小进行排序。基于上述原理,参阅附图3所示,本发明实施例中,基于Brew平台的数据库索引修 复装置主要包括以下处理单元第一处理单元301 用于获取数据库文件及其对应的第一索引表;第二处理单元302 用于确定上述第一索引表中包含重复的记录标识时,删除上 述第一索引表,并针对上述数据库文件建立第二索引表;第三处理单元303 用于依次获取上述数据库文件包含的记录标识并确认获取的 记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及 相应的记录偏移地址保存到上述第二索引表中。基于上述实施例,获取数据库文件及其对应的第一索引表,并在确定第一索引表 中包含重复的记录标识时,判定上述数据库文件异常,则删除上述第一索引表,并建立第二 索引表,并在建立第二索引表时,依次获取上述数据库文件包含的记录标识并确认获取的 记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及 相应的记录偏移地址保存到上述第二索引表中,从而保证了第二索引表中不会出现相同的 记录标识,使得数据库基于建立的第二索引表能够进行正常的工作,有效避免了由于索引 表具有相同记录标识所导致的死循环,进而造成的移动通信终端死机,能够对异常数据库 进行修复,降低了数据库异常对移动通信终端造成的影响,保证移动通信终端的正常使用; 并且,本发明实施例中,将当前获取的记录标识与第二索引表中存在的记录标识进行比较, 在确认获取的记录标识已经保存到所述第二索引表中时,在数据库文件中,将上述获取的 记录标识修改为删除标记,在数据库压缩时,将数据库文件中记录标识为删除标记的记录
6删除,使得数据库文件中也不会存在相同的记录标识,避免了下次使用上述数据库文件时 对数据库文件及索引表进行修复,进一步降低了数据库异常对移动通信终端造成的影响, 保证了移动通信终端的正常使用,并提高了效率。 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种基于移动通信终端的数据库索引修复方法,其特征在于,包括获取数据库文件及其对应的第一索引表;确定所述第一索引表中包含重复的记录标识时,删除所述第一索引表,并针对所述数据库文件建立第二索引表;依次获取所述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中。
2.如权利要求1所述的方法,其特征在于,在获取所述数据库文件包含的记录标识和 确认获取的记录标识是否已经保存到所述第二索引表之间,还包括确认获取的所述记录标识为非删除标记。
3.如权利要求1或2所述的方法,其特征在于,当确认获取的所述记录标识已经保存到 所述第二索引表中时,还包括在数据库文件中,将获取的记录标识修改为删除标记。
4.如权利要求3所述的方法,其特征在于,还包括统计所述第二索引表中包含的记录 索引数,并将统计结果保存至所述第二索引表。
5.如权利要求4所述的方法,其特征在于,将获取的记录标识及相应的记录偏移地址 保存到所述第二索引表中后,包括将所述第二索引表中包含的记录标识及相应的记录偏移地址按照记录标识的大小进 行排序。
6.一种基于移动通信终端的数据库索引修复装置,其特征在于,包括第一处理单元,用于获取数据库文件及其对应的第一索引表;第二处理单元,用于确定所述第一索引表中包含重复的记录标识时,删除所述第一索 引表,并针对所述数据库文件建立第二索引表;第三处理单元,用于依次获取所述数据库文件包含的记录标识并确认获取的记录标识 是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记 录偏移地址保存到所述第二索引表中。
7.如权利要求6所述的装置,其特征在于,所述第三处理单元在获取所述数据库文件 包含的记录标识和确认获取的记录标识是否已经保存到所述第二索引表之间,确认获取的 所述记录标识是否为非删除标记。
8.如权利要求6或7所述的装置,其特征在于,当所述第三处理单元确认获取的所述记 录标识已经保存到所述第二索引表中时,在数据库文件中,将获取的记录标识修改为删除 标记。
9.如权利要求8所述的装置,其特征在于,所述第三处理单元统计所述第二索引表中 包含的记录索引数,并将统计结果保存至所述第二索引表。
10.如权利要求9所述的装置,其特征在于,所述第三处理单元将获取的记录标识及相 应的记录偏移地址保存到所述第二索引表中后,将所述第二索引表中包含的记录标识及相 应的记录偏移地址按照记录标识的大小进行排序。
全文摘要
本发明公开了一种基于移动通信终端的数据库索引修复方法及装置,用于降低数据库异常对移动通信终端的影响。该方法为获取数据库文件及其对应的第一索引表,确定第一索引表中包含重复的记录标识时,删除第一索引表,并针对所述数据库文件建立第二索引表,依次获取所述数据库文件包含的记录标识并并确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中。该方法能够对异常数据库进行修复,有效降低数据库异常对移动通信终端的影响,保证移动通信终端的正常使用。本发明同时公开了一种基于移动通信终端的数据库索引修复装置。
文档编号G06F17/30GK101980195SQ201010523369
公开日2011年2月23日 申请日期2010年10月26日 优先权日2010年10月26日
发明者刘刚, 刘薇 申请人:青岛海信移动通信技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1