当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: Knut Stolze信息集成开发,IBM Germany 2004 年 4 月 本文作者 Knut Stolze 描述了一种方法,可以通过 DB2 UDB 中已有的复制工具复制空间数据,方法是先将空间数据转换成基于 LOB 的外部表现形式,然后复制这些 LOB。
 

 

 ·暂挂 i/o 分割镜像    »显示摘要«
    摘要:shahed quaziibm canada, toronto laboratory 2004 年 2 月 本文介绍了 db2 udb 的暂挂 i/o 特性,该特性与分割镜像结合为高可用性,数据的清除以及测试环境的创建提供了多种方案。 简介 随着全球电子商务的持续发展,维护大型的数据库并确保它们的高可用性成为了真正 24x7 面向数据的业务取得成功的关键需求。ibm db2® uni......
    摘要:russell m. clapp 2003 年 10 月 本文展示了在小部分系统上收集到的性能数据,如何用于为已规划的 ids enterprise replicaiton 网络预测可扩展性和系统使用情况。 简介 评估新应用所需要的计算资源通常是一件非常困难的任务,因为规划这些资源的获得及部署必须与应用程序的开发平行进行。这个任务对于使用单一中央服务器的客户/服务器应用已经相当困难,对于有多......


在 DB2 UDB 中复制空间数据
knut stolze信息集成开发,ibm germany

2004 年 4 月 本文作者 knut stolze 描述了一种方法,可以通过 db2 udb 中已有的复制工具复制空间数据,方法是先将空间数据转换成基于 lob 的外部表现形式,然后复制这些 lob.文中还包括了设置程序示例.

简介 【程序编程相关:处理 DB2 UDB 表中的数据

【推荐阅读:创建模型驱动的 Windows 应用程序

ibm 提供了 db2 spatial extender,用于在 db2 universal database tm 关系数据库中存储.管理与分析空间数据.空间数据是用结构化的类型存储在数据库中的,这样才能为其复杂的属性建立正确的模型,也才能通过一种更简单.更可靠的方式来利用那些专用的多维索引方法. 【扩展信息:构建 ASP.NET Web 站点

db2 information management 产品家族的另一个关键组件是 db2 replication 套件.这个套件可以对从多个数据库中选出的数据集进行维护.对数据进行的修改可以从一个数据库的某张表拷贝到另一个数据库中的另一张表.db2 复制是 db2 universal database v8 的集成特性.它的复制能力使之适合于处理 db2 的内置数据类型,如 integer.double 或 varchar 等.目前,复制中并没有对已有空间数据的内置支持,也不能在用户需要的时候直接将空间数据复制到另外的数据库中.

本文描述了一种方法,可以用 db2 中已有的复制机制对空间数据进行复制,具体方法是先将空间数据转换成基于 lob 的外部表现形式,然后复制这些 lob.在目标数据库上,我们施行相反的转换过程,再次构造出 db2 spatial extender 能够理解的几何图形.这种方法要求在设置复制的时候进行一些小的修改.我将在本文中逐步解释必要的设置过程,这样您就能很轻松地理解,并在您自己的环境中应用这种方法了.

理解空间数据与复制

空间数据的作用是,在对象-关系型数据库系统中用标量值的形式表示复杂的空间特性.所谓空间特性,是指点.线.多边形,以及上面这些特性的集合.有了 db2 spatial extender,您就具备了必要的数据类型与功能,可以在 db2 数据库中对空间数据实施管理.只要您的数据库启用了空间功能,您就可以回答诸如“所有具有一定收入的顾客离我的商店有多远?”或“我是不是在某段特定的时间范围与某块相同区域内规划了多个建筑群?我能否将其合并?”之类的问题. db2 spatial extender 定义了一组数据类型与功能,可用于管理空间数据库(几何图形),也可以帮助您充分利用存在于您的数据中的空间信息.

空间数据类型是通过类型层次来组织的,可为您提供更高的抽象级别以及更好的类型安全性.不准确地说,sql 中的类型层次等同于面向对象编程语言中的类层次. 图 1 向您展示的是空间类型的层次关系.用蓝色背景表示的类型代表不可实例化的类型.这些类型就好比 java 或 c++ 程序语言中的抽象类.其他所有的类型都是可实例化的.

图 1. db2 spatial extender 的类型层次关系

db2 spatial extender 中包含了 100 多个不同的函数,可用于对空间数据进行操作.比如说,您可以测试一个几何图形是否包含在另一个之中,或者,您可以计算两个几何图形之间的距离.本文无意叙述所有这些函数的功能.有关这方面的更多信息请参阅 db2 spatial extender users guide and reference. 

很多种不同的用户情景中都用到了数据复制.举个例子来说,复制可以实现多个不同的用户组在公用的数据上独立工作,被复制的那部分数据仍然可以保持同步.复制也为高可用的实现提供了一种方法.

图 2 概要描述了 db2 复制的基本工作原理.用户的应用程序发出针对某一源表(source table)的查询(select)及数据更改语句(insert.update.delete).这张表中的数据会复制到另一个数据库上的另一张表中,我们把后面这张表称为目标表(target table).在源表中对数据所作的修改会记录在 db2 日志中.异步的 capture 进程会读取日志记录,当它检测到对源表进行了修改时,就从日志记录中将变化的数据取出,放到一张中转表中,这张表叫做变化数据表(change-data table,即 cd 表).另一个进程 apply 周期性地扫描 cd 表,如果其中出现新的信息,这个进程就将其读出,然后发布到目标表上.apply 进程可以处理多个目标表.因此,db2 复制的架构遵循经典的发布/订阅机制.

