IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Information Management  >

使用 DB2 Everyplace 使无线应用程序数据同步

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Naveen Balani, 技术分析人员

2003 年 1 月 01 日

本文将描述如何通过使用 DB2 Everyplace Sync Server 和 DB2 Everyplace Sync Client 使 DB2?Everyplace? 移动设备和企业数据源之间的数据和应用程序同步。

简介

本文将描述如何通过使用 DB2 Everyplace Sync Server 和 DB2 Everyplace Sync Client 来使 DB2 ® Everyplace™ 移动设备和企业数据源之间的数据和应用程序同步。 在本文中,我们将使用 DB2 Everyplace Enterprise Edition 8.1 for Windows® 2000 and Windows NT®。

本文要求您安装并配置了 DB2 Everyplace Enterprise Edition 8.1 和 DB2 Universal Database™ Enterprise Edition V7.2,并部署了 Palm 地址簿示例,如 通过使用 DB2 Everyplace 为 Palm 设备创建移动应用程序中所描述的那样。

本文旨在帮助您:

  • 了解移动设备和 DB2 Everyplace 之间的同步进程。
  • 通过使用移动设备管理中心(Mobile Device Administration Center,MDAC)配置同步进程、创建复制存储以及定义订阅和访问控制。
  • 测试样本地址簿(Sample Address Book)Palm 应用程序和 DB2 数据源之间的同步。




回页首


同步解决方案概述

移动数据同步的 DB2 Everyplace 解决方案的关键是 DB2 Everyplace Sync Server, 它充当客户机/服务器程序,以管理源关系数据库和目标数据库(在移动设备上部署的 DB2 Everyplace 数据库)之间的双向数据同步。 要同步数据的移动设备上应当安装 Sync Client。Sync Server 充当移动设备上的同步客户机软件和源服务器上的 DB2 UDB 数据库或其它 JDBC 数据库之间的中介。

数据同步可以是双向的,也可以是单向的。数据既可以传送到 DB2 Everyplace 移动设备上,也可以传送到企业数据库中。 例如,用户可以将 DB2 数据库中的数据子集下载到移动设备上的 DB2 Everyplace 数据库, 查看数据、对数据进行更改,然后使源数据库与已更改的数据同步。DB2 Everyplace Sync Server 还提供了解决冲突的机制。

DB2 Everyplace Sync Server 提供了名为移动设备管理中心(MDAC)的管理工具,该工具帮助您管理同步服务并将同步服务提供给有类似数据同步需求的用户组。

在移动设备上运行的 DB2 Everyplace Sync Client 包含连接 DB2 Everyplace Sync Server 的应用程序。它处理企业关系数据与 DB2 Everyplace 移动数据库之间的双向同步。移动设备还管理与文件订阅相关的操作, 以便方便地将移动应用程序发布到该设备,并且可以执行存储在 DB2 数据库中的存储过程。

图 1 显示了移动客户机、同步服务器和源数据库之间的交互。


图 1. 客户机、中间层和源系统之间的交互。
图 1. 客户机、中间层和源系统之间的交互




回页首


配置 DB2 Everyplace 同步解决方案

下面是配置步骤概述。

  1. 在移动客户机上安装 DB2 Everyplace 数据库引擎和 Sync Client 应用程序。
  2. 创建源(DB2)数据库和表,以在服务器上实现同步。
  3. 通过使用移动设备管理中心(MDAC)创建同步对象。
  4. 设置移动设备(在我们的示例中是 Palm Emulator),以获得同步。

第 1 步:安装 DB2 Everyplace 和 Sync Client

如果您阅读并遵循了我在上一篇文章“使用 DB2 Everyplace 创建无线数据”中给出的指示信息, 那么 DB2 Everyplace 引擎应该已经安装在 PALM Emulator 上。否则,我们可以按照如下步骤在 Palm Emulator 上安装 Sync Client:

  1. 在 Palm Emulator 上单击鼠标右键,选择 Install Application/Database ->Other
  2. 在浏览窗口中,转至安装了 DB2 Everyplace 的目录(例如 c:\db2everyplace ),然后选择下列文件:
