張躍進
(華東交通大學 信息工程學院,南昌 江西 330013)
COM/DCOM集成的多數據庫系統的研究
張躍進
(華東交通大學 信息工程學院,南昌 江西 330013)
基于COM/DCOM集成多種異構數據庫下,如何進行多數據庫的訪問,針對此問題,提出了一種使用COM/DCOM集成技術下的多種異構數據庫下的數據訪問控制系統模型.
多數據庫系統;COM;DCOM;分布式
上世紀八十年代中期多數據庫系統的概念首次提出后,立即引起了數據庫方面研究人員及數據庫廠商的密切關注,到1987年左右,多數據庫系統的理論研究已形成體系,并出現了第一批原型系統,同時各主要數據庫廠商也分別推出了支持多數據庫系統的商業產品.雖然越來越多的數據庫廠商都聲稱提供對多數據庫系統的支持,但通過對這些產品的分析可以發現,這種支持往往只是對異地數據庫訪問的支持,有很大的局限性,而對多數據庫系統中的事務管理、異構模式消解、全局視圖維護等關鍵技術都沒有提供很好的解決方案.而且一個數據庫廠商的多數據庫系統產品一般只支持自己的數據庫加入多數據庫系統,對底層數據庫異構性的支持還遠遠不夠,系統只支持全局查詢而不支持全局修改.
目前多數據庫系統技術已在國際上獲得了廣泛的認同,各個國家都有研究組織在進行相應的研究,并且推出了各自的原型系統及商品化的產品.目前多數據庫系統技術和產品的研究還處于生長期,有很多技術問題還沒有很好解決,市場上還未出現主流的產品,是國內開展該技術研究,推出自己產品的好時機.
數據庫技術的發展導致了眾多數據庫系統的出現,這些數據庫可能在物理上和邏輯上都存在著差異,集成已有的數據庫和文件系統的多數據庫系統成為發展的必然趨勢.網絡技術的發展為用戶訪問和處理多數據庫中的數據提供了可能,使得多個異構的數據庫之間可以共享它們相互依賴的數據,并具有相互操作的能力.多數據庫系統(MBS)是為在多個數據庫之間實現互操作,解決數據資源共享的一種技術途徑.多數據庫系統屏蔽了已有的各數據庫系統不同的訪問方法和用戶界面,給用戶呈現一個訪問多種數據庫的公共接口,減少各數據庫之間的差異[1,2].
COM/DCOM技術是全新的編程技術,具有平臺無關性、面向對象、安全、高性能、分布式,多線程等特點,使COM/DCOM成為當前最為類型的編程語言和平臺[3].對于多數據庫系統聯合訪問和數據交換,使用COM/DCOM技術可以解決不同的操作系統和不同的數據庫管理系統之間的數據處理.對于多數據庫訪問,COM/DCOM技術可以提供一個比較強大、靈活的解決方案.通過構造多個會話,在模型組件里處理數據庫的連接、定義,查找、插入、刪除操作等方法,創建和部署COM/DCOM實現對多數據庫的訪問.
對于多數據庫系統來說,由于各部門的數據庫建設不同步,存在著異構機、異構型數據庫的現象,基于單一數據庫產品開發的系統已經難以適應新應用的需要,許多應用涉及多個不同數據庫系統,需要聯合使用,就需要解決異構數據庫的問題.
實現異構數據庫的集成,首先要對加入的數據庫資源實現完全透明的訪問,既要保證全局數據的共享,又要保證各數據庫管理系統的自治,確保基于不同系統平臺實現對異構數據庫的查詢和聯合使用,并提供一個獨立于特定的數據庫管理系統的統一編程界面.異構數據庫系統的集成技術主要分為三種:異構模式的消解、查詢處理、事務處理[4].如圖1所示:

