技术开发 频道

如何实现异构数据共享



    GDS是专门为访问特定的数据资源设计的,这种数据资源从物理上讲存在相互独立的任意GDS。因此这就意味着代表数据资源的对象应该与工厂紧密相关。在与特定数据交互的过程中,会存在一个对象,用来在每个工厂的基础上管理或缓存连接。GDS并不是孤立地管理它与数据库的交互。与此相反,每一个 GDS都使用工厂类提供的 DataResourceImplementation来管理连接。同一个工厂生成的多个访问同一数据资源的 GDS都用同一个 DataResourceImplementation 对象来处理连接。

    这就意味着OGSA-DAI访问DBMS的这些类可以划分为三组:
    ? DataResourceImplementation类:负责处理 JDBC 连接、驱动程序、角色映射以及访问 DBMS。
    ? 活动类:负责接受 SQL,并用 JDBC 连接将这个 SQL 传递给 DBMS,然后对返回的结果进行格式化。 
    ? MetaDataExtractor 类:发布与 DataResource 有关的服务数据,以便在注册器或工厂服务中选择正确的数据资源。以便在    注册器或工厂服务中选择正确的数据资源。
    DataResourceImplementation类
    DataResourceImplementation类掌管连接的处理和角色映射。它们在配置文件中与数据资源相匹配,并为希望自己编写    DataResourceImplementation 的人们提供扩展点。活动类应该仅仅依赖相关接口中的方法。

    对关系型访问而言, SQLActivity将通过 JDBCDataResource 的 getConnection 方法获取一个 JDBC连接。实现的方法是将凭证作为参数传递。 DataResourceImplementation 类提供的 mapCertificate 方法可以用于将这些凭证映射为数据库角色(根据角色映射器获取用户名和口令)。现在,我们已经用 mapCertificate 方法获得了用户 ID和口令,也从配置文件中获得了 URI,必要的条件都已经具备,可以创建JDBC 连接了。

    活动类
    所有其他的 SQL 活动都要扩展抽象的 SQLActivity 类。这个抽象类中包含受保护的方法,可以用这些方法从活动中获取输入和输出信息。在这样的环境中,输入可以是值(由执行文档提供),也可以是引用(从其他活动中流入),还可以作为 SQL 参数、SQL 表达式以及存储过程名称等的响应。输出当然是 ResultSet,根据活动的类型不同,也可能是被更新的记录数目。

    允许从流输入数据,特别是允许从同一个流获得多个输入,这种情况可能导致无法预计的结果。流中的值出现的顺序变得很重要,因为活动读取流中数据的顺序要与输入数据在活动元素中的声明顺序保持一致。
0
相关文章