李曉杰
【摘要】基于WEB的數據庫訪問技術,在各具體業務應用與底層用戶數據庫間建立一種可擴展、可移植,具有較強伸縮性的統一的對外接口,以有效地支撐業務網絡應用。
【關鍵詞】WEB;數據庫訪問技術
1.引言
在三層C/S中應用程序訪問數據庫服務器都需要一定的數據訪問技術的支持。從總體上數據訪問技術可以分為數據訪問接口和數據訪問對象兩部分 ,兩者之間的關系如圖1所示。
圖1 數據訪問技術關系圖
數據訪問接口:提供一組標準化接口(數據庫引擎),允許應用程序訪問不同類型的數據庫管理系統。如ODBC,JDBC,OLE DB等;數據訪問對象:提供用于通過數據庫訪問接口訪問數據庫管理系統的通用標準對象,不受應用程序開發語言的限制,實現對數據庫的連接、增加、刪除和查詢等操作。如常見的有DAO,RDO,ADO,ADO.NET等對象模型。在數據訪問技術研究初期,不同的數據庫廠商都會提供不同的數據訪問接口,開發人員需要針對不同的數據庫管理系統(DBMS)學習不同的專用數據庫訪問技術,比如 DB2系統的 CLI Library、Oracle 的 OCI Library等。這對開發人員造成了極大的困惑,使得數據庫應用程序的開發很困難,影響開發進度;而且所開發的應用程序局限性很大,嚴重依賴于數據庫平臺,不利于應用程序的跨數據庫平臺移植。
2.通用基于WEB數據庫訪問技術
信息化時代,網絡和信息管理高速發展,數據庫技術日臻成熟,功能日趨完善,而網絡和數據庫之間的關聯與應用日益緊密,用戶對信息的要求隨之也要達到高標準的實時性與交互性,因此WEB服務器與數據庫技術的結合顯得格外重要。數據庫訪問中間件技術出現一改傳統兩層結構,采取C/S三層結構,充分發揮了WEB技術和數據庫技術二者結合的綜合優勢與潛力,提高了性能、訪問效率和安全性。常見的基于WEB的數據庫訪問技術分為以下幾種:
2.1 CGI技術
CGI即通用網關接口,是Web服務器與應用程序交互傳遞信息的一種標準接口。CGI的工作原理是客戶端瀏覽器通過URL向Web服務器提出請求,服務器的守護進程將此請求傳給相應CGI程序進行處理,然后CGI將處理結果返回客戶端瀏覽器。CGI優點:通用性強,基本支持所有HTTP服務器,交互能力強,跨平臺性能極佳,操作簡單靈活。CGI缺點:應用程序通常獨立執行,客戶共享性差,內存資源占用率高,執行速度相對慢,運行效率偏低。另外CGI不具備事務處理的功能特點,使得其應用受到一定限制。
2.2 WebAPI
API是應用編程接口,它是數據庫程序的關鍵組件,每種數據庫一般都帶有動態鏈接庫,同時也配置專屬調用接口。針對CGI缺點,Web服務器供應商們開發了各自專用Web服務器的API應用編程接口,目前比較流行的是微軟開發的ISAPI和Netscape開發的NSAPI。Netscape同時提供專門設計的Livewire,它是全面開發方案,研發人員可開發管理WWW網點和WWW界面,可使用SQL語句或ODBC來直接訪問相關數據庫;Microsoft的ISAPI以DLL形式提供,是動態連接庫,通過ODBC訪問相關數據庫,主要以IDC文件形式發送。WebAPI工作原理是通過WEB交互式主頁獲取用戶請求,然后提交服務器后端處理。優點:運行效率較高,資源可高效分配使用。缺點:開發難度大,可移植性差,應用程序運行環境嚴格,缺乏通用性。
2.3 ODBC
ODBC即開放數據庫互連,是微軟創建的一個有關數據庫的通用標準接口。ODBC的工作原理是Web服務器通過ODBC向數據庫發出SQL請求,屬于標準SQL查詢,數據管理系統在執行SQL查詢后將結果傳回Web服務器。ODBC組成部件包括 Application、Administrator、Driver Manager、ODBC API、ODBC驅動程序DLL、數據源。優點:能用統一方式處理所有類型數據庫。因生成的程序相對獨立,故開發人員無需了解產品細節即可編寫程序,提供極大的方便性。缺點:訪問方式較慢,使用范圍受限制。
2.4 OLE_DB
OLE_DB全稱對象連接和嵌入數據庫,是微軟開發的應用程序接口,OLE DB基于ODBC之上建立, 訪問對象范圍更加廣泛,包括關系數據庫和非關系數據庫。OLE在實現桌 面應用程 序集成的同時,還定義實現了一種連接機制,允許應用程序作 為軟件對象彼此進行連接。
OLE DB的數據庫操作模型由客戶與服務器組成,客戶指應用程序,通過OLE DB接口數據源進行訪問與控制;服務器是提供OLE DB接口的軟件組件,按照提供的內容可分成服務器提供程序和數據提供程序。
OLE DB包括一組COM接口,分別對應各種類型的數據庫管理系統。構成OLE DB的每一個組件是一個COM對象,每個組件分別輸出一系列接口。OLE DB的組件組成有:枚舉器、數據源對象、會話、事務對象、命令對象、行集、錯誤對象。OLE DB優點是 訪問速度高,效率高。
2.5 JDBC
JDBC是Java數據庫連接,Java提供的一種標準應用程序編程接口,JDBC定義了Java與數據庫之間的一系列類和接口,均由Java語言編寫。數據庫開發人員可通過它用純Java語言編寫完整的應用程序,建立與數據庫的鏈接,并且將執行處理的SQL語句非常方便地傳送至各種數據庫。JDBC寫的程序能夠自動將SQL語句傳送給相應的數據庫管理系統,不必為每種數據庫的平臺編寫不同的程序。
JDBC對數據庫訪問的過程是:請求與數據庫建立連接,向數據庫發送SQL請求,為結果集定義存儲應用和數據類型,查詢結果,處理錯誤,控制傳輸,提交及關閉連接。簡單點說就是用戶通過WEB發出請求,通過JDBC接口連接數據庫處理請求,然后再將結果返回用戶瀏覽器。JDBC 技術優勢:可操作性強,可維護性強,使用效率高,安全性及事務處理能力高。
3.專用網絡數據庫訪問技術
一般來說,每種數據庫都具備專用web數據庫訪問技術,因其專用性故效率頗高。在數據庫行業里,Oracle 提供了行業領先的業務流程管理(BPM)和業務流程自動化(BPA) 產品,有助企業提高效率與可視性,積極推動實現卓越的客戶服務與運營,并促進實現新一代的面向服務的SOA體系結構的價值。因Oracle 的極強優越性,現在通信行業的業務支撐系統都使用Oracle數據庫作為用戶數據庫。
3.1 SQL*Net概述
ORACLE數據庫具有極強網絡功能,它支持多種網絡協議,如TCP/IP、X.25、SPX/IPX等,支持異種數據庫互聯、異種網絡協議互聯。SQL*Net是在Oracle特有的TNS技術上發展起來的網絡中間件產品軟件。ORACLE支持流行的C/S體系結構方式,使得應用與數據庫核心分布處理,極大地提高了資源的利用率和處理效率。Ct/S的Server端安放ORACLE Server;Client端安放用戶界面程序或ORACLE 的Client端產品,如SQL*Plus;SQL*Net是ORACLE的網絡軟件,通過SQL*Net可以實現Client與Server的連接,SQL*Net是建立在某一網絡協議之上的網絡中間件產品。
3.2 SQL*Net網絡功能
SQL*Net提供的網絡功能包括網絡透明性、自動字符集轉換、異種機網絡、協議獨立性、位置透明。網絡透明性指在一個本地數據庫基礎上開發的應用,可以不必修改就分布到網絡上去運行;自動字符集轉換指兩個通訊節點之間不同的字符集和國際語言支持數據描述可以通SQL*Net來管理;異種機網絡指通過多協議轉換來實現多種網絡協議之間的互聯;協議獨立性是指在任何一臺計算機上編制的應用,都可以不必修改就分布到任何協議的網絡上去運行;位置透明是指通過位置透明的策略,可以使網絡中的數據,如同放在單一本地數據庫中一樣使用,若數據分布發生變化,應用程序不必作任何修改。
3.3 SQL*Net的C/S結構系統配置
在客戶/服務器結構下,通信的兩端不論是客戶端或服務器端都需配置SQL*Net中介軟件,服務器端在數據庫主機上還需啟動一個偵聽程序(listener),以便能夠不斷偵聽所有來自網絡各地的客戶端聯機請求。偵聽程序處理客戶端聯機請求的做法有以下類型:
(1)專用服務器:當偵聽程序受到一個客戶端聯機請求時,偵聽程序新啟動一個專用服務器程序負責服務用戶程序的各項要求,并將執行結果傳回給用戶程序。整個通信過程,專用服務器程序與用戶程序通過SQL*Net來對話。
(2)多線程服務器:當偵聽程序受到一個客戶端聯機請求時,偵聽程序將用戶程序連接到一個已預先啟動的共享調度程序(Shared Dispatcher)上,此共享調度程序負責接受用戶程序的各項要求,并將之放入要求隊列,共享服務器從隊列中取出數據加以執行,然后將執行結果放至響應隊列中,同享調度程序再自響應隊列中取得數據后傳回給客戶端,整個通信過程,專用服務器程序與用戶程序通過 SQL*Net來對話。
參考文獻
[1]劉一,李玲.跨數據庫中間件在ERP中的應用[J].RFID 世界網,2011(01).
[2]Oracle Company.Oracle 10g數據庫應用教程[J].移動通信,2009(10).
[3]郭亞,劉曉晴.基于WEB技術的自助服務開發平臺[J].中國金融電腦,2003(12).