一种基于数据模型的数据备份方法和装置制造方法

文档序号:6489047阅读:236来源:国知局
一种基于数据模型的数据备份方法和装置制造方法【专利摘要】本申请提供了一种基于数据模型的数据备份方法和装置,所述方法包括:依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型;接收所述当前数据模型的标识;依据所述当前数据模型的标识解析对应的当前数据模型,以得到所述当前数据模型的当前结构化查询语言SQL;触发所述当前SQL在所述当前数据库中进行执行;将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件。采用本申请实施例公开的数据备份方法和装置,能够解决现有技术的数据备份过程中存在的待备份数据的不准确和不完整的问题,保证数据的准确性和完整性。【专利说明】一种基于数据模型的数据备份方法和装置【
技术领域
】[0001]本申请涉及数据库领域,特别涉及一种基于数据模型的数据备份方法和装置。【
背景技术
】[0002]数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统,都在各个方面得到了广泛的应用。随着数据库业务的发展和采用数据库的系统复杂度的提高,数据库的备份就越来越常见。在复杂系统中,为了系统的可维护性和效率,经常会把属于一个实体(如用户信息、用户订单、用户账单、用户个性化配置等)的数据分别存储在数据库的不同表中。这些表中对应于独立实体的数据就称为数据模型。[0003]目前现有技术中,数据库中数据的备份主要通过数据库管理员(DBA)把相关数据库表中的数据导出,然后再全部导入到另一个数据库中。具体的,目前常见的当前数据库的数据备份及后续导入到另一个数据库的方式,依据应用场景的复杂情况分为如下两种:第一种是对于数据不需要做复杂转换处理的场景,此时从当前数据库中将待备份的数据先导出成SQL(StructuredQueryLanguage,结构化查询语言)文件,再在目标数据库表中执行SQL以导入备份的数据;另一种是需要对数据做复杂转换的场景,此时先从当前数据库中将数据导出成SQL文件,在数据服务平台上进行转换,得到新的SQL文件之后,再将新的SQL文件导入到目标数据库中执行以导入备份的数据。[0004]但是发明人在研究过程中发现,这个传统的备份及后续导入的过程会遇到各种问题:上述两种数据库备份的方案,都会使得待备份的数据容易被误操作而篡改,因为在备份及后续导入的过程中可能会进行数据转换,而如果用数据库提供的操作方法或者第三方组件实现,难免会存在数据误操作的问题,导致备份的数据出错;并且,数据备份操作很复杂,通常要对待备份的数据所存的大量数据库表分别做查询操作,而且还需要操作人员根据数据模型的定义,编写不同的查询SQL,这个过程不仅复杂,而且容易出现多数据或者少数据的情况,影响待备份的数据的正确性;进一步的,现有技术中的数据转换的过程也比较复杂,而如果要对数据进行复杂的操作,特别是涉及到数据模型内部的一些关联逻辑,数据库是处理不了的,必须借助第三方的数据处理平台来进行,这样的话数据备份及后续导入过程不仅牵涉了多个操作方,更容易引入数据的不准确和不完整。[0005]总之,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新的提出一种基于数据模型的数据备份方法,以解决现有技术的数据备份过程中存在的待备份数据的不准确和不完整的问题。【
发明内容】[0006]本申请所要解决的技术问题是提供一种基于数据模型的数据备份方法,用以解决现有技术的数据备份过程中存在的待备份数据的不准确和不完整的问题。[0007]本申请还提供了一种基于数据模型的数据备份装置,用以保证上述方法在实际中的实现及应用。[0008]为了解决上述问题,本申请公开了一种基于数据模型的数据备份方法,包括:[0009]依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型;该方法包括:[0010]接收所述当前数据模型的标识;[0011]依据所述当前数据模型的标识解析对应的当前数据模型,以得到所述当前数据模型的当前结构化查询语言SQL;[0012]触发所述当前SQL在所述当前数据库中进行执行;[0013]将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件。[0014]可选的,所述依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型,具体包括:[0015]接收用户输入的待备份的数据的关键词;[0016]在所述当前数据库中查找与所述关键词相关联的所有关联数据表;[0017]判断所述关联数据表是否存在外表引用,如果是,则将外表导入至初始数据模型中;[0018]将所述关联数据表导入至所述初始数据模型中,以建立所述当前数据模型。[0019]可选的,所述依据所述当前数据模型的标识解析对应的当前数据模型,具体包括:[0020]依据所述当前数据模型的标识获取对应的当前数据模型;[0021]判断所述当前数据模型是否引用其他数据模型,如果是,则获取所述其他数据模型和当前数据模型中的所有关联数据表作为目标数据表;如果否,则获取所述当前数据模型中的所有关联数据表作为目标数据表;[0022]将所述目标数据表生成与所述目标数据表对应的第一SQL;[0023]判断所述目标数据表是否引用外表,如果是,则将所述外表生成与所述外表对应的第二SQL;[0024]将所述第二SQL,或者所述第一SQL和第二SQL作为所述当前数据模型的当前SQL。[0025]可选的,所述将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件之后,还包括:[0026]依据当前应用的不同的业务场景对所述数据备份文件中的数据进行格式转换。[0027]可选的,所述将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件之后,还包括:[0028]将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。[0029]可选的,所述将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库,具体为:[0030]在同一个事务中将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。[0031]本申请公开了一种基于数据模型的数据备份装置,包括:[0032]创建模块,用于依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型;[0033]接收模块,用于接收所述当前数据模型的标识;[0034]解析模块,用于依据所述当前数据模型的标识解析对应的当前数据模型,以得到所述当前数据模型的当前结构化查询语言SQL;[0035]执行SQL模块,用于触发所述当前SQL在所述当前数据库中进行执行;[0036]备份模块,用于将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件。[0037]可选的,所述创建模块具体包括:[0038]接收子模块,用于接收用户输入的待备份的数据的关键词;[0039]查找子模块,用于在所述当前数据库中查找与所述关键词相关联的所有关联数据表;[0040]第一判断子模块,用于判断所述关联数据表是否存在外表引用;[0041]第一导入子模块,用于在所述判断子模块的结果为是的情况下,将外表导入至初始数据模型中;[0042]第二导入子模块,用于将所述关联数据表导入至所述初始数据模型中,以建立所述当前数据模型。[0043]可选的,所述解析模块具体包括:[0044]第一获取子模块,用于依据所述当前数据模型的标识获取对应的当前数据模型;[0045]第二判断子模块,用于判断所述当前数据模型是否引用其他数据模型;[0046]第二获取子模块,用于在所述第二判断子模块的结果为是的情况下,获取所述其他数据模型和当前数据模型中的所有关联数据表作为目标数据表;[0047]第三获取子模块,用于在所述第二判断子模块的结果为的情况下,获取所述当前数据模型中的所有关联数据表作为目标数据表;[0048]第一生成子模块,用于将所述目标数据表生成与所述目标数据表对应的第一SQL;[0049]第三判断子模块,用于判断所述目标数据表是否引用外表;[0050]第二生成子模块,用于在所述第三判断子模块的结果为是的情况下,将所述外表生成与所述外表对应的第二SQL;[0051]确定子模块,用于将所述第二SQL,或者所述第一SQL和第二SQL作为所述当前数据模型的当前SQL。[0052]可选的,还包括:[0053]格式转换模块,用于依据当前应用的不同的业务场景对所述数据备份文件中的数据进行格式转换。[0054]可选的,还包括:[0055]导入模块,用于将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。[0056]可选的,所述导入模块具体用于:在同一个事务中将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。[0057]与现有技术相比,本申请包括以下优点:[0058]在本申请实施例中,由于针对待备份的数据涉及到的多个表只创建一个数据模型,并且,后续解析该数据模型的过程都依据该数据模型的唯一的标识进行,所以不会使得数据备份过程出现错误,因此就保证了数据备份过程中数据模型的准确解析,也就提高了数据备份过程中数据的正确性和完整性。进一步的,还能使得后续导入数据备份文件到其他数据库的时候,也能够保证数据的正确性和完整性。进一步的,本申请实施例中的数据模型在数据层面已经对数据做了隔离,因此数据模型的备份和后续导入过程可以通过多线程执行,从而提高备份和后续的导入效率。[0059]进一步的,本申请实施例的实施也不需要对待备份的数据编写SQL,只要提供根据数据模型的标识,就会根据数据模型生成SQL,大大减少了数据备份操作的复杂性。[0060]进一步的,在数据导入的过程中,同一个实体的数据导入流程在一个事务内完成,保证了数据的完整性。并且,数据导入也不需要编写SQL,只要通过数据备份文件即可自动导入到目标数据库。[0061]当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。【专利附图】【附图说明】[0062]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0063]图1是本申请的一种基于数据模型的数据备份方法实施例1的流程图;[0064]图2是本申请方法实施例1中步骤101的流程图;[0065]图3是本申请方法实施例1中步骤103的流程图;[0066]图4是本申请的一种基于数据模型的数据备份方法实施例2的流程图;[0067]图5是本申请的一种基于数据模型的数据备份装置实施例1的结构框图;[0068]图6是本申请装置实施例1中创建模块501的结构框图;[0069]图7是本申请装置实施例1中解析模块503的结构框图;[0070]图8是本申请的一种基于数据模型的数据备份装置实施例2的结构框图。【具体实施方式】[0071]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。[0072]本申请主要用于软件或互联网开发工作通用的计算装置环境或配置中。例如:个人计算机、服务器计算机多处理器装置、包括以上任何装置或设备的分布式计算环境等等。[0073]本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。[0074]参考图1,示出了本申请一种基于数据模型的数据备份方法实施例1的流程图,可以包括以下步骤:[0075]步骤101:依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型。[0076]在本申请实施例中,需要先依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型,具体的,根据业务需求和待备份的数据所保存的数据库表结构来配置数据模型,并为配置的数据模型定义其标识。需要说明的是,在本实施例中,定义的数据模型和待备份的数据所保存的数据库表结构应当是对应的。[0077]参考图2所示,步骤101在具体实施时可以包括如下步骤:[0078]步骤201:接收用户输入的待备份的数据的关键词。[0079]首先,需要在当前数据库中获取到待备份的数据,则可以先获取用户输入的待备份的数据的关键词,例如用户输入的关键词为“苹果手机”,那么在当前数据模型中的数据表中,根据模型ID,能够与该关键词匹配上的所有数据,都是本申请实施例中的待备份的数据。[0080]步骤202:在所述当前数据库中查找与所述关键词相关联的所有关联数据表。[0081]本步骤即是在当前数据库中查找能够与关键词匹配上的所有数据库表,并将匹配上的数据表都作为关联数据表,即是待备份的数据。[0082]步骤203:根据数据模型判断所述关联数据表是否存在外表引用,如果是,则进入步骤204,如果否,则进入步骤205。[0083]判断查找到的关联数据表是否存在外表引用,如果有外表引用,则需要先依据外表创建数据模型。其中,当数据库中存在外键引用时,将外键所在的表定义为外表,如果不存在外表弓I用,则直接进入步骤205。[0084]步骤204:将外表导入至初始数据模型中。[0085]在本实施例中,创建数据模型的过程即是将所有的关联数据表都关联到一起形成一个数据模型,而不像现有技术中在对数据进行备份时,一个数据表需要对应一个独立的SQL脚本。[0086]步骤205:将所述关联数据表导入至所述初始数据模型中,以建立所述当前数据模型。[0087]将外表导入初始数据模型之后,再将步骤202中得到的所有关联数据表导入到已经关联了外表的初始数据模型中,最终得到关联了所有关联数据表及外表的当前数据模型。[0088]需要说明的是,在步骤201?步骤205进行数据模型的创建过程中,在进行数据库表(包括外表或者关联数据表)的导入之前,也可以检查数据模型中是否已经存在相同的数据库表,可以遍历数据模型本身和其引用的数据模型进行迭代。而对于引用外键的表,也需要检查引用的外键和该外键对应的外表是否在数据模型中已经存在。因此,在本申请实施例中,在往数据模型中导入数据库表时,需要先导入外表再导入关联数据表,即是先导入被引用的表。同时,在本申请实施例中,模型ID设置在每个表上,在模型解析过程中,会将每个表中的ID抽离出来作为整个模型的ID。每个ID有一个类型号(比如USER_ID),这样模型就知道和模型关联的ID是哪个,只要根据这个ID去逐个查询数据库中的数据即可。将ID设置在每个表上,也便于处理一个模型中有多个ID的情况。[0089]为了方便本领域技术人员在具体应用中更清楚的了解数据模型的含义,下面对数据模型在创建过程中的关键字段进行介绍,不过本领域技术人员均知,以下关键字段也只是举例示意,其他能够实现本申请的方式也属于本申请的保护范围。[0090]数据模型在实现时的关键字段至少可以包括:“tables”指的是数据模型中的表,而采用“refs”表示当前数据模型引用的另一个数据模型。在本申请实施例中,为了便于数据模型的维护,一个数据模型可以引用其他数据模型。可以采用“uniqKeys、sequence”字段来实现数据模型中的表结构的唯一性控制,在解析数据模型进行待备份的数据还原时唯一还原成一个数据库表;“foreignTable”表不外表,即是数据库中存在外键引用时,外键所在的表定义为“foreignTable”。采用“ids”表示数据模型的标识(ID),一般是整个数据模型中的主要的几个表都包含的且用来描述数据属于同一个数据模型的ID,在一个数据模型中辅助的表可以另外通过外键来描述数据模型,即是定义在“foreignTable”的引用关系中。[0091]接着返回图1,在步骤102中:接收所述当前数据模型的标识。[0092]在预先创建完数据模型之后,创建的当前数据模型可以保存起来,如果下一次用户再进行相同关键词的数据库表的备份,则可以使用上一次保存过的数据模型,这样就节省了每次都必须创建数据模型的过程,更有利于节约资源。因此,虽然步骤102在步骤101之后,但是在实际应用中,并不一定是执行步骤101之后一定执行步骤102,也可以在需要进行数据备份的时候再执行步骤102。[0093]在本步骤即是获取到待备份的数据进行备份时,已经针对待备份的数据创建的当前数据模型的标识。[0094]步骤103:依据所述当前数据模型的标识解析对应的当前数据模型,以得到所述当前数据模型的当前SQL。[0095]在获得当前数据模型的标识之后,再对该标识对应的当前数据模型进行解析,从而得到与当前数据模型对应的当前SQL,即是解析的过程最终会生成可执行的SQL。其中,可以包括SQL描述(Description)类的对象集合,例如,查询数据库(DB)的SQL、数据表的王键和Sequence、表的属性(是否允许为空)等。[0096]具体的,参考图3所示,解析对应的当前数据模型具体可以包括:[0097]步骤301:依据所述当前数据模型的标识获取对应的当前数据模型。[0098]首先依据当前数据模型的标识获取预先创建好的当前数据模型。[0099]步骤302:判断所述当前数据模型是否引用其他数据模型,如果是,则进入步骤303;如果否,则进入步骤304。[0100]再判断当前数据模型是否引用其他数据模型,如果引用其他数据模型,则在解析的过程中,也需要将其他数据模型一起进行解析。[0101]步骤303:获取所述其他数据模型和当前数据模型中的所有关联数据表作为目标数据表,进入步骤305。[0102]在本步骤中,即是获得当前数据模型和其引用的其他数据模型中的所有关联数据表,并将获得的所有关联数据表作为生成当前SQL的目标数据表。[0103]步骤304:获取所述当前数据模型中的所有关联数据表作为目标数据表。[0104]而如果当前数据模型并没有引用其他数据模型,则此时直接获取当前数据模型中的所有关联数据表就可以了。[0105]步骤305:将所述目标数据表生成与所述目标数据表对应的第一SQL。[0106]在本步骤,将步骤303或者步骤304中获得到目标数据表生成与其对应的第一SQL,具体的,根据数据表生成SQL的过程现有技术也能实现,本申请实施例中不做限定。[0107]步骤306:判断所述目标数据表是否引用外表,如果是,则进入步骤307,如果否,则进入步骤308。[0108]在得到目标数据表对应的第一SQL之后,再判断目标数据表是否引用外表,如果目标数据表引用外表,那么引用的外表也应该生成对应的SQL。[0109]步骤307:将所述外表生成与所述外表对应的第二SQL。[0110]步骤308:将所述第一SQL,或者所述第一SQL和第二SQL作为所述当前数据模型的当前SQL。[0111]最后,在目标数据表不存在引用外表的情况下,直接将目标数据表对应的第一SQL作为当前数据模型的当前SQL,而在目标数据表存在外表引用的情况下,将目标数据表对应的第一SQL和外表对应的第二SQL都作都作为当前数据模型的当前SQL。[0112]在介绍完解析数据模型得到SQL之后,返回图1,步骤104:触发所述当前SQL在所述当前数据库中进行执行。[0113]在得到当前数据模型的当前SQL之后,将得到的当前SQL传入到当前数据库中进行执行,本申请实施例中也不再对当前SQL的执行过程进行详细介绍,现有技术均能实现,逐条执行SQL即可。[0114]但是本申请实施例与现有技术中的数据备份过程不同的是,执行过程是根据数据模型的当前SQL来逐条执行的,而不是按数据库表的SQL来逐条执行。因此,本申请在针对数据模型备份时,就可以根据SQL的属性,对执行SQL得到的数据做一定的校验和控制(例如表是否允许为空,数据的条数等),从而检查得到的数据库表中是否存在脏数据。[0115]步骤105:将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件。[0116]最后,再将执行当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件,其中,数据备份文件可以是XML(可扩展标记语言,ExtensibleMarkupLanguage)文件格式。具体的,在得到SQL的执行结果之后,加入各个数据库表的属性,就构成了完整的数据备份文件。[0117]可以理解的是,在不同的运行环境中,可以用不同的XML读写方案来实现数据模型的创建和解析。例如PHP(英文超文本预处理语言,HypertextPreprocessor)的DOM,C++语言的Xerces-C++等,在不同的运行环境中,可以使用不同的模板控制类。[0118]在本申请实施例中,由于针对待备份的数据涉及到的多个表只创建一个数据模型,并且,后续解析该数据模型的过程都依据该数据模型的唯一的标识进行,所以不会使得数据备份过程出现错误,因此就保证了数据备份过程中数据模型的准确解析,也就提高了数据备份过程中数据的正确性和完整性。进一步的,还能使得后续导入数据备份文件到其他数据库的时候,也能够保证数据的正确性和完整性。进一步的,本申请实施例中的数据模型在数据层面已经对数据做了隔离,因此数据模型的备份和后续导入过程可以通过多线程执行,从而提高备份和后续的导入效率。[0119]参考图4,示出了本申请一种基于数据模型的数据备份方法实施例2的流程图,除了步骤101?105之外,在得到数据备份文件之后,本实施例还可以包括以下步骤:[0120]步骤401:依据当前应用的不同的业务场景对所述数据备份文件中的数据进行格式转换。[0121]因为根据不同的业务场景,数据备份文件的格式可能与实际需要的业务场景不匹配,例如可能是因为数据库的升级,需要增加新字段;也有可能是要对数据做统一的格式转换。,格式转换逻辑的定义是接口化的,可以按照当前应用的不同的业务场景根据本申请提供的接口描述,进行不同格式的数据转换逻辑的定义,即是将数据备份文件进行适合当前业务场景的格式转换。其中的转换逻辑是根据接口和实际的业务场景自定义实现的。然后,格式转换的执行是模板化的,本申请提供统一的执行模板,对已配置的格式转换逻辑进行逐个执行。在不同的应用环境中,可以通过不同的方法实现所述的模板和接口描述,如C中的函数指针、C++中的抽象函数、Java中的interface等。[0122]步骤402:将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。[0123]在本申请实施例中,因为数据备份文件可持久化,例如将数据备份文件以XML或其他数据文件格式保存至服务器,以供后续多次对该一个数据备份文件进行数据导入,即是将数据备份文件导入至目标数据库之后,作为目标数据库中的数据。[0124]需要说明的是,对于同一个数据模型的数据应该批量同时导入,其中任意一条SQL出现问题就要产生回滚的现象。在现有技术中,按照数据备份文件的SQL进行逐条导入时无法实现根据数据模型做事务上的控制,因此一旦在数据导入过程中出现问题,就必须通过严格的回滚方式进行解决,而不能简单的重新执行,这就会大大增加数据导入过程的风险和复杂度。[0125]可以理解的是,在实际实施本申请时,如果不需要进行数据转换,则可以直接在步骤105之后执行步骤402,即是不必须一定要在步骤401之后才能执行步骤402。[0126]而本本申请实施例在执行步骤402时,可以在同一个事务中将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库,这样就能保证了数据的完整性和正确性,避免出现一个数据模型的数据部分导入而产生脏数据的情况。[0127]另外,从整个导入过程来看,每个实体的数据是相对独立的(因为在一个事务中),而且有多种可扩展的自定义的模式来解决数据冲突的问题,因此如果导入过程出现一些不可预料的问题(如数据库崩溃、数据格式不兼容等),只要做一定的修正后重新执行即可。[0128]本实施例不仅可以保证数据备份的正确性和完整性,还能够后续在对数据备份文件进行导入时,也能够避免脏数据的出现,保证导入数据库的数据的完整性和正确性,也提高了数据库的性能。[0129]对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。[0130]与上述本申请一种基于数据模型的数据备份方法实施例1所提供的方法相对应,参见图5,本申请还提供了一种基于数据模型的数据备份装置实施例1,在本实施例中,该装置可以包括:[0131]创建模块501,用于依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型。[0132]参考图6所示,所述创建模块501具体可以包括:[0133]接收子模块601,用于接收用户输入的待备份的数据的关键词;[0134]查找子模块602,用于在所述当前数据库中查找与所述关键词相关联的所有关联数据表;[0135]第一判断子模块603,用于判断所述关联数据表是否存在外表引用;[0136]第一导入子模块604,用于在所述判断子模块的结果为是的情况下,将外表导入至初始数据模型中;[0137]第二导入子模块605,用于将所述关联数据表导入至所述初始数据模型中,以建立所述当前数据模型。[0138]接收模块502,用于接收所述当前数据模型的标识。[0139]解析模块503,用于依据所述当前数据模型的标识解析对应的当前数据模型,以得到所述当前数据模型的当前结构化查询语言SQL。[0140]参考图7所示,所述解析模块503具体可以包括:[0141]第一获取子模块701,用于依据所述当前数据模型的标识获取对应的当前数据模型;[0142]第二判断子模块702,用于判断所述当前数据模型是否引用其他数据模型;[0143]第二获取子模块703,用于在所述第二判断子模块的结果为是的情况下,获取所述其他数据模型和当前数据模型中的所有关联数据表作为目标数据表;[0144]第三获取子模块704,用于在所述第二判断子模块的结果为否的情况下,获取所述当前数据模型中的所有关联数据表作为目标数据表;[0145]第一生成子模块705,用于将所述目标数据表生成与所述目标数据表对应的第一SQL;[0146]第三判断子模块706,用于判断所述目标数据表是否引用外表;[0147]第二生成子模块707,用于在所述第三判断子模块的结果为是的情况下,将所述外表生成与所述外表对应的第二SQL;[0148]确定子模块708,用于将所述第二SQL,或者所述第一SQL和第二SQL作为所述当前数据模型的当前SQL。[0149]执行SQL模块504,用于触发所述当前SQL在所述当前数据库中进行执行。[0150]备份模块505,用于将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件。[0151]在本申请实施例中,由于针对待备份的数据涉及到的多个表只创建一个数据模型,并且,后续解析该数据模型的过程都依据该数据模型的唯一的标识进行,所以不会使得数据备份过程出现错误,因此就保证了数据备份过程中数据模型的准确解析,也就提高了数据备份过程中数据的正确性和完整性。进一步的,还能使得后续导入数据备份文件到其他数据库的时候,也能够保证数据的正确性和完整性。进一步的,本申请实施例中的数据模型在数据层面已经对数据做了隔离,因此数据模型的备份和后续导入过程可以通过多线程执行,从而提高备份和后续的导入效率。[0152]与上述本申请一种基于数据模型的数据备份方法实施例2所提供的方法相对应,参见图8,本申请还提供了一种基于数据模型的数据备份装置实施例2,在本实施例中,该装置可以包括:[0153]格式转换模块801,用于依据当前应用的不同的业务场景对所述数据备份文件中的数据进行格式转换。[0154]导入模块802,用于将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。[0155]所述导入模块802具体可以用于:在同一个事务中将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。[0156]本实施例不仅可以保证数据备份的正确性和完整性,还能够后续在对数据备份文件进行导入时,也能够避免脏数据的出现,保证导入数据库的数据的完整性和正确性,也提高了数据库的性能。[0157]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0158]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。[0159]以上对本申请所提供的一种基于数据模型的数据备份方法和装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。【权利要求】1.一种基于数据模型的数据备份方法,其特征在于,依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型;该方法包括:接收所述当前数据模型的标识;依据所述当前数据模型的标识解析对应的当前数据模型,以得到所述当前数据模型的当前结构化查询语言SQL;触发所述当前SQL在所述当前数据库中进行执行;将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件。2.根据权利要求1所述的方法,其特征在于,所述依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型,具体包括:接收用户输入的待备份的数据的关键词;在所述当前数据库中查找与所述关键词相关联的所有关联数据表;判断所述关联数据表是否存在外表引用,如果是,则将外表导入至初始数据模型中;将所述关联数据表导入至所述初始数据模型中,以建立所述当前数据模型。3.根据权利要求2所述的方法,其特征在于,所述依据所述当前数据模型的标识解析对应的当前数据模型,具体包括:依据所述当前数据模型的标识获取对应的当前数据模型;判断所述当前数据模型是否引用其他数据模型,如果是,则获取所述其他数据模型和当前数据模型中的所有关联数据表作为目标数据表;如果否,则获取所述当前数据模型中的所有关联数据表作为目标数据表;将所述目标数据表生成与所述目标数据表对应的第一SQL;判断所述目标数据表是否引用外表,如果是,则将所述外表生成与所述外表对应的第二SQL;将所述第二SQL,或者所述第一SQL和第二SQL作为所述当前数据模型的当前SQL。4.根据权利要求1所述的方法,其特征在于,所述将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件之后,还包括:依据当前应用的不同的业务场景对所述数据备份文件中的数据进行格式转换。5.根据权利要求1所述的方法,其特征在于,所述将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件之后,还包括:将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。6.根据权利要求5所述的方法,其特征在于,所述将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库,具体为:在同一个事务中将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。7.一种基于数据模型的数据备份装置,其特征在于,该装置包括:创建模块,用于依据当前数据库中待备份的数据创建数据模型的标识及对应的当前数据模型;接收模块,用于接收所述当前数据模型的标识;解析模块,用于依据所述当前数据模型的标识解析对应的当前数据模型,以得到所述当前数据模型的当前结构化查询语言SQL;执行SQL模块,用于触发所述当前SQL在所述当前数据库中进行执行;备份模块,用于将执行所述当前SQL的执行结果作为与所述待备份的数据对应的数据备份文件。8.根据权利要求7所述的装置,其特征在于,所述创建模块具体包括:接收子模块,用于接收用户输入的待备份的数据的关键词;查找子模块,用于在所述当前数据库中查找与所述关键词相关联的所有关联数据表;第一判断子模块,用于判断所述关联数据表是否存在外表引用;第一导入子模块,用于在所述判断子模块的结果为是的情况下,将外表导入至初始数据模型中;第二导入子模块,用于将所述关联数据表导入至所述初始数据模型中,以建立所述当前数据模型。9.根据权利要求7所述的装置,其特征在于,所述解析模块具体包括:第一获取子模块,用于依据所述当前数据模型的标识获取对应的当前数据模型;第二判断子模块,用于判断所述当前数据模型是否引用其他数据模型;第二获取子模块,用于在所述第二判断子模块的结果为是的情况下,获取所述其他数据模型和当前数据模型中的所有关联数据表作为目标数据表;第三获取子模块,用于在所述第二判断子模块的结果为的情况下,获取所述当前数据模型中的所有关联数据表作为目标数据表;第一生成子模块,用于将所述目标数据表生成与所述目标数据表对应的第一SQL;第三判断子模块,用于判断所述目标数据表是否引用外表;第二生成子模块,用于在所述第三判断子模块的结果为是的情况下,将所述外表生成与所述外表对应的第二SQL;确定子模块,用于将所述第二SQL,或者所述第一SQL和第二SQL作为所述当前数据模型的当前SQL。10.根据权利要求7所述的装置,其特征在于,还包括:格式转换模块,用于依据当前应用的不同的业务场景对所述数据备份文件中的数据进行格式转换。11.根据权利要求7所述的装置,其特征在于,还包括:导入模块,用于将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。12.根据权利要求11所述的装置,其特征在于,所述导入模块具体用于:在同一个事务中将所述数据备份文件按照目标数据库的数据格式导入至所述目标数据库。【文档编号】G06F11/14GK103678396SQ201210353330【公开日】2014年3月26日申请日期:2012年9月20日优先权日:2012年9月20日【发明者】骆桢轩申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1