53、数据库联邦设计支持:解析、断言、集成与事务处理

数据库联邦设计支持:解析、断言、集成与事务处理

1. 内块模式简化

内块模式简化是一个重要的过程,下面通过具体例子来说明。假设有如下的解析树内块:
- AUTHOR Gunter BOOK Databases
- AUTHOR Can BOOK Objectbases
- AUTHOR Ingo BOOK Schemaintegration
- AUTHOR Michael BOOK Oracle8

由于每个块有四个元素,总共可以推导出 16 种组合。第一个组合(pure pure pure pure)为源组合。将第一个元素设为 meta 并不会减少块的数量。我们的目标是计算出具有最少不同块且从 pure 到 meta 转换最少的组合。在上述例子中,最佳组合是(pure meta pure meta),即:
AUTHOR String BOOK String

通过这种方式,可以减少不同内块的数量,并且这些块可以用计算出的组合来表示。该算法可以递归地应用于解析树的每一层,最终得到一个与解析树等价的语法树。这个语法树可以转换为适配器生成器的语法。

不过,对于半结构化文件,语法并不是一个合适的处理方法。例如,由 CGI 脚本访问关系数据库生成的 HTML 文件,通常包含大量不必要和无结构的信息,如文本格式控制序列、产品广告、附加服务等。为这类文件构建完整的语法既不必要又昂贵。更合适的方法是应用模式匹配技术,如正则表达式。

2. 断言生成

完整性约束是数据库模式的重要组成部分,它描述了所建模的现实世界的属性,从而定义了数据库模式的语义。执行这些约束可以确保相应数据库状态的语义正确性。为了构建和维护语义正确的数据库联邦,本地现有的完整性约束必须反映在全局模式中。此外,我们可以使用本地完整性约束为相应的类推导全局断言。

2.1 扩展断言类型

数据库集成者可以在本地类之间定义以下扩展断言:
| 断言类型 | 定义 |
| ---- | ---- |
| 不相交(Disjointness) | (C1 \cap C2 :⇔∀S : Ext_S^{C1} \cap Ext_S^{C2} = ∅) |
| 等价(Equivalence) | (C1 ≡ C2 :⇔∀S : Ext_S^{C1} = Ext_S^{C2}) |
| 包含(Containment) | (C1 ⊃ C2 :⇔∀S : Ext_S^{C1} ⊇ Ext_S^{C2}) |
| 重叠(Overlap) | (C1 ⋒ C2 :⇔true) |

两个类在扩展上不相交意味着在任何数据库状态下,这两个类的扩展中都没有共同的对象。扩展等价的类在每个数据库状态下都有相同的扩展。如果一个类的扩展是另一个类扩展的超集,则称前者在扩展上包含后者。默认值为重叠,即对两个相关类的扩展没有限制。

2.2 扩展断言推导示例

考虑本地类 Library.Book 和 Project.Book,假设它们分别包含图书馆和项目的书籍。这两个本地类都有一个属性 Publisher,并且有以下完整性约束:
- Library.Book.Publisher ∈ {Springer, Addison - Wesley, Prentice - Hall}
- Project.Book.Publisher ∈ {infix, Shaker}

显然,类 Library.Book 和 Project.Book 的扩展是不相交的。此外,基于线性算术约束的断言推导目前已集成到工具集成向导中。

3. 集成

集成主要涉及三个部分:模式集成、完整性约束集成和访问权限集成。

3.1 模式集成

模式集成是联邦数据库设计的主要步骤。根据五级模式架构,现有组件数据库的模式必须集成到联邦模式中。克服模式异构性是一项复杂的任务,通常包括检测语义冲突,然后通过设计新的模式和相应的模式映射来解决这些冲突。解决所有冲突后,这些模式可以合并为一个联邦模式。

我们开发了新的模式集成方法 GIM(Generic Integration Model),这是一种用于模式集成的中间数据模型。GIM 方法允许使用形式概念分析中的算法,从而增加了模式集成中可以自动完成的部分。

下面通过一个例子来简要介绍 GIM 方法。假设有一个图书馆数据库存储出版物信息,其中书籍和期刊论文是出版物的特殊类型,每个出版物要么是书籍要么是期刊论文。这个数据库需要与一个存储项目出版物的项目数据库进行集成,该项目数据库区分更多类型的出版物。

在集成这些模式之前,需要解决冲突。本文考虑了扩展冲突和内涵冲突。假设其他类型的冲突已按相关方法解决。扩展冲突指的是不同类之间的冗余,而内涵冲突是由语义相关类的不同类型引起的。

知道扩展重叠后,原始扩展可以分解为不相交的基扩展。例如,如果类 A 和 B 重叠,它们的扩展可以分解为三个基扩展(A \ B, B \ A, A ∩ B)。通过给定的扩展和内涵信息,可以自动推导出一个将属性分配给基扩展的表格。这个表格表示是集成模式的简化 GIM 表示,可以直接用于进一步分析。

通过形式概念分析的算法,可以找到所有最大矩形和它们之间的扩展子集关系。最大矩形代表联邦模式中的一个类。最终,可以根据计算出的类和相关矩阵生成联邦模式。

3.2 完整性约束集成

为了构建和维护语义正确的数据库联邦,本地现有的完整性约束必须反映在全局模式中。在模式集成过程中处理完整性约束的方法基于一组逻辑规则。

3.2.1 分解完整性约束

基于 GIM 方法,首先从给定的类中导出基扩展,然后将相应的完整性约束分配给这些基扩展。在这个过程中,需要检查原始类的哪些约束在相应的基扩展中仍然有效。如果一个完整性约束在原始类扩展的任何子集上仍然有效,则称其为可分解的。任何可分解的约束都可以不变地应用到相应的基扩展中。

3.2.2 组合完整性约束

在将基扩展组合成全局类时,需要检查约束是否可组合。如果一个完整性约束在原始扩展的任何超集上仍然有效,则称其为可组合的。如果一个类由两个不与任何类约束关联的基扩展的并集组成,则这些基扩展的相应对象约束可以进行析取连接。但通常基扩展包含类约束,如唯一性约束,此时可以通过引入判别属性来解决问题。

通过集成完整性约束,可以解决全局可理解性问题。为了解决本地可理解性问题,完整性约束的集成必须与扩展断言保持一致。

3.3 访问权限集成

数据库系统的一个关键特性是机密数据的管理,需要强大的用户管理、授权和认证机制。在联邦环境中,全局和本地机制需要协同工作以确保全局安全。

我们关注的是访问权限,它是关于主体(用户、角色、程序等)以特定方式(读、写等)访问对象(数据片段)的权利声明,包括将这些权利授予其他主体的权利。在联邦系统中,本地访问权限需要进行转换、过滤和集成,这包括解决从不同本地系统导入的重叠访问权限之间的冲突。

在设计联邦系统时,需要选择一个全局安全模型来表达集成的访问权限。我们将所有访问权限表示为三元组,包括主体(仅单个用户)、对象(类、对象和属性)和访问类型(读、写、创建、删除)。我们只考虑正访问权限,并遵循封闭世界策略。

下面通过一个场景来说明访问权限的集成。假设有两个本地数据库 Project 和 Library,本地用户 joe 在 Project 数据库中通过角色 research 对 Project.Publication 有读访问权限,在 Library 数据库中对 Library.Publication 有读和写访问权限。

首先,将本地模式上的访问权限转换为用我们的全局模型表示的访问权限。由于模型的简单性,基于复杂概念(如用户组或视图)的访问权限需要进行划分,这会显著增加访问权限的数量。

然后,将导出的本地访问权限集成到与集成模式对应的全局访问权限中。如果一个用户在一个本地系统中有访问某个数据对象的权利,而在另一个本地系统中没有访问相同或重叠数据对象的权利,就会出现语义冲突。

对于这种冲突,联邦系统的设计者可以与本地管理员合作,有以下三种解决方法:
- 若相关管理员要求,则拒绝访问。
- 若相关管理员接受,则允许访问。
- 本地授予权利,冲突消失。

在我们的例子中,选择了第一种方法,因此用户 joe 只能在本地系统中更新 Library.Publication。

最后,在 SIGMABench 工具中实现了一种全局授权的变体,用于检查所有关于联邦数据的全局查询是否符合集成的访问权限。在本地系统中,我们创建一个登录名为 fdbs 的用户,并由负责的管理员授予其对所有可导出数据的完全访问权限。为了获得本地系统对这种方法的信任,还需要在全局端使用强大的用户认证机制。

4. 全局事务

在联邦数据库环境中,全局事务能够透明地访问和操作位于不同本地数据库系统中的数据。根据底层全局模式,特别是固定的扩展断言,一个全局事务会分解为一组在本地数据库系统上操作的全局子事务。扩展断言会影响同一全局事务的全局子事务之间的依赖关系。为了正确终止一个全局事务,需要不同的全局提交规则。例如,在某些情况下,仅一个全局子事务的提交就足以提交整个全局事务,即即使某些全局子事务中止,全局事务仍可以提交。

下面考虑一个全局事务 (t_g) 的分解和相应的全局提交规则。全局事务 (t_g) 包括对全局类 (C_{g1}) 和 (C_{g2}) 的插入操作(其中类 (C_1) 和 (C_3) 由一个本地数据库系统管理,类 (C_2) 和 (C_4) 由另一个本地数据库系统管理):
- Insert into (C_{g1} = C_1 ∪ C_2) with (C_1 \cap C_2 = ∅);
- Insert into (C_{g2} = C_3 ∪ C_4) with (C_3 ⊃ C_4);