圖1 異構數據庫系統集成示意圖
對于訪問各個異構數據庫,可以采用ODBC方式.ODBC是微軟為方便異構數據庫之間進行數據共享,專門提出的一個用于數據庫訪問的應用程序編程接口(API).它使用結構化查詢語言(SQL)作為其數據庫訪問語言.ODBC通過使用驅動程序來提供數據源的獨立性,并完成ODBC函數調用以及與數據源的對話.
2.1 異構模式的消解
一般可采用建立全局統一的公共數據模式來實現異構模式的消解.為了滿足公共數據模型設計過程中通用性的要求,并且能夠表示各種數據庫中不同格式的數據,以適應各個LDBS(局部數據庫系統)的各種不同情況,任何局部數據庫類型數據都要轉換成公共數據模式當中的類型,以此來屏蔽各個數據源數據模型在數據結構、行為和類型約束等方面的差異,并能給出差異之間的映射關系.這種模式又稱為全局模式(Globalmodel),全局模式是通過全局數據字典實現的.全局數據字典包括下列內容:全局構成表、關鍵字表、數據類型表.
2.2 查詢處理
查詢處理包括三個部分:查詢分解、查詢變換和查詢優化.用戶提交的查詢語句是全局查詢語句(GSQL),包括對多個LDBS的訪問.全局查詢語句要分解為相應的針對各個LDBS的子查詢.此時的查詢語句還是用全局查詢語言寫的,所以需要將子查詢語句轉換為用LDBS的查詢語言寫的查詢語句.為了達到更優的系統性能,還必須有查詢優化器對查詢進行優化.
2.3 事務處理
事務處理的主要問題就是LDBS的自治性問題,也就是一個局部DBMS是否允許和在什么程度上允許共享它的控制信息.對LDBS的操作是通過事務處理來完成的.事務處理主要分為兩類:
2.3.1 局部事務:LDBS的本地事務,由局部數據庫的管理系統來完成,只存取本地數據,不受全局數據庫控制且不為其所知.
2.3.2 全局事務:在全局數據庫系統的控制之下完成.一個全局事務可以分解為若干個子事務,每一個子事務只需存取一個LDBS中的數據,在該局部數據庫的管理系統的控制之下作為一個本地事務來完成.
對于訪問各個異構數據庫,可以采用ODBC方式.ODBC是微軟為方便異構數據庫之間進行數據共享,專門提出的一個用于數據庫訪問的應用程序編程接口(API).它使用結構化查詢語言(SQL)作為其數據庫訪問語言.ODBC通過使用驅動程序來提供數據源的獨立性,并完成ODBC函數調用以及與數據源的對話.
COM(Component Object Model,組件對象模型),是一種以組件為發布單元的對象模型.COM不僅定義了組件程序之間進行交互的標準,并且也提供了組件程序運行所需的環境.組件對象之間交互的規范不依賴于特定的語言,所以COM是不同語言協作開發的一種標準.
DCOM(分布式組件對象模型),是一個高層網絡協議,是對COM技術的擴展,它能使COM組件在不同機器上的兩個進程間進行通訊和協作,從而使應用程序可在位置上達到分布性.COM運行庫向客戶和組件提供了面向對象的服務,并且使用RPC和安全機制產生符合DCOM協議標準的網絡包.
B/S三層結構建立了一種基本的軟件建模思想,它主要針對分布式應用軟件系統.層與層之間可以通過COM接口聯系起來,它們可以運行在不同的進程中,甚至運行在不同的機器上.COM及DCOM提供了進程透明和位置透明特性.
COM組件主要負責Web服務器和數據庫服務器,通過間接調用外部程序或腳本代碼來訪問數據庫,因此可以提供與數據庫相關的動態HTML頁面,或執行用戶查詢并將查詢結果格式轉化成HTML頁面,通過Web服務器返回給用戶瀏覽器.
COM在Windows平臺上已經根深蒂固,并且正在向其他的操作系統發展.只要把應用系統建立在以COM為基礎的平臺上,在開發過程中既不需要考慮跨網絡調用,也不需要考慮數據源的差異,甚至在異構網絡環境中建立類似的應用系統也就成為可能.
DCOM作為COM的擴展,繼承了COM的語言無關性、可重用性等優點,還有針對分布式環境的一些新特性,如位置透明、網絡安全性、跨平臺調用等.
DCOM的結構圖見圖2:

圖2 DCOM的基本結構圖
使用COM/DCOM技術可以訪問各種不同類型的數據庫,而且支持數據庫的“事務”的機制,這樣使對數據的處理能夠保證數據的一致性.所以使用COM/DCOM技術能實現對多個數據庫的訪問,而且安全性、持續、事物、并行性和資源的管理由容器來管理,這樣使編程具有簡單性.
基于Web的多數據庫訪問是電子商務和電子政務迅速發展而出現的一種多數據庫聯合應用的形式.在數據庫異構,操作系統異構的條件下,對于數據量很大的這種多數據庫應用問題,只有COM/DCOM技術才有能力解決.可以定義的一組標準的COM/DCOM擴展的開發接口(API).這些應用程序編程接口為各種各樣的中間件實現了不依賴供應商的編程接口,COM/DCOM技術把組件的概念從客戶機域擴展到了服務器域,它使COM/DCOM技術發展成為一種強健的、可伸縮的環境,能夠支持以任務為關鍵的企業信息系統.
COM/DCOM的接口定義語言IDL豐富以及對多平臺的支持,NT的網絡穩定性也已經提高提高.在COM/DCOM規范上實現分布式管理的應用將得到廣泛的應用,COM/DCOM分布式對象技術正逐漸成為分布式計算環境發展的主流方向,使用分布對象技術開發的系統具有機構靈活性、軟硬件平臺無關性、系統可擴展性等優點,特別適用于網絡環境下的分布系統開發;能夠有效地解決異構環境下的應用互操作性和系統集成.
隨著COM/DCOM技術的發展及標準化工作的完善,COM/DCOM已成為主流技術,符合COM/DCOM規范的產品也逐漸不斷地被推出并開始被廣為采用.未來大型信息系統的集成和大型軟件系統的開發將離不開它們所帶來的方法、手段和工具,COM/DCOM規范和相關產品正愈來愈受信息技術界與產業界的重視.各廠商正在積極建立和調配實際的COM/DCOM系統,并使用COM/DCOM技術來解決各行業中的基本問題.COM/DCOM技術也同樣非常適于在電信領域內的應用.COM/DCOM目前已經是一項比較成熟的分布式面向對象技術,COM/DCOM非常適用于多數據庫系統的有效管理.
可采用多層B/S架構(客戶端瀏覽器層、Web服務器層、應用服務器層、數據庫層)、并采用了J2EE及EJB技術實現系統的分布異構及跨平臺.在系統數據庫選擇時有跨多數據庫的需求,在系統數據庫物理設計時對跨數據庫的設計及規范化是關鍵問題.
數據庫被規范化后,減少了數據冗余,數據量變小,數據行變窄.這樣DBMS的每一頁可以包括更多行,那么每一區里的數據量更多,從而加速表的掃描,改進了單個表的查詢性能.但是,當查詢涉及多個表的時候,需要用很多連接操作把信息從各個表中組合在一起,導致更高的CPU和I/O花銷.那么,有很多時候需要在規范化和非規范化之間保持平衡,用適當的冗余信息來減少系統開銷,用空間代價來換取時間代價.如果OrderDetail表中的數據量是在百萬級的,那么一次查詢所需要的時間可能會達到好幾個小時.事實上,只要在設計時保證數據的邏輯有效性,很多信息都可以直接冗余在OrderDetail表中,這些冗余的數據能夠極大的提高查詢的效率,從而減少CPU和I/O操作.主鍵用整型會極大的提高查詢效率,而字符型的比較開銷要比整型的比較開銷大很多,用字符型數據作主鍵會使數據插入、更新與查詢的效率降低.數據量小的時候這點降低可能不會被注意,可是當數據量大的時候,小的改進也能夠提高系統的響應速度.因此在數據庫設計時,都采用整形作為關鍵字.
本系統模型采用了一種全新的解決方法,在應用服務器中直接提供支持,這種方案才能保證分布是程序的運行效率,特別是在于需要大量數據進行處理的系統相連上尤為明顯.B/S三層結構建立了一種基本的軟件建模思想,它主要針對分布式應用軟件系統.層與層之間可以通過COM接口聯系起來,它們可以運行在不同的進程中,甚至運行在不同的機器上,COM及DCOM提供了進程透明和位置透明特性[5].
COM組件主要負責Web服務器和數據庫服務器,通過間接調用外部程序或腳本代碼來訪問數據庫,因此可以提供與數據庫相關的動態HTML頁面,或執行用戶查詢并將查詢結果格式轉化成HTML頁面,通過Web服務器返回給用戶瀏覽器.如圖3所示:
COM在Windows平臺上已經根深蒂固,并且正在向其他的操作系統發展.只要把應用系統建立在以COM為基礎的平臺上,在開發過程中既不需要考慮跨網絡調用,也不需要考慮數據源的差異,甚至在異構網絡環境中建立類似的應用系統也就成為可能.

