CN200810004968.6
2008.01.31
CN101499063A
2009.08.05
驳回
无权
发明专利申请公布后的驳回IPC(主分类):G06F 17/30申请公布日:20090805|||实质审查的生效|||公开
G06F17/30
国际商业机器公司
段 宁; 孙 沛; 张剑鸣
美国纽约
中国国际贸易促进委员会专利商标事务所
杨国权
本发明公开了一种集成的基于跟踪的数据库模式演进方法和系统。所述方法包括以下步骤:导入原设计模型;在编辑原设计模型时,跟踪和记录对原设计模型的更改;以及生成新设计模型,并根据所述对原设计模型的更改来生成模式演进脚本和数据移植脚本。
1. 一种集成的基于跟踪的数据库模式演进方法,包括以下步骤:导入原设计模型(S301);在编辑原设计模型时,跟踪并记录对原设计模型的更改(S302);以及根据所述对原设计模型的更改来生成模式演进脚本和数据移植脚本(S304)。2. 根据权利要求1所述的方法,还包括:利用可扩展操作集来跟踪和记录对原设计模型的更改;以及利用可扩展操作集来生成模式演进脚本和数据移植脚本。3. 根据权利要求2所述的方法,其中,所述可扩展操作集包括增加操作、删除操作、更改名称操作和移动操作中的至少一种操作。4. 根据权利要求1所述的方法,还包括:利用中间文件来跟踪和记录对设计模型的更改。5. 根据权利要求4所述的方法,还包括:对原设计模型进行解析以生成中间文件。6. 根据权利要求4或5所述的方法,其中,基于中间文件来同源地生成模式演进脚本和数据移植脚本。7. 一种集成的基于跟踪的数据库模式演进系统(200),包括:模式编辑器(210),用于编辑原设计模型并同时跟踪和记录对原设计模型的更改;以及脚本生成器(240),用于根据所述对原设计模型的更改来生成模式演进脚本和数据移植脚本。8. 根据权利要求7所述的系统,还包括:与模式编辑器(210)和脚本生成器(240)耦合的可扩展操作集模块(230),可扩展操作集模块(230)用于维护可扩展操作集,其中,可扩展操作集包含能对设计模型执行的操作类型以及相应的模式演进脚本模板和数据移植脚本模板。9. 根据权利要求8所述的系统,其中,所述可扩展操作集包括增加操作、删除操作、更改名称操作和移动操作中的至少一种操作。10. 根据权利要求7所述的系统,其中,所述模型编辑器(210)包含中间文件(211),其中所述中间文件用于跟踪和记录对设计模型的更改。11. 根据权利要求10所述的系统,还包括:与模型编辑器(210)耦合的模型解析器(220),用于对原设计模型进行解析以生成中间文件。12. 根据权利要求10或11所述的方法,其中,所述脚本生成器(240)基于中间文件来同源地生成模式演进脚本和数据移植脚本。
基于跟踪的数据库模式演进方法及系统 技术领域 本发明涉及对数据库的演进,具体来说,涉及一种基于跟踪的数据库模式演进方法及系统。 背景技术 在现今的商业服务应用领域中,随着用户需求的不断变化,商业服务的逻辑以及其数据库模式(schema)也相应地进行演进。例如,SaaS(服务式软件)系统可以通过一种系统设计来服务于不同的终端用户。在服务式软件系统中,随着用户数量以及用户类型的增加,对于解决方案的灵活性和个性化的需求越来越重要。例如,可能由于功能性设计和/或非功能性设计的原因,需要对商业服务的逻辑以及数据库模式进行改变。一般来说,在商业服务的整个寿命周期期间,商业服务系统需要不断演进。 在商业服务系统的演进过程中,数据库模式的演进和商业逻辑的演进应当同步。另外,对于发生演进之后的商业服务系统而言,原商业服务系统中的数据可能仍然是重要,因此,需要根据数据库模式的改变来正确地移植数据。 然而,在现有技术中,商业逻辑改变和数据库模式演进是在没有集成工具支持的情况下被分开处理的。因此,在现有技术中,商业服务系统的演进耗时、复杂且容易出错,并且,在商业逻辑的模型设计和数据库模式演进的结果之间容易产生差异。 例如,图1示意性地说明了现有技术中可能产生的问题。 现今,通常采用模型驱动的代码产生技术来为商业逻辑产生代码。其中,首先由设计人员设计用于商业服务的设计模型,然后,开发人员基于设计模型产生代码并由此创建符合设计的商业逻辑。 如图1所示,当需求发生改变时,设计人员利用设计模型修改工具101对设计模型进行修改,并将修改后的新设计模型分别提供给开发人员和数据库管理员。 一方面,开发人员将新设计模型导入模型驱动工具111。模型驱动工具111对设计模型进行解析。接着,代码生成器112根据解析结果产生代码。商业逻辑编译器113利用产生的代码创建相应的商业逻辑。 另一方面,在与创建所述商业逻辑完全不同的环境中,数据库管理员(DBA)利用数据库重构装置121对新设计模型进行操作,以产生重构点(Refactor Point)文件。然后,利用重构点文件,模式演进脚本(script)生成装置122可以生成模式演进脚本,以及数据移植脚本生成工具123可以生成数据移植脚本。接着,利用测试数据库124对模式演进脚本和数据移植脚本进行测试。 在现有技术中,数据库管理员需要手动地分析新设计模型来产生重构点文件,因此,所产生的脚本和所产生的代码之间很容易产生不一致性。尽管在现有技术中数据库管理员和开发人员可以通过其它方式进行额外的沟通来消除这种不一致性,但是,这在一定程度上增加了商业服务系统演进的复杂程度和成本。 另外,由于手动产生重构点文件,因此,不能够确保重构点文件完全正确反映对设计模型的修改。因此,在对模式演进脚本和数据移植脚本的调试过程中还可能需要对重构点文件进行修改。这在某种程度上还会增加数据库演进的复杂程度和成本。 在Deepak S.Elandassery等人的申请日为2003年9月25日、申请号为10/670,947、发明名称为“Method for Automated DatabaseSchema Evolution”的美国专利申请(以下称为对比文件1)中公开了一种自动数据库模式演进的方法,该专利申请在此引入作为参考。在对比文件1中,将新数据库和旧数据库的模式文件进行比较,以找到二者之间的差别,并根据所述差别来进行数据库模式演进。在对比文件1中不涉及数据移植。 在Kang Ge等人的申请日为2004年12月17、申请号为11/016,228、发明名称为“Differential Management of DatabaseSchema Changes”的美国专利申请(以下称为对比文件2)中公开了一种数据库模式演进的方法,该专利申请在此引入作为参考。与对比文件1类似,在对比文件2中,将新数据库和旧数据库的模式文件进行比较,以找到二者之间的差别,并根据所述差别来进行数据库模式演进。 在对比文件1和2的技术方案中同样存在上面所述的问题。 另外,在对比文件1和2中,通过比较新数据库和旧数据库的模式文件来找到二者之间的差别,但是这种方式不能够或者很难跟踪数据库模式改变时的语义信息。 因此,需要一种新的技术方案来解决上述现有技术中的问题。 发明内容 为了解决上述问题,本发明设计了一种基于跟踪的数据库模式演进方法及系统。 根据本发明的第一方面,提供了一种集成的基于跟踪的数据库模式演进方法,包括以下步骤:导入原设计模型;在编辑原设计模型时,跟踪并记录对原设计模型的更改;以及根据所述对原设计模型的更改来生成模式演进脚本和数据移植脚本。 在本发明的第一方面的一个实施例中,利用可扩展操作集来跟踪和记录对原设计模型的更改;以及利用可扩展操作集来生成模式演进脚本和数据移植脚本。例如,所述可扩展操作集可以包括增加操作、删除操作、更改名称操作和移动操作等。 在本发明的第一方面的另一个实施例中,利用中间文件来跟踪和记录对设计模型的更改。 在本发明的第一方面的另一个实施例中,对原设计模型进行解析以生成中间文件。 在本发明的第一方面的另一个实施例中,基于中间文件来同源地生成模式演进脚本和数据移植脚本。 根据本发明的第二方面,提供了一种集成的基于跟踪的数据库模式演进系统,包括:模式编辑器,用于编辑原设计模型并同时跟踪和记录对原设计模型的更改;以及脚本生成器,用于根据所述对原设计模型的更改来生成模式演进脚本和数据移植脚本。 在本发明的第二方面的一个实施例中,所述系统还包括:与模式编辑器和脚本生成器耦合的可扩展操作集模块,可扩展操作集模块用于维护可扩展操作集,其中,可扩展操作集包含能对设计模型执行的操作类型以及相应的模式演进脚本模板和数据移植脚本模板。例如,所述可扩展操作集可以包括增加操作、删除操作、更改名称操作和移动操作等。 在本发明的第二方面的另一个实施例中,所述模型编辑器包含中间文件,其中所述中间文件用于跟踪和记录对设计模型的更改。 在本发明的第二方面的另一个实施例中,所述系统还包括:与模型编辑器耦合的模型解析器,用于对原设计模型进行解析以生成中间文件。 在本发明的第二方面的另一个实施例中,所述脚本生成器基于中间文件来同源地生成模式演进脚本和数据移植脚本。 本发明的一个优点在于:根据本发明,采用集成的方式来生成新设计模型、模式演进脚本和数据移植脚本,从而能够保证它们之间的一致性并且减少了工作量。 本发明的另一个优点在于:根据本发明,在编辑设计模型的同时跟踪和记录对设计模型的更改,从而能够保证对设计模型的修改以及模式演进脚本和数据移植脚本之间的一致性。 根据本发明可以完整地记录对设计模型进行更改时的语义信息,这有利于简化数据库演进和数据移植时的操作。 根据本发明,采用可扩展操作集,其中,可扩展操作集可以是预先定义的,或者可以由数据库管理员根据需要进行修改,这提供了灵活性。 另外,采用可扩展操作集可以使对设计模型的操作标准化,从而减少了设计时产生错误的可能性。 另外,可扩展操作集是可重复使用的,因此,减少了设计人员的工作量。 根据本发明,中间文件记录对设计模型的更改,而脚本模板被保存在可扩展操作集中。因此,可以独立于中间文件来对所述脚本进行修改和调试,这增加了生成脚本的灵活性。 附图说明 参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中: 图1是示意性地示出了现有技术的用于商业逻辑以及数据库演进的系统。 图2是示意性地示出根据本发明的集成的基于跟踪的数据库模式演进系统的框图。 图3是示意性地示出根据本发明的集成的基于跟踪的数据库模式演进方法的流程图。 图4示出了对根据本发明的集成的基于跟踪的数据库模式演进系统的实际应用的例子。 具体事实方式 为了简明和清楚起见,在不同附图中,相同参考标记表示相同的单元。此外,为了描述的简明以及不会在不必要的方面使得本发明模糊,而省略了关于公知步骤和单元的描述和细节。 本领域的普通技术人员应该明白,前面的一般描述和下面的详细描述是对发明进行举例和说明的,而不是为了对本发明进行限制的。 下面通过例子来说明本发明的技术方案。 数据库的演进可以包括但不限于以下几种情况: -在数据库的表中删除列; -在数据库的表中增加列; -更改数据库的表中的列的名称;以及 -将数据库的表中的列移动到其它位置,例如,在表中将一个列从一个位置移动到另一个位置,或者将一个表中的列移动到另一个表中。 数据库的演进还包括许多其它情况,上面所列举的情况仅仅是示例性的。 数据库的演进包括模式演进和数据移植,其中,数据库的模式是指数据库的表结构、索引、列信息等信息。 通常,数据库管理员会利用模式演进脚本和数据移植脚本来对数据库进行演进。在数据库演进过程中,可以利用模式演进脚本来改变数据库的模式。例如,数据库管理员可以利用模式演进脚本在数据库的表中增加、删除、更改或移动列。通过数据移植脚本,数据库管理员可以将原数据库中的数据移植到演进之后的数据库中。例如,将原数据库的列中的数据移植到演进后的数据库中与该列对应的列中。 本发明的集成的基于跟踪的数据库模式演进系统包括:模式编辑器,用于编辑原设计模型并同时跟踪和记录对原设计模型的更改;以及脚本生成器,用于根据所述对原设计模型的更改来生成模式演进脚本和数据移植脚本。 下面参照图2来说明本发明的基于跟踪的数据库模式演进系统的结构。 例如,当商业需求发生改变时,设计人员可以利用根据本发明的基于跟踪的数据库模式演进系统200来对原设计模型进行修改,以生成新设计模型。 设计模型是用于描述数据对象关系的模型,其例如可以是类图、实体关系(ER)映射或对象关系(OR)映射等。当需求发生改变时,设计人员可以对原设计模型进行修改,以反映和实现所述改变。 根据本发明的基于跟踪的数据库模式演进系统200为设计人员提供了一种用于生成设计模型、模式演进脚本和数据移植脚本的集成环境。如图2所示,根据本发明的系统200包括模型编辑器210、模型解析器220、可扩展操作集模块230以及脚本生成器240。 原设计模型被导入根据本发明的基于跟踪的数据库模式演进系统200。设计人员可以在模型编辑器210中对所导入的原设计模型进行编辑。 根据本发明的集成的基于跟踪的数据库模式演进系统200还包括与模式编辑器210和脚本生成器240耦合的可扩展操作集模块230,可扩展操作集模块230用于维护可扩展操作集,其中,可扩展操作集包含能对设计模型执行的操作类型以及相应的模式演进脚本模板和数据移植脚本模板。 在一个实施例中,用户可以预先定义对设计模型所进行的编辑操作(编辑类型),其中,在可扩展操作集模块230中预先定义所述编辑类型。 下面描述了一个对设计模型进行编辑的例子,其中,设计人员使用模型编辑器210将一个新的字段添加到设计模型的数据对象中。首先,设计人员选中设计模型的设计对象并选择所需的编辑类型(在此为添加操作)。接着,设计人员将新的字段添加到数据对象中。可选地,用户还可以输入所述字段的初始数据。 例如,所述编辑类型可以是更改实体名称、更改属性类型、更改属性名称、更改属性值、更改关系、删除实体、删除属性、删除关系和移动实体等。本领域普通技术人员应当知道,所述编辑类型不限于上面的例子。 在一个实施例中,所述可扩展操作集包括增加操作、删除操作、更改名称操作和移动操作中的至少一种操作。 模型编辑器210还跟踪对原设计模型的更改。 在一个实施例中,模型跟踪器210维护一个中间文件211。中间文件211用于记录设计模型的信息以及对设计模型的更改的跟踪信息。具体来说,中间文件211可以包含但不限于:组成设计模型的实体;组成每个实体的属性;各个属性的类型;实体之间的关系等。例如,中间文件可以是XML文件形式的,但是,本领域普通技术人员应当知道,中间文件的形式不限于XML文件。下面示例性地示出了一个中间文件的例子: <?xml version="1.0"encoding="UTF-8"?> -<xsd:schema xmlns:dsmodel="http://EasyManLib" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://EasyManLib"> <xsd:element name="Model"type="dsmodel:ModelType"/> -<xsd:complexType name="ModelType"> -<xsd:sequence> <xsd:element name="entity"type="dsmodel:EntityType"minOccu rs="0"/> <xsd:element name="relationship"type="dsmodel:RelationType"minOccurs="0"/> <xsd:element name="version"type="xsd:string"minOccurs="0"/> </xsd:sequence> <xsd:attribute name="name"type="xsd:string"/> </xsd:complexType> -<xsd:complexType name="EntityType"> -<xsd:sequence> <xsd:element name="property"type="dsmodel:PropertyType"minOccurs="1"/> <xsd:element name="primaryKey"type="xsd:string"minOccurs="0"/> <xsd:element name="foreignkey"type="xsd:string"minOccurs="0"/> <xsd:element name="operation"type="dsmodel:OperationType"minOccurs="0"/> </xsd:sequence> <xsd:attribute name="Name"type="xsd:string"/> <xsd:attribute name="DBName"type="xsd:string"/> </xsd:complexType> -<xsd:complexType name="RelationType"> -<xsd:sequence> <xsd:element name="src"type="xsd:string"minOccurs="1"/> <xsd:element name="des"type="xsd:string"minOccurs="1"/> <xsd:element name="operation"type="dsmodel:OperationType"minOccurs="0"/> </xsd:sequence> <xsd:attribute name="Name"type="xsd:string"/> </xsd:complexType> -<xsd:complexType name="PropertyType"> -<xsd:sequence> <xsd:element name="operation"type="dsmodel:OperationType"minOccurs="0"/> </xsd:sequence> <xsd:attribute name="Name"type="xsd:string"/> <xsd:attribute name="Type"type="xsd:string"/> <xsd:attribute name="defaultValue"type="xsd:string"/> </xsd:complexType> -<xsd:complexType name="OperationType"> -<xsd:choice> <xsd:element name="oldentityName"type="xsd:string"minOccurs="0"/> <xsd:element name="newentityvalue"type="xsd:string"minOccurs="0"/> <xsd:element name="oldpropertyvalue"type="dsmodel:PropertyType" minOccurs="0"/> <xsd:element name="newpropertyvalue"type="dsmodel:PropertyType" minOccurs="0"/> <xsd:element name="oldRelationship"type="dsmodel:RelationType"minOccurs="0" /> <xsd:element name="newRelationship"type="dsmodel:RelationType" minOccurs="0"/> </xsd:choice> <xsd:attribute name="Name"type="xsd:string"/> </xsd:complexType> </xsd:schema> 借助于中间文件211,模型编辑器210可以跟踪对设计模型的更改。例如,每当模型编辑器210对设计模型进行编辑操作时,模型编辑器210都会在中间文件211中标记所操作的数据对象、记录相应操作类型以及参数等。从而可以在中间文件中同步且准确地记录对设计模型所作的任何更改。例如,根据本发明,设计人员可以将一个表中的列移动到另一个表中,并在中间文件211中记录所述操作。 当完成对设计模型的编辑时,模型编辑器210可以输出带跟踪标记的中间文件和新的设计模型。 在一个实施例中,根据本发明的基于跟踪的数据库模式演进系统200还包括模型解析器220。模型解析器220用于对设计模型进行解析,以生成中间文件供模型编辑器210使用。 脚本生成器240接收来自模型编辑器210的带跟踪标记的中间文件。利用所述带跟踪标记的中间文件,脚本生成器240可以生成同源的模式演进脚本和数据移植脚本。 在一个实施例中,所述脚本生成器240还可以包括基于跟踪信息的智能发现模块241。基于跟踪的智能发现模块241可以对带跟踪标记的中间文件进行分析并形成重构点文件。重构点文件是现有技术中公知的。脚本生成器241基于所述重构点文件中所标记的操作类型,在可扩展操作集中找到相应的模板,并由此生成模式演进脚本和数据移植脚本。 可扩展操作集模块230与所述模型编辑器210和脚本生成器240相关联并且用于维护可扩展操作集,其中,可扩展操作集包括一组操作以及对应的数据库演进脚本模板,所述模板包括数据库模式演进脚本模板和数据移植脚本模板。可以在根据本发明的基于跟踪的数据库演进系统200中预先定义可扩展操作集。在一个实施例中,数据库管理员可以修改和扩展所述可扩展操作集,以满足各种模式演进的需要。 可扩展操作集中的每个操作可以包括操作名称、操作类型以及与操作类型对应的数据库模式演进脚本模板和数据移植脚本模板等。作为非限制性的例子,在下面示意性地描述了可扩展操作集中的几种操作。 1.用于移动列的操作 OperationType=Move, Object=Column, Template={ --模式演进脚本:为目标表建立一个列 ALTER TABLE $MoveTarget ADD COLUMN $ColumnName $Type; --数据迁移准备脚本:建立临时表 CREATE TABLE $MoveSRC_BAK ($oldColumnsList); --数据迁移准备脚本 INSERT INTO $MoveSRC_BAK (SELECT*FROM $MoveSRC); Update $MoveTarget set $ColumnName=select $ColumnName from $MoveSRC_BAK; --模式演进脚本 DROP TABLE $MoveSRC; CREATE TABLE $MoveSRC($newColumnsList); --数据迁移准备脚本 INSERT INTO $MoveSRC(SELECT*FROM $MoveSRC_BAK); --模式演进脚本:删除临时表 DROP TABLE $MoveSRC_BAK; } 2.用于更改列名称的操作 OperationType=AlterName(AlterType), Object=Column, Template={ --数据迁移准备脚本:建立临时表 CREATE TABLE $Table_BAK($oldColumnsList); --数据迁移准备脚本 INSERT INTO $Table_BAK(SELECT*FROM $Table); --模式演进脚本 DROP TABLE $Table; CREATE TABLE $Table($newColumnsList(contain new Name)); --数据迁移准备脚本 INSERT INTO $Table(SELECT $newColumnsList FROM $ Table _BAK); --模式演进脚本:删除临时表 DROP TABLE $Table_BAK; } 3.用于添加新列的操作 OperationType=ADD Column, Object=Column, Template={ --模式演进脚本:为目标建立一个列 ALTER TABLE $Table ADD COLUMN $ColumnName $Type; Upoate $Table set $MoveTarget=$initialValue; } 4.用于删除表的操作 OperationType=Delete, Object=Table, Template={ --模式演进脚本 Drop Table $Target } 本领域普通技术人员应当理解,上面所描述的操作仅是示例性的,并且根据本发明,可扩展操作集中的操作不限于上面作为示例所描述的操作。 所述可扩展操作集可以由模型编辑器210使用。例如,当利用模型编辑器210对设计模型进行编辑时,模型编辑器210参照操作名称或操作类型等将对设计模型的更改记录到中间文件211中。 所述可扩展操作集还可以由脚本生成器240使用。例如,在完成对设计模型的编辑之后,脚本生成器240利用可扩展操作集中的模式演进脚本模板和/或数据移植脚本模板来生成模式演进脚本和/或数据移植脚本。 在一个实施例中,根据本发明的系统还可以包括版本管理模块250。版本管理模块250可以将版本信息插入到所生成的新设计模块、模式演进脚本和数据移植脚本中。所述版本信息可以用于保持模式演进脚本、数据移植脚本和商业逻辑代码之间的一致性。通过该版本信息,设计人员和/或开发人员可以很容易地获得商业逻辑代码的基准以及对应的模式演进脚本和数据移植脚本。 在另一个实施例中,所述版本管理模块250可以与版本储存库260相连,其中,所述版本储存库260用于存储设计模型以及相关模式演进脚本和数据移植脚本的历史版本。借助于该版本储存库260,设计人员可以容易地通过版本号找到相应的商业逻辑代码、数据库模式演进脚本和数据移植脚本。 本发明的基于跟踪的数据库模式演进方法包括以下步骤:导入原设计模型;在编辑原设计模型时,跟踪并记录对原设计模型的更改;以及根据所述对原设计模型的更改来生成模式演进脚本和数据移植脚本。 图3示出了根据本发明的实施例的基于跟踪的数据库模式演进方法300的流程图。 当需求发生改变时,设计人员需要对设计模块进行更改。根据本发明,设计人员可以在集成的环境中对设计模块进行更改。 在步骤S301,设计人员将原设计模型导入根据本发明的基于跟踪的数据库模式演进系统200。 在步骤S302,设计人员利用模型编辑器210对所导入的设计模型进行编辑。 在一个实施例中,模型编辑器210可以调用模型解析器220来对设计模型进行解析。模型解析器220输入设计模型,并判断该设计模型是否可以被解析。如果该设计模型不能被解析,则模型解析器进行报告并退出。否则,模型解析器220对设计模型进行解析,并输出用于描述设计模型的中间文件以供模型编辑器210使用。 在一个实施例中,可以利用可扩展操作集来跟踪和记录对原设计模型的更改;以及利用可扩展操作集来生成模式演进脚本和数据移植脚本。例如,设计人员通过可扩展操作集来对设计模型进行操作。在可扩展操作集中定义可以对设计模型执行的操作。可扩展操作集可以是预先定义的。另外,根据设计需要,数据库管理员也可以定义其自己的可扩展操作集。 在对设计模型进行编辑的同时,跟踪和记录对设计模型的更改。在一个实施例中,设计人员从可扩展操作集中选择操作类型,例如,用于移动列的操作、用于增加新列的操作、用于更改列名称的操作或用于删除表的操作等。利用所述操作类型可以对设计模型进行操作,并同时在中间文件211中记录所述操作类型。在本发明中,由于同时进行编辑和跟踪,因此,能够保证设计模型与模式演进脚本和数据移植脚本之间的一致性。 在一个实施例中,所述可扩展操作集包括增加操作、删除操作、更改名称操作和移动操作中的至少一种操作。 在一个实施例中,模型编辑器210利用中间文件来跟踪和记录对设计模型的更改。 在一个实施例中,由模型解析器220对原设计模型进行解析来生成中间文件。 在步骤S303,当设计人员完成对设计模型的编辑之后,模型编辑器210输出新设计模型以及带跟踪标记的中间文件。 在步骤S304,根据带跟踪标记的中间文件,脚本生成器240可以同源地生成数据库模式演进脚本和数据移植脚本。 在一个实施例中,可以首先采用智能发现程序(模块)对带跟踪标记的中间文件进行解析,找到其中所标记的操作类型。接着,根据所述操作类型,在可扩展操作集中检索相应的模式演进脚本模板和数据移植脚本模板。利用所检索到的模板,可以生成相应的模式演进脚本和数据移植脚本。 在步骤S305,输出生成的新设计模型、模式演进脚本和数据移植脚本。开发人员可以利用所述新设计模型来产生商业逻辑代码以及生成相应的商业逻辑。另外,数据库管理员可以利用模式演进脚本和数据移植脚本来对数据库进行演进。 在一个实施例中,还可以在新设计模型、模式演进脚本和数据移植脚本中添加版本管理信息,并且将设计模型、模式演进脚本和数据移植脚本存储在版本储存库中。在需要恢复先前版本时,该实施例是非常有用的。 图4示出了将根据本发明的集成的基于跟踪的数据库模式演进系统400应用于实际数据库演进过程的例子。 如图4所示,当需求发生改变而需要对数据库进行演进时,设计人员将原设计模型导入根据本发明的集成的基于跟踪的数据库模式演进系统400。接着,设计人员可以利用根据本发明的系统对设计模型进行编辑。 当设计人员完成编辑时,根据本发明的系统同时生成新设计模型以及模式演进脚本和/或数据移植脚本。 新设计模型被提供给开发人员。开发人员可以利用基于模型的代码生成技术来实现新的商业逻辑。 模式演进脚本和/或数据移植脚本被提供给数据库管理员,以便对数据进行演进。数据库管理员还可以根据需要对可扩展操作集进行修改。 可以通过各种方式来实现本发明的方法及系统。例如,可以通过软件、硬件、固件以及其任意组合来实现本发明的方法及系统。上面描述方法步骤的顺序仅是为了说明性的目的而采用的,除非明确的说明,否则,本发明的方法的步骤不限于上面具体描述的顺序。另外,在某些实施例中,本发明还可以体现为在记录介质上所记录的程序,其包括用于实现根据本发明的方法的机器可读指令。 尽管上面已经通过例子对本发明的特定实施例进行了详细描述,但是,本领域的普通技术人员应当理解,上述例子仅是说明性的而并非是对本发明的限制。本领域的普通技术人员应当明白,在不脱离本发明的精神和范围的情况下,可以对上述实施例做出修改。本发明的范围由所附的权利要求来限定。
《基于跟踪的数据库模式演进方法及系统.pdf》由会员分享,可在线阅读,更多相关《基于跟踪的数据库模式演进方法及系统.pdf(22页珍藏版)》请在专利查询网上搜索。
本发明公开了一种集成的基于跟踪的数据库模式演进方法和系统。所述方法包括以下步骤:导入原设计模型;在编辑原设计模型时,跟踪和记录对原设计模型的更改;以及生成新设计模型,并根据所述对原设计模型的更改来生成模式演进脚本和数据移植脚本。 。
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有经营许可证编号:粤ICP备2021068784号-1