插入到类 (C_{g1}) 成功的条件是相应的对象恰好插入到本地类 (C_1) 和 (C_2) 中的一个。而插入到类 (C_{g2}) 成功的条件是对象至少出现在类 (C_3) 中。全局事务成功的条件是对象插入到类 (C_1) 和 (C_3),或类 (C_2) 和 (C_3),或类 (C_1)、(C_3) 和 (C_4),或类 (C_2)、(C_3) 和 (C_4)。

如果一个事务的任何一个操作中止,则整个事务中止。因此,全局事务分解为全局子事务,其中事务 (t_i) 执行插入到类 (C_3) 的操作,事务 (t_j) 执行其他相关操作。

综上所述,数据库联邦设计涉及多个方面,从内块模式简化到全局事务处理,每个环节都有其独特的方法和挑战。通过合理运用各种技术和算法,可以有效地构建和管理数据库联邦,确保数据的语义正确性和安全性。

5. 技术总结与应用展望

5.1 技术要点总结

为了更清晰地回顾前面介绍的各项技术,下面以表格形式总结其关键要点:
| 技术领域 | 关键技术 | 主要作用 |
| ---- | ---- | ---- |
| 内块模式简化 | 计算最佳组合、递归应用算法 | 减少解析树内块数量,生成等价语法树用于适配器生成 |
| 断言生成 | 定义扩展断言类型、推导扩展断言 | 基于完整性约束定义类间关系,确保数据库语义正确性 |
| 模式集成 | GIM 方法、分解扩展为基扩展 | 解决模式异构性,增加模式集成自动化程度 |
| 完整性约束集成 | 分解与组合约束 | 使本地完整性约束反映在全局模式,解决可理解性问题 |
| 访问权限集成 | 转换与集成访问权限、解决冲突 | 确保全局安全,统一不同本地系统的访问权限 |
| 全局事务 | 分解事务、定义全局提交规则 | 实现全局事务对不同本地数据库的透明访问和操作 |

5.2 应用流程梳理

下面通过 mermaid 格式流程图展示数据库联邦设计的整体应用流程:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;

    A(内块模式简化):::process --> B(断言生成):::process
    B --> C(模式集成):::process
    C --> D(完整性约束集成):::process
    D --> E(访问权限集成):::process
    E --> F(全局事务处理):::process

从流程图可以看出,数据库联邦设计是一个逐步推进的过程,每个步骤都为后续步骤奠定基础。

5.3 实际应用建议

在实际应用中,可按照以下步骤进行数据库联邦设计:
1. 内块模式简化阶段
- 确定解析树内块元素,计算所有可能组合。
- 分析组合效果,选择具有最少不同块且转换最少的组合。
- 递归应用算法到解析树各层,生成语法树。
2. 断言生成阶段
- 明确本地类及其完整性约束。
- 根据约束定义扩展断言类型,推导类间扩展关系。
- 利用工具集成向导进行基于线性算术约束的断言推导。
3. 模式集成阶段
- 采用 GIM 方法,识别并解决扩展和内涵冲突。
- 将原始扩展分解为基扩展,构建属性与基扩展的对应表格。
- 运用形式概念分析算法推导联邦模式中的类。
4. 完整性约束集成阶段
- 基于 GIM 方法分解完整性约束到基扩展。
- 检查约束的可组合性,处理类约束冲突。
- 确保集成过程与扩展断言一致,解决可理解性问题。
5. 访问权限集成阶段
- 选择合适的全局安全模型,将本地访问权限转换为全局模型表示。
- 集成本地访问权限,解决可能出现的语义冲突。
- 实施全局授权机制,确保本地系统信任。
6. 全局事务处理阶段
- 根据全局模式和扩展断言分解全局事务为子事务。
- 定义全局提交规则,确保事务操作的正确性。

5.4 未来发展趋势

随着数据量的不断增长和数据类型的日益复杂,数据库联邦设计将面临更多挑战和机遇。未来可能的发展趋势包括:
- 智能化处理 :进一步提高模式集成、断言推导等过程的自动化和智能化程度,减少人工干预。
- 支持更多数据类型 :适应半结构化、非结构化数据的集成需求,拓展数据库联邦的应用范围。
- 增强安全机制 :开发更强大的访问权限管理和认证机制,应对日益严峻的安全威胁。
- 跨平台兼容性 :实现不同操作系统、数据库管理系统之间的无缝集成,提高系统的灵活性和可扩展性。

总之,数据库联邦设计是一个不断发展和完善的领域,通过持续关注技术发展趋势并积极应用新的方法和工具,能够更好地满足实际应用中的各种需求。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值