數(shù)據(jù)訪問接口體系及數(shù)據(jù)對象模型探討(Beat 1.0)
81_RedStar81@163.com
TomHornson.student@www.sina.com.cn
http://www.csdn.net/develop/author/netauthor/RedStar81/
3.OLE DB(Object Link and Embedding DataBase)
隨著網(wǎng)絡技術和數(shù)據(jù)庫技術的不斷發(fā)展,現(xiàn)在的應用系統(tǒng)對數(shù)據(jù)集成的要求越來越高.有必要將不同的地方,不同的格式(如關系型數(shù)據(jù)庫和操作 系統(tǒng)中的文件、電子表格、電子郵件、多媒體數(shù)據(jù)以及目錄服務信息或主機系統(tǒng)中的IMS和VSAM數(shù)據(jù)等等)的數(shù)據(jù)集成.傳統(tǒng)的解決方案是使用大型的數(shù)據(jù)庫系統(tǒng),把所有這些數(shù)據(jù)都移到數(shù)據(jù)庫系統(tǒng)中,然后按照操作數(shù)據(jù)庫的辦法對這些數(shù)據(jù)進行訪問,這樣做雖然能夠按統(tǒng)一的方式對數(shù)據(jù)進行各種操作,這種間接訪問方式帶來了很多問題,比如數(shù)據(jù)更新不及時、空間資源的冗余和訪問效率低等等
此時Microsoft公司的通用數(shù)據(jù)訪問技術(UDA)應運而生,它使數(shù)據(jù)應用系統(tǒng)能通過實現(xiàn)標準OLE DB接口的數(shù)據(jù)提供者來訪問各種各樣的數(shù)據(jù),而不管數(shù)據(jù)駐留在何處,也不需要進行數(shù)據(jù)轉移或復制、轉換.
OLE DB作為一種數(shù)據(jù)訪問接口體系,體現(xiàn)了Microsoft的通用數(shù)據(jù)訪問(UDA)策略的理念.UDA能夠通過標準接口來訪問各種類型的數(shù)據(jù).同于ODBC體系它也提供了一套標準API,不過OLE DB API是完全基于COM的,其特點是采用了多層模型.在COM通信層的一側是數(shù)據(jù)另一側則是數(shù)據(jù)使用者.這種基于COM的通信可被概括為在抽象對象(如DataSource、Session、Command 和 Rowset)上執(zhí)行的操作.因此,當使用者連接到DataSource,打開 Session,發(fā)出Command,并返回數(shù)據(jù)Rowset時,便會出現(xiàn)這種情況.
事實上,OLE DB是系統(tǒng)級的編程接口,它定義了一組COM接口,這組接口封裝了各種數(shù)據(jù)
系統(tǒng)的訪問操作,這組接口為數(shù)據(jù)使用者和數(shù)據(jù)提供者建立了標準,OLE DB還提供了一組標準
的服務組件,用于提供查詢、緩存、數(shù)據(jù)更新、事務處理等操作,因此數(shù)據(jù)提供方只需實現(xiàn)一
些簡單的數(shù)據(jù)操作.在使用方就可以獲得全部的數(shù)據(jù)控制能力.
OLE DB體系包括以下幾個組成部分(下圖示):
數(shù)據(jù)提供者(Data Provider) 提供數(shù)據(jù)存儲的組件和數(shù)據(jù),數(shù)據(jù)小到普通的文本文件、大到主機上的復雜數(shù)據(jù)庫,或者電子郵件存儲,都是數(shù)據(jù)提供者的例子.有 的文檔把這些軟件組件的開發(fā)商也稱為數(shù)據(jù)提供者.
數(shù)據(jù)服務提供者(Data Service Provider) 位于數(shù)據(jù)提供者之上、從過去的數(shù)據(jù)庫管理系統(tǒng)中分離出來、獨立運行的功能組件,例如查詢處理器和游標引擎(Cursor Engine),這些組件使得數(shù)據(jù)提供者提供的數(shù)據(jù)以表狀數(shù)據(jù)(Tabular Data)的形式向外表示(不管真實的物理數(shù)據(jù)是如何組織和存儲的),并實現(xiàn)數(shù)據(jù)的查詢和修改功能.SQL Server 7.0 的查詢處理程序就是這種組件的典型例子.
業(yè)務組件(Business Component) 利用數(shù)據(jù)服務提供者、完成某種特定業(yè)務信息處理、可以重用的功能組件.分布式數(shù)據(jù)庫應用系統(tǒng)中的中間層(Middle-Tier)就 是這種組件的典型例子.
數(shù)據(jù)消費者(Data Consumer) 任何需要訪問數(shù)據(jù)的系統(tǒng)程序或應用程序,除了典型的數(shù)據(jù)庫應用程序之外,還包括需要訪問各種數(shù)據(jù)源的開發(fā)工具或語言.
當然上圖側重非關系數(shù)據(jù)系統(tǒng)的示意.如今,幾乎所以的關系數(shù)據(jù)庫廠商都提供了OLE DB Provider以投入OLE DB新體系.當然對于只能獲得ODBC Provider的用戶,只要你再獲得OLE DB-ODBC Bridge也是可以的.(圖示如下:以ORACLE系統(tǒng)為例)
自然,各數(shù)據(jù)庫廠商的OLE DB Provider大體功能同于ODBC Provider.對各數(shù)據(jù)庫系統(tǒng)的獨特功能提供支持、對特定數(shù)據(jù)訪問進行優(yōu)化等等.
4.JDBC(Java DataBase Connectivity : Java數(shù)據(jù)庫連接)
Internet/intranet及相應環(huán)境下的應用系統(tǒng)的發(fā)展,造就了今日的Java.自然在Java數(shù)據(jù)應用系統(tǒng)中,JDBC是首選方案.與ODBC類似,JDBC為Java開發(fā)人員提供了一套標準的數(shù)據(jù)訪問API.
JDBC是SunMicroSystem公司的JavaSoft分部提出的Java數(shù)據(jù)應用訪問的標準API.JDBC是基于X/OpenSQL的調(diào)用級接口(這也是ODBC的基礎).JDBC可保證JDBCAPI在其它通用SQL級API之上實現(xiàn).這也意味著所有支持ODBC的數(shù)據(jù)庫不加任何修改能夠與JCBC協(xié)調(diào)工作. JDBC設計很多借鑒于ODBC:
1.JDBC與ODBC都是基于X/Open的SQL調(diào)用級接口
2.JDBC很多設計思想沿襲了ODBC,包括許多抽象和SQL CLI實現(xiàn)
3.JDBC的總體結構類似于ODBC,有四個組件:應用程序、驅(qū)動程序管理器、驅(qū)動程序和數(shù)據(jù)源,工作原 理亦大體同于ODBC. 此外:
1.JDBC保持了ODBC的基本特性,也獨立于特定數(shù)據(jù)庫.
2.使用相同源代碼的應用程序通過動態(tài)加載不同的JDBC驅(qū)動程序,可以訪問不同的DBMS.連接不同的 DBMS時,各個DBMS之間僅通過不同的URL進行標識.
3.JDBC的DatabaseMetaData接口提供了一系列方法,可以檢查DBMS對特定特性的支持,并相應確定有什 么特性,從而能對特定數(shù)據(jù)庫的特性予以支持
4.JDBC也支持在應用程序中同時建立多個數(shù)據(jù)庫連接,采用JDBC可以很容易地用SQL語句同時訪問多個 異構的數(shù)據(jù)庫,為異構的數(shù)據(jù)庫之間的互操作奠定基礎.
然而,由于基于Java,具有對硬件平臺、操作系統(tǒng)異構性的支持.這主要因為ODBC基本用C開發(fā),而JDBC用Java開發(fā).Java語言,具有與平臺無關、移植性強、安全性高、穩(wěn)定性好、分布式、面向?qū)ο蟮缺姸鄡?yōu)點,JDBC使“100% 純Java”解決方案成為可能.利用Java的平臺無關性更適合于Internet上異構環(huán)境的數(shù)據(jù)庫應用.此外,JDBC驅(qū)動程序管理器可內(nèi)置,也可通過Web瀏覽器自動下載,無須安裝、配置,ODBC驅(qū)動程序管理器和ODBC驅(qū)動程序必須在每臺客戶機上分別安裝、配置.
上面提及,JDBC與ODBC組成、工作原理基本相同,事實上,即使有區(qū)別,那也只因為驅(qū)動程序的解決方案有差異.一般,Java的驅(qū)動解決方案有四種:1.JDBC-ODBC Bridge 2.本機API/集團式Java驅(qū)動程序 3.網(wǎng)絡協(xié)議/全Java 4.本機協(xié)議/全Java
二、數(shù)據(jù)對象模型探討(待續(xù))
附錄:美國著名數(shù)據(jù)庫產(chǎn)品記事(參考)
二、數(shù)據(jù)對象模型探討(待續(xù))
------------------------------------------------聲明---------------------------------------------------
本文檔順數(shù)據(jù)庫應用發(fā)展歷史而下,以數(shù)據(jù)訪問接口和數(shù)據(jù)對象模型的發(fā)展、特征、相
互之間的區(qū)別為主線,描述了它的軌跡.希望對數(shù)據(jù)系統(tǒng)開發(fā)者有些幫助.
本文中,久遠的信息(對本人來說)系參考書籍,有錯誤之處,請指出
81_redstar@163.com
本文檔標以版本,目的在于希望大家閱讀之后,
發(fā)現(xiàn)不妥或錯誤或需要補充的地方,聯(lián)系我,對之進行修改,以完善之.
使之成為持久的網(wǎng)上參考資料.
Beat 1.0 2003.2.25
-----------------------------------