一种基于移动通信终端的数据库索引修复方法及装置转让专利

申请号 : CN201010523369.2

文献号 : CN101980195B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘刚刘薇

申请人 : 青岛海信移动通信技术股份有限公司

摘要 :

本发明公开了一种基于移动通信终端的数据库索引修复方法及装置,用于降低数据库异常对移动通信终端的影响。该方法为:获取数据库文件及其对应的第一索引表,确定第一索引表中包含重复的记录标识时,删除第一索引表,并针对所述数据库文件建立第二索引表,依次获取所述数据库文件包含的记录标识并并确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中。该方法能够对异常数据库进行修复,有效降低数据库异常对移动通信终端的影响,保证移动通信终端的正常使用。本发明同时公开了一种基于移动通信终端的数据库索引修复装置。

权利要求 :

1.一种基于Brew平台移动通信终端的数据库索引修复方法,其特征在于,包括:

获取数据库文件及其对应的第一索引表;

确定所述第一索引表中包含重复的记录标识时,删除所述第一索引表,并针对所述数据库文件建立第二索引表,所述第二索引表中至少包括记录标识和相应的记录偏移地址的对应关系;

依次获取所述数据库文件包含的记录标识并确认获取的所述记录标识为非删除标记后,确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中,将所述第二索引表中包含的记录标识及相应的记录偏移地址按照记录标识的大小进行排序,否则,当确认获取的所述记录标识已经保存到所述第二索引表中时,在数据库文件中,将获取的记录标识修改为删除标记,统计所述第二索引表中包含的记录索引数,并将统计结果保存至所述第二索引表。

2.一种基于Brew平台移动通信终端的数据库索引修复装置,其特征在于,包括:

第一处理单元,用于获取数据库文件及其对应的第一索引表;

第二处理单元,用于确定所述第一索引表中包含重复的记录标识时,删除所述第一索引表,并针对所述数据库文件建立第二索引表,所述第二索引表中至少包括记录标识和相应的记录偏移地址的对应关系;

第三处理单元,用于依次获取所述数据库文件包含的记录标识并确认获取的所述记录标识为非删除标记后,确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中,将所述第二索引表中包含的记录标识及相应的记录偏移地址按照记录标识的大小进行排序,否则,在确认获取的所述记录标识已经保存到所述第二索引表中时,在数据库文件中,将获取的记录标识修改为删除标记,统计所述第二索引表中包含的记录索引数,并将统计结果保存至所述第二索引表。

说明书 :

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

技术领域

[0001] 本发明涉及通信领域,尤其涉及一种基于移动通信终端的数据库索引修复方法及装置。

背景技术

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

发明内容

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

附图说明

[0015] 图1为基于Brew平台移动通信终端的数据库结构图;
[0016] 图2为本发明基于移动通信终端的数据库索引修复方法流程图;
[0017] 图3为本发明基于移动通信终端的数据库索引修复装置结构图。

具体实施方式

