具体步骤:
1.需要两个ASA的数据库。在命令行方式下,分别键入
dbinit con1.db
dbinit rem1.db
con1这个数据库代表中心数据库,rem1代表远程数据库,我们把中心数据库的数据通过MobiLink同步到rem1来。
2.中心数据库里面需要数据
在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和rem1的数据更改在同步后都会在两端保持一致。
2.ODBC管理器
分别建立对两个数据库的ODBC连接,名为“cons”和“rem1”。
3.在dbisql下,连接到rem1数据库,并建立发布
CREATE PUBLICATION demo1
(
TABLE employee
);
a. 发布的含义是什么呢?大家灌水回答问题,获赠图书!
b. 如果我还想发布其他的表怎么办呢?
c. 如果我只想发布employee表中的前两列,并且是empno大于40000的数据怎么办呢?
答案可以在《MobiLink 服务器启动同步用户指南》中寻找。
4.创建同步用户
在dbisql下,
CREATE SYNCHRONIZATION USER "51";
5.建立订阅
在dbisql下,
CREATE SYNCHRONIZATION SUBSCRIPTION
TO "demo1"
FOR "51"
TYPE 'TCPIP'
ADDRESS 'host=localhost;port=2439'
OPTION ScriptVersion='demo1';
6.三件事情
a. 搭建了中心数据库(con1)。包含建立ODBC
b. 搭建了远程数据库(rem1)。包含建立ODBC
c. 在远程数据库上定义发布、同步用户和订阅
因为MobiLink可支持ASA/UltraLite(远程端)和任何符合ODBC标准的数据源同步,所以要建立ODBC。当然,ASA 10(还没有发布呢)可以支持跟任何数据源的同步(XML、EXCEL、文本文件等)。
定义的发布指的是我们标定远程数据库的哪些表及其这些对这些表的相关投影和选择后的数据是需要同步的。
订阅可以让中心服务器与远程数据库的数据按照定义的订阅规则交互。
MobiLink是先做上载的,也就是说先把远程的数据上载到服务器端,当然你也可以不做上载。
MobiLink在做完上载后做下载,也就是把服务器端的数据下载到远程数据库上,这样就保持了con1和rem1两个数据库的一致。
另外,MobiLink在做上载的时候是做仅更改的数据,也就是做增量上载,做下载的时候需要一些技巧来完成增量下载,本次主题不讨论这个问题。
对于上载和下载来说,都是通过一些在中心数据库的事件来实现的。这些典型的事件包括:
upload_insert事件
upload_update事件
upload_delete事件
download_cursor事件
等等。
在这里我们仅介绍这几个事件。
对于upload开头的,肯定都是上载事件了。当远程服务器(rem1)和中心服务器(con1)通过MobiLink连接的时候,也就是MobiLink客户端与MobiLink服务器连接了之后,MobiLink客户端根据发布定义创建上载流。
如果在同步与同步期间,符合发布定义的数据有了改变,这些改变后的数据就会包含在上载流中。上载流通过MobiLink到达中心服务器,进而通过upload_insert, upload_update和upload_delete事件控制这些数据的走向。
比如,在这个例子中,我们可以在dbisql下,分别应用ml_add_table_script存储过程来完成对三个事件的定义:
call ml_add_table_script( 'demo1', 'employee',
上一篇:
Adobe平面设计工具集Design Premium
下一篇:
SQL Anywhere包含的MobiLink同步技术