Chinaunix首页 | 论坛 | 博客
  • 博客访问: 579301
  • 博文数量: 718
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 4960
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-17 13:24
文章分类

全部博文(718)

文章存档

2011年(1)

2008年(717)

我的朋友

分类:

2008-10-17 13:35:01

 

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里面的数据更新一下再看也可以

--------------------next---------------------

阅读(229) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~