教你循序渐进的做一个MobiLink的Demo

来源:岁月联盟 编辑:zhuzhu 时间:2007-08-06

SQL Anywhere Studio实际是由以下几个组建构成的:

 

1.Adaptive Server Anywhere

简称ASA。这是什么?大家都知道吧,是个数据库。这个数据库是一个标准的关系型数据库,和Sybase ASE、Oracle、SQL Server和DB2差不多,但是他占用的资源更少,查询效率更高(我测试的结果比SQL Server的好,有需要的我们一起讨论),基本不需要管理。一些功能诸如数据库自动优化、索引建议等在性能方面有很好的贡献。所以,我觉得他适合一个中型的企业应用,一般几百人并发连接没有问题。我做的测试是800个连接的。

 

2.MobiLink

大家可能还不知道这个。这个是一个数据同步的中间件。什么叫数据同步呢?实际上就是把数据从一个数据库拷贝/复制到另外一个数据库。干嘛需要这个呢?原因我想就不用解释了。但是,Sybase的SQL Anywhere Studio有移动数据库的称谓,所以,要解决移动设备上的数据和大数据库之间的数据交换问题,就有了MobiLink。当然,MobiLink用的很多的是在分布式数据存储的情况下。总的来说,MobiLink支持的是偶连接的同步,也就是说,不是实时同步,而是偶尔同步一下的。这当中会有很多问题咯,我就先卖个官子,大家一起讨论咯,这样大家都可以有书嘛,哈哈!另外呢,MobiLink是开放的系统,他可以同步其他数据库的(Oracle、Sybase ASE、SQL Server等)。一会儿我们就一起来做这个Demo。MobiLink也分为服务器端和客户端。

 

3.UltraLite

一个字——强!启动仅需要几十K内存的数据库!支持标准SQL,但是不支持触发器和存储过程等。适用于资源极端有限(手机、嵌入设备等)的地方。是ASA的子集(应该可以这么说吧)。

 

4.SQL Remote

以后不支持了,略。

 

5、组件Qanywhere

(大家原谅)这个我没有用过,不好意思发表意见.

 

 

 

 

好,接下来我们就用两个ASA的库和MobiLink来做一个数据同步的DEMO。

 

当然, 需要两个ASA的数据库咯。在命令行方式下,分别键入:

 

dbinit con1.db dbinit rem1.db

 

 

 

con1这个数据库代表中心数据库,rem1代表远程数据库,我们把中心数据库的数据通过MobiLink同步到rem1来。

 

 

中心数据库里面需要数据:

 

在dbisql下,连接con1数据库(连接方法不会发帖子问啊,或者下载文档看)

 

输入命令:

 

对con1建表:

 

CREATE TABLE dept ( deptno CHAR(4) NOT NULL PRIMARY KEY, deptname VARCHAR(10) NOT NULL ); CREATE TABLE employee ( empno CHAR(5) NOT NULL PRIMARY KEY, empname VARCHAR(20) NOT NULL, deptno CHAR(4) NOT NULL, FOREIGN KEY (deptno) REFERENCES dept(deptno) );

 

 

 

 

对con1添加数据:

 

INSERT INTO dept VALUES('0001', 'admin'); INSERT INTO dept VALUES('0002', 'finance'); INSERT INTO dept VALUES('0003', 'sales'); INSERT INTO dept VALUES('0004', 'presales'); INSERT INTO dept VALUES('0005', 'marketing'); INSERT INTO dept VALUES('0006', 'CS&S'); INSERT INTO dept VALUES('0007', 'ADO'); COMMIT;

 

 

 

 

INSERT INTO employee VALUES('31274', 'Johnson Zhang', '0005'); COMMIT;

 

 

 

OK。然后再连接上rem1数据库,也要建表,但是不要数据:

 

CREATE TABLE employee ( empno CHAR(5) NOT NULL PRIMARY KEY, empname VARCHAR(20) NOT NULL, deptno CHAR(4) NOT NULL, );

 

如果同步成功之后,con1数据库的employee的数据会跑到rem1来。

 

 

 

通过ODBC管理器,分别建立对两个数据库的ODBC连接,名为“cons”和“rem1”。

 

 

在dbisql下,连接到rem1数据库,并建立发布:

 

CREATE PUBLICATION demo1 ( TABLE employee );

 

 

 

 

建立用户:

 

CREATE SYNCHRONIZATION USER "51";

 

 

 

并建立订阅:

 

CREATE SYNCHRONIZATION SUBSCRIPTION TO "demo1" FOR "51" TYPE 'TCPIP' ADDRESS 'host=localhost;port=2439' OPTION ScriptVersion='demo1';

 

 

 

这些语句的意思也许大家不太明白,赶紧问哦,有书拿!

 

 

至此,我们的系统就基本搭建完成了,我们就开始同步吧!

 

首先,在命令行下,启动MobiLink服务器:

 

dbmlsrv9 -dl –v+ –zu+ -x tcpip -c "DSN=cons" –ot ml.txt

 

 

 

然后触发运行同步:

 

DBMLSync –c "dsn=rem1" –v –dl –o rem1.txt

 

 

在运行前和运行后都到rem1的employee表里面扫一眼,就知道变化了。如果忘记了,也没有关系,把con1里面的数据更新一下再看也可以!