图 2. db2 复制概览

在下一节中,我将要描述一种方法,它可以用 db2 及其复制工具提供的一些特性对空间数据库进行复制.转换函数与转换组的概念在空间数据复制中的重要性更高,在 结构化类型的转换函数 一节中我们将对其进行更详细地讨论.在 捕获空间数据中的变化 一节中,我们要介绍如何通过设置,捕获源(捕获)数据库上的空间(或其他类型)数据中发生的变化.本节将展示 cd 表与视图的定义方法,并解释 capture 进程的工作原理.在 准备目标数据库 一节中,我会告诉您,应该用什么样的方式准备目标数据库,apply 进程才能直接将空间数据分别存储到对应的表中.为进一步简化源数据库与目标数据库的设置过程,我们实现了一个命令行工具,您可以从本文的“下载”部分找到这个工具.有关这一工具的详细信息将在 设置工具“db2se repl”一节中讨论.本文以若干条对 db2.空间信息以及复制特性的注解结束.

总览图

复制组件 —— 包括 capture.apply.monitor 以及 replication center 的管理接口 —— 在一般情况下的设置并不能支持结构化的类型,特别是空间数据类型.capture 程序不能解释 db2 日志记录中所保存的空间数据,因此,我们必须采取一组措施克服这一限制.db2 及其复制工具中已经内置了一些功能,可用来实现这些措施.让我们从高层开始介绍.

当我们复制空间数据的时候,要先将其转换成 lob 数据,更确切地说,是转换成二进制大对象(blob).采用这种方式之后,复制工具就可以对一种已经支持的数据类型进行处理了,而且也并不知道这些 blob 数据实际上是空间数据.我们可以利用视图来实现这样的转换.我们可以在复制中定义视图,这样 apply 程序在向目标进行完全更新的过程中就可以从一张来自源表的视图中取出数据,对于差量数据的更新则从 cd 表的视图中取出数据.视图实现了对源数据的“逻辑”扩展与/或解释,因此,apply 程序就可以在获取数据的过程中对数据进行转换或扩展.在这样一种空间数据复制的实现方法中,我们针对源表定义一张视图,令其以 blob 的形式将空间数据包含在内. 图 3展示了这种方法的架构.

图 3. 用 blob 复制空间数据

apply 进程对来自源视图的数据进行查询.在这里,它看到的不是 spatial 字段,而是 blob 字段,这个字段中存储的实际上正是由源表转换来的空间数据.另外几个字段 —— 关键字字段“k”与数据字段“dl” —— 的复制方法与常规的 db2 复制相同,不需要进行特殊考虑.数据是通过 apply 进程插入到目标视图中的,如图中的虚线所示,这个过程最终跨越了系统的边界.目标视图的定义与源视图相匹配,这意味着存储空间数据的数据类型依然是 blob. 除了目标视图之外,我们还定义了三个 instead of 触发器,用于在 insert.update 或 delete 操作的过程中实现逆向转换.逆向转换的作用是根据 apply 进程复制过来的二进制数据构造出空间数据.

完全更新(即将源表中的全部数据复制到目标表上)的过程中使用的也是同一套逻辑.基本的原则与差量更新(即只复制上一次 apply 周期以来发生变化的数据)相同.对于差量更新来说,我们必须考虑变化数据表及变化视图(cd 表与 cd 视图).cd 表是通过 capture 进程来维护的,这个进程负责扫描 db2 日志,提取出数据变化信息.然后将这些数据变化信息收集到 cd 表中.cd 视图的作用与其他的视图类似,是 cd 表中数据的一种不同的表现形式.这些视图是从实际需要进行复制的视图中派生出来的. 图 4展示了源数据库,包括 cd 表与 cd 视图的定义.

图 4. 源表.源视图与 cd 表.cd 视图

现在我们面临一种两难的境地.首先,capture 进程不能理解空间数据类型,因此,它无法收集 cd 表中变化的数据.第二个问题的来由是上面谈到的那个将空间数据在源视图中转换为 lob 数据的过程.但是只要您考虑到 db2 与 db2 复制的下列功能,上述问题将迎刃而解:

复制部分字段

从一张表复制数据并不要求将这张表中的所有数据都复制过去.复制的数据源可以是字段的子集,这样的话,我们可以完全忽略掉源数据表中的某些字段.这一特性可用于在注册源数据表的时候忽略掉存储空间数据的字段.因此,我们就不会因为 capture 不支持空间数据类型而受到限制. 复制 lob

capture 程序永远也不会从 db2 日志中捕获 lob 数据所发生的变化.当某个 lob 字段注册为需要复制时,创建 cd 表的时候就会包含一个“更新指示器”字段,capture 进程负责在读取源表的 db2 日志记录的同时维护这个字段.当某条日志记录指示出 lob 字段进行过更新时,这个更新指示器字段就设置为“u”;否则设为 null.
...   下一页
 ·gui 工具简介(第 1 部分)    »显示摘要«
    摘要:raul f. chong ibm toronto lab, 2003 年 11 月 2003 年 7 月 本文向您介绍了面向 linux、unix 和 windows 的 db2 udb v8 中的 db2 udb express 的 gui 工具,并描述了如何使用这些工具来执行基本数据库操作、限制对对象的访问以及设置连通性。 引言 如果您对关系数据库管理系统还很陌生,或者是您曾使用过其......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE