时间:2022-12-11 22:30:01 | 来源:信息时代
时间:2022-12-11 22:30:01 来源:信息时代
版本管理 : 工程数据库中的重要概念,是工程数据库管理系统具有的重要功能与特性。版本是记录特定对象各个可选状态的快照,版本管理的任务就是对对象的历史演变过程进行记录和维护,根据实际应用背景选择合适的版本间的拓扑结构,并至少应包括以下功能:新版本的生成;统一、协调管理各个版本;有效记录不同版本的演变过程及对不同版本进行有效管理,以尽可能少的数据冗余记录各版本。同时还要保证不同版本在逻辑上的一致性和相对独立性,一个版本的产生和消失不会对其余版本的内容产生影响。版本切换时,指定了新的当前版本后,必须保证对象的映象和指定的版本保持一致。
1.版本管理模型
版本管理的主要模型有线性版本管理模型、树型版本管理模型和有向无环图版本管理模型。
(1)线性版本管理模型: 这是按版本出现的先后次序排列的一种简单模型。一个对象的版本聚集在一起组成一个版本集,版本集中的元素之间满足“successor-of”的有序关系。版本集中的元素是全序关系,新元素只能朝一个方向上增加,除最新版本外,其余版本均是只读版本。
(2)树型版本管理模型: 树型版本管理模型中各版本的出现呈现树状结构。同样一个对象的版本聚集在一起组成一个版本集,版本集中的元素之间满足“successor-of”的有序关系。但版本集中的元素是半序关系,即一个版本可以有多个后继版本,因此,可以有多个最新版本。同样,除最新版本外,其余版本均是只读版本。这种模型可以反映设计过程中以某一中间版本为基础,选择多种设计方案而形成多个设计结果的情况。
(3)有向无环图版本管理模型: 有向无环图版本管理模型中各版本的出现呈现无循环图的结构。同样一个对象的版本聚集在一起组成一个版本集,版本集中的元素之间满足“successor-of”的有序关系,版本集中的元素是半序关系,即一个版本可以有多个后继版本,因此,可以有多个最新版本。但是一个版本可以有多个前驱版本。同样,除最新版本外,其余版本均是只读版本。这种模型可以表达由多个设计零部件合成一个完整对象的情况,即由多个设计版本融合出一个新版本的情况。此模型是较为完善的模型,线性及树型模型是它的特例。
2. 版本管理方法
版本管理的常用方法有: 向前版本管理法、有限记录版本管理法、向后版本管理法、关键版本管理法和设计版本的重新组织等方法。
(1) 向前版本管理法: 只完整的存储原始版本数据,后继的版本仅存储与前驱版本的差。这种方法的优点是数据冗余少,生成新版本简单; 缺点是对原始版本以外的所有版本的访问都必须依据一定的算法临时生成相应的版本,比较繁琐。
(2) 向后版本管理法: 与向前版本管理法正好相反,该方法只完整存储最新版本数据,其他版本只存储其与后继版本之间的差。因此同样数据冗余少,而且一般情况下对新版本的访问频度较高,效率比向前版本管理法高。缺点是每次生成的新版本都是完整的版本,比较费时和复杂,访问新版本以外版本时也必须依据一定的算法临时生成相应的版本。
(3)有限记录版本法: 为减少数据冗余,实际应用中不大可能保存每个对象的所有版本。有限记录版本法提供为每个对象保留有限数量的不同版本的方法进行版本管理,在新版本生成时,系统自动废除一些老版本,这样可以重用其占有的空间,从而不会扩大数据库所占用的总空间。
(4)关键版本法: 在工程产品设计过程中产生的诸多版本中,其重要性是有很大差别的。因此,根据各数据库在整个产品设计过程中的重要性,可以将其分为关键版本和非关键版本,在生成数据库的新版本之时,可以废除某个非关键版本,以重用其所占有的存储空间,但不允许系统自动废除某一关键版本。
(5)设计版本的重新组织: 重新组织的方法是利用已有的多个数据库版本融合出一个新的数据库版本。充分利用数据库中已经存储的大量历史数据来生成数据库的新版本是有可能的和富于价值的。
(6)版本管理的新方法: 用于减少数据冗余和实现版本间的引用和比较,如版本集和选择的概念。版本集是通过修改一个已存在的实体而产生的版本,同一实体的不同版本实质上是相似的。而选择则是通过创建一个新的实体以表示相同功能的实体而产生的,两个选择之间可能没有任何共同之处。从中可以看出版本集和选择虽然都与实体相关联,但两者间存在很大的差别,应该采用不同的方式实现。若版本之间只是部分的修改,且修改多集中在一些记录上,可以采用“记录级版本”的方法;若两个选择之间的差别较大,应采用“文件级版本”的方法。
在记录级版本法中,用一个唯一的记录标识来标识每条物理记录,并作为该记录在数据库中的物理地址。一个版本文件由三个内部文件支持: 历史索引、当前版本文件、旧版本文件。三个文件组织成一个树型结构,其中历史索引是根,其孩子是记录级版本顺序号,不同的版本顺序号通过键与当前版本文件和旧版本文件连接,表示版本的变迁情况。
在文件级版本法中,每个选择用一个文件的命名集合来表示,对集合中每个文件,在文件名后用一个后缀序号表示。如:
cmp.1 ——表示原始版本
cmp.2
…
对于每个文件下扩充,可以采用子序列1.1、1.2、1.3的形式加以扩充。
(7)C/S体系结构的版本管理: 工程数据库技术是client/server结构最典型的应用领域之一。在C/S结构的工程数据库应用系统中,数据库应用程序运行在客户端(client),负责用户界面和I/O处理; 数据库管理系统运行在服务器端(server),负责数据处理和存储。在这种体系结构中,版本的管理有自身的特点。
C/S数据库体系中一般采用版本的不同类型实现版本管理,即多种语义版本模式,由public数据库、若干个project数据库和若干个private数据库组成。这种版本模式可用三种不同的语义类型加以区分: ①发布版本(released version): 发布版本驻留在public数据库中,具有删除和修改保护。其他对象对发布版本的使用是安全的。②工作版本(working version): 与发布版本一样,工作版本也是不能修改的。但它可由创建者来修改,可以驻留在private数据库中,也可以驻留在project数据库中。工作版本通过检验进入public数据库后,就成为发布版本。③过渡版本(transient version): 过渡版本驻留在private数据库中,禁止该private数据库外的其他对象访问。一个过渡版本可以从工作版本或发布版本中派生出来,也可以通过自动升级成为工作版本。
(8)面向对象版本管理: 在面向对象版本管理中通过引入“类版本”,将版本分为类版本和实例版本两种类型,其中类版本是模式版本化生成的,而实例是模式的具体实现,不同的实现形成不同的实例版本。版本的演化过程通过树型结构体现,被修改的版本是父版本,修改后得到的版本是其子版本。版本在不同的数据库中具有不同的状态,主要包括: ①临时版本: 在私有库中,没有子版本的版本称为临时版本,可以进行修改和删除; ②有效版本: 在临时版本上导出子版本后,临时版本提升为有效版本,此时可以删除但不可修改;③提交版本:设计人员完成设计后,将私有库中最完善的版本提交到公有库中,公有库中的版本称为提交版本,此时不可删除也不可修改。
3. 复杂对象的管理模式
在面向对象版本管理的模式演化过程中,根据对象的不同类型,对版本的修改采用不同的处理方式,在原有类版本上进行修改或形成新的类版本;对实例版本只在模式修改的情况下才作相应的修改,其他情况则仍属于原来的类版本。针对简单对象和复杂对象,版本管理采用的处理方式也不同。
简单对象的模式演化,即类定义的改变,包括类的属性和方法的增、删、改操作。如果增加的属性是对原有类版本更细致的描述,只需修改原有类版本的属性定义,不需形成新的类版本; 如果增加的属性引起类性质的变化,则需生成新的版本,旧版本的实例版本保持不变。删除属性是增加属性的逆过程,其处理方式与增加的处理方式相同。对于属性修改,一般情况均生成新版本,只有方法的修改和增加时不生成新版本。
复杂对象是由简单对象递归聚合而成的,增加或删除其中的简单对象,都会引起复杂对象的结构层次发生变化,均需生成复杂对象的新版本。
在版本管理过程中还需维护属性和方法的一致,如果所删除或修改的属性与方法的接口相关联,须在属性改变后立即修改方法,保证属性和方法的一致性。