c:\db2everyplace\sync\Clients\PalmOS\dsyagent.prc
c:\db2everyplace\sync\Clients\PalmOS\imsaconfig.prc            
c:\db2everyplace\sync\Clients\PalmOS\imsadb2e.prc 
c:\db2everyplace\sync\Clients\PalmOS\imsafile.prc 
c:\db2everyplace\sync\Clients\PalmOS\isynce.prc    
c:\db2everyplace\sync\Clients\PalmOS\isyncl.prc        
c:\db2everyplace\sync\Clients\PalmOS\isyncui.prc                
c:\db2everyplace\sync\Clients\PalmOS\PBSPkcs11.prc     
c:\db2everyplace\sync\Clients\PalmOS\wbxmllib.prc   

现在,Palm Emulator 上已经安装了 Sync Client。

第 2 步:在服务器上创建源(DB2)数据库和表

我们需要在服务器上创建源表。这些“源”表是我们要使无线数据与之同步的 DB2 服务器数据库上的表。 我们将使用在上一篇文章中创建的地址簿中的数据。 要创建源表:

  1. 在 Windows 命令提示符处,输入 db2cmd
  2. 通过输入下列语句,创建所需的数据库和表:
db2 create database address   
db2 connect to address 
db2 CREATE TABLE Address (FirstName Char(30), LastName Char(30) not null primary key,
   Address char(30), Country char(30),PhoneNumber char(15))   
db2 disconnect address

这就创建了地址数据库并在该数据库中创建了名为 address 的表。

第 3 步:使用 MDAC 创建同步对象

同步对象包含有关同步进程方面的信息。可以为同步配置六种类型的同步对象。

用户:使用 DB2 Everyplace Sync Server 在源(企业系统)和目标(移动设备)之间同步数据的用户。将用户指定给组,这样就有权使用在该组的 订阅集中定义的订阅。

组:有相似移动数据同步需求的一组用户。 为每个组定义同步特征, 如组中的用户需要访问哪些应用程序来执行其作业以及他们需要访问哪些企业数据子集。

订阅:源数据库或服务器中的哪些信息被复制到目标数据库(移动设备上的 DB2 Everyplace 数据库)的详细说明。 可以创建两种类型的订阅:

  • 对存储在源服务器上文件的文件订阅。
  • 通过使用 DataPropagator™ 或 JDBC™ 订阅的源数据库中的表订阅。

DataPropagator 订阅向用户提供了对 DB2 服务器上源表中数据的访问,JDBC 订阅向用户提供了对具有 JDBC 接口的数据源(包括 Oracle®、DB2、Microsoft® SQL Server、Informix®、Sybase® 和 Lotus® Domino™)上源表中数据的访问权。

订阅集:订阅的集合。 要向组成员提供对在订阅中定义的数据和文件的访问,将订阅都收集在一个称为 订阅集的容器中, 然后将该容器对象指定给该组。当用户启动设备上的同步客户机软件时,他们选择要同步的订阅集。 出现在客户机上的订阅集菜单是根据与用户组相关的订阅集列表而创建的。

适配器:用于与 Sync Server 同步和通信的适配器。包括了适配器集合以用于同步文件、关系数据(使用 DB2)、关系数据(使用 JDBC)和远程查询和存储过程功能

日志:在实现移动数据同步之后, 可以通过记录在错误日志中的错误信息来监控任何同步问题。

针对我们的同步进程,让我们创建一个用户、一个组、一个订阅和一个订阅集。 使用 MDAC 来完成这件事。所有这些同步对象都存储在同步控制数据库 DSYSCTLDB 中,该数据库是在安装 DB2 Everyplace Sync Server 时创建的。