[0018] 在移动通信终端的数据库文件中,每条记录的标识是唯一的,在建立索引表时,按照记录标识的大小进行排序。通过索引表获取记录时,首先获取记录标识,再根据获取的记录标识查找相应的记录在数据库文件中的偏移地址,从而获取到与该记录标识相对应的记录。每当对数据库文件进行操作时,需要读取整个数据库文件,即首先从数据库文件中找到索引表的偏移地址,依次根据获取索引表包含的记录标识及相应的偏移地址,找到数据库文件中相应记录并读取。其中,在依次读取索引表时,按照当前获取的记录标识A,从索引表中查找相应的偏移地址,再按照该偏移地址从数据库文件中获取相应的记录,再从索引表中包含的第一条记录标识开始依次与上述记录标识A进行比较,直至找到与上述记录标识A相匹配的记录标识,再获取相匹配记录标识的下一条记录标识,并将该下一条记录标识作为当前记录标识,再获取相应的偏移地址,以从数据库文件中获取相应的记录。
[0019] 在同一数据库文件中存在相同的记录标识时,根据该数据库文件建立的索引表中也会存在相同的记录标识,该数据库文件就会出现异常。假设在同一数据库文件中存在两条同为记录标识A的记录B和记录C,其相对应的索引表中也会存在两条相同的记录标识A,则索引表进行排序后两条记录标识A位于相邻的位置。当读取数据库文件时,通过索引表获取第一条记录标识为A的记录B后,在索引表中从第一个记录标识开始依次与记录标识A进行匹配,直至找到第一条记录标识A,则将第一条记录标识A的下一条记录标识作为当前记录标识,则当前记录标识为第二条记录标识A,在获取偏移地址并从数据库文件获取相应的记录后,再从索引表中第一个记录标识开始依次与记录标识A进行匹配,直至找到第一条记录标识A,则将下一条记录标识A作为当前记录标识,可见,后续从索引表中找到的记录标识一直都是第二条记录标识A,从而导致死循环,进而造成移动通信终端死机,影响移动通信终端的正常使用,降低了开发效率。
[0020] 数据库文件和索引表之间应该是一一对应的,在数据库文件中添加或删除记录时,正常流程应该是将原索引表删除,在数据库文件的最后添加新的索引表。数据库异常还可能会造成在数据库文件原有的索引表没有删除的情况下,建立新的索引表,这就导致在建立新的索引表时,将原有的索引表也作为数据库文件的多条记录来解析,并将解析获得的记录标识保存至新的索引表中,使得新的索引表中存在记录标识相同的情况,从而影响移动通信终端的正常使用,降低开发效率。
[0021] 为了降低由于索引表中存在相同的记录标识导致的数据库异常,进而对移动通信终端的正常使用所造成影响,保证移动通信终端的正常使用,本发明实施例中提供了一种基于移动通信终端的数据库索引修复方法及装置,能够对异常数据库进行修复,降低数据库异常对移动通信终端造成的影响,保证移动通信终端的正常使用。该方法为:获取数据库文件及其对应的第一索引表,确定第一索引表中包含重复的记录标识时,针对上述数据库文件建立第二索引表,依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中。
[0022] 本发明实施例中,仅以基于Brew平台的移动通信终端为例进行说明,如果基于其他平台的移动通信终端也能够采用本发明实施例提供的方法进行数据库修复,本发明也将其包含在内。
[0023] 在基于Brew平台的移动通信终端中,数据库文件的结构如附图1所示,主要包括数据库文件头结构、多条记录和索引表三部分。索引表位于数据库文件的最后,每个数据库文件至多包含一个索引表,有的数据库文件没有索引表。其中,数据库文件头结构主要由当前记录数和索引表的偏移地址组成;数据库文件中每条记录的结构相同,记录主要由记录头结构和记录内容组成,而记录头结构又包括记录标识和记录长度,在数据库文件的每条记录中,记录内容所占的字节数,应该与上述数据库文件的记录头结构中的记录长度一致;索引表主要由索引头结构和多个记录索引组成,其中,记录和记录索引是一一对应的,索引头结构包括索引表中的记录索引数,记录索引包括记录标识和记录在相应数据库文件中的偏移地址。
[0024] 下面结合附图对本发明实施例中优选的实施例进行详细说明。
[0025] 参阅附图2所示,本发明实施例中,基于移动通信终端的数据库索引修复方法的详细流程如下:
[0026] 步骤201:获取数据库文件及其对应的第一索引表。
[0027] 获取数据库文件后,根据数据库文件文件头结构中包含的索引表偏移地址,获取与上述数据库文件一一对应的第一索引表。
[0028] 步骤202:确定第一索引表中包含重复的记录标识时,删除上述第一索引表,针对上述数据库文件建立第二索引表。
[0029] 在获取上述数据库文件对应的第一索引表后,依次获取第一索引表包含的记录标识,并保存获取的上述记录标识,其中,在每次获取记录标识时,将当前获取的记录标识与已保存的每个记录标识进行比较,若不存在相同的记录标识,则保存当前获取的上述记录标识,否则,当前获取的上述记录标识与已保存的某一记录标识相同,则可确定第一索引表中包含重复的记录标识,需要重建索引表,则删除第一索引表,建立第二索引表。
[0030] 步骤203:依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中。
[0031] 其中,在获取数据库文件包含的记录标识,与确认获取的记录标识是否已经保存到上述第二索引表之间,还需要判断获取的记录标识是否为删除标记,若是,则获取上述数据库文件的下一条记录标识;否则,获取的记录标识为非删除标记,再确认获取的记录标识是否已经保存到上述第二索引表中,即判断上述第二索引表是否已经存在上述获取的记录标识。
[0032] 本发明实施例中,在确定第二索引表中不存在当前获取的上述记录标识时,获取与该记录标识相对应的记录的偏移地址,并将该偏移地址保存到上述第二索引表,其中,在索引表中记录标识和记录的偏移地址为一一对应关系。并且,本发明实施例中,还可以统计上述第二索引表中包含的记录索引数以及数据库文件的删除标记数,并将统计的上述记录索引数和删除标记数保存到上述第二索引表的相应位置。
[0033] 其中,依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为是时,即第二索引表中存在与上述获取的记录标识相同的记录标识,在数据库文件中,将上述获取的记录标识修改为删除标记,本发明实施例中,上述删除标记为0xffff。
[0034] 本发明实施例中,在将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中后,将上述第二索引表中包含的记录标识及相应的记录偏移地址按照记录标识的大小进行排序。
[0035] 基于上述原理,参阅附图3所示,本发明实施例中,基于Brew平台的数据库索引修复装置主要包括以下处理单元:
[0036] 第一处理单元301:用于获取数据库文件及其对应的第一索引表;
[0037] 第二处理单元302:用于确定上述第一索引表中包含重复的记录标识时,删除上述第一索引表,并针对上述数据库文件建立第二索引表;
[0038] 第三处理单元303:用于依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中。
[0039] 基于上述实施例,获取数据库文件及其对应的第一索引表,并在确定第一索引表中包含重复的记录标识时,判定上述数据库文件异常,则删除上述第一索引表,并建立第二索引表,并在建立第二索引表时,依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中,从而保证了第二索引表中不会出现相同的记录标识,使得数据库基于建立的第二索引表能够进行正常的工作,有效避免了由于索引表具有相同记录标识所导致的死循环,进而造成的移动通信终端死机,能够对异常数据库进行修复,降低了数据库异常对移动通信终端造成的影响,保证移动通信终端的正常使用;并且,本发明实施例中,将当前获取的记录标识与第二索引表中存在的记录标识进行比较,在确认获取的记录标识已经保存到所述第二索引表中时,在数据库文件中,将上述获取的记录标识修改为删除标记,在数据库压缩时,将数据库文件中记录标识为删除标记的记录删除,使得数据库文件中也不会存在相同的记录标识,避免了下次使用上述数据库文件时对数据库文件及索引表进行修复,进一步降低了数据库异常对移动通信终端造成的影响,保证了移动通信终端的正常使用,并提高了效率。
[0040] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。