基于MobiLink的移动数据库同步技术研究
扫描二维码
随时随地手机看文章
1 MobiLink同步系统
MobiLink是基于会话的同步系统,它允许在统一数据库与多个远程数据库之间进行双向数据同步[3]。统一数据库是可以支持任何ODBC标准的数据库,保存了所有数据的主副本。远程数据库是Adaptive Server Anywhere数据库或UltraLite数据库,保存了部分数据的副本。通常,当MobiLink远程站点请求与MobiLink同步服务器连接时,便开始了同步过程。同步期间,远程站点的MobiLink客户端将上载自上一次同步以来对远程数据库所作的更改。MobiLink同步服务器在接收到这些数据时开始更新统一数据库,然后将统一数据库中的更改下载到远程数据库。
1.1 MobiLink同步系统的结构
MobiLink同步系统的结构如图1所示[4]:
(1)统一数据库,此数据库包含同步系统中所有数据的集中副本。
(2)统一数据库服务器,管理统一数据库的服务器或DBMS。此服务器可以是Sybase公司的产品,如Adaptive Server Anywhere或Adaptive Server Enterprise,也可以是其他公司支持ODBC标准的DBMS(如Oracle,Microsoft SQL Server等)。
(3)ODBC,MobiLink同步服务器和统一数据库之间的所有通信都通过ODBC进行连接。ODBC使同步服务器可以连接多种统一数据库系统。
(4)MobiLink同步服务器,此服务器管理同步过程并提供所有MobiLink客户端与统一数据库服务器之间的接口。
(5)网络,MobiLink同步服务器与MobiLink客户端或UltraLite之间的连接,可以使用多种协议。
(6)MobiLink同步客户端,通过网络与MobiLink同步服务器进行连接,是远程数据库与MobiLink同步服务器之间进行通信的接口。
(7)远程数据库,此数据库包含同步系统中部分数据的副本。
1.2 MobiLink同步系统的特性[4]
MobiLink同步系统具有很强的适应性和灵活性。其关键特性如下:
(1)数据协调,MobiLink可以为同步过程选择数据的特定部分,并解决不同数据库之间的更改冲突。同步过程由编写为SQL、Java或.NET应用程序的同步逻辑控制。同步逻辑的每个单元称为1个脚本。例如,可以使用脚本指定如何将上载的数据应用到统一数据库中,并指定下载内容,以及处理统一数据库与远程数据库之间不同的模式和名称。
(2)自动化,MobiLink具备多种自动化功能。可以指导MobiLink同步服务器生成适合于快照同步的脚本,或者生成示例同步脚本。它还可以自动添加需要鉴定的用户。服务器启动的同步系统允许将数据更新推送到远程数据库。
(3)监控和报告,MobiLink提供了2种同步监控机制:MobiLink监控器和统计脚本。可以监控脚本、模式内容、行数的值、脚本名称、转换的脚本内容以及行值。
(4)性能调优,调优MobiLink性能的机制有多种。例如,可以调优争用程度、上载高速缓存大小、数据库连接数、工作线程数、日志详细程度或BLOB高速缓存的大小。
(5)双向同步,可以在任意位置对数据库进行更改。
(6)仅上载同步或仅下载同步,可以选择仅执行上载或仅执行下载。
(7)基于文件的下载,可以将下载作为文件分发,从而实现了脱机分发同步更改。只需1次创建文件,然后将其广泛分发。
(8)服务器启动的同步,可从统一数据库启动MobiLink同步。这意味着可以将数据更新推送到远程数据库,并让远程数据库将更新数据上载到统一数据库中。
(9)通信流的选择,同步可以通过TCP/IP、HTTP或HTTPS执行。Palm设备可以通过HotSync同步。Windows CE设备可以使用ActiveSync同步。
(10)远程启动,可以在远程数据库启动该数据库和统一数据库之间的同步。
(11)基于会话,对所有更改的上载和下载都分别在单个事务中完成。每次同步成功完成后,统一数据库和远程数据库将保持一致。
(12)事务完整性,要么同步全部事务、要么不进行任何同步。确保了每个数据库的事务完整性。
(13)数据一致性,MobiLink使用松散一致性策略来进行操作。所有更改经过一段时间后,将在每个站点中保持一致,从而实现同步,但在任一瞬时不同的站点可能拥有不同的数据副本。
(14)范围广泛的硬件和软件平台,多种广泛使用的数据库管理系统都可以用作MobiLink统一数据库:Adaptive Server Anywhere、Adaptive Server Enterprise、Oracle、Microsoft SQL Server 或 IBM DB2等。远程数据库可以是Adaptive Server Anywhere数据库或UltraLite数据库。MobiLink同步服务器可在Windows或UNIX平台上运行。Adaptive Server Anywhere可在Windows、Windows CE或UNIX计算机上运行。UltraLite可在Palm、Windows CE或基于Java的设备上运行。
(15)灵活性,MobiLink同步服务器使用SQL、Java或.NET脚本来控制数据的上载和下载。该脚本在每次同步期间将根据事件模型执行。通过基于事件的脚本编写这种方式,为同步过程的设计提供了很大的灵活性,包括如解决冲突、错误报告和用户鉴定等功能。
(16)可伸缩性,MobiLink同步是可伸缩的:1个服务器可以处理数千个共存的同步,而通过负载平衡可以同时运行多个MobiLink服务器。MobiLink同步服务器是多线程的,可对统一数据库使用连接池,并提供大量的监控和报告工具。
2 使用MobiLink进行移动数据库同步
本文主要目的在于研究利用MobiLink同步技术,在统一数据库和移动数据库之间进行数据同步的方法。但在MobiLink的帮助文档中,对于如何在Windows CE平台中启动MobiLink客户端没有给出明确说明,研究中发现,Windows CE中的MobiLink客户端不能有效地传递参数,同时使用触摸笔输入参数也很不方便。经过研究提出了一种利用快捷方式文件启动的解决方法。
本文选用Sybase公司的Adaptive Server Anywhere分别作为统一数据库和远程数据库。Adaptive Server Anywhere是基于事务的关系数据库,适用于个人和工作组,可以在多种操作系统上运行,包括各种Windows和UNIX操作系统以及Novell NetWare操作系统。
2.1 资源配置
(1)工作平台和软件环境
硬件平台:PC机和Windows CE移动设备。统一数据库:Adaptive Server Anywhere 9.0,在PC机安装SQL Anywhere Studio 9.0。移动数据库:Adaptive Server Anywhere 9.0,通过SQL Anywhere for Windows CE部署选项将Adaptive Server Anywhere部署到Windows CE设备上。网络:TCP/IP。
(2)准备数据库
统一数据库:用Sybase Central在PC机创建1个统一数据库consol.db。远程数据库:用Sybase Central为Windows CE创建1个远程数据库remote.db。
[!--empirenews.page--]2.2 系统初始化
2.2.1 填充数据库[5]
(1)统一数据库
在数据库服务器dbsrv9上启动数据库consol.db后,通过Sybase Central连接到数据库,为数据库创建一个名为student的表,只添加属性SId和SName,不填充数据。
(2)远程数据库
启动Windows CE上的网络数据库服务器,并在服务器启动远程数据库remote.db。然后用Sybase Central通过网络连接到远程数据库,为数据库创建一个名为student的表,添加与统一数据库中的表student相同的属性,并添加记录。
2.2.2 创建数据源
(1)统一数据库
用ODBC管理器为统一数据库consol创建数据源test_consol。
(2)远程数据库
由于Windows CE没有ODBC管理器,因此为远程数据库创建文件数据源。创建名为student.dsn的文本文件,填充如下内容:
[ODBC]
uid=dba
pwd=sql
enginename=remote
databasename=remote
2.2.3 准备同步
(1)远程数据库
通过Sybase Central连接到远程数据库,为表student创建一个新的发布stu_pub。创建MobiLink用户ml_student,为该用户预定发布stu_pub。设置同步预定ml_student的属性,在Connection选项卡中分别设置PC机的IP地址和MobiLink服务器启动的端口号。
(2)统一数据库
通过MobiLink Synchronization连接到统一数据库,在表->DBA中将student表添加到同步表中,新建版本default。
在同步表中选择student表,为其添加如下脚本。
Download_cursor
SELECT SId, SName FROM student
Upload_insert
INSERT INTO student(SId, SName) VALUES (?,?)
Upload_update
UPDATE student SET SName =? WHERE SId =?
Upload_delete
DELETE FROM student WHERE SId =?
2.3 启动同步
2.3.1 启动MobiLink服务器
在PC机命令提示符中运行如下命令:
dbmlsrv9-c“dsn=test_consol”-o mlserver.mls-v+-dl-x tcpip(port=2639)-za-zu+
2.3.2 启动MobiLink客户端
针对Adaptive Server Anywhere远程数据库,MobiLink提供了2种客户端,(1)用于支持Win32平台;(2)用于支持Windows CE平台。在2种平台中MobiLink客户端文件名都为dbmlsync的命令行程序。
在Win32平台中启动MobiLink客户端有2种方法:
(1)直接运行程序dbmlsync,如图2所示,在这个设置界面中设置好相关参数后即可启动同步。
(2)在命令提示符中运行如下命令:
dbmlsync-c “dsn=student”-e “sch=EVERY:00:05”
与Win32平台不同的是,一方面Windows CE平台不支持命令行程序;另一方面Windows CE平台中的MibiLink客户端输入相关参数后仍然不能顺利实现同步,而且在只有触摸笔的Windows CE设备中输入参数很不方便。
为了解决这个问题,本文采用了快捷方式文件启动的方法。在Windows CE中创建名为sync.lnk的文本文件,内容如下:100#“Program FilesSybaseASA9dbmlsync.exe” -c “dsn=student” -e “sch=EVERY:00:05”。
这是一个指向dbmlsync的快捷方式文件,同时在文件中提供了程序运行所需要的参数,运行这个文件即可成功实现同步。同步后的状态如图3所示。
3 应用前景
MobiLink可以应用于具有以下要求的同步系统:
(1)大量数据库,MobiLink可用于支持大量的远程数据库。在单个系统中,可支持数以千计的远程数据库。
(2)不定时连接,MobiLink支持不定时连接或间接连接到服务器所在网络的数据库。
(3)灵活的同步调度,应用程序按指定的间隔(几分钟、几小时或几天)进行连接和同步。
(4)低或中等容量,每次只能给远程站点准备1个下载信息。在MobiLink系统中,如果数据量很大,就会造成较长的连接时间,因为远程站点在同步完成之前不能断开连接。
(5)异类数据库,MobiLink支持将许多常用的关系数据库用作统一数据库。远程站点的模式可以与统一数据库的模式不同,因为可通过编写脚本来控制同步过程。
随着移动计算技术、无线通信技术和移动数据库技术的飞速发展,MobiLink数据库同步技术将会在移动数据库系统中发挥越来越重要的作用。
本文在分析了MobiLink数据库同步技术原理的基础上,研究了通过MobiLink来实现移动数据库同步的方法,并利用快捷方式文件解决了Windows CE中MobiLink客户端不能有效传递参数和输入不便的问题,最后对MobiLink同步技术的应用前景提出了展望。