数据库文件数据索引的处理方法和装置制造方法
【专利摘要】本发明公开了一种数据库文件数据索引的处理方法和装置。根据本发明的数据库文件数据索引的处理方法包括:获取mssql数据文件;根据获取到的mssql数据文件进行数据库恢复,得到已恢复的数据库;对数据库通过数据库连接中间件建立数据库连接;获取数据库的各个数据表;针对每个数据表,将数据表中的每一行数据分别转换为一条全文document记录;将数据表对应的多条全文document记录生成一个document集合;以及将document集合通过全文索引接口提交到全文索引服务器进行数据索引通过本发明,能够自动检索数据库所有表来检索所需要的特定数据。
【专利说明】数据库文件数据索引的处理方法和装置
【技术领域】
[0001]本发明涉及数据库【技术领域】,具体而言,特别涉及数据库文件数据索引的处理方法和装置。
【背景技术】
[0002]mssql是微软的SQLServer数据库服务器,它是一个数据库平台,提供数据库从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立使用和维护数据库。从微软自行研发的Sqlserver7.0开始,版本经历Sqlserver2000、Sqlserver2005、Sqlserver2008、一直到现在的Sql Server 2014。几个初始版本应用于中小企业信息数据库管理、门户网站系统的开发,随着版本的升级和功能的扩展,它的应用范围有所扩展,已经触及到大型、跨国企业的数据库管理。特别是以微软的.net框架编程语言为开发语言研发的产品首选mssql作为数据服务器,所以在windows的操作系统上,其应用着占据很大的份额,与mysql、oracle —起被视为现在主流应用的三种数据库。
[0003]mssql server对应的数据库在物理上是以两个文件存放的,一个后缀名为mdf,是数据文件,用于记录数据库拥有哪些其他文件且被用来存储数据,另一个后缀名为Idf,为事务日志文件。通常情况下,我们备份和迁移mssql server数据库数据采用下面两种方式:
方式一:拷贝源机器数据库对应的mdf和Idf文件,在目标机器通过ServerManagement Stud1 (可视化的数据库管理工具,简称SSMS)以附加方式恢复数据库;方式二: 在源机器上通过SSMS自带的备份工具,选择要备份的数据库,备份成任意后缀的文件(通常为.bak),在目标机器上通过SSMS以还原数据库的方式恢复数据库。备份方式可以选择完整备份或差异备份。
[0004]当我们从不同的业务平台收集到多个以mssql作为数据存储的数据文件时,我们需要从这些不同的存储文件中检索我们需要的数据。对于少量文件,在处理维护上我们可以这样:一般采取上述两种方式,针对不同的备份方式,手动采取相应的方式进行附加或还原数据库,然后在已经恢复的数据库上,遍历查询该数据库所有表来检索所需要的特定数据。当有大量的数据文件需要处理,采用这种手工方法来检索需要的数据将是一个很大的工作量。因此,在还原好的数据库上手工检索数据库所有表来检索所需要的特定数据,显然是一个很繁琐耗时的过程。
[0005]此外,mssql的数据文件通常是mdf作为文件名后缀,备份方式备份出的文件是以bak作为后缀。实践证明,任意更改这两种文件后缀名(或无后缀名)都可以正常恢复数据库。而且mdf和bak不是mssql数据文件特有的文件类型,例如,Mirror Disc File (光盘镜像文件的一种)也是以mdf作为后缀名的,以bak作为后缀的文件类型有更多种。可能由于历史原因,我们收集到的文件很有可能后缀名已经被更改或者说收集到的文件本身就不是mssql的数据文件,所以在恢复数据库的时候,不能简单的通过识别文件名后缀来判断能不能恢复数据库。
[0006]同时,备份数据库时可以选择是完整备份或差异备份,且多次备份可以附在同一个bak文件(即一个bak文件可能有多个备份集信息),如何有效的根据备份集的信息还原一个有效的数据库,需要有一个相应的处理方式。
[0007]针对现有技术中手工检索数据库所有表来检索所需要的特定数据时繁琐耗时的问题,目前尚未提出有效的解决方法。
【发明内容】
[0008]本发明的主要目的在于提供一种数据库文件数据索引的处理方法和装置,以解决现有技术中手工检索数据库所有表来检索所需要的特定数据时繁琐耗时的问题。
[0009]依据本发明的一个方面,提供了一种数据库文件数据索引的处理方法。
[0010]根据本发明的数据库文件数据索引的处理方法包括:获取mssql数据文件;根据获取到的mssql数据文件进行数据库恢复,得到已恢复的数据库;对数据库通过数据库连接中间件建立数据库连接;获取数据库的各个数据表;将数据表中的每一行数据分别转换为一条全文document记录;将数据表对应的全文document记录生成一个document集合;以及将document集合通过全文索引接口提交到全文索引服务器进行数据索引。
[0011]进一步地,第一数据行为数据表中的任意一行数据,则将第一数据行转换为一条全文document记录包括:根据第一数据行中的数据得到第一数据行对应的特征字符串,其中,数据表的文件物理路径为第一路径;以及根据第一数据行对应的特征字符串、数据表的表名和第一路径生成一条全文document记录。
[0012]进一步地,根据第一数据行中的数据得到第一数据行对应的特征字符串包括:获取数据表结构的字段集合,用第一预设符号将字段集合拼写成一个字段字符串;将第一数据行的各列值用第二预设符号拼写成一个数据字符串;由字段字符串和数据字符串组成第一数据行对应的特征字符串。
[0013]进一步地,在获取数据库的数据表之后,该方法还包括:对获取到的多个数据表按照表名进行升序或降序排序。
[0014]进一步地,获取mssql数据文件包括:获取待处理的数据文件;获取待处理的数据文件的文件头信息;以及根据文件头信息判断待处理的数据文件是否为mssql数据文件,以从待处理的数据文件中获取mssql数据文件。
[0015]进一步地,根据文件头信息判断待处理的数据文件是否为mssql数据文件包括:将文件头信息转化为十六进制的字符串,其中,文件头信息为待处理的数据文件的前4个字节的信息;将十六进制的字符串转化为大写字符串,得到文件头信息的字符串值;将文件头信息的字符串值与预设的经验值进行比对,根据比对结果判断待处理的数据文件是否为mssql数据文件。
[0016]进一步地,根据获取到的mssql数据文件进行数据库恢复包括:生成一个随机的合法的数据库名,以标识恢复数据库后的数据库名称;若mssql数据文件为mdf文件,则根据mdf文件的文件物理路径和数据库名附加数据库;若mssql数据文件为bak文件,则获取bak文件的主逻辑文件名称和日志逻辑文件名称;根据主逻辑文件名称和日志逻辑文件名称获取备份文件的所有备份集;判断备份集是否具有差异备份;若备份集具有差异备份,则对备份集中的完整备份进行不回滚事务还原,对备份集中的差异备份进行回滚事务还原;若备份集没有差异备份,则对备份集进行回滚事务还原。
[0017]进一步地,判断备份集是否具有差异备份包括:从备份集中获取备份类型为完整备份且备份时间为最近的一次完整备份的信息;根据备份时间为最近的一次完整备份的信息判断备份集是否具有差异备份。
[0018]进一步地,利用sp_attach_single_file_db命令附加数据库;利用RESTOREFILELISTONLY FROM DISK命令获取bak文件的主逻辑文件名称和日志逻辑文件名称;利用RESTORE HEADERONLY FROM DISK命令获取备份文件的所有备份集;利用RESTORE DATABASE进行回滚事务还原;以及利用RESTORE DATABASE命令进行不回滚事务还原。
[0019]依据本发明的一个方面,提供了一种数据库文件数据索弓I的处理装置。
[0020]根据本发明的数据库文件数据索引的处理装置包括:自动识别文件模块,用于获取mssql数据文件;自动恢复数据库模块,用于根据获取到的mssql数据文件进行数据库恢复,得到已恢复的数据库;提取数据到全文索引模块,用于对数据库通过数据库连接中间件建立数据库连接,获取数据库的各个数据表,将每个数据表分别转换为一条全文document记录,将各个数据表对应的全文document记录生成一个document集合,并将document集合通过全文索引接口提交到全文索引服务器进行数据索引。
[0021]通过本发明,获取到mssql数据文件后,根据获取到的mssql数据文件进行数据库恢复,然后对恢复后的数据库进行自动索引,具体地,首先对数据库通过数据库连接中间件建立数据库连接,然后获取数据库的各个数据表,再将每个数据表中的每一行数据分别转换为一条全文document记录,将每个数据表对应的多条全文document记录生成一个document集合,最后将document集合通过全文索引接口提交到全文索引服务器进行数据索引,从而将待处理的文件中的mssql数据文件恢复为数据库并建立数据库索引,这样整个过程将在后台自动化运行,维护人员只要通过全文索引接口输入要检索的关键字,即可得到想要的结果,大大减轻了维护人员的恢复数据库和查询的工作,解决了现有技术中手工检索数据库所有表来检索所需要的特定数据时繁琐耗时的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】
【附图说明】
[0022]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明第一实施例的数据库文件数据索引的处理方法的流程图;
图2至图4是根据本发明第二实施例的数据库文件数据索引的处理方法的流程图;
图5是根据本发明第三实施例的数据库文件数据索引的处理装置的框图。
【具体实施方式】
[0023]下面结合附图和【具体实施方式】对本发明做进一步说明。需要指出的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0024]第一实施例
图1是根据本发明第一实施例的数据库文件数据索引的处理方法的流程图,如图1所示,该方法包括如下的步骤SI至步骤S7:
步骤S1:获取mssql数据文件;
步骤S2:根据获取到的mssql数据文件进行数据库恢复,得到已恢复的数据库;
步骤S3:对数据库通过数据库连接中间件建立数据库连接;
步骤S4:获取数据库的数据表;
步骤S5:将数据表中的每一行数据分别转换为一条全文document记录;
步骤S6:将数据表对应的全文document记录生成一个document集合;
步骤S7:将document集合通过全文索引接口提交到全文索引服务器进行数据索引。
[0025]采用该实施例提供的数据库文件数据索引的处理方法,获取到mssql数据文件后,根据获取到的mssql数据文件进行数据库恢复,然后对恢复后的数据库进行自动索引,从而将待处理的文件中的mssql数据文件恢复为数据库并建立数据库索引,这样整个过程将在后台自动化运行,维护人员只要通过全文索引接口输入要检索的关键字,即可得到想要的结果,大大减轻了维护人员的恢复数据库和查询的工作。
[0026]第二实施例
该实施例提供了一种数据库文件数据索引的处理方法,在该方法中,自动检测文件头信息、自动挂载文件、全文索引等自动维护,达到自动化处理维护的效果。
[0027]该方法首先是利用文件的头信息对处理的文件进行识别,检测是否是有效mdf数据或bak文件。其次根据检测的结果选择不同的恢复方式进行恢复数据库,特别是对于bak文件,选择一个比较好的处理方法对完整文件和差异文件进行恢复。最后,提取恢复好的数据库下所有表数据记录到全文索引中,实现mssql数据库的自动索引过程。
[0028]本发明方法主要包括三个阶段:自动识别文件阶段;自动恢复数据库阶段和提取数据到全文索引阶段,各阶段的原理图分别如图2至图4所示。
[0029]第一:自动识别文件阶段(参考图2)
步骤100:自动识别文件准备,也即准备待处理的数据文件。
[0030]步骤101:获取文件头信息,其中,文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。通过获取待处理的数据文件前面4个字节,再将这4个字节转化成16进制的字符串,再转化成大写,得到文件头信息的一个字符串值。
[0031]步骤102:比对文件头信息,具体地,根据步骤101得出的值与科学实践的值进行比对判断文件属于哪种类型。
[0032]步骤103:判断是否是有效的mssql文件头信息,具体地,根据步骤102比对文件的结果,判断是否是有效的数据文件mssql文件头信息。是的话,跳转到步骤104,否的话,直接抛弃该文件,完成自动识别过程。
[0033]步骤104:标识数据文件,具体地,标识数据文件是mdf文件或是bak文件,并记录数据文件物理路径,为后续自动恢复数据库选择恢复策略提供依据。
[0034]步骤105:完成自动识别。
[0035]第二:自动恢复数据库阶段(参考图3)
步骤106:自动恢复数据库准备,在该步骤中,自动恢复数据库需要预装好mssql较高版本的软件,用于向下兼容待恢复的不同版本的数据文件。
[0036]步骤107:随机生成数据库名,也即生成一个随机的合法的数据库名,用于标识自动恢复数据库后的数据库名称。
[0037]步骤108:选择数据文件恢复策略,具体地,根据步骤104标识的结果,选择不同的数据文件恢复策略。
[0038]步骤109:附加数据库,具体地,对于mdf标识的文件,利用sp_attach_single_file_db命令,并根据步骤104的文件物理路径和步骤107的数据库名附加数据库。
[0039]步骤110:获取逻辑文件名,具体地,对于bak标识的文件,根据数据文件路径,利用RESTORE FILELISTONLY FROM DISK命令,得到数据文件的主逻辑文件名称和日志逻辑文件名称。
[0040]步骤111:获取备份集信息,具体地,利用RESTORE HEADERONLY FROM DISK命令,获取备份文件的所有备份集信息。
[0041]步骤112:分析处理备份集信息,其中,分析备份集信息的目的主要是为了选择一个较佳的还原方案。分析处理的过程如下:
从备份集中获取备份类型为完整备份且备份时间为最新的一次完整备份信息;根据对应完整备份的CheckPointLSN(最新一次的checkpoint的日志信息)获取是否有备份类型为差异备份且DifferentialBaseLSN等于CheckPointLSN的最新备份;如果有对应差异备份,标识完整备份的Post1n值和最新差异备份的Post1n ;如果没有对应差异备份,标识完整备份的Post1n值。
[0042]步骤113:是否有差异备份,也即根据步骤112分析的结果选择不同的还原方式。
[0043]步骤114:对完整备份进行回滚事务还原,也即根据步骤107的数据库名和112步骤分析得到完整备份的Post1n值,利用RESTORE DATABASE进行回滚事务还原。
[0044]步骤115:对完整备份进行不回滚事务还原,也即根据步骤107的数据库名和步骤112分析得到的完整备份的Post1n值,利用RESTORE DATABASE命令进行不回滚事务还原。
[0045]步骤116:对差异备份进行回滚事务还原,也即,根据步骤107的数据库名和步骤112分析得到的差异备份的Post1n值,利用RESTORE DATABASE命令对差异备份进行回滚事务还原。
[0046]步骤117:自动恢复数据库结束。
[0047]第三:提取数据到全文索引阶段(参考图4)
步骤118:提取数据到全文服务器准备,其中,全文索引至少需要设定四个字段,用于存储数据文件路径、表名、字段字符串和数据字符串。
[0048]步骤119:建立数据库连接,具体地,对上一阶段已经恢复的数据库,通过ODBC或其它数据库连接中间件建立数据库连接。
[0049]步骤120:获取表信息。
[0050]步骤121:排序表信息,具体地,步骤根据120,对获取到的表信息按表名进行升序或倒序的排序,以便给后续索引有规律的对数据进行索引。
步骤122:获取表数据,具体地,根据121步骤排序的结果集,循环结果集,获取表数据。
[0051]步骤123:将表数据转成document集合,其中,当前循环的表暂且记为T。先获取T表结构的字段集合,用特殊符号将字段集合拼接成一个字段字符串(标记为FS),再依次获取T表的行数据,将行数据的各列值也用特殊符号拼写成一个数据字符串(标记为DS),最后将FS、DS、T、数据文件路径组成一条全文document记录。从而当前表有η条记录的话,最后转化成η条的document集合。
[0052]步骤124:提交全文索引服务器,具体地,将步骤123生成的document集合通过全文索引接口提交到全文索引服务器进行数据索引
步骤125:完成索引数据模块。
[0053]采用该实施例提供的数据库文件数据索引的处理方法,在实际处理维护大量mssql数据文件中,自动识别有效的数据文件、自动恢复数据库并且自动索引表数据,极大程度上减轻了维护的工作,帮助处理人员快速检索到所需要的数据,这样处理人员有更多的时间根据检索到的数据与其它的数据进行分析。该实施例对于其它非mssql数据库文件的数据索引处理和大数据平台处理异构文件有一定的参考价值。
[0054]第三实施例
图5是根据本发明第三实施例的数据库文件数据索引的处理装置的框图,如图5所示,该装置包括自动识别文件模块10、自动恢复数据库模块30和提取数据到全文索引模块50。
[0055]其中,自动识别文件模块10用于获取mssql数据文件。自动恢复数据库模块30用于根据获取到的mssql数据文件进行数据库恢复,得到已恢复的数据库。提取数据到全文索引模块50用于对数据库通过数据库连接中间件建立数据库连接,获取数据库的各个数据表,将数据表中的每一行数据分别转换为一条全文document记录,将数据表对应的多条全文document记录生成一个document集合,并将document集合通过全文索引接口提交到全文索引服务器进行数据索引。
[0056]采用该实施例提供的数据库文件数据索引的处理装置,自动识别文件模块10获取到mssql数据文件后,自动恢复数据库模块30根据获取到的mssql数据文件进行数据库恢复,然后提取数据到全文索引模块50对恢复后的数据库进行自动索引,从而将待处理的文件中的mssql数据文件恢复为数据库并建立数据库索引,这样整个过程将在后台自动化运行,维护人员只要通过全文索引接口输入要检索的关键字,即可得到想要的结果,大大减轻了维护人员的恢复数据库和查询的工作。
[0057]第四实施例
该实施例的数据库文件数据索引的处理装置包括自动识别文件模块、自动恢复数据库模块和提取数据到全文索引模块,其中,自动识别文件模块用于执行上述的自动识别文件阶段的步骤,自动恢复数据库模块用于执行上述的自动恢复数据库阶段的步骤,提取数据到全文索引模块用于执行上述的提取数据到全文索引阶段的步骤,具体执行的步骤上文已做详细的描述,此处不再赘述。
[0058]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
【权利要求】
1.一种数据库文件数据索引的处理方法,其特征在于,包括: 获取11188(11数据文件; 根据获取到的11188(11数据文件进行数据库恢复,得到已恢复的数据库; 对所述数据库通过数据库连接中间件建立数据库连接; 获取所述数据库的数据表; 将所述数据表中的每一行数据分别转换为一条全文如⑶腕社记录; 将所述数据表对应的全文(100111116111:记录生成一个(100111116111:集合;以及 将所述如⑶腕社集合通过全文索引接口提交到全文索引服务器进行数据索引。
2.根据权利要求1所述的数据库文件数据索引的处理方法,其特征在于,第一数据行为所述数据表中的任意一行数据,则将第一数据行转换为一条全文如⑶腕社记录包括: 根据所述第一数据行中的数据得到所述第一数据行对应的特征字符串,其中,所述数据表的文件物理路径为第一路径;以及 根据所述第一数据行对应的特征字符串、所述数据表的表名和所述第一路径生成一条全文(100111116111:十己
3.根据权利要求2所述的数据库文件数据索引的处理方法,其特征在于,根据第一数据行中的数据得到所述第一数据行对应的特征字符串包括: 获取所述数据表结构的字段集合,用第一预设符号将所述字段集合拼写成一个字段字符串; 将所述第一数据行的各列值用第二预设符号拼写成一个数据字符串; 由所述字段字符串和所述数据字符串组成所述第一数据行对应的特征字符串。
4.根据权利要求1所述的数据库文件数据索引的处理方法,在获取所述数据库的数据表之后,所述方法还包括: 对获取到的多个数据表按照表名进行升序或降序排序。
5.根据权利要求1所述的数据库文件数据索引的处理方法,其特征在于,获取11188(11数据文件包括: 获取待处理的数据文件; 获取所述待处理的数据文件的文件头信息;以及 根据所述文件头信息判断所述待处理的数据文件是否为11188(11数据文件,以从所述待处理的数据文件中获取11188(11数据文件。
6.根据权利要求5所述的数据库文件数据索引的处理方法,其特征在于,根据所述文件头信息判断所述待处理的数据文件是否为11188(11数据文件包括: 将所述文件头信息转化为十六进制的字符串,其中,所述文件头信息为所述待处理的数据文件的前4个字节的信息; 将所述十六进制的字符串转化为大写字符串,得到所述文件头信息的字符串值;将所述文件头信息的字符串值与预设的经验值进行比对,根据比对结果判断所述待处理的数据文件是否为11188(11数据文件。
7.根据权利要求1所述的数据库文件数据索引的处理方法,其特征在于,根据获取到的11188(11数据文件进行数据库恢复包括: 生成一个随机的合法的数据库名,以标识恢复数据库后的数据库名称; 若所述088(11数据文件为III壯文件,则根据所述III壯文件的文件物理路径和所述数据库名附加数据库; 若所述088(11数据文件为13成文件,则获取所述13成文件的主逻辑文件名称和日志逻辑文件名称; 根据所述主逻辑文件名称和日志逻辑文件名称获取备份文件的所有备份集; 判断所述备份集是否具有差异备份; 若所述备份集具有差异备份,则对所述备份集中的完整备份进行不回滚事务还原,对所述备份集中的差异备份进行回滚事务还原; 若所述备份集没有差异备份,则对所述备份集进行回滚事务还原。
8.根据权利要求7所述的数据库文件数据索引的处理方法,其特征在于,判断所述备份集是否具有差异备份包括: 从所述备份集中获取备份类型为完整备份且备份时间为最近的一次完整备份的信息; 根据所述备份时间为最近的一次完整备份的信息判断所述备份集是否具有差异备份。
9.根据权利要求7所述的数据库文件数据索引的处理方法,其特征在于, 利用111816—丨丨16—此命令附加数据库; 利用即310即服01 011命令获取所述6成文件的主逻辑文件名称和日志逻辑文件名称; 利用即310即册仙现011服01 011命令获取备份文件的所有备份集; 利用即310即0八1八8…2进行回滚事务还原;以及 利用即310即0八从8…2命令进行不回滚事务还原。
10.一种数据库文件数据索引的处理装置,其特征在于,包括: 自动识别文件模块,用于获取咖叫丨数据文件; 自动恢复数据库模块,用于根据获取到的11188(11数据文件进行数据库恢复,得到已恢复的数据库; 提取数据到全文索引模块,用于对所述数据库通过数据库连接中间件建立数据库连接,获取所述数据库的各个数据表,将每个数据表分别转换为一条全文如⑶腕社记录,将各个数据表对应的全文(10(3111116111:记录生成一个(1(3(3111116111:集合,并将所述(1(3(3111116111:集合通过全文索引接口提交到全文索引服务器进行数据索引。
【文档编号】G06F17/30GK104391945SQ201410700349
【公开日】2015年3月4日 申请日期:2014年11月28日 优先权日:2014年11月28日
【发明者】郑少明, 邱锋兴 申请人:厦门市美亚柏科信息股份有限公司