创建用户

  1. 单击 User->Create,如下所示:
    User->Create 屏幕
  2. 输入移动用户名 — 在我们的示例中是 Naveen — 然后,单击 Authentication选项卡。
    Authentication
  3. Authentication选项卡中,输入密码。在从 Mobile Client 到 Sync Server 的认证过程中将需要这个密码。
    密码
  4. 单击 OK以完成用户对象的创建。

接下来,必须将该用户添加到用户组。提供对在组的订阅集中定义的订阅的访问权时需要组。

创建组

  1. 从 MDAC,单击 Group->Create
  2. 输入组名。在我们的示例中,使用 NaveenGrp
    Create Group
  3. 单击 Users选项卡,然后将用户 Naveen 从 Available users移动到 Selected users,然后单击 OK
    Selected users

现在,我们已经将 Naveen 添加到组中。现在让我们创建订阅对象。

创建订阅

在创建订阅之前,必须将 Address 表定义为 复制源, 以便 DB2 Everyplace Sync Server 知道在同步过程中使用哪个表。

该过程分为下列步骤:
定义复制源
创建 JDBC 订阅
创建镜像数据库

定义复制源

  1. 从 MDAC,选择地址数据库中的 Address 表,然后选择 Define as Replication Source -> DB2 Everyplace Sync Server
    定义复制源
  2. 当窗口出现时,单击 Run SQL now,使数据库复制生效。您将接收到消息“Address Table available as a Replication Source”。

现在,我们可以创建 JDBC 订阅。

创建 JDBC 订阅

  1. 单击 Subscription,然后选择 Create ->Table subscription ->JDBC subscription.
    sync10a.gif
  2. 输入 JDBC 订阅的名称。在我们的示例中,我们将它命名为 AddressJDBC

    对于加密,选择 None,并使 Adapter 值保持原样。

    sync11.gif
  3. Source 选项卡中,输入有权访问 DB2 数据库的用户标识和密码。

    对于 Driver,选择 IBM DB2 UDB local,因为我们已经在本地机器上安装了 DB2。(如果远程定位 DB2 UDB,则选择远程。)

  4. 单击 Database URL 旁的 选项卡 选项卡, 这将弹出 Select Local DB2 Source Database 窗口,如下所示。选择 ADDRESS 数据库, 然后单击 OK
    Select Local DB2 Source Database

创建镜像数据库

接下来,为应用程序创建并指定一个镜像数据库。 镜像数据库是实施改进同步请求吞吐量能力的操作所必需的。 发生其它更新时,可以实施更改。 镜像数据库也可用于解决由于从多台客户机进行访问而产生的任何冲突问题。

要创建镜像数据库:

  1. 单击 Mirror选项卡,输入有权访问 DB2 数据库的用户标识和密码。
  2. 单击 Database URL 旁的 选项卡, 这将弹出 Select Mirror Database 窗口。
  3. 单击 Create,这将调用下面所示的 DB2 数据库创建向导。输入数据库名(我们使用 MR_ADDRS),然后单击 Finish
    指定数据库名
  4. Select Mirror Database窗口上,单击 Refresh, 然后选择 MR_ADDRS 数据库,如下所示:
    Select Mirror Database
  5. 现在,必须将源表(DB2)映射到 DB2 Everyplace 表。要做到这一点:
    1. 单击 Identification 选项卡上的 Define Subscription
    2. 单击 Add,这将调用下面所示的窗口:
      Add Table
    3. 选择 ADMINISTRATOR.ADDRESS 作为源(DB2 UDB)表。

      缺省情况下,目标表被设置成与源表一样。在我们的示例中, 目标表映射到安装在客户机端的 DB2 Everyplace 数据库表。 因为源表和目标表有相同的名称并且有一对一映射,所以它是有效的。 如果您有不同的目标表,则需要在 Target table 域中指定它。 如果目标表没有模式,则目标缺省的模式名将与源模式相同。

    4. 单击 Add以添加该信息。
    5. 选择 Define Subscription 窗口上的 Administrator.Address ,然后单击 Advanced
      Advanced Replication Subscription

      这显示了源表列与目标表列的映射,它允许您指出想要复制的字段。 因为列名都是相同的,所以不需要做任何事。否则,我们必须选择特定字段并使用 Change选项。

    6. 单击 OK,关闭窗口。