圖3 建立在COM/DCOM基礎上的B/S多數據庫體系結構
組件不同于傳統應用程序中的模塊或類,組件是已經編譯、鏈接好并可以使用的.各定制的組件可以在運行時同其它組件連接起來構成應用程序,在需要對應用程序進行修改時,只需將某些組件用新的版本替換即可.并且可從已有的組件中建立全新的應用,真正達到軟件復用的目的.
COM/DCOM作為一種軟件原型標準,對于如何建立組件并通過組件構建應用程序提供了規范,改變了傳統的程序設計方法.它結合面向對象技術和組件技術兩種特性,對象特性使得應用系統的設計和實現更加符合現實世界的面貌;組件特性使得應用系統可以充分發揮組件的優勢,以適應現代應用的需要.
由于COM/DCOM主要實用與Window NT/95/98/2000環境,平臺的專有性無疑是其最大的缺陷.采用本系統模型可以擁有分布計算的支持,可應用服務器支持移動計算工作方式.該模式是數據庫緩存更新的發展,用戶與應用服務器相連并且從應用服務器上獲得數據,然后將緩存在本地的數據更新,可對數據進行各種離線處理和分析,用戶與應用服務器重新連接后,可以一次新的將離線所作的處理更新到數據庫服務器中.
由于在體系結構方面和模式結構方面會存在模型不一致的問題,有可能引起概念的混淆和不相容,因此選擇COM/DCOM作為系統的公共數據模型可以減少這種情況的發生.
服務的確定和組織應基于以下原則:
(1)自治性原則:局部系統的持有者有權決定為分布式系統的用戶提供哪些服務和客戶以何種方式調用這些服務.
(2)可聯編原則:服務必須提供能與對象實現聯編的接口.
(3)粒度劃分原則:通常服務或對象的粒度可大可小,沒有一個統一的限定.最常用的選擇是將每個局部系統封裝成一個對象,局部系統所提供的服務是查詢服務.
接口選擇:服務方可以選擇基于特定類型的靜態輪廓接口或選擇動態輪廓接口來聯編對象實現.
安全問題:MTS推薦使用基于角色的安全模型,這種模型以MTS服務進程為安全單元,它不單獨定義組件的安全角色.同時,MTS還提供了另一種高級安全模型,環境對象除了實現ObjectControl接口,它還實現了另一個安全屬性接口Insecurity Property,利用此接口,對象可以獲得創建對象的客戶的SID以及當前調用此對象的客戶的安全標識符.
利用VisualC++中的ODBC技術可以極大地減少軟件開發的工作量,提高了效率并增強了軟件的可靠性.當ODBC數據源配置好以后,應用程序就可以通過對ODBC API的直接調用來建立對數據庫的連接和處理數據庫中的數據.ODBC API是由ODBC提供的一組函數調用接口,其主要功能就是將SQL語句發送到目標數據庫,然后處理這些SQL語句返回的結果.下面是通過ODBC API連接數據庫的主要步驟及其所涉及到的重要函數[6].
(1)連接一個已經配置好的數據源

(2)動態連接數據庫
由于與數據庫的連接是通過Cdatabase類對象來實現的,所以可以通過賦予CrecordSet類對象參數m_pDatabase以連接不同數據庫的Cdatabase對象指針,就可以動態地連接數據庫:


(3)動態連接表
表的動態連接可以利用在調用CrecordSe:tOpen()函數時指定SQL語句來實現.
COM/DCOM技術是解決多種異構數據庫環境下的多數據庫信息處理一種有效的方法,系統具有更多不同的數據類型、數據庫語言、事務模式、封鎖協議、接口特性等.它不但可以解決數據庫異構的問題,更是解決操作系統異構的最有效的方法.這樣可以達到不同信息資源的共享及信息的綜合統計查詢,這也是企事業單位迫切要解決的實際問題. COM/DCOM技術能更好的解決異構數據庫環境下的電子商務和電子政務方面的信息交換問題.COM/DCOM的面向對象及分布式屬性、操作系統和平臺無關性、它的事件通知功能、高效的通信機制及其網絡安全技術,均符合多種異構數據庫系統管理的功能要求.
〔1〕薩師煊,王珊.數據庫系統概論(第4版)[M].北京:高等教育出版社,2007.
〔2〕高世偉,劉彩虹,劉亞利.基于DCOM技術實現的控制系統[J].微計算機信息,2005,7(3):23-26.
〔3〕Corry Mayfield Cadman.COM/DCOM編程指南[M].北京:清華大學出版社,2000.
〔4〕何海江.C#程序與基于COM的OPC數據存取服務器交換數據研究[J].微計算機信息,2004(10):112-114.
〔5〕Dale Rogerson.COM技術內幕 [M].清華大學出版社, 1998.
〔6〕劉美香.基于COM/DCOM的多數據庫系統[D].昆明理工大學,2002.
〔7〕劉春霞,陳殿波.利用ODBC技術實現異構數據源數據的共享[J].計算機與數字工程,2007(2):154-156.
〔8〕康萍.COM組件技術及其在三層結構模型中的應用[J].微電子學與計算機,2005,22(6):181-183.
〔9〕劉艷梅,趙敬中,等.基于COM/DCOM組件標準集成異構數據庫[J].北京理工大學學報,2000(10):58-59.
TP311
A
1673-260X(2010)06-0027-04
江西省科技廳自然科學基金項目(2007GZS0886)