如何构建Informix分布式数据库访问
如何構建Informix分布式數據庫訪問?
?
【IT168 服務器學院】分布式數據庫是在集中式數據庫系統成熟技術的基礎上發展起來的,它使物理分布的數據構成了一個邏輯整體。對用戶來說,一個分布式數據庫系統邏輯上就如同一個集中式數據庫,用戶可以在任何一個場地執行全局應用。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適當增大共享內存的大小。以上方法均可有效地減小網絡通訊的數據流量,減輕網絡的負載。
?
總結
以上是生活随笔為你收集整理的如何构建Informix分布式数据库访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转一个非常好的晶体学学习网站
- 下一篇: Mysql条件查询语句(二)