现在,我们已经完成了对订阅对象的描述,该将订阅和用户组分组到 订阅集了。

创建订阅集

  1. 单击 MDAC 中的 Subscription Sets部分。
  2. 选择 Create来创建新的订阅集,它将调用下面显示的窗口:
    create subscription set
  3. 在 Identification 选项卡的 Name域中输入订阅集名。
  4. 单击 Subscriptions选项卡,将 AddressJDBC 订阅添加到 Selected subscriptions 选项卡中:
    添加 AddressJDBC
  5. 同样,单击 Groups选项卡并将 NaveenGrp 添加到如下所示的 Selected groups 窗格中, 然后单击 OK
    sync22.gif
  6. 为用户组启用同步:
    1. 选择 Group部分。
    2. 选择 NaveenGrp,单击它并选择 Edit,这将调用如下所示的窗口:
      Edit Group - NaveenGrp
    3. 选中 Enable synchronization复选框,然后单击 OK

现在,我们配置了订阅集。

接着,我们继续配置 Palm Emulator 来实现同步。

第 4 步:配置 Palm Emulator 来实现同步

  1. 单击 Palm Emulator 上的 IBM Sync Application,然后单击 Options ->settings
    Palm Emulator

    同步服务器内置于 WebSphere® 环境中,该环境托管用于同步的 servlet。

  2. 如果已经在本地机器上安装了 Sync Server,则输入 Server IP 127.0.0.1 ,或者输入同步服务器的远程 IP 地址。
  3. 输入 8080 作为端口,这是 Sync Servlet 的缺省端口。
  4. 在 User ID 区,输入 Naveen
  5. 对于 Password,输入 Prompt值。
  6. 单击 OK,使更改生效。
    仿真器设置
  7. 我们必须再做一件事情,就是使用 TCP/IP 协议来重定向所有请求:
    1. 单击仿真器,选择 Settings-> Properties
    2. 选中 Redirect NetLib calls to host TCP/IP选项。
      仿真器特性

现在,我们可以测试同步进程了。





回页首


测试同步进程

让我们尝试使样本地址簿应用程序与源 DB2 数据库同步。

  1. 通过单击 Program Files- > DB2 Everyplace - > Start servlet for Sync Server来启动 Sync Servlet。您将看到一些消息,最后一条消息是“Server Started on Http Port 8080.”
  2. 打开 Palm Emulator,然后选择 SAB Application来打开 Address Book 应用程序,如下所示。
    地址簿应用程序
  3. 输入新记录,然后单击 New。您应该看到一条消息,告诉您的创建已经成功。
  4. 单击 Applications,选择 IBM Sync Application,这将打开 IBM Sync Application。
  5. 单击 Synchronize Image,然后输入与用户(Naveen)相关的密码, 该密码是您在 MDAC 中创建用户时配置的。单击 OK
  6. 同步进程启动,您将在同步期间看到下列消息, 这些消息指出正在对 NaveenSet 订阅集进行同步。然后,您将看到“Synchronization succeeded”消息。

    sync28.gif

    sync29.gif

  7. 现在,让我们通过打开 DB2 源数据库的 DB2 命令提示符并输入下列命令来确保使数据正确同步:
DB2 Connect to Address 
DB2 Select * from Address 

您应该看到与您在 SAB 应用程序中输入了相同的数据。





回页首


结束语

我们使用了 DB2 Everyplace 的功能部件来创建、部署和测试样本 Palm 应用程序, 然后使 Palm 应用程序与服务器 DB2 数据库之间的数据同步。



参考资料



关于作者

Naveen Balani将其大部分时间都花在设计、开发和实现基于 J2EE 的产品上。可以通过 naveenbalani@rediffmail.com与 Naveen 联系。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款