天津大学计算机学院SOS的实现.pptVIP

  • 8
  • 0
  • 约5万字
  • 约 104页
  • 2019-04-13 发布于湖北
  • 举报
* 我们前面已经知道,SDO基于一种非连接数据的架构 这个示意图给出了SDO的架构的一个简单描述。客户端从data access service获取数据图,对数据图进行修改后提交给data mediator service进行更新。 Data access service负责与后台的数据源进行通信,完成构造数据图,更新数据图等操作。 * 这是SDO与其他数据访问模型的比较, 可以看出SDO是最灵活的一种数据访问模型 * SDO中包含如下四个组件; Data Object:数据对象保存具体的数据,包括原始数据以及指向其他数据对象的引用。数据对象也包含了指向元数据(metadata) 的引用,这使得SDO的元数据能够被读取,包括数据的类型,关系和约束等。这方面和Java中的反射机制类似。 Data Graph:数据图是一个概念上的数据集合。具体的讲,数据图是一个有多个树根(multi-rooted)的数据对象的集合。 数据图可以记录所有对数据对象的操作,比如创建,删除,更新等。 Metadata: 元数据使得开发工具和运行时环境能够动态地或者静态的查看数据的属性,包括数据的类型,关系和约束等 SDO提供了一组与数据源无关的元数据API Data Mediator Service:数据访问服务负责与后台的数据源进行通信,完成构造数据图,更新数据图等操作。 * 这四个组件的关系如图所示,这个图更前面的图类似,但是增加了元数据模型。 元数据模型被数据对象所引用。 * 这是SDO中核心组件的UML描述。 Data graph中包含了0个或1(多个)Data object,同时包含了一个changesummary用于记录对data object的操作 Data object包含0个或多个Sequence,也可以0个或多个Data object。每个data object对应一个Type 每个Sequence对应0个或多个property,每个property对应的一个type 而同一个type可以拥有多个property与之对应 * 下面开始详细介绍这几个核心组件 首先是Data Object。Data object将数据保存为一个属性(property)的集合。 这些属性既可以是原始的数据类型,也可以是指向其他数据对象的引用 Data Object可以通过SDO的元数据API进行内观( introspect),这使得程序可以在运行时获取数据的类型,关系,约束等信息。 SDO规定Data object应该至少提供一组动态API用于读取和修改对象,包括对象中的属性(property)。这组动态API使用XPath 表达式在data graph中定位data object。另一方面,静态的Java接口也可以通过模型(model)或者模式(schema)生成。 SDO中没有定义静态接口的生成方法,已有的工具可以直接应用到SDO中,比如JAXB的一些实现。 Data object支持丰富的关系(relationship,其实就是量词),包括1:1, 1:n, n:m,当对象进行复制删除等操作的时候, 这些关系由Data object负责管理。 * 接下来介绍Data Graph Data graph表示一个数据集合,具体的讲,它保存了一个Data object的集合。 Data graph是数据传递的最小单位。Data graph负责记录数据的改变:包括添加,删除,更新。 可选的,Data graph可以记录数据变更的整个历史,提供类似版本管理的功能。 最终变更历史会被ChangeSummary模块访问,并对后端数据源进行相应的更新。 * 这是Data graph的一个例子。 一个Data graph总是有一个单独的根结点,对应图中的Purchase Order节点 所有的子节点(data object可以通过根结点)递归访问,图中只给出了最简单的一层结构 * 接下来,我们开始Metadata,元数据 数据通常是由三个层次来描述的:数据实例(instance data),元数据(metadata),元数据模型(metamodel) 数据实例符合元数据给出的描述,而元数据本身也符合元数据模型。 例如:在XML在中,这三个层次分别对应:xml instance 文件,xml schema,schema language spec SDO提供了一组很小的元数据API(也就是一个隐式的metamodel)。这组API并不打算和XML schema那么强大, 它主要是为了应用程序和框架实现内观(introspect)而提供支持。 * SDO的出现使得一些应用变得更为简单,接下来我们介绍几个SDO几个简单用例use case。 第一个要介绍的是虚拟数据访问

文档评论(0)

1亿VIP精品文档

相关文档