http://www.csdn.net/develop/author/netauthor/RedStar81/
3.OLE DB(Object Link and Embedding DataBase)
隨著網絡技術和數據庫技術的不斷發展,現在的應用系統對數據集成的要求越來越高.有必要將不同的地方,不同的格式(如關系型數據庫和操作 系統中的文件、電子表格、電子郵件、多媒體數據以及目錄服務信息或主機系統中的IMS和VSAM數據等等)的數據集成.傳統的解決方案是使用大型的數據庫系統,把所有這些數據都移到數據庫系統中,然后按照操作數據庫的辦法對這些數據進行訪問,這樣做雖然能夠按統一的方式對數據進行各種操作,這種間接訪問方式帶來了很多問題,比如數據更新不及時、空間資源的冗余和訪問效率低等等
此時Microsoft公司的通用數據訪問技術(UDA)應運而生,它使數據應用系統能通過實現標準OLE DB接口的數據提供者來訪問各種各樣的數據,而不管數據駐留在何處,也不需要進行數據轉移或復制、轉換.
OLE DB作為一種數據訪問接口體系,體現了Microsoft的通用數據訪問(UDA)策略的理念.UDA能夠通過標準接口來訪問各種類型的數據.同于ODBC體系它也提供了一套標準API,不過OLE DB API是完全基于COM的,其特點是采用了多層模型.在COM通信層的一側是數據另一側則是數據使用者.這種基于COM的通信可被概括為在抽象對象(如DataSource、Session、Command 和 Rowset)上執行的操作.因此,當使用者連接到DataSource,打開 Session,發出Command,并返回數據Rowset時,便會出現這種情況.
事實上,OLE DB是系統級的編程接口,它定義了一組COM接口,這組接口封裝了各種數據
系統的訪問操作,這組接口為數據使用者和數據提供者建立了標準,OLE DB還提供了一組標準
的服務組件,用于提供查詢、緩存、數據更新、事務處理等操作,因此數據提供方只需實現一
些簡單的數據操作.在使用方就可以獲得全部的數據控制能力.
OLE DB體系包括以下幾個組成部分(下圖示):

數據提供者(Data Provider) 提供數據存儲的組件和數據,數據小到普通的文本文件、大到主機上的復雜數據庫,或者電子郵件存儲,都是數據提供者的例子.有 的文檔把這些軟件組件的開發商也稱為數據提供者.
數據服務提供者(Data Service Provider) 位于數據提供者之上、從過去的數據庫管理系統中分離出來、獨立運行的功能組件,例如查詢處理器和游標引擎(Cursor Engine),這些組件使得數據提供者提供的數據以表狀數據(Tabular Data)的形式向外表示(不管真實的物理數據是如何組織和存儲的),并實現數據的查詢和修改功能.SQL Server 7.0 的查詢處理程序就是這種組件的典型例子.
業務組件(Business Component) 利用數據服務提供者、完成某種特定業務信息處理、可以重用的功能組件.分布式數據庫應用系統中的中間層(Middle-Tier)就 是這種組件的典型例子.
數據消費者(Data Consumer) 任何需要訪問數據的系統程序或應用程序,除了典型的數據庫應用程序之外,還包括需要訪問各種數據源的開發工具或語言.
當然上圖側重非關系數據系統的示意.如今,幾乎所以的關系數據庫廠商都提供了OLE DB Provider以投入OLE DB新體系.當然對于只能獲得ODBC Provider的用戶,只要你再獲得OLE DB-ODBC Bridge也是可以的.(圖示如下:以ORACLE系統為例)
自然,各數據庫廠商的OLE DB Provider大體功能同于ODBC Provider.對各數據庫系統的獨特功能提供支持、對特定數據訪問進行優化等等.
4.JDBC(Java DataBase Connectivity : Java數據庫連接)
Internet/intranet及相應環境下的應用系統的發展,造就了今日的Java.自然在Java數據應用系統中,JDBC是首選方案.與ODBC類似,JDBC為Java開發人員提供了一套標準的數據訪問API.
JDBC是SunMicroSystem公司的JavaSoft分部提出的Java數據應用訪問的標準API.JDBC是基于X/OpenSQL的調用級接口(這也是ODBC的基礎).JDBC可保證JDBCAPI在其它通用SQL級API之上實現.這也意味著所有支持ODBC的數據庫不加任何修改能夠與JCBC協調工作. JDBC設計很多借鑒于ODBC:
1.JDBC與ODBC都是基于X/Open的SQL調用級接口
2.JDBC很多設計思想沿襲了ODBC,包括許多抽象和SQL CLI實現
3.JDBC的總體結構類似于ODBC,有四個組件:應用程序、驅動程序管理器、驅動程序和數據源,工作原 理亦大體同于ODBC. 此外:
1.JDBC保持了ODBC的基本特性,也獨立于特定數據庫.
2.使用相同源代碼的應用程序通過動態加載不同的JDBC驅動程序,可以訪問不同的DBMS.連接不同的 DBMS時,各個DBMS之間僅通過不同的URL進行標識.
3.JDBC的DatabaseMetaData接口提供了一系列方法,可以檢查DBMS對特定特性的支持,并相應確定有什 么特性,從而能對特定數據庫的特性予以支持
4.JDBC也支持在應用程序中同時建立多個數據庫連接,采用JDBC可以很容易地用SQL語句同時訪問多個 異構的數據庫,為異構的數據庫之間的互操作奠定基礎.
然而,由于基于Java,具有對硬件平臺、操作系統異構性的支持.這主要因為ODBC基本用C開發,而JDBC用Java開發.Java語言,具有與平臺無關、移植性強、安全性高、穩定性好、分布式、面向對象等眾多優點,JDBC使“100% 純Java”解決方案成為可能.利用Java的平臺無關性更適合于Internet上異構環境的數據庫應用.此外,JDBC驅動程序管理器可內置,也可通過Web瀏覽器自動下載,無須安裝、配置,ODBC驅動程序管理器和ODBC驅動程序必須在每臺客戶機上分別安裝、配置.
上面提及,JDBC與ODBC組成、工作原理基本相同,事實上,即使有區別,那也只因為驅動程序的解決方案有差異.一般,Java的驅動解決方案有四種:1.JDBC-ODBC Bridge 2.本機API/集團式Java驅動程序 3.網絡協議/全Java 4.本機協議/全Java
二、數據對象模型探討(待續)
附錄:美國著名數據庫產品記事(參考)
二、數據對象模型探討(待續)
------------------------------------------------聲明---------------------------------------------------
本文檔順數據庫應用發展歷史而下,以數據訪問接口和數據對象模型的發展、特征、相
互之間的區別為主線,描述了它的軌跡.希望對數據系統開發者有些幫助.
本文中,久遠的信息(對本人來說)系參考書籍,有錯誤之處,請指出
81_redstar@163.com
本文檔標以版本,目的在于希望大家閱讀之后,
發現不妥或錯誤或需要補充的地方,聯系我,對之進行修改,以完善之.
使之成為持久的網上參考資料.
Beat 1.0 2003.2.25
-----------------------------------