Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103717801
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-04-08 21:33:07

作者:陈德敏  出处:Unix爱好者家园unix-cd.com   
 
分布式数据库是在集中式数据库系统成熟技术的基础上发展起来的,它使物理分布的数据构成了一个逻辑整体。对用户来说,一个分布式数据库系统逻辑上就如同一个集中式数据库,用户可以在任何一个场地执行全局应用。Informix是一个具有跨平台、全功能的关系型数据库,它可在Online 7.1以上版本中将I-star等网络产品进行集成,并使其不但支持本地数据库,而且支持分布式数据库。 
当前,银行、保险等金融行业均存在多业务处理系统,比如银行的综合业务、代理业务,保险的出单业务等,各业务系统常驻留于不同的主机上。为达到系统间数据共享,提高数据的安全性及完整性,增强整个系统的应用功能,需要构建分布式处理,这在实际应用中已显示出重要的作用。建立在Unix基础上的Informix分布式数据库,需对服务器端的文件hosts、hosts.equiv、services、sqlhosts作相应设置。 

一、 服务器端的配置 
假设在网络上有两个数据库服务器,分别命名为motor2000、zhtj2000,网络连接采用TCP/IP协议。 
设置网络结点: 
  /etc/hosts.equiv 
gztb_motor 
gztb_zhtj 
设置网络结点机器名及IP地址: 
  /etc/hosts 
161.83.1.1 gztb_motor 
161.83.1.2 gztb_zhtj 
设置数据库服务的Services名称及端口号: 
  /etc/services 
sqlexec_1 9991/tcp 
sqlexec_2 9992/tcp 
端口号9991、9992不能与已有的端口号重复。 
设置服务器名称、端口、协议间的对应关系:   $INFORMIXDIR/etc/sqlhosts 
motor2000 ontlitcp gztb_motor sqlexec_1 
zhtj2000 ontlitcp gztb_zhtj sqlexec_2 
通过sqlhosts这个设置文件可知道motor2000数据库服务器位于gztb_motor结点上,并且其Services名为sqlexec_1,对应端口号为9991,从/etc/hosts可知网络服务器gztb_motor的网络地址为161.83.1.1,再通过9991端口号向网络地址为161.83.1.2的zhtj2000数据库服务器提出数据操作的请求。 

二、 分布式数据库的使用范例 
假设在motor2000服务器中有motor数据库(insur_f、veh_list是其中的表),zhtj2000服务器中有zhtj数据库(tj_ssfy、tj_chb 是其中的表)。 
例1 从zhtj2000主机发出SQL命令,检索出motor中insur_f 表的所有数据,且insur_f的p_no字段值在zhtj数据库的tj_ssfy表中 。 
SELECT p_no 
FROM motor @ motor2000:insur_f 
WHERE p_no IN (SELECT dzhhm FROM zhtj:tj_ssfy) 
例2 把motor2000服务器veh_list表中的数据插入到zhtj2000主机的tj_chb表中 。 
INSERT zhtj:tj_chb 
SELECT * FROM motor @ motor2000:veh_list 
WHERE p_no NOT IN (SELECT dzhhm FROM zhtj:tj_chb) 
例3 用zhtj2000服务器的tj_ssfy表中的shshje合计值更新motor2000服务器中insurf表的act_pre字段值。 
UPDATE motor:insurf SET act_pre = 
(SELECT sum(shshje) FROM zhtj@ zhtj2000:tj_ssfy 
WHERE dzhhm = insurf.p_no) 

三、 调整分布式数据库的通讯量 
在多Online主机数据交互操作性强、网络负载较重情况下,网络通讯极易成为制约数据库应用性能的“瓶颈”,这时通过调配主机间的通讯流量,可极大地提高分布式数据库的综合性能。具体方法有如下4种:1在服务器端建立经过系统优化的常用存储过程,把更多的工作交由数据库服务器完成;2创建触发器TRIGGER,它是一种特殊的存储例程;3用prepare对SQL语句进行预处理,减少数据库系统对SQL语句分析的信息传输量;4适当增大共享内存的大小。以上方法均可有效地减小网络通讯的数据流量,减轻网络的负载。 
阅读(634) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~