四、 利用分布式技術實現事務處理和查詢
4.1 分布式事務處理
分布式數據庫系統中數據的分布導致事務具有了分布性。一個全局事務的執行被劃分為在許多場地上子事務的執行。
分布式事務要能夠在多個服務器上執行,我們使用MS DTC作為事務管理器來協調各個服務器對事務的處理操作,為了減少網絡故障對分布式事務處理的影響,避免分布式事務造成不同服務器間數據的不一致,X/Open XA規范將分布式事務的處理過程規定為兩個階段,即準備階段和提交階段,就是常說的兩階段提交。
在進行分布式事務處理時,我們首先在服務器端用Transact SQL腳本程序BEGIN DISTRIBUTED TRANSACTION語句啟動一個分布式事務,將該服務器作為分布式事務管理服務器,然后腳本程序對連接服務器執行分布式查詢或遠程服務器上的存儲過程,分布式事務管理服務器會自動調用MS DTC,使遠程服務器參加分布式事務處理。當腳本程序執行COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION或ROLLBACK WORK語句時,分布式事務管理服務器將再次調用MS DTC,用它來管理兩階段提交進程,使連接服務器和遠程服務器提交或回滾事務。例如在業務系統中,如果總公司數據庫管理系統發現該客戶是交叉投保,則需將該保單插入拒保記錄表中,同時在對應的營業分支機構的數據庫中將該保單的狀態設為無效。我們在營業分支機構的數據庫(DBServer1)中建立存儲過程update_policy更新保單狀態,在總公司數據庫服務器(DBServer)上執行以下腳本程序,啟動一個分布式事務insert_reject:
USE business
GO
BEGIN DISTRIBUTED TRANSACTION
INSERT reject
VALUES(policy_id, insurance_no,business_date,customer_id,customer_name…)
EXECUTE DBServer1.business.dbo.update_policy
COMMIT TRANSACTION
GO
系統執行insert_reject事務向DBServer中的reject表插入一條記錄,同時更新對應的分支機構數據庫中的保單表status字段,該事務使系統數據的完整性得到了保證。
4.2 分布式查詢
分布式數據庫系統中數據的分布導致查詢也具有了分布性,分布式查詢可能針對異類的OLE DB 或 ODBC 數據源。SQL Server 支持分布式查詢,即包括來自兩個或更多服務器數據的查詢,支持服務器間的檢索、更新和游標,并使用 Microsoft Distributed Transaction Coordinator (MS DTC) 保證節點間事務語義,維護服務器間的安全。
在系統設計的過程中,為了減少網絡通訊量,我們根據應用的功能已將數據關系進行分片存放在各數據庫中,因此大部分的應用是面向局部數據庫的操作,但全局性的查詢仍需要多個數據庫的數據支持。在業務人員的管理模塊中,由于各分支機構對其業務人員進行直接管理,且管理制度都有差異,我們將業務人員信息存放在分支機構的數據庫中,通過聯合分布式查詢對公司所屬的所有業務員進行登記;在客戶管理模塊中,我們根據來源將客戶信息分別存放在業務數據庫服務器的傳統客戶表和Web數據庫服務器的網絡客戶表中,通過聯合分布式查詢才能對公司所屬的所有業務員和客戶進行登記,下面以年度的業務員查詢為例介紹聯合分布式查詢的方法:
SELECT emp.emp_name, emp.emp_id,emp.emp_gender…
FROM DBServer1.business.dbo.employee AS emp
WHERE date between '01/01/2000' and '12/31/2000'
UNION
SELECT emp.emp_name, emp.emp_id,emp.emp_gender…
FROM DBServer2.business.dbo.employee AS emp
WHERE date between '01/01/2000' and '12/31/2000'
五、結論
分布式數據庫技術引入保險信息管理后,有效的解決了數據分散和集中管理的矛盾,實現了數據的共享和交換。事實證明,分布式技術在遠程數據管理中具有不可替代的作用。
文章來源于領測軟件測試網 http://www.kjueaiud.com/