CN101980195B - 一种基于移动通信终端的数据库索引修复方法及装置 - Google Patents
一种基于移动通信终端的数据库索引修复方法及装置 Download PDFInfo
- Publication number
- CN101980195B CN101980195B CN2010105233692A CN201010523369A CN101980195B CN 101980195 B CN101980195 B CN 101980195B CN 2010105233692 A CN2010105233692 A CN 2010105233692A CN 201010523369 A CN201010523369 A CN 201010523369A CN 101980195 B CN101980195 B CN 101980195B
- Authority
- CN
- China
- Prior art keywords
- concordance list
- record identification
- record
- obtaining
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于移动通信终端的数据库索引修复方法及装置,用于降低数据库异常对移动通信终端的影响。该方法为:获取数据库文件及其对应的第一索引表,确定第一索引表中包含重复的记录标识时,删除第一索引表,并针对所述数据库文件建立第二索引表,依次获取所述数据库文件包含的记录标识并并确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中。该方法能够对异常数据库进行修复,有效降低数据库异常对移动通信终端的影响,保证移动通信终端的正常使用。本发明同时公开了一种基于移动通信终端的数据库索引修复装置。
Description
技术领域
本发明涉及通信领域,尤其涉及一种基于移动通信终端的数据库索引修复方法及装置。
背景技术
目前,移动通信终端中有很多应用是采用数据库进行管理和控制,例如,电话薄、通话记录、日程表等应用就是采用数据库实现的。但是移动通信终端中的数据库存在很多不稳定因素,可能会出现数据异常的情况,一旦数据库中的数据发生异常,则可能会导致移动通信终端数据丢失,或者是功能无法使用,甚至是出现死机或无法开机的严重后果,严重影响开发效率。
下面以基于Brew平台的移动通信终端为例进行说明,在基于Brew平台的移动通信终端中,采用的不是关系型数据库,无法通过解析SQL等命令语句对数据库进行管理查询等操作。例如,从数据库中删除记录时,在记录头结构中将需要删除记录的记录标识设置为删除标记(如,0xffff),每当对数据库文件进行改动后时,检测记录头结构中包含的删除标记的数量,在达到预设阈值时压缩数据库文件,即将记录标识为删除标记的相应记录从数据库文件中删除,并在压缩完成后重新建立索引表。但是,在压缩的同时,移动通信终端可以进行其他操作,因此有可能会产生冲突,导致数据库异常。同时,在数据库工作时向数据库中快速大量地写入数据,也可能会使得数据库出现异常。目前基于Brew平台的移动通信终端中没有完善的容错机制,只能简单判断数据库的读取是否正常,一旦数据库异常,则停止读取操作,从而造成数据丢失,或者无法再写入数据,也可能会因为数据库在读取时无法跳过坏区而导致死循环,使得终端死机或无法开机,影响了移动通信终端的正常使用。
发明内容
本发明提供一种基于移动通信终端的数据库索引修复方法及装置,用以对异常数据库进行修复,以降低数据库异常对移动通信终端的影响,保证移动通信终端的正常使用。
本发明实施例提供的具体技术方案如下:
一种基于移动通信终端的数据库索引修复方法,包括:
获取数据库文件及其对应的第一索引表;
确定所述第一索引表中包含重复的记录标识时,删除所述第一索引表,并针对所述数据库文件建立第二索引表;
依次获取所述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中。
一种基于移动通信终端的数据库索引修复装置,包括:
第一处理单元,用于获取数据库文件及其对应的第一索引表;
第二处理单元,用于确定所述第一索引表中包含重复的记录标识时,删除所述第一索引表,并针对所述数据库文件建立第二索引表;
第三处理单元,用于依次获取所述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中。
基于上述技术方案,本发明实施例中,在确定数据库文件的第一索引表中存在重复的记录标识时,删除第一索引表,并建立第二索引表,通过依次获取上述数据库文件包含的记录标识并在确认获取的记录标识未保存到上述第二索引表中时,即确认第二索引表中不存在上述获取的记录标识时,将上述获取的记录标识及相应的记录偏移地址保存到第二索引表中,从而保证了第二索引表中保存的记录标识是唯一的,从而使得数据库基于建立的第二索引表能够正常工作,实现对异常数据库的修复,降低了数据库异常对移动通信终端造成的影响,保证移动通信终端的正常使用。
附图说明
图1为基于Brew平台移动通信终端的数据库结构图;
图2为本发明基于移动通信终端的数据库索引修复方法流程图;
图3为本发明基于移动通信终端的数据库索引修复装置结构图。
具体实施方式
在移动通信终端的数据库文件中,每条记录的标识是唯一的,在建立索引表时,按照记录标识的大小进行排序。通过索引表获取记录时,首先获取记录标识,再根据获取的记录标识查找相应的记录在数据库文件中的偏移地址,从而获取到与该记录标识相对应的记录。每当对数据库文件进行操作时,需要读取整个数据库文件,即首先从数据库文件中找到索引表的偏移地址,依次根据获取索引表包含的记录标识及相应的偏移地址,找到数据库文件中相应记录并读取。其中,在依次读取索引表时,按照当前获取的记录标识A,从索引表中查找相应的偏移地址,再按照该偏移地址从数据库文件中获取相应的记录,再从索引表中包含的第一条记录标识开始依次与上述记录标识A进行比较,直至找到与上述记录标识A相匹配的记录标识,再获取相匹配记录标识的下一条记录标识,并将该下一条记录标识作为当前记录标识,再获取相应的偏移地址,以从数据库文件中获取相应的记录。
在同一数据库文件中存在相同的记录标识时,根据该数据库文件建立的索引表中也会存在相同的记录标识,该数据库文件就会出现异常。假设在同一数据库文件中存在两条同为记录标识A的记录B和记录C,其相对应的索引表中也会存在两条相同的记录标识A,则索引表进行排序后两条记录标识A位于相邻的位置。当读取数据库文件时,通过索引表获取第一条记录标识为A的记录B后,在索引表中从第一个记录标识开始依次与记录标识A进行匹配,直至找到第一条记录标识A,则将第一条记录标识A的下一条记录标识作为当前记录标识,则当前记录标识为第二条记录标识A,在获取偏移地址并从数据库文件获取相应的记录后,再从索引表中第一个记录标识开始依次与记录标识A进行匹配,直至找到第一条记录标识A,则将下一条记录标识A作为当前记录标识,可见,后续从索引表中找到的记录标识一直都是第二条记录标识A,从而导致死循环,进而造成移动通信终端死机,影响移动通信终端的正常使用,降低了开发效率。
数据库文件和索引表之间应该是一一对应的,在数据库文件中添加或删除记录时,正常流程应该是将原索引表删除,在数据库文件的最后添加新的索引表。数据库异常还可能会造成在数据库文件原有的索引表没有删除的情况下,建立新的索引表,这就导致在建立新的索引表时,将原有的索引表也作为数据库文件的多条记录来解析,并将解析获得的记录标识保存至新的索引表中,使得新的索引表中存在记录标识相同的情况,从而影响移动通信终端的正常使用,降低开发效率。
为了降低由于索引表中存在相同的记录标识导致的数据库异常,进而对移动通信终端的正常使用所造成影响,保证移动通信终端的正常使用,本发明实施例中提供了一种基于移动通信终端的数据库索引修复方法及装置,能够对异常数据库进行修复,降低数据库异常对移动通信终端造成的影响,保证移动通信终端的正常使用。该方法为:获取数据库文件及其对应的第一索引表,确定第一索引表中包含重复的记录标识时,针对上述数据库文件建立第二索引表,依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中。
本发明实施例中,仅以基于Brew平台的移动通信终端为例进行说明,如果基于其他平台的移动通信终端也能够采用本发明实施例提供的方法进行数据库修复,本发明也将其包含在内。
在基于Brew平台的移动通信终端中,数据库文件的结构如附图1所示,主要包括数据库文件头结构、多条记录和索引表三部分。索引表位于数据库文件的最后,每个数据库文件至多包含一个索引表,有的数据库文件没有索引表。其中,数据库文件头结构主要由当前记录数和索引表的偏移地址组成;数据库文件中每条记录的结构相同,记录主要由记录头结构和记录内容组成,而记录头结构又包括记录标识和记录长度,在数据库文件的每条记录中,记录内容所占的字节数,应该与上述数据库文件的记录头结构中的记录长度一致;索引表主要由索引头结构和多个记录索引组成,其中,记录和记录索引是一一对应的,索引头结构包括索引表中的记录索引数,记录索引包括记录标识和记录在相应数据库文件中的偏移地址。
下面结合附图对本发明实施例中优选的实施例进行详细说明。
参阅附图2所示,本发明实施例中,基于移动通信终端的数据库索引修复方法的详细流程如下:
步骤201:获取数据库文件及其对应的第一索引表。
获取数据库文件后,根据数据库文件文件头结构中包含的索引表偏移地址,获取与上述数据库文件一一对应的第一索引表。
步骤202:确定第一索引表中包含重复的记录标识时,删除上述第一索引表,针对上述数据库文件建立第二索引表。
在获取上述数据库文件对应的第一索引表后,依次获取第一索引表包含的记录标识,并保存获取的上述记录标识,其中,在每次获取记录标识时,将当前获取的记录标识与已保存的每个记录标识进行比较,若不存在相同的记录标识,则保存当前获取的上述记录标识,否则,当前获取的上述记录标识与已保存的某一记录标识相同,则可确定第一索引表中包含重复的记录标识,需要重建索引表,则删除第一索引表,建立第二索引表。
步骤203:依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中。
其中,在获取数据库文件包含的记录标识,与确认获取的记录标识是否已经保存到上述第二索引表之间,还需要判断获取的记录标识是否为删除标记,若是,则获取上述数据库文件的下一条记录标识;否则,获取的记录标识为非删除标记,再确认获取的记录标识是否已经保存到上述第二索引表中,即判断上述第二索引表是否已经存在上述获取的记录标识。
本发明实施例中,在确定第二索引表中不存在当前获取的上述记录标识时,获取与该记录标识相对应的记录的偏移地址,并将该偏移地址保存到上述第二索引表,其中,在索引表中记录标识和记录的偏移地址为一一对应关系。并且,本发明实施例中,还可以统计上述第二索引表中包含的记录索引数以及数据库文件的删除标记数,并将统计的上述记录索引数和删除标记数保存到上述第二索引表的相应位置。
其中,依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为是时,即第二索引表中存在与上述获取的记录标识相同的记录标识,在数据库文件中,将上述获取的记录标识修改为删除标记,本发明实施例中,上述删除标记为0xffff。
本发明实施例中,在将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中后,将上述第二索引表中包含的记录标识及相应的记录偏移地址按照记录标识的大小进行排序。
基于上述原理,参阅附图3所示,本发明实施例中,基于Brew平台的数据库索引修复装置主要包括以下处理单元:
第一处理单元301:用于获取数据库文件及其对应的第一索引表;
第二处理单元302:用于确定上述第一索引表中包含重复的记录标识时,删除上述第一索引表,并针对上述数据库文件建立第二索引表;
第三处理单元303:用于依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中。
基于上述实施例,获取数据库文件及其对应的第一索引表,并在确定第一索引表中包含重复的记录标识时,判定上述数据库文件异常,则删除上述第一索引表,并建立第二索引表,并在建立第二索引表时,依次获取上述数据库文件包含的记录标识并确认获取的记录标识是否已经保存到上述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到上述第二索引表中,从而保证了第二索引表中不会出现相同的记录标识,使得数据库基于建立的第二索引表能够进行正常的工作,有效避免了由于索引表具有相同记录标识所导致的死循环,进而造成的移动通信终端死机,能够对异常数据库进行修复,降低了数据库异常对移动通信终端造成的影响,保证移动通信终端的正常使用;并且,本发明实施例中,将当前获取的记录标识与第二索引表中存在的记录标识进行比较,在确认获取的记录标识已经保存到所述第二索引表中时,在数据库文件中,将上述获取的记录标识修改为删除标记,在数据库压缩时,将数据库文件中记录标识为删除标记的记录删除,使得数据库文件中也不会存在相同的记录标识,避免了下次使用上述数据库文件时对数据库文件及索引表进行修复,进一步降低了数据库异常对移动通信终端造成的影响,保证了移动通信终端的正常使用,并提高了效率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (2)
1.一种基于Brew平台移动通信终端的数据库索引修复方法,其特征在于,包括:
获取数据库文件及其对应的第一索引表;
确定所述第一索引表中包含重复的记录标识时,删除所述第一索引表,并针对所述数据库文件建立第二索引表,所述第二索引表中至少包括记录标识和相应的记录偏移地址的对应关系;
依次获取所述数据库文件包含的记录标识并确认获取的所述记录标识为非删除标记后,确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中,将所述第二索引表中包含的记录标识及相应的记录偏移地址按照记录标识的大小进行排序,否则,当确认获取的所述记录标识已经保存到所述第二索引表中时,在数据库文件中,将获取的记录标识修改为删除标记,统计所述第二索引表中包含的记录索引数,并将统计结果保存至所述第二索引表。
2.一种基于Brew平台移动通信终端的数据库索引修复装置,其特征在于,包括:
第一处理单元,用于获取数据库文件及其对应的第一索引表;
第二处理单元,用于确定所述第一索引表中包含重复的记录标识时,删除所述第一索引表,并针对所述数据库文件建立第二索引表,所述第二索引表中至少包括记录标识和相应的记录偏移地址的对应关系;
第三处理单元,用于依次获取所述数据库文件包含的记录标识并确认获取的所述记录标识为非删除标记后,确认获取的记录标识是否已经保存到所述第二索引表中,并当确认结果为否时,将获取的记录标识及相应的记录偏移地址保存到所述第二索引表中,将所述第二索引表中包含的记录标识及相应的记录偏移地址按照记录标识的大小进行排序,否则,在确认获取的所述记录标识已经保存到所述第二索引表中时,在数据库文件中,将获取的记录标识修改为删除标记,统计所述第二索引表中包含的记录索引数,并将统计结果保存至所述第二索引表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105233692A CN101980195B (zh) | 2010-10-26 | 2010-10-26 | 一种基于移动通信终端的数据库索引修复方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105233692A CN101980195B (zh) | 2010-10-26 | 2010-10-26 | 一种基于移动通信终端的数据库索引修复方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101980195A CN101980195A (zh) | 2011-02-23 |
CN101980195B true CN101980195B (zh) | 2012-08-01 |
Family
ID=43600697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105233692A Active CN101980195B (zh) | 2010-10-26 | 2010-10-26 | 一种基于移动通信终端的数据库索引修复方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101980195B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744859A (zh) * | 2013-12-13 | 2014-04-23 | 北京奇虎科技有限公司 | 一种故障数据的下线方法及设备 |
CN104239564B (zh) * | 2014-09-28 | 2018-02-09 | 深圳市锐明技术股份有限公司 | 一种文件索引组织及修复的方法及装置 |
CN115470049B (zh) * | 2022-11-15 | 2023-02-28 | 浪潮电子信息产业股份有限公司 | 一种元数据修复方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667180A (zh) * | 2008-09-03 | 2010-03-10 | 神讯电脑(昆山)有限公司 | 数据库空间管理系统及其方法 |
CN101741536A (zh) * | 2008-11-26 | 2010-06-16 | 中兴通讯股份有限公司 | 数据级容灾方法、系统和生产中心节点 |
-
2010
- 2010-10-26 CN CN2010105233692A patent/CN101980195B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667180A (zh) * | 2008-09-03 | 2010-03-10 | 神讯电脑(昆山)有限公司 | 数据库空间管理系统及其方法 |
CN101741536A (zh) * | 2008-11-26 | 2010-06-16 | 中兴通讯股份有限公司 | 数据级容灾方法、系统和生产中心节点 |
Also Published As
Publication number | Publication date |
---|---|
CN101980195A (zh) | 2011-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9619512B2 (en) | Memory searching system and method, real-time searching system and method, and computer storage medium | |
CN102043686B (zh) | 一种内存数据库的容灾方法、备用服务器及系统 | |
EP2472417A1 (en) | Method and device for accessing file resources | |
CN110879813A (zh) | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 | |
CN101826107B (zh) | 哈希数据处理方法和装置 | |
CN106462592A (zh) | 优化对索引的多版本支持的系统和方法 | |
CN103747147B (zh) | 更新通讯录的方法和设备 | |
KR101575246B1 (ko) | SQLite 데이터베이스 파일 내 손상된 레코드의 복원 방법 | |
CN108108431B (zh) | 数据同步方法和系统 | |
CN102411629A (zh) | 基于android系统的文件扫描方法及装置 | |
CN101980195B (zh) | 一种基于移动通信终端的数据库索引修复方法及装置 | |
CN107632943B (zh) | 一种固态硬盘数据保护的方法及固态硬盘 | |
CN103593447A (zh) | 用于数据库表的数据处理方法和装置 | |
CN101706822A (zh) | 提高挂载日志式文件系统速度的方法及设备 | |
CN103744875A (zh) | 基于文件系统的数据快速迁移方法及系统 | |
CN106294886A (zh) | 一种从HBase中全量抽取数据的方法及系统 | |
CN107590162A (zh) | 日志文件的存储方法及装置 | |
CN101819603A (zh) | 基于嵌入式系统的信息记录的检索方法和装置 | |
CN105488047A (zh) | 元数据读写方法和装置 | |
CN101976254B (zh) | 一种基于移动通信终端的数据库修复方法及装置 | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
CN113254273A (zh) | 一种实时恢复主元数据的方法、系统、设备及介质 | |
CN100361088C (zh) | 一种实现设备测试的方法 | |
CN106293993A (zh) | 避免重复处理文件的方法及装置 | |
CN116244477B (zh) | 区间分级检索方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |