CN112579612B - 数据库索引表记录分析方法、装置、计算设备及存储介质 - Google Patents
数据库索引表记录分析方法、装置、计算设备及存储介质 Download PDFInfo
- Publication number
- CN112579612B CN112579612B CN202011615316.3A CN202011615316A CN112579612B CN 112579612 B CN112579612 B CN 112579612B CN 202011615316 A CN202011615316 A CN 202011615316A CN 112579612 B CN112579612 B CN 112579612B
- Authority
- CN
- China
- Prior art keywords
- index table
- database
- search tree
- nodes
- root node
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种数据库索引表记录分析方法、装置、计算设备及存储介质,该方法包括:从数据库主表获取索引表的对应根节点及所述根节点的信息,所述根节点的信息包括根节点的页号;根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树;读取所述搜索树的节点,并从所述节点提取单元的记录主体;根据记录结构图重组所述记录主体的记录结构。根据本发明实施例根据数据库的格式读取索引表的页面并重组搜索树,对搜索树每个页面点抽取出所有单元内容,根据记录通用结构还原完整记录结构,并且能够自适应处理轻微损坏的数据库。
Description
技术领域
本发明涉及数据库技术领域,特别涉及一种数据库索引表记录分析方法、装置、计算设备及存储介质。
背景技术
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理***,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作***,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理***来讲,它的处理速度比他们都快。因此,SQLite数据库的使用越来越广泛,特别是在便携式设备中。
SQLite数据库的通用解析,目前国内外已有很成熟的研究,也有不少完整的技术文档和相关专利。目前市场上已有SQLite数据库的通用解析产品,但是有些局限性,无法解析出Index表的记录,而且目前没有发现SQLite Index表的记录解析相关的公开的技术文档或专利。
发明内容
在发明内容部分中引入了一系列简化形式的概念,这将在具体实施例部分中进一步详细说明。本发明的发明内容部分并不意味着要试图限定出所要求保护的技术方案的关键特征和必要技术特征,更不意味着试图确定所要求保护的技术方案的保护范围。
鉴于以上技术问题,本发明提供了一种数据库索引表记录分析方法、装置、计算设备及存储介质,其根据数据库的格式读取索引表的页面并重组搜索树,对搜索树每个页面点抽取出所有单元内容,根据记录通用结构还原完整记录结构,并且能够自适应处理轻微损坏的数据库。
根据本发明的一个方面,提供一种数据库索引表记录分析方法,其包括:
从数据库主表获取索引表的对应根节点及所述根节点的信息,所述根节点的信息包括根节点的页号;
根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树;
读取所述搜索树的节点,并从所述节点提取单元的记录主体;
根据记录结构图重组所述记录主体的记录结构。
在本发明的一个实施例中,所述数据库主表获取索引表的对应根节点及所述根节点的信息,包括:
在所述数据库主表正常时,直接查询所述数据库主表中来获取索引表的对应根节点及所述根节点的信息;或者
在所述数据库主表异常时,对所述数据库主表进行分析来获取索引表的对应根节点及所述根节点的信息。
在本发明的一个实施例中,所述根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树,包括:
在所述索引表正常时,遍历并提取所述搜索树的所有页面,并将所提取的页面挂进所述搜索树中;或者
在所述索引表异常时,在遍历所述搜索树时对损坏节点执行跳过或修复处理,并根据正常节点和修复的节点重组所述索引表的搜索树。
在本发明的一个实施例中,所述数据库为SQLite数据库,所述搜索树为B-tree。
根据本发明的另一方面,提供一种数据库索引表记录分析装置,其包括:
节点获取模块,用于从数据库主表获取索引表的对应根节点及所述根节点的信息,所述根节点的信息包括根节点的页号;
搜索树重组模块,用于根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树;
单元提取模块,用于读取所述搜索树的节点,并从所述节点提取单元的记录主体;
记录结构重组模块,用于根据记录结构图重组所述记录主体的记录结构。
在本发明的一个实施例中,所述节点获取模块用于在所述数据库主表正常时,直接查询所述数据库主表中来获取索引表的对应根节点及所述根节点的信息;或者
在所述数据库主表异常时,对所述数据库主表进行分析来获取索引表的对应根节点及所述根节点的信息。
在本发明的一个实施例中,所述搜索树重组模块用于在所述索引表正常时,遍历并提取所述搜索树的所有页面,并将所提取的页面挂进所述搜索树中;或者
在所述索引表异常时,在遍历所述搜索树时对损坏节点执行跳过或修复处理,并根据正常节点和修复的节点重组所述索引表的搜索树。
在本发明的一个实施例中,所述数据库为SQLite数据库,所述搜索树为B-tree。
根据本发明的又一方面,提供一种计算设备,所述设备包括:处理器,以及存储有计算机程序指令的存储器;所述处理器读取并执行所述计算机程序指令,以实现根据本发明一方面的所述的数据库索引表记录分析方法。
根据本发明的再一方面,提供一种计算机存储介质,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现根据本发明一方面的数据库索引表记录分析方法。
根据本发明的数据库索引表记录分析方法、装置、计算设备及存储介质,根据数据库的格式读取索引表的页面并重组搜索树,对搜索树(例如B-tree)每个页面点抽取出所有单元内容,根据记录通用结构还原完整记录结构,并且能够自适应处理轻微损坏的数据库,该方法不局限于某一个数据库,对所有SQLite数据库的索引表记录分析都适用,具有很强的通用性;由于SQLite的使用呈广泛化趋势,该方法的重要性不言而喻,预计该方法将对数据库信息安全技术产生一定影响,也为其它相近数据库类型的数据库的索引表记录分析提供新的思路。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的数据库数据表一个页面的示例性页面结构的示意图
图2是本发明实施例的数据库数据表一个页面的示例性页面结构的示意图;
图3是本发明实施例的数据库页面单元的记录主体的示例结构图;
图4为根据本发明实施例的数据库索引表记录分析方法的示意性流程图;
图5为本发明实施例的数据库索引表记录分析装置的示意性结构框图;以及
图6是本发明实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员来说显而易见的是,本发明实施例可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明实施例发生混淆,对于本领域公知的一些技术特征未进行描述。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
SQLite数据库支持大部分的SQL语言特性,其数据解析方法是有官方提供的接口来解析SQL语句并获取数据,比如对message表查询通过select*from message这条SQL语句来查询,但是在某些特定时刻(比如数据库message表轻微损坏时),需要查看message表对应的Index表的数据,此时并没有SQL语言支持,SQLite官方也没有提供这类接口,导致查询无从下手。
因为没有官方的渠道来分析索引表数据,所以我们可以考虑通过SQLite数据库原始数据解析的方式来实现索引表的查询,这与数据库的删除数据分析类似,而在SQLite数据库删除数据解析方面,当前国内外已有一些研究;目前市场上的通用解析产品有些局限性,没有对索引进行解析的处理,即使对索引表的未删除数据也未能实现解析。
SQLite数据库文件是由一系列的表组成的,包括数据表(记为Table)和索引表(记为Index),而每张表是由一系列的页面组成的,并且这些页面组织由一棵Btree搜索树来管理,其中管理Table表的称为B+tree搜索树,而管理Index表的称为B-tree搜索树,每个B-tree搜索树节点对应一个SQLite页面,页面的大小是2的n次方,常见的有1024、2048、4096字节等。其中存放数据的叶子节点称为叶子页,而存放索引的内部节点称为内部页。B-tree搜索树的结构如图1所示,其中与B+tree搜索树不同的是,其内部页除了保存子节点指针外,还保存着对应页ID的数据。
如图2所示,B-tree搜索树每个页面由四个部分构成,包括页头、最后页、单元索引和单元内容。其中,页头第0字节是表示页面类型,包括内部页(0X02)和叶子页(0X0A),第1-2字节表示第一个空闲块的起始地址(记为FF_Offset),第3-4字节表示页面的单元数,第5-6字节表示单元内容区的起始地址(记为FC_Offset),第7字节表示碎片字节数。“最后页”字段仅内部页专用,是指内部页最后一个子节点的页码。
如图3所示,对于每个单元,其记录主体由3个部分构成,分别是记录头部区(总长度、头部索引总长度)、头部索引区和数据区;其中,内部页的每个单元,会在记录主体前多出4个字节的子节点指针。
根据上文描述,Index表由B-tree来管理所有页面节点,每个页面以特定的格式组织记录单元,而且每个单元的记录主体格式比较明确,所以可以方便地分析出整个Index表中的所有内容:
根据图1所示的B-tree结构图,从数据库中还原出Index表的完整B-tree,包括所有页面节点及类型;
对于B-tree每个页面点,根据类型和图2页面结构图,抽取出所有单元内容;
对于所有单元内容,抽取单元记录主体,并且根据图3记录结构图还原完整记录结构。
此外,还可以在数据库轻微损坏的情况下,尽可能地去分析Index表记录:
主表轻微损坏:只要能够分析到Index表的根页号,就能很好执行上述3个步骤完成Index表记录分析;
Index表轻微损坏:读取B-tree,跳过或尝试修复异常的页面节点,对所有页面节点执行上述3个步骤中的后两个步骤;
基于上述分析,我们不仅可以在数据库完整的情况下从数据库中分析出整个Index表中的所有记录,还能够在数据库轻微损坏的情况下,尽可能地分析出Index表中的记录。
本发明实施例基于以上思想,提供了一种数据库索引表记录分析方法、装置、计算设备及存储介质,其能够根据数据库的格式读取Index表的页面并重组搜索树,对搜索树每个页面点抽取出所有单元内容,根据记录通用结构还原完整记录结构,并且能够自适应处理轻微损坏的数据库。下面结合附图进行详细描述。
首先对本发明实施例所提供的数据库索引表记录分析方法进行介绍。
图4为根据本发明实施例的数据库索引表记录分析方法100的示意性流程图。
请参考图4,本发明实施例公开的数据库索引表记录分析方法100,包括:
步骤S101,从数据库主表获取索引表的对应根节点及所述根节点的信息,所述根节点的信息包括根节点的页号。
数据库主表存储有数据库各种数据表的根节点,因此可以从数据库主表获取索引表的对应根节点及所述根节点的信息,所述根节点的信息包括根节点的页号。即从数据库主表获取待查询或待记录索引表对应的根节点以及该根节点的信息。
示例性地,在本发明实施例中,可以通过下述方法从数据库主表获取索引表的对应根节点及所述根节点的信息。
一,在所述数据库主表正常时,直接查询所述数据库主表中来获取索引表的对应根节点及所述根节点的信息。
二,在所述数据库主表异常时,对所述数据库主表进行分析来获取索引表的对应根节点及所述根节点的信息。
对所述数据库主表进行分析可以采用本领域常用的方法,例如包括但不限于关键字匹配、数据库修复、主表删除恢复等方法对所述数据库主表进行分析来获取索引表的对应根节点及所述根节点的信息。
步骤S102,根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树。
示例性地,在本发明实施例中,可以通过下述方法根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树。
一、在所述索引表正常时,遍历并提取所述搜索树的所有页面,并将所提取的页面挂进所述搜索树中。
二、在所述索引表异常时,在遍历所述搜索树时对损坏节点执行跳过或修复处理,并根据正常节点和修复的节点重组所述索引表的搜索树。
损坏节点的跳过或修复处理可以采用本领域常用的方法或将来开发的方法进行。
步骤S103,读取所述搜索树的节点,并从所述节点提取单元的记录主体。
即根据搜索树读取每一个页面节点,并提取该页面节点的每一个记录主体(每个页面节点包括多个记录主体)
步骤S104,根据记录结构图重组所述记录主体的记录结构。
记录结构图的示例如图3所示,当在S103中获取记录主体之后,则根据记录结构图重组所述记录主体的记录结构。
根据本发明的数据库索引表记录分析方法,根据数据库的格式读取Index表的页面并重组搜索树,对搜索树(例如B-tree)每个页面点抽取出所有单元内容,根据记录通用结构还原完整记录结构,并且能够自适应处理轻微损坏的数据库,该方法不局限于某一个数据库,对所有SQLite数据库的Index表记录分析都适用,具有很强的通用性;由于SQLite的使用呈广泛化趋势,该方法的重要性不言而喻,预计该方法将对数据库信息安全技术产生一定影响,也为其它相近数据库类型的数据库的Index表记录分析提供新的思路。
图5为根据本发明实施例的数据库索引表记录分析装置500的示意性结构框图。下面结合图5对根据本发明实施例的数据库索引表记录分析装置500进行描述。
请参考图5,根据本发明实施例的数据库索引表记录分析装置500包括节点获取模块510、搜索树重组模块520、单元提取模块530和记录结构重组模块540。
节点获取模块510用于从数据库主表获取索引表的对应根节点及所述根节点的信息,所述根节点的信息包括根节点的页号。节点获取模块510用于执行结合图4描述的数据库索引表记录分析方法中的步骤S101,该过程的详细描述参见前述结合图4的描述,在此不再赘述。
搜索树重组模块520用于根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树。搜索树重组模块520用于执行结合图4描述的数据库索引表记录分析方法中的步骤S102,该过程的详细描述参见前述结合图4的描述,在此不再赘述。
单元提取模块530用于读取所述搜索树的节点,并从所述节点提取单元的记录主体。单元提取模块530用于执行结合图4描述的数据库索引表记录分析方法中的步骤S103,该过程的详细描述参见前述结合图4的描述,在此不再赘述。
记录结构重组模块540用于根据记录结构图重组所述记录主体的记录结构。记录结构重组模块540用于执行结合图4描述的数据库索引表记录分析方法中的步骤S104,该过程的详细描述参见前述结合图4的描述,在此不再赘述。
图5所示据库索引表记录分析装置500中的各个模块/单元具有实现图4中各个步骤的功能,并能达到其相应的技术效果,为简洁描述,在此不再赘述。
图6示出了本发明实施例提供的计算设备的硬件结构示意图。
计算设备600可以包括处理器601以及存储有计算机程序指令的存储器602。
具体地,上述处理器601可以包括中央处理器(Central Processing Unit,CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器602可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器602可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在一个实例中,存储器602可以包括可移除或不可移除(或固定)的介质,或者存储器602是非易失性固态存储器。存储器602可在综合网关容灾设备的内部或外部。
在一个实例中,存储器602可以是只读存储器(Read Only Memory,ROM)。在一个实例中,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
存储器602可以包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本公开的一方面的方法所描述的操作。
处理器601通过读取并执行存储器602中存储的计算机程序指令,以实现图4所示实施例中的方法/步骤S101至S104,并达到图4所示实例执行其方法/步骤达到的相应技术效果,为简洁描述在此不再赘述。
处理器601通过读取并执行存储器602中存储的计算机程序指令,以实现图4所示实施例中的数据库索引表记录分析装置500以及节点获取模块510、搜索树重组模块520、单元提取模块530和记录结构重组模块540,并达到图5所示实例中的装置所达到的相应技术效果,为简洁描述在此不再赘述。
在一个示例中,计算设备600还可包括通信接口603和总线610。其中,如图6所示,处理器601、存储器602、通信接口603通过总线610连接并完成相互间的通信。
通信接口603,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线610包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(Accelerated Graphics Port,AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,EISA)总线、前端总线(Front Side Bus,FSB)、超传输(Hyper Transport,HT)互连、工业标准架构(Industry Standard Architecture,ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、***组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线610可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
该计算设备600可以数据库索引表记录分析算法执行本发明实施例中的基于数据库索引表记录分析方法,从而实现结合图4描述的数据库索引表记录分析方法。
此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的数据库索引表记录分析方法的相应步骤,并且用于实现根据本发明实施例的数据库索引表记录分析装置的相应单元或模块。所述存储介质例如可以包括个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
在一个实施例中,所述计算机程序指令在被计算机运行时可以实现根据本发明实施例数据库索引表记录分析装置中的各个功能模块,并且/或者可以执行根据本发明实施例的数据库索引表记录分析方法。
在一个实施例中,所述计算机程序指令在被计算机运行时执行以下步骤:从数据库主表获取索引表的对应根节点及所述根节点的信息,所述根节点的信息包括根节点的页号;根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树;读取所述搜索树的节点,并从所述节点提取单元的记录主体;根据记录结构图重组所述记录主体的记录结构。
根据本发明实施例的数据库索引表记录分析方法中的各模块可以通过根据本发明实施例的数据库索引表记录分析方法的电子设备、服务器、***的处理器运行在存储器中存储的计算机程序指令来实现,或者可以在根据本发明实施例的计算机程序产品的计算机可读存储介质中存储的计算机指令被计算机运行时实现。
根据本发明的数据库索引表记录分析方法、装置、计算设备及存储介质,根据数据库的格式读取Index表的页面并重组搜索树,对搜索树(例如B-tree)每个页面点抽取出所有单元内容,根据记录通用结构还原完整记录结构,并且能够自适应处理轻微损坏的数据库,该方法不局限于某一个数据库,对所有SQLite数据库的Index表记录分析都适用,具有很强的通用性;由于SQLite的使用呈广泛化趋势,该方法的重要性不言而喻,预计该方法将对数据库信息安全技术产生一定影响,也为其它相近数据库类型的数据库的Index表记录分析提供新的思路。
尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的物品分析设备中的一些模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。
Claims (4)
1.一种数据库索引表记录分析方法,其特征在于,包括:
从数据库主表获取索引表的对应根节点及所述根节点的信息,所述根节点的信息包括根节点的页号;
所述数据库主表获取索引表的对应根节点及所述根节点的信息,包括:
在所述数据库主表正常时,直接查询所述数据库主表中来获取索引表的对应根节点及所述根节点的信息;或者
在所述数据库主表异常时,对所述数据库主表进行分析来获取索引表的对应根节点及所述根节点的信息;
根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树;
所述根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树,包括:
在所述索引表正常时,遍历并提取所述搜索树的所有页面,并将所提取的页面挂进所述搜索树中;或者
在所述索引表异常时,在遍历所述搜索树时对损坏节点执行跳过或修复处理,并根据正常节点和修复的节点重组所述索引表的搜索树;
读取所述搜索树的节点,并从所述节点提取单元的记录主体;
根据记录结构图重组所述记录主体的记录结构;所述记录主体由记录头部区、头部索引区和数据区构成,所述记录头部区由记录总长度和头部索引总长度构成;
其中,所述数据库为SQLite数据库,所述搜索树为B-tree。
2.一种数据库索引表记录分析装置,其特征在于,包括:
节点获取模块,用于从数据库主表获取索引表的对应根节点及所述根节点的信息,所述根节点的信息包括根节点的页号;
所述节点获取模块用于在所述数据库主表正常时,直接查询所述数据库主表中来获取索引表的对应根节点及所述根节点的信息;或者
在所述数据库主表异常时,对所述数据库主表进行分析来获取索引表的对应根节点及所述根节点的信息;搜索树重组模块,用于根据所述根节点的页号,提取所述索引表的页面并重组所述索引表的搜索树;
所述搜索树重组模块用于在所述索引表正常时,遍历并提取所述搜索树的所有页面,并将所提取的页面挂进所述搜索树中;或者
在所述索引表异常时,在遍历所述搜索树时对损坏节点执行跳过或修复处理,并根据正常节点和修复的节点重组所述索引表的搜索树;
单元提取模块,用于读取所述搜索树的节点,并从所述节点提取单元的记录主体;
记录结构重组模块,用于根据记录结构图重组所述记录主体的记录结构;所述记录主体由记录头部区、头部索引区和数据区构成,所述记录头部区由记录总长度和头部索引总长度构成;其中,所述数据库为SQLite数据库,所述搜索树为B-tree。
3.一种计算设备,其特征在于,所述设备包括:处理器,以及存储有计算机程序指令的存储器;所述处理器读取并执行所述计算机程序指令,以实现如权利要求1所述的数据库索引表记录分析方法。
4.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1所述的数据库索引表记录分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011615316.3A CN112579612B (zh) | 2020-12-31 | 2020-12-31 | 数据库索引表记录分析方法、装置、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011615316.3A CN112579612B (zh) | 2020-12-31 | 2020-12-31 | 数据库索引表记录分析方法、装置、计算设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579612A CN112579612A (zh) | 2021-03-30 |
CN112579612B true CN112579612B (zh) | 2023-05-16 |
Family
ID=75144839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011615316.3A Active CN112579612B (zh) | 2020-12-31 | 2020-12-31 | 数据库索引表记录分析方法、装置、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579612B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114791913A (zh) * | 2022-04-26 | 2022-07-26 | 北京人大金仓信息技术股份有限公司 | 数据库的共享内存缓冲池处理方法、存储介质与设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844089A (zh) * | 2015-12-03 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种用于恢复树形数据存储的方法与设备 |
CN109299086A (zh) * | 2017-07-25 | 2019-02-01 | Sap欧洲公司 | 最优排序键压缩和索引重建 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7599949B1 (en) * | 2004-04-30 | 2009-10-06 | Unisys Corporation | Database management system and method for maintaining a database in a range sensitive manner |
JP2010267028A (ja) * | 2009-05-13 | 2010-11-25 | Brother Ind Ltd | 管理装置、管理処理プログラム、ノード装置、ノード処理プログラム、及び有効期限切れレコード判定方法 |
CN104376091B (zh) * | 2014-11-20 | 2017-08-01 | 厦门市美亚柏科信息股份有限公司 | 对SQLite中删除的数据进行恢复的方法及装置 |
CN104866610B (zh) * | 2015-06-04 | 2018-05-08 | 东南大学 | 一种基于相似类型匹配估算的SQLite删除数据恢复方法 |
CN105426542B (zh) * | 2015-12-24 | 2019-02-22 | 厦门市美亚柏科信息股份有限公司 | 一种SQLite空闲页上被删数据表的记录分析方法和装置 |
-
2020
- 2020-12-31 CN CN202011615316.3A patent/CN112579612B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844089A (zh) * | 2015-12-03 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种用于恢复树形数据存储的方法与设备 |
CN109299086A (zh) * | 2017-07-25 | 2019-02-01 | Sap欧洲公司 | 最优排序键压缩和索引重建 |
Also Published As
Publication number | Publication date |
---|---|
CN112579612A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569214B (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
KR101456757B1 (ko) | SQLite 데이터베이스에서 삭제된 데이터의 복원 방법 및 장치 | |
CN111241389B (zh) | 一种基于矩阵的敏感词过滤方法、装置、电子设备、存储介质 | |
CN111125298A (zh) | 重建ntfs文件目录树的方法、设备及存储介质 | |
CN110019542B (zh) | 企业关系的生成、生成组织成员数据库及识别同名成员 | |
CN112579612B (zh) | 数据库索引表记录分析方法、装置、计算设备及存储介质 | |
CN110019820B (zh) | 一种病历中主诉与现病史症状时间一致性检测方法 | |
Li et al. | Database management strategy and recovery methods of Android | |
CN104301681A (zh) | 一种监控视频的恢复方法和装置 | |
Meng et al. | bring2lite: a structural concept and tool for forensic data analysis and recovery of deleted SQLite records | |
CN108182221B (zh) | 数据处理的方法以及相关设备 | |
Pawlaszczyk et al. | Making the invisible visible–Techniques for recovering deleted SQLite data records | |
CN110895548B (zh) | 用于处理信息的方法和装置 | |
CN111026736B (zh) | 数据血缘管理方法及装置、数据血缘解析方法及装置 | |
KR101414171B1 (ko) | 전자 문서 모델링 방법 및 그 전자 장치 | |
CN107315806B (zh) | 一种基于文件***的嵌入式存储方法和装置 | |
CN106599326B (zh) | 一种云化架构下的记录数据剔重处理方法及*** | |
CN105786929A (zh) | 一种信息监测方法及装置 | |
CN113570417A (zh) | 社交数字化营销方法、***、存储介质及电子设备 | |
CN112966293B (zh) | 数据库脏页面检测方法、装置、计算设备及存储介质 | |
CN108132971B (zh) | 数据库碎片文件的分析方法和装置 | |
US20160196318A1 (en) | Reconstitution order of entity evaluations | |
CN112487043A (zh) | 数据采集方法、***、监控报警平台、计算机及存储介质 | |
CN112152873B (zh) | 用户识别方法、装置、计算机设备和存储介质 | |
CN112256685A (zh) | 基于电子表格的分割去重导入方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |