信息化 频道

网格技术为消除信息孤岛出新招

OGSA-DAI访问DBMS的三组类别
 
  OGSA-DAI工作流程意味着OGSA-DAI访问DBMS的这些类可以划分为三组:
 
  DataResourceImplementation
 
  该类负责处理 JDBC 连接、驱动程序、角色映射以及访问 DBMS。掌管连接的处理和角色映射。它们在配置文件中与数据资源相匹配,并为希望自己编写 DataResourceImplementation 的人们提供扩展点。活动类应该仅仅依赖相关接口中的方法。
 
  对关系型访问而言, SQLActivity将通过 JDBCDataResource 的 getConnection 方法获取一个 JDBC连接。实现的方法是将凭证作为参数传递。 DataResourceImplementation 类提供的 mapCertificate 方法可以用于将这些凭证映射为数据库角色(根据角色映射器获取用户名和口令)。现在,我们已经用 mapCertificate 方法获得了用户 ID和口令,也从配置文件中获得了 URI,必要的条件都已经具备,可以创建JDBC 连接了。
 
  活动类
 
  该类负责接受 SQL,并用 JDBC 连接将这个 SQL 传递给 DBMS,然后对返回的结果进行格式化。所有其他的 SQL 活动都要扩展抽象的 SQLActivity 类。这个抽象类中包含受保护的方法,可以用这些方法从活动中获取输入和输出信息。在这样的环境中,输入可以是值(由执行文档提供),也可以是引用(从其他活动中流入),还可以作为 SQL 参数、SQL 表达式以及存储过程名称等的响应。输出当然是 ResultSet,根据活动的类型不同,也可能是被更新的记录数目。
 
  允许从流输入数据,特别是允许从同一个流获得多个输入,这种情况可能导致无法预计的结果。流中的值出现的顺序变得很重要,因为活动读取流中数据的顺序要与输入数据在活动元素中的声明顺序保持一致。
 
  设置好活动之后,就知道需要什么样的输入信息,也知道输出信息将去往何处。在整个处理过程中,都将实施跟踪,看连接是否保持打开状态。这种跟踪机制使我们能够在操作完成的时候将连接返回,并在适当的场合重新利用这个连接(比如在prepared statement 中)。
 
  其中SQL 活动中的处理可以分为三个阶段:
 
  ① startProcessing 获得连接,设置下一条语句。根据活动的不同,连接可能会设置为只读。
 
  ② getResult 从输出流中获得下一个数据块。由于执行语句的结果可能是 ResultSet,这样就对应多个数据块,因此调用这个方法并不总会执行一条语句(当然了,第一次调用的时候肯定会执行语句的)。
 
  ③ endProcessing 结束输出流,并返回连接。然而,如果活动对应于 prepared statement,将选择保持连接,并允许重用该活动。
 
  MetaDataExtractor
 
  发布与 DataResource 有关的服务数据,以便在注册器或工厂服务中选择正确的数据资源。OGSA-DAI 使用了 GT4 的 ServiceDataValueCallBack 接口,这样就能根据需要,通过 MetaDataExtractor 类的getMetaData()来获得元数据。
 
  OGSA-DAI执行文挡,通过OGSA-DAI在数据库中执行查询或者其它操作,这些操作可以由自己定义。每次操作请求称为一个活动,需要创建预先写好的服务活动事例,在数据库端执行。实际运用中,OGSA-DAI还支持其它类型数据源的扩充访问。执行文档可以包括多项SQL操作,如查询操作,但无需编写任何数据库连接语句,因为创建网格数据服务时,OGSA-DAI在后台会进行相应的数据库连接。查询请求的输出结果需要被格式化为WebRowSet格式,OGSA-DAI需要返回一个执行XML文档,在XML文挡中包括查询操作返回的所有行。
 
 
  基于网格的异构数据源集成,从访问数据库的角度看,在网格环境下访问数据库的方式和在网格环境之外访问数据库的方式相似,但是利用网格开发工具可以屏蔽各个业务节点数据库的结构、运行环境上的差异、网络分布状况和具体的物理位置,保证各个节点数据库的独立性和数据的安全。相比较其它异构数据源的集成环境这是它的优势所在,随着网格技术的进一步完善与规范,数据网格的应用会越发的成熟。
0
相关文章