十二、分布式數據庫
1.分布式數據庫的分類
分布式數據庫,是根據它的管理系統(tǒng)(Distributed DBMS-DDBMS)進行分類的。對DDBMS可以從四個不同角度來分類:
(1)從構成的方式,可分為同構型和異構型兩類所謂同構型,是指所有節(jié)點的局部DBMS都支持同一數據模式和數據語言。為使每個節(jié)點都掌握彼此的數據情況,需要增加網絡數據庫管理系統(tǒng)(NDBMS),各節(jié)點之間通過通信網絡形成統(tǒng)一的整體。同構型的DDBMS對于并發(fā)控制、冗余數據的一致性等問題容易處理,但建庫的代價比較大。所謂異構型系統(tǒng),是指在分布環(huán)境中各節(jié)點上的數據模型和數據語言都可能不同。異構比同構型系統(tǒng)實現起來要困難一些,為了在兩個節(jié)點上的局部DBMS之間進行信息交換,就要對數據模式和數據語言進行轉換和映射工作。
(2)按控制方式,可以分為集中式與分布式所謂集中控制的DDBM指所有事務都由一臺叫做中心計算機的節(jié)點進行管理。分布控制的DDBMS,是指每個節(jié)點都保持DDBMS的一個副本來監(jiān)督和管理各節(jié)點及系統(tǒng)事務,它將網絡目錄作為用戶數據庫存放于局部DB之中。
。3)從數據分布的角度,DDBMS又可分為分割式、部分重復式和完全重復式所謂分割式,是指每個節(jié)點只存儲DDB數據實體的部分子集,各節(jié)點的副本互不重疊。部分重復式,是指每個節(jié)點都存儲DDB數據實體的任意子集。完全重復式,是指每個節(jié)點都存儲整個DDB數據實體的副本。也有文獻把完全重復式稱為復制式。(4)從用戶的角度,DDBM可分為總體型和多重型。
2.分布式數據庫與單一數據庫的比較
(1)集中控制 在一個企業(yè)或單位范圍內的信息資源上,對信息提供集中式控制的可能性,被認為是采用數據庫技術的最大動力之一,因為集中式數據庫是根據信息系統(tǒng)的演變和集中處理信息的需求開發(fā)出來的。
。2)數據獨立性 數據獨立性也曾經被認為是采用數據庫方法的主要動力之一。實際上,數據獨立性意味著數據的實際結構對應用程序來講是透明的,應用程序員只需要利用數據邏輯結構,即所謂概念模式來編寫程序。數據獨立性的主要優(yōu)點是應用不受數據存儲的物理結構變化的影響。在分布式數據庫中,數據的獨立性具有與傳統(tǒng)的集中式數據同等的重要性,然而,一種嶄新概念加進了數據獨立性的一般概念之中,這就是分布式透明性。所謂分布式透明性,指的是在編寫程序時就好象數據沒有被分布一樣。這樣,無論把數據存儲到甲地或乙地,或者把數據從一個節(jié)點移到另一個節(jié)點,都不會影響程序執(zhí)行的正確性和有效性,但是,必須指出,執(zhí)行速度或者效率卻受到了影響。眾所周知,通過具有不同形式的數據描述和它們之間的映射的多層體系結構,曾為傳統(tǒng)的數據庫提供了獨立性,為此目的,開發(fā)出了概念模式、存儲模式和外部模式等概念。利用類似的方法,我們可以通過采用新層次和新模式,在分布式數據庫中可獲得分布式透明性。分布式透明性是分布式數據庫系統(tǒng)的主要目標之一。
。3)降低冗余 在傳統(tǒng)數據庫系統(tǒng)中,盡可能地降低冗余度是它的主要目標之一。這有兩個原因:首先,通過只用一個正本,可以自動地避免同一邏輯數據中幾個副本之間的不一致性。其次,用降低冗余度來節(jié)約存儲空間。通過共享數據的方式,即通過允許幾個應用訪問同一文件和記錄可以達到降低冗余度的目的。但是,在分布式數據庫中,把數據的冗余看成是所需要的特性。這有幾個原因:首先,如果在需要冗余的所有節(jié)點都復制數據,則可以增加應用的局部性。其次,可以增加分布式數據庫系統(tǒng)的有效性和可靠性。因為,如果復制數據,則一個節(jié)點上的故障不會停止其它節(jié)點上應用的執(zhí)行。在一般情況下,為傳統(tǒng)集中式環(huán)境所規(guī)定的克服冗余的原因,在分布式環(huán)境中仍是有效的。因此,在分布式數據庫中,對冗余度的評價要選擇一種折衷方案,不能一概而論。一般地說,復制數據項的方便程度是隨著應用所執(zhí)行的檢索訪問與更新訪問的比率提高而增加。數據復制便利程度的提高,是因為具有一個項目多個副本,檢索可以在任一副本上進行,而更新卻必須在所有副本上一致地進行。
(4)有效訪問 復雜的訪問結構,如輔助索引,文件間的鏈接等,都是傳統(tǒng)數據庫所采用的重要技術,對這些結構的支持是數據庫管理系統(tǒng)DBMS極為重要的組成部分。提供復雜訪問結構的原因,是為了提高存取數據的效率。
。5)完整性、恢復和并發(fā)控制 在數據庫理論中,盡管完整性、恢復和并發(fā)控制等所涉及的問題是不同的,但它們之間相互聯(lián)系還是很多的,一般來說,完整性、恢復和并發(fā)控制等問題的解決,在很大程度上取決于所提供的事務的結構形式。
。6)保密性和安全性 在傳統(tǒng)數據庫中,具有集中式控制的數據庫管理員能保證只執(zhí)行那些授權的數據訪問。但應當指出,集中式數據庫本身比過去處理單獨文件的舊方法更難于實現數據的保密性和安全性。在分布式數據庫中,局部數據庫管理員面臨的一些主要問題,與傳統(tǒng)數據庫管理員面臨的問題一樣。但是,分布式數據庫的兩個獨特方面值得一提:首先,在具有極高度節(jié)點自主權的分布式數據庫中,局部數據的擁有者認為比較安全,因為他們能自主地實施自己的安全措施,以履行集中式數據庫管理員的職責。其次,安全性問題,一般是分布式系統(tǒng)的固有問題,因分布式系統(tǒng)是通過通信網絡來實現分布式控制的,而通信網絡本身就在保護數據的安全性和保密性方面存在著弱點。通過網絡偷看、亂改別人的數據難以完全避免。
3.分布式數據庫管理系統(tǒng)(DDBMS)
在目前分析DDBMS的性能時,應該把商品化系統(tǒng)和先進的研究樣機區(qū)分開來,但是可以預料,某些先進的研究樣機中試驗的特性,可能會應用到將來的商品化系統(tǒng)中去的。本節(jié)簡要敘述分布式數據庫管理系統(tǒng)的基本性能,并就用什么樣的方法使得分布式數據庫這個新技術商品化的問題談一點看法。從目前看,世界上幾各已經商品化的分布式系統(tǒng)是由集中式數據庫管理系統(tǒng)的銷售廠商開發(fā)出來的。這些分布式數據庫管理系統(tǒng),包括擴充集中式DBMS時所附加的部件。分布式功能的擴充是通過裝配在計算機網絡中不同節(jié)點上的DBMS之間所提供的通信和合作來實現的。在這種情況下建立分布式數據庫通常所必須的軟件部分是:
。1)數據庫管理部分(DB);
(2)數據通信部分(DC);
。3)數據字典(DD),它能用來表示有關網絡中數據分布的信息;
。4)分布式數據庫部分(DDB)。
十三、分布式ORACLE系統(tǒng)簡介
1.分布式體系結構的ORACLE
1986年,ORACLE公司推出了它的分布式體系結構的ORACLE數據庫系統(tǒng)。該系統(tǒng)是由分布式數據庫管理系統(tǒng)(ORACLE RDBMS)、支持多種操作系統(tǒng)和通信協(xié)議的分布式處理環(huán)境軟件SQL*NET、以及與非ORACLE RDBMS聯(lián)接的軟件SQL*CONNECT這三部分組成的一個軟件群。分布式ORACLE采用了典型的開放式體系結構,對環(huán)境的適應范圍非常廣泛,可適應多種通信協(xié)議、多種操作系統(tǒng)、多種硬件環(huán)境及多種DBMS和數據源。
2.網絡ORACLE的連接過程
網絡ORACLE的連接過程大致包括以下幾步:
。1)確認網絡結點是否安裝了SQL*NET,如未安裝,則需執(zhí)行:*$SYS@ORACLE:NCONFIG.COM≠進行安裝,并且使用SGAPAD.COM重新鏈接。
。2)確認安裝中選取的網絡驅動器與操作系統(tǒng)環(huán)境下所配置的通信協(xié)議是否相符。
(3)待(1)、(2)兩項均確認后,則可在服務器(Server)結點上建立一個命令文件。這個命令文件主要完成以下工作:指定ORACLE系統(tǒng)標識碼SID,從而確定將哪一個ORACLE RDBMS作為服務器。這是因為同機上可運行多個ORACLE RDBMS,指定方式為:$ASSIGN〈SID標識碼〉ORACLE$SID指定ORACLE系統(tǒng)所在目錄:$ASSIGN〈目錄名〉SYS$ORACLE指定SQL*NET執(zhí)行代碼的邏輯名$ORASRV=SYS$ORACLE:ORASRV.EXE啟動SQL*NET的執(zhí)行代碼$ORASRV DECNET-NSP:
。4)待完成以后,用戶即可進行遠程訪問。(注意兩個結點上的ORACLE系統(tǒng)應處于開啟狀態(tài))
。5)為了加強網絡通信管理和避免沖突等原因,可以通過VAX/VMS網絡控制程序NCP建立一和于ORACLE網絡通信的缺省帳號。
3.網絡ORACLE的使用
除了以下實用程序以外,其它ORACLE實用程序和軟件工具均可以通過SQL*NET訪問遠程結點的ORACLE系統(tǒng)IOR AJI僅供本地使用。另外,用戶通過各種語言編寫的應用程序也可以進行遠程存取。用戶遠程存取的方式非常簡單,僅需要在“用戶名/口令”(ORACLE的合法用戶)后面附上結點信息。
4.分布式查詢
分布式查詢和數據傳輸,主要指用戶在前端機上執(zhí)行本地的進程通過SQL語句或SQLplus命令查詢或傳輸遠程結點上的數據。由于網絡ORACLE系統(tǒng)的分布式查詢功能很強,用戶可以同時查詢多個結點上的數據庫數據。傳輸數據功能用于兩個結點之間數據及定義的復制,下面將分別介紹。ORACLE系統(tǒng)分布式查詢的功能使得一個結點上的用戶可以通過SQL查詢語句訪問其它結點數據庫的數據。并且用戶還可以同時存取訪問多個結點(包括本地結點)的數據,從而使數據庫的查詢功能大大增強。
。1)數據庫鏈路(DATABASE LINK)為了使分布式查詢操作更加簡單方便,ORACLE RDBMS為用戶提供了一個新的數據定義方式:數據庫鏈路。用戶可以通過數據庫鏈路定義,在本地結點和遠程之間進行查詢和連接。進行遠程訪問的用戶需要明確:遠程數據庫所在的結點;遠程結點上的哪個數據庫;遠程數據庫的哪個用戶。數據庫鏈路即用于標識以上內容。用戶通過SQL的CREATE DATABASE LINK語句定義數據庫鏈路。其格式為:CREATE[PUBLIC]DATABASE LINK鏈路名CONNECT TO用戶名INENTIFIED BY口令USING‘驅動器前綴:結點名““操作系統(tǒng)用戶名口令”””::“““TASK=ORDN后綴.COM”””;如果用戶事先定義一個邏輯名:$ASSIGN結點名,“““操作系統(tǒng)用戶名口令”””::“““TASK=ORDN后綴.COM”””,邏輯名那么CREATE DATABASE LINK就變得十分簡潔:CREATE[PUBLIC]DATABASE LINK鏈路名CONNECT TO用戶名IDENTIFIED BY口令USING‘驅動器前綴:邏輯名’;這里PUBLIC代表公用數據庫鏈路,只有DBA才能使用PUBLIC限定詞。
。2)遠程查詢操作在數據庫鏈路定義以后,遠程查詢就變得非常簡單和方便。用戶訪問查詢數據庫的表或視圖時,只要在表名或視圖名后面附上數據庫鏈路名即可通過SELECT語句進行查詢。其形式為:SELECT列表達式[,列表達式,…] FROM表名@數據庫鏈路名[,表名@數據庫鏈路名,…] [WHERE邏輯表達式];
(3)定義同義名用戶可以用同義名來簡化一些繁瑣的表名或視圖名。對于遠程查詢操作,用戶也可以為遠程數據庫的表名或視圖名定義相應的同義名。
。4)連接操作在遠程查詢中,用戶可以連接相同(或不同)結點上數據庫中的表。連接(JOIN)操作可以針對以下情況:同一數據庫中的兩個表或多個表;同一結點不同數據庫中的兩個表或多個表;不同結點上數據庫中的兩個表或多個表;
。5)查詢遠程數據庫中其他用戶的數據用戶在通過數據庫鏈路進行遠程查詢時,可以訪問其他用戶的數據。數據庫鏈路的定義中指定一個遠程用戶名及口令,這個用戶名被稱為鏈路用戶名。上面所述的“其他用戶”即指非鏈路用戶。如果鏈路用戶具有訪問其他某一用戶,記為用戶A的權限,那么,Client用戶就可以通過數據庫鏈路查詢服務器用戶A中的數據。
。6)遠程子查詢前面介紹的是基于主查詢的遠程訪問。事實上,SQL語句中的子查詢(Sub-query)也可以訪問遠程結點的數據庫數據。這種子查詢稱為遠程子查詢?汕度氩樵兊恼Z句有:SELECT INSERT UPDATE CREATE TABLE CREATE VIEW
5.遠程數據傳輸
目前網絡ORACLE系統(tǒng)尚不能通過INSERT,UPDATE語句更新遠程結點的數據庫數據。但是ORACLE提供結點之間傳輸數據庫數據的能力。SQL/plus的COPY命令將用于實現這一功能。用戶使用COPY命令可以進行從一個結點(稱為源結點)到另一結點(稱為目標結點)之間的數據傳輸或復制。使用COPY命令與數據庫鏈路的定義類似,需要反映定結點名、數據庫(即命令文件和“用戶名/口令”。其中源描述和目標描述分別用于指示源結點目標結點上的結點名、數據庫(即命令文件)和“用戶名/口令”,下面是COPY命令的基本形式:COPY[FROM源名][TO目標名] {APPEND|CREATE|INSERT|REPLACE} 表名[(列名[,列名…])] USING SELECT語句其中源名和目標名分別用于指定源結點和目標結點上的結點名、數據庫和“用戶名/口令”,如:用戶名/口令@驅動器前綴:結點名“““用戶名口令”””::“““TASK=ORDN后綴.COM”””;如果事先分配了邏輯名,則源描述和目標描述會變得更簡潔一些。如果源結點為本地,則COPY命令可略去FROM子句。如果目標結點為本地,則可除去TO子句。COPY命令將傳送數據到目標數據庫指定表。具體傳輸的數據是子查詢的結果。其中APPEND、CREATE、INSERT和REPLACE限定詞用于指定傳輸的方式:APPEND 將傳輸的數據加在指定表中。如果該表不存在,則先建表,再加入;INSERT 將傳輸的數據加在指定的表中。如果該表不存在,則先建表,再加入數據;CREATE 建立指定的表,并加入數據,如果該表存在,則出錯;REPLACE 將傳輸數據替換原表中已有的數據。
希望與更多計算機等級考試的網友交流,請進入計算機等級考試論壇
更多信息請訪問:考試吧計算機等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |