- 相關(guān)推薦
全面領(lǐng)會(huì ) ODBC技巧
在我們平凡無(wú)奇的學(xué)生時(shí)代,很多人都經(jīng)常追著(zhù)老師們要知識點(diǎn)吧,知識點(diǎn)也可以理解為考試時(shí)會(huì )涉及到的知識,也就是大綱的分支。哪些知識點(diǎn)能夠真正幫助到我們呢?下面是小編整理的全面領(lǐng)會(huì ) ODBC技巧,僅供參考,大家一起來(lái)看看吧。
目前,眾多的廠(chǎng)商推出了行行色色的數據庫系統 ,它們在性能、價(jià)格 和利用領(lǐng)域上各有千秋。一個(gè)綜合信息系統 的各部門(mén)由于需求區別等原因,往往會(huì )存在多種數據庫,它們之間的互連造訪(fǎng)成為一個(gè)棘手 的問(wèn)題,特別 是當用戶(hù)需要 從客戶(hù)機端造訪(fǎng)不同的服務(wù)器時(shí)。
微軟提出的開(kāi)放式數據庫互連(Open-DataBase-Connectivity,即ODBC)成為目前一個(gè)強有力解決方案 ,并逐步成為Windows和Macintosh平臺上的標準 接口,并推動(dòng) 了這方面的開(kāi)放性和標準 化。
一、ODBC的產(chǎn)生 和發(fā)展
關(guān)系型數據庫產(chǎn)生 后很快就成為數據庫系統 的主流產(chǎn)品,由于每個(gè)DBMS廠(chǎng)商都有自己的一套標準 ,人們很早就產(chǎn)生 了標準 化的想法,于是產(chǎn)生 了SQL,由于其語(yǔ)法規范逐漸為人所接管,成為RDBMS上的主導語(yǔ)言。最初,各數據庫廠(chǎng)商為領(lǐng)會(huì ) 決互連的問(wèn)題,往往供給嵌入式SQL API,用戶(hù)在客戶(hù)機端要操作系統 中的RDBMS時(shí),往往要在程序中嵌入SQL語(yǔ)句進(jìn)行預編譯。由于不同廠(chǎng)商在數據款式、數據操作、具體實(shí)現甚至語(yǔ)法方面都具有不同程度 的區別,所以彼此不能兼容。
長(cháng)期以來(lái),這種API的非規范情況 令用戶(hù)和RDBMS廠(chǎng)商都不能滿(mǎn)意。在80年代后期,一些知名的廠(chǎng)商包孕Oracle、Sybase、Lotus、Ingres、Informix、HP、DEC等結成了SQL Access Group(簡(jiǎn)稱(chēng)SAG),提出了SQL API的規范核心:調用級接口(Call Level Interface),簡(jiǎn)稱(chēng)CLI。
1991年11月,微軟發(fā)布了ODBC,次年推出可用版本。1992年2月,推出了ODBC SDK 2.0版。ODBC基于SAG的SQL CAE草案所規定的語(yǔ)法,共分為Core、Level 1、 Level 2三種定義,分辨 規范了22、16、13共51條命令,其中29條命令甚至越過(guò)了SAG CLI中原有的定義,功效強大而機動(dòng)。它還包孕標準 的差錯代碼集、標準 的連接 和登錄DBMS法子 、標準 的數據類(lèi)型表現等。
由于ODBC思想上的先進(jìn)性,且沒(méi)有同類(lèi)的標準 或產(chǎn)品與之競爭,它一枝獨秀,推出后僅僅兩三年就受到了眾多廠(chǎng)家與用戶(hù)的青睞,成為一種廣為接管的標準 。目前,已經(jīng)有130多家獨立廠(chǎng)商發(fā)布了對ODBC的支撐,常見(jiàn)的DBMS都供給了ODBC的驅動(dòng)接口,這些廠(chǎng)商包孕Oracle、Sybase、Informix、Ingres、IBM(DB/2)、DEC(RDB)、HP(ALLBASE/SQL)、Gupta、Borland(Paradox)等。目前,ODBC已經(jīng)成為客戶(hù)機/服務(wù)器系統 中的一個(gè)首要支撐技巧。
二、ODBC的根基思想與特性
ODBC的根基思想是為用戶(hù)供給簡(jiǎn)略、標準 、透明的數據庫連接 的公共編程接口,開(kāi)發(fā)廠(chǎng)商根據 ODBC的標準 去實(shí)現底層的驅動(dòng)程序,這個(gè)驅動(dòng)對用戶(hù)是透明的,并容許根據 不同的DBMS采納不同的技巧加以?xún)?yōu)化實(shí)現,這就利于不斷吸收 新的技巧而趨完善 。
這同時(shí)也就是數據庫驅動(dòng)的思想,它很類(lèi)似 于Windows中打印驅動(dòng)的思想。在Windows中,用戶(hù)安裝不同的打印驅動(dòng)程序,應用同樣一條打印語(yǔ)句或操作,就可很容易地實(shí)現在不同打印機上打印輸出,而不需要 領(lǐng)會(huì ) 內部的具體原理。ODBC出現以后,用戶(hù)安裝不同的DBMS驅動(dòng)就可用同樣的SQL語(yǔ)句實(shí)現在不同DBMS上進(jìn)行同樣的操作,而且無(wú)需預編譯。ODBC帶來(lái)了數據庫連接 法子 的變化,如圖1所示。在傳統法子 中,開(kāi)發(fā)人員要熟識多個(gè)DBMS及其API,一旦DBMS端出現變動(dòng),則往往導致用戶(hù)端系統 重新編建或者源代碼的修正,這給開(kāi)發(fā)和掩護工作帶來(lái)了很大艱苦。在ODBC法子 中,不管底層網(wǎng)絡(luò )環(huán)境如何,也無(wú)論采納何種DBMS,用戶(hù)在程序中都應用同一套標準 代碼,無(wú)需逐個(gè)領(lǐng)會(huì ) 各DBMS及其API的特性,源程序不因底層的變更而重新編建或修正,從而減輕了開(kāi)發(fā)掩護的工作量,縮短了開(kāi)發(fā)周期。
@@12W03500.GIF;圖1 數據庫連接 法子 的轉變 @@
概括起來(lái),ODBC具有以下機動(dòng)的特性:
1. 應用戶(hù)程序有很高的互操作性,雷同的目標 代碼實(shí)用于不同的DBMS;
2. 由于ODBC的開(kāi)放性,它為程序集成供給了方便,為客戶(hù)機/服務(wù)器結構 供給了技巧支撐;
3. 由于利用與底層網(wǎng)絡(luò )環(huán)境和DBMS離開(kāi),簡(jiǎn)化了開(kāi)發(fā)掩護上的艱苦。
三、ODBC的系統結構 和實(shí)現
ODBC是依賴(lài)分層結構 來(lái)實(shí)現的,如此可保證其標準 性和開(kāi)放性。圖2所示為ODBC的系統結構 ,它共分為四層:利用程序、驅動(dòng)程序管理器、驅動(dòng)程序和數據源。微軟公司對ODBC規程進(jìn)行了規范,它為利用層的開(kāi)發(fā)者和用戶(hù)供給標準 的函數、語(yǔ)法和差錯代碼等,微軟還供給了驅動(dòng)程序管理器,它在Windows中是一個(gè)動(dòng)態(tài)鏈接庫即ODBC.DLL。驅動(dòng)程序層由微軟、DBMS廠(chǎng)商或第三開(kāi)發(fā)商供給,它必須 符合ODBC的規程,對于Oracle,它是ORA6WIN.DLL,對于SQL Server,它是SQLSRVR.DLL。
@@12W03501.GIF;圖2 ODBC系統結構 @@
下面我們詳細介紹各層的功效。
1. 利用程序層(Application)
應用 ODBC接口的利用程序可履行以下任務(wù) :
、賾┣笈c數據源的連接 和會(huì )話(huà)(SQLConnect);
、谙驍祿窗l(fā)送SQL懇求 (SQLExecDirct或SQLExecute);
、蹖QL懇求的效果定義存儲區和數據款式;
、軕┣笮Ч;
、萏幚 差錯;
、奕绻枰 ,把效果返回給用戶(hù);
、邔κ聞(wù)進(jìn)行把持,懇求履行或回退操作(SQLTransact);
、嘟K止對數據源的連接 (SQLDisconnect)。
2. 驅動(dòng)程序管理器(Driver Manager)
由微軟供給的驅動(dòng)程序管理器是帶有輸入庫的動(dòng)態(tài)連接 庫ODBC.DLL,其首要目標是裝入驅動(dòng)程序,此外還履行以下工作:
、偬幚 幾個(gè)ODBC初始化調用;
、跒槊恳粋(gè)驅動(dòng)程序供給 ODBC函數入口點(diǎn);
、蹫镺DBC調用供給參數和次序 驗證。
3. 驅動(dòng)程序(Driver)
驅動(dòng)程序是實(shí)現ODBC函數和數據源交互的DLL,當利用程序調用SQL Connect或者SQLDriver Connect函數時(shí),驅動(dòng)程序管理器裝入相應的驅動(dòng)程序,它對來(lái)自利用程序的ODBC函數調用進(jìn)行應答,遵守其請求履行以下任務(wù) :
、俳 與數據源的連接 ;
、谙驍祿刺峤粦┣;
、墼诶贸绦蛐枨髸r(shí),轉換數據款式;
、芊祷匦Чo利用程序;
、輰⑦\行差錯款式化為標準 代碼返回;
、拊谛枰 時(shí)闡明和處理 光標。
以上這些功效都是對利用程序層功效的具體實(shí)現。驅動(dòng)程序的配置法子 可以劃分為以下兩種。
(1)單層次(single-tier) 這種法子 下,驅動(dòng)程序要處理 ODBC調用SQL語(yǔ)句,并直接節制數據庫,因此具有數據存取功效。這種配置最常見(jiàn)的是同一臺微機之上異種數據庫通過(guò)ODBC存取,如在Powerbuilder中存取XBase、Excel、Paradox等數據文件,如圖3所示。@@12W03502.GIF;圖3 一層配置示意圖@@
(2)多層次(multiple-tier) 這種配置中驅動(dòng)程序僅僅處理 ODBC調用,而將SQL語(yǔ)句交給服務(wù)器履行,然后返回效果。這種情況 往往是利用程序、驅動(dòng)程序管理器、驅動(dòng)程序駐留在客戶(hù)機端,而數據源和數據存取功效放在服務(wù)器端。譬如用Foxpro或Excel存取SQL Server或Oracle上的數據,如圖4所示。
@@12W03503.GIF;圖4 二層配置示意圖@@
有時(shí)在以上兩者之間加上網(wǎng)關(guān)以解決通信 協(xié)議 的轉換等問(wèn)題,這時(shí)驅動(dòng)程序要將懇求先傳送給網(wǎng)關(guān),如造訪(fǎng) DEC RDB和IBM AS/400時(shí)的配置,如圖5所示。
@@12W03504.GIF;圖5 三層配置示意圖@@
4. 數據源
數據源由用戶(hù)想要存取的數據和它相干的操作系統 、DBMS及網(wǎng)絡(luò )環(huán)境組成。
四、一致性級別
從利用程序觀(guān)點(diǎn)來(lái)看,最理想 的情況 是每個(gè)數據源和驅動(dòng)程序都支撐同一套ODBC函數調用和SQL語(yǔ)句。但是由于形形色色的DBMS在實(shí)現上有很大的區別,它們所依附的系統 和環(huán)境也各不雷同,在對ODBC支撐的程度 上就不一致。一致性級別(Conformance Levels)建立 了對眾多功效的標準 劃分,為利用程序和驅動(dòng)程序供給贊助 和選擇的根據。它劃定了驅動(dòng)程序所支撐的ODBC函數和SQL語(yǔ)句的領(lǐng)域,我們可以用SQLGetInfo、SQLGetFunctions、SQLTypeInfo三個(gè)函數獲知驅動(dòng)程序所支撐的功效集。ODBC從API和SQL語(yǔ)法兩方面劃分級別。
1. API的一致性
ODBC將函數調用劃分為三級。
(1)核心API 它包孕了與SAG的CLI相匹配的根基功效,包孕:分配與釋放環(huán)境、連接 及語(yǔ)句句柄;連接 到數據源;籌辦并履行 SQL語(yǔ)句或立即履行 SQL語(yǔ)句;為SQL語(yǔ)句和效果列中的參數分配存儲器;從效果中檢索數據,檢索效果的信息;提交和取締事務(wù)處理 ;檢索差錯信息。
(2)一級API 它包孕了核心API的整個(gè)功效,比如用特定驅動(dòng)程序的對話(huà)框連接 到數據源;設置和查詢(xún)語(yǔ)句值和連接 選項;送部分或整個(gè)參數值;檢索部分和整個(gè)效果;檢索目錄信息;檢索關(guān)于驅動(dòng)程序和數據源的信息。
(3)二級API 其功效包孕核心和一級API的整個(gè)功效;涉獵可獲得的連接 和可獲得的數據源列表;發(fā)送參數值數組,檢索效果數組;檢索參數個(gè)數及參數描繪;利用可卷動(dòng)的光標;檢索SQL語(yǔ)句和本機表格;檢索各種目錄信息;調用轉換DLL。
2. SQL語(yǔ)法的一致性級別
從SQL方面可劃分為最小的SQL語(yǔ)法、核心SQL語(yǔ)法和擴張SQL語(yǔ)法三個(gè)等級。
五、ODBC的利用與遠景
ODBC的出現給用戶(hù)刻畫(huà)了一個(gè)誘人的遠景,即網(wǎng)絡(luò )中的Windows用戶(hù)可以方便 地造訪(fǎng)各種數據庫,F在,在微軟推出的許多產(chǎn)品中都供給了ODBC支撐,如Visal Basic 3.0、Visal C1.5、Excel 5.0、Word 6.0、FoxPro、Access等。同時(shí)其他一些利用軟件和開(kāi)發(fā)工具也供給了對ODBC的支撐。因此用戶(hù)只要安裝不同的ODBC驅動(dòng)程序,就可存取相應的數據庫產(chǎn)品,而不管用戶(hù)應用何種前臺利用軟件,也不管后臺是何種數據庫,這個(gè)存取的歷程是一致的。
但是由于ODBC產(chǎn)生 的光陰還不長(cháng),其利用也同時(shí)存在著(zhù)一些問(wèn)題。首先,它的層次對比多,表現 在性能上比專(zhuān)有的API要慢,這是其標準 化和開(kāi)發(fā)性所帶來(lái)的必要的代價(jià);其次,由于ODBC規定了三個(gè)層次的一致性級別,利用程序與驅動(dòng)程序之間的匹配就會(huì )出現一些問(wèn)題和抵觸,比如某些驅動(dòng)程序支撐的級別對比低,而利用程序請求的對比高;再者,由于不同的驅動(dòng)程序為不同的開(kāi)發(fā)商所開(kāi)發(fā),測試工作不能統一,而現有的開(kāi)發(fā)和測試工具并不很完善 ;同時(shí),在非SQL的數據庫系統 上的利用也存在一些問(wèn)題。
微軟公司將ODBC作為一項很首要的技巧,它已允諾進(jìn)一步改善ODBC技巧,為驅動(dòng)程序開(kāi)發(fā)者供給更先進(jìn)的開(kāi)發(fā)和測試工具,還將交付系統 管理和監控工具,它還將與DBMS廠(chǎng)商和第三方廠(chǎng)商建立 更密切 的合作,以期使驅動(dòng)程序支撐更高檔別的一致性,并在規范化方面有所完善 。目前,ODBC已為數據庫提供商組織內部所認可,同時(shí)為眾多利用軟件廠(chǎng)商和第三方開(kāi)發(fā)商所應用,信任隨著(zhù)SQL的推廣和規范,用戶(hù)和開(kāi)發(fā)商會(huì )更加依附于這一技巧。
數據庫集群的概念
微軟用集群這個(gè)詞和行業(yè)內其他的公司的用法和意義是不一樣的。微軟用集群這個(gè)詞指的是故障轉移群體。
業(yè)界其他一些公司定義集群,比如說(shuō)Oracle是叫做可擴展性的升級群體(Cluster)。擴展性和可用性是兩個(gè)很接近的概念,在很多的時(shí)候,他們兩者會(huì )互相的影響,如果可用性不存在,擴展性也無(wú)從談起。我現在要介紹的是關(guān)于SQL Server 2005在這方面的特性,是非常有利的一個(gè)特性。微軟有一個(gè)叫做SSD(可擴展性共享數據庫技術(shù))。
我們應該盡量謹慎使用SSD這一縮寫(xiě),因為SSD在業(yè)界有其他的一些表示,我們在微軟內部用SSD來(lái)談可拓展性的需求。相對于Oracle,IC是一個(gè)比較類(lèi)似的技術(shù)。這種SSD技術(shù)有一個(gè)局限性,要求數據庫是只讀的,但是同時(shí)又能夠被多個(gè)SQL Server Instense進(jìn)行并發(fā)的訪(fǎng)問(wèn),從這個(gè)上面來(lái)說(shuō),和Lise提供的功能是一致的,但是具有一定的局限性。我們在美國有一個(gè)最大的零售商就是使用這種技術(shù)來(lái)構建它的數據倉庫。這個(gè)零售商每周要更新一次數據庫系統,同時(shí)又有多個(gè)SQL Server要同時(shí)訪(fǎng)問(wèn)這個(gè)數據庫。正是基于這種并發(fā)訪(fǎng)問(wèn)技術(shù),同時(shí)提高了很高的可用性,如果一個(gè)服務(wù)器宕掉了,其他的服務(wù)器還可以同時(shí)對外提供服務(wù)。像這個(gè)典型的案例,在我們在線(xiàn)的幫助和相應的白皮書(shū)中都有詳細的描述。
同時(shí),我們也在使用相對于業(yè)界其他公司不同設計架構的一種方式來(lái)真正實(shí)現沒(méi)有局限性,既有高擴展性又有高可用性的解決方案。還有很多用戶(hù)在使用一種叫做數據路由的數據庫。一個(gè)典型的案例是美國的MySpace公司,是美國最大的個(gè)人空間服務(wù)提供商,它就使用了數據路由數據庫的技術(shù)來(lái)實(shí)現他對外用100個(gè)SQL Server的服務(wù)來(lái)集中對外提供服務(wù)。DID技術(shù)就能很好的平衡高可用性、擴展性這種綜合的要求。而且從微軟自身MSN.com網(wǎng)站也是使用同樣的DID技術(shù)來(lái)提供高可用性、高拓展性的要求。
【全面領(lǐng)會(huì ) ODBC技巧】相關(guān)文章:
全面了解ODBC技術(shù)03-18
Delphi 5 數據庫應用中ODBC數據源的自動(dòng)管理03-18
談新會(huì )計準則的領(lǐng)會(huì )與實(shí)施01-07
談企業(yè)全面預算管理03-18
舞劇創(chuàng )作需要全面反思03-18
全面審計風(fēng)險管理探究03-12
淺談企業(yè)全面預算治理03-22