基於Java技術的Web環境下分散式資料庫互通性的實現

來源:互聯網
上載者:User

            作者:李熾明 莫倩 徐明
1 JDBC工作原理
  JDBC(Java Database Connectivity)是1個Sun公司註冊了的商標,代表用來執行SQL語句的Java語言APIAPI,它包括一系列用Java語言編寫的類和介面,為資料庫開發人員開發資料庫應用提供了標準的API。
1.1 JDBC概述
  採用JDBC可以很容易用SQL語句訪問任何商用資料庫,也就是說,通過JDBC API,資料庫應用開發人員就不需要編寫1個程式訪問Sybase資料庫,編寫另1個程式訪問Oracle資料庫,再編寫第3個程式訪問Informix資料庫,而只需編寫1個使用JDBC API的程式,就可以將SQL查詢語句送往合適的資料庫。同時,採用Java語言編寫應用程式,具有平台無關性,不需要為不同的平台編寫不同的應用程式。因此,採用Java和JDBC編寫資料庫應用程式的開發人員可以真正做到“編寫一次,隨處可用”。
  JDBC擴充了Java語言的功能。例如,使用Java和JDBC,可以製作1個能夠從遠端資料庫上擷取資訊的具有Java應用小程式(Applet)的Web首頁,或者開發1個能夠使企業的員工通過企業內部網(Intranet)訪問1個或多個內部資料庫的應用。
  採用Java和JDBC將使資訊的收集和發送非常容易和經濟,公司和企業可以繼續保留以前的資料庫系統,甚至這些資料庫系統是互不相同的,仍然可以輕鬆地訪問上面的資訊。並且開發1個新的資料庫應用的時間也將大大縮短。
1.2 JDBC的體繫結構
  JDBC的體繫結構包含4個組件。
  1.JDBC應用程式。JDBC應用程式負責使用者與使用者介面之間的互動操作,以及調用JDBC的對象方法以給出SQL語句並提取結果。
  2.JDBC驅動程式管理器。JDBC驅動程式管理器為應用程式載入和調用驅動程式。
  3.JDBC驅動程式。JDBC驅動程式執行JDBC對象方法的調用,發送SQL請求給指定的資料來源,並將結果返回給應用程式。驅動程式也負責與任何訪問資料來源的必要軟體層進行互動。
  4.資料來源。資料來源由資料集和與其相關聯的環境組成,主要指各資料庫廠商的資料庫系統。
  與ODBC一樣,JDBC提供給程式員的編程介面由2部分組成,即:面嚮應用程式的編程介面JDBC API和供底層開發的驅動程式介面JDBC Driver API。JDBC API是為應用程式員提供的,而JDBC Driver API則是為各個商務資料庫廠商提供的。各個商務資料庫廠商的JDBC驅動程式是由JDBC驅動程式管理器自動和統一管理的。

2 RMI工作原理
  在1個分布式系統中,不同主機上的程式之間的通訊,可以通過直接對Socket編程,這是比較底層的方法,也可以使用層次更高一些的RPC(Remote Procedure Call)機制來實現。但是對於Java這種純物件導向的網路程式設計語言來說,這些方法和機制都不可避免地破壞了Java的物件導向的特性。Java的RMI技術所要做的事情就是實現分布式對象環境下的不同虛擬機器上的對象之間的相互引用。
2.1 RMI概述
  RMI就是遠程方法調用(Remote Method Invocation),是Java體系中新興的一門技術。Java是一種純物件導向的語言,每一個程式實體都是以對象的形式提交的。為了使分布式環境下的Java編程保持這一特性,Sum公司提出了分布式對象的概念,並且為分布式對象(即遠程對象)之間互相引用提供了適合對象語義的基於抽象的對象層次的機制,這就是RMI。它使得分布式環境下的Java編程或者說Java程式之間的網路通訊不再涉及底層的協議和資料的編碼解碼,從而更加簡單和自然。  
2.2 RMI的體繫結構
  1所示,RMI系統由以下3層組成:存根/架構(stub/skeleton)層,遠端參照層和傳輸層。每一層的邊界是由特定的介面和協議來界定的,因此,每一層相對於它的相鄰層是獨立的,也就是說,某一層在實現上的改變,是不會影響到其它層的。


圖1  RMI的體繫結構

  stub/skeleton層是Java程式跟RMI系統其它部分的介面。在RMI系統中,這一層實際上是扮演著代理的角色,stub和skeleton分別是客戶程式和服務程式的代理人。在用戶端,客戶程式向stub發出遠程方法調用請求,stub則負責把這些請求傳遞給伺服器,並且把調用結果返回給客戶程式。而在伺服器端,來自用戶端的調用申請為skeleton所接收,並且由skeleton負責調用相應的對象方法為之服務,調用結果也是由skeleton返回給用戶端。
  遠端參照層是具體的從語義上實現遠程對象引用的部分,所有的包括對象的複製等對遠程對象的操作都由遠端參照層來管理。
  傳輸層則負責偵聽進來的調用請求,為它們建立串連,並且負責管理和監視這些串連,同時為所有存在於該地址空間的遠程對象維持1張遠程對象表,以便定位遠程調用的目標。
2.3 對象序列化技術
  RMI系統中還用到對象序列化技術(object serialization)。對象序列化實質是對Java對象的編碼,在遠程方法調用過程中,它負責把發送方要傳送的Java對象先編碼成位元組流,然後再進行網路傳送,而在接收方,它負責把接收的位元組流還原成Java對象,從而實現了不同地址空間上的對象的透明傳送。
2.4 RMI的目標
  RMI技術是針對Java語言的,它的目標就是實現對存在於不同虛擬機器上的對象的無縫的遠程調用,把分布式物件模型自然地整合到Java語言裡,儘可能地從語義上保留Java的物件導向的特性,也保留Java runtime環境所提供的安全性。
  在RMI體系裡,所有的遠程方法調用的實現細節對Java程式來說都是透明的,遠程對象之間的引用,就跟引用本地的Java對象一樣的簡單自然,符合物件導向的語義。
  在RMI裡,對遠程方法的調用是很重要的,在文法上,跟對本地方法的調用是一致的。

3 基於JAVA技術的Web環境下分散式資料庫互通性的實現
3.1 JDBC對異種資料庫互通性的實現
  在JDBC中要實現對各種異種資料庫的訪問,有一種簡單而又快捷的方法,就是利用ODBC,ODBC是目前較成熟的資料庫應用技術,它提供了對各種異種資料庫的統一的提供者。因此,我們只需要通過JDBC-ODBC橋驅動程式,就可以實現對各種關聯式資料庫的透明訪問,從而使JDBC應用程式以及其驅動程式都獲得了對資料庫的獨立性。
3.2 利用RMI解決Java對Applet的安全性限制問題
  對於JDBC應用程式來說,RMI最大的優點是它可以超越Java Applet程式所受的網路安全方面的限制。Applet作為RMI系統的用戶端部分,是從RMI伺服器所在的主機節點下載的,它可以訪問RMI伺服器上的資源,可以向伺服器發出資料庫訪問請求和接收伺服器返回的資料,而作為Java Application的RMI伺服器程式,它沒有像Applet那樣的限制,它可以訪問其它主機上的資源,包括資料庫。它負責接收客戶Applet的資料庫訪問請求,根據請求通過JDBC去訪問資料庫資源,並且把訪問結果資料返回給客戶Applet。實際上RMI伺服器程式成了客戶Applet訪問資料庫的1個代理,屏蔽了Java對Applet的安全限制。
3.3 利用RMI和JDBC實現1個三層Client/Server結構模型
  對傳統的二層結構的一個改進辦法,就是採用Client/Server三層結構,在用戶端與資料庫伺服器之間增加1個“中介層”,用戶端所有的資料庫訪問都是由中介層執行,訪問的結果資料由中介層從資料庫伺服器接收,並負責轉寄給用戶端。中介層實際上起著1個代理的作用。
  RMI伺服器是作為客戶和資料庫伺服器之間的中介層,負責它們之間的資料通訊。客戶Apple t的資料庫訪問請求,通過RMI伺服器來向資料庫提交,而訪問結果,也是由資料庫伺服器通 過RMI伺服器向客戶Applet傳遞。RMI伺服器其實也是1個JDBC應用程式,它通過RMI系統與客 戶Applet進行通訊並為它服務,通過JDBC與資料庫伺服器建立串連,從而實現了客戶Applet 與資料庫伺服器之間的串連。
  使用RMI與JDBC結合的方法實現Web環境下的遠端資料存取,有1個明顯的優點,就是作為客 戶的Java程式,不再需要進行低層的JDBC API調用,而是由伺服器提供了相應的高層API, 而作為RMI伺服器,完全可以對客戶Applet的請求加上一定的約束,增加了系統的靈活性和 安全性。
3.4 實現1個n層Client/Server結構
  上面所述的三層模型,是開發Web環境下分散式資料庫應用的基礎。基於RMI支援點對點通訊 機制(即1個節點上的RMI程式既可作為伺服器程式又可作為客戶機程式)的特點,完全可以實 現1個2所示的n層客戶機/伺服器模式的應用。


圖2  N層客戶機/伺服器模式在分散式資料庫中的應用

  這種應用系統,由許多分布在不同主機節點上的伺服器以及它們的直接客戶機所 組成,每1 個伺服器與其直接客戶機構成1個三層結構系統。伺服器由HTTP伺服器、RMI系統(Server/Cl ient)、JDBC、ODBC和SQL資料庫伺服器組成,每1個伺服器通過RMI系統與和它相連的其它服 務器以及直接客戶機進行通訊。在整個系統裡面,它既作伺服器,為直接客戶和其它伺服器 提供資料服務,又作客戶機,可以向其它伺服器申請資料服務。
  在實際應用時,每一個伺服器上都有1張表,上面記錄了與它相連的其它伺服器的地址 ,每一個伺服器的直接客戶機可以向其伺服器發出資料庫訪問申請,伺服器首先到自己節點 的資料庫去查詢,如果存在相應資訊,則將它返回給客戶機,否則,就按照地址表向其它 伺服器發送查詢請求;如果其它伺服器上有相應資訊,也把它們返回給客戶機,否則,告知 客戶機查詢失敗。明顯地,所有的客戶機都能夠透明訪問所有伺服器上的資料庫。這樣,就 可實現1個Web環境下的分散式資料庫應用。

4 總 結
  利用JDBC和RMI實現Web環境下的分散式資料庫互通性,是應用Java技術的一個嘗試,同時 ,也是對傳統C/S體繫結構的一種改進,它具有簡單、高效的優點,結合Java的各種良好特 性,特別是新興的RMI技術和為業界所支援的JDBC技術,相信它會向著標準化的方向發展, 並且會得到更加廣泛的應用。

作者單位:長沙國防科技大學並行與分布處理重點實驗室(410073)

參考文獻
 
1 Rasmussen B.WDB-A Web Interface to SQL Databases.European Southern Observatory,http://arch-http.hq.eso.org/bfrasmus/wdb/wdb.html,1997
 2 Naguyen T,Srinivasan V.Accessing Relational Database From the World Wide Web. ACM SIGMOD ’96 Montreal,Canada,1996
 3 Yaylor A.JDBC Developer's Resource.Prentice Hall PTR,http://www.preh all.com,1997

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.