分布式數(shù)據(jù)庫系統(tǒng)_第1頁
分布式數(shù)據(jù)庫系統(tǒng)_第2頁
分布式數(shù)據(jù)庫系統(tǒng)_第3頁
分布式數(shù)據(jù)庫系統(tǒng)_第4頁
分布式數(shù)據(jù)庫系統(tǒng)_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第十四章分布式數(shù)據(jù)庫系統(tǒng)

本章重要概念(1)分布計(jì)算的三種形式:

處理分布,數(shù)據(jù)分布,功能分布。(2)C/S系統(tǒng),工作模式,技術(shù)特征

體系結(jié)構(gòu):兩層、三層、多層C/S結(jié)構(gòu)。(3)DDBS的定義、特點(diǎn)、優(yōu)點(diǎn)、缺點(diǎn)和分類;

分布式數(shù)據(jù)存儲(chǔ)的兩種形式(分片和分配)。

(4)DDB的體系結(jié)構(gòu):六層模式,分布透明性的三個(gè)層次,DDBS的組成,DDBMS的功能和組成。(5)分布式查詢處理的查詢代價(jià),基于半聯(lián)接的優(yōu)化策略,基于聯(lián)接的優(yōu)化策略。(6)分布式數(shù)據(jù)庫的并發(fā)控制和恢復(fù)中出現(xiàn)的問題,以及處理機(jī)制。

本章重要概念引言

隨著傳統(tǒng)的數(shù)據(jù)庫技術(shù)日趨成熟、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展和應(yīng)用范圍的擴(kuò)充,數(shù)據(jù)庫應(yīng)用已經(jīng)普遍建立于計(jì)算機(jī)網(wǎng)絡(luò)之上。集中式數(shù)據(jù)庫系統(tǒng)表現(xiàn)出它的不足:

1、數(shù)據(jù)按實(shí)際需要已在網(wǎng)絡(luò)上分布存儲(chǔ),再采用集中式處理,勢必造成通信開銷大;

2、應(yīng)用程序集中在一臺(tái)計(jì)算機(jī)上運(yùn)行,一旦該計(jì)算機(jī)發(fā)生故障,則整個(gè)系統(tǒng)受到影響,可靠性不高;

3、集中式處理引起系統(tǒng)的規(guī)模和配置都不夠靈活,系統(tǒng)的可擴(kuò)充性差。在這種形勢下,集中式DB的“集中計(jì)算”概念向“分布計(jì)算”概念發(fā)展。分布計(jì)算主要體現(xiàn)在客戶機(jī)/服務(wù)器模式和分布式數(shù)據(jù)庫體系結(jié)構(gòu)兩個(gè)方面。本章將分別介紹這兩種技術(shù)。本章的重點(diǎn)(1)兩層、三層、多層C/S結(jié)構(gòu)。(2)分布式數(shù)據(jù)存儲(chǔ):分片和分配。(3)DDB的體系結(jié)構(gòu)。(4)基于半聯(lián)接查詢優(yōu)化

早期的DBS是主從式(主機(jī)/終端式)系統(tǒng),是一種集中式DB體系結(jié)構(gòu)。其主要特點(diǎn)是DBMS軟件、所有用戶的數(shù)據(jù)和應(yīng)用程序都存儲(chǔ)在一個(gè)中心計(jì)算機(jī)(稱之為主機(jī))上,通常是大型機(jī)。用戶僅能通過終端發(fā)出存取數(shù)據(jù)的請求,由通信線路傳輸給主機(jī),主機(jī)響應(yīng)并處理之后,再將處理結(jié)果通過通信線路返回給用戶終端。集中式DB的結(jié)構(gòu)圖用戶終端DB主機(jī)存取請求處理結(jié)果通信線路14.1集中計(jì)算與分布計(jì)算(一)14.1集中計(jì)算與分布計(jì)算(二)“分布計(jì)算”概念處理分布數(shù)據(jù)分布功能分布1“分布計(jì)算”概念1、處理分布

處理分布,數(shù)據(jù)集中。網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)上用戶的應(yīng)用程序向同一個(gè)DB存取數(shù)據(jù),然后在各自節(jié)點(diǎn)的計(jì)算機(jī)上進(jìn)行應(yīng)用的處理。它仍屬于集中式DB范疇,只是用戶計(jì)算機(jī)(相當(dāng)于智能終端)上具有應(yīng)用處理的能力,且增加了網(wǎng)絡(luò)接口,可在網(wǎng)絡(luò)下運(yùn)行。2、數(shù)據(jù)分布

數(shù)據(jù)分布在計(jì)算機(jī)網(wǎng)絡(luò)的不同節(jié)點(diǎn)上,而這些數(shù)據(jù)在邏輯上是一個(gè)整體,構(gòu)成一個(gè)邏輯數(shù)據(jù)庫。網(wǎng)絡(luò)中的每一個(gè)節(jié)點(diǎn)可以執(zhí)行局部應(yīng)用,即具有獨(dú)立處理本地?cái)?shù)據(jù)庫中數(shù)據(jù)的能力;也可以執(zhí)行全局應(yīng)用,可以存取和處理異地?cái)?shù)據(jù)庫中數(shù)據(jù)。這就是分布式數(shù)據(jù)庫的概念。(分布式數(shù)據(jù)庫技術(shù)是數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)技術(shù)有機(jī)結(jié)合)3、功能分布在分布式數(shù)據(jù)庫系統(tǒng)中,網(wǎng)絡(luò)上每個(gè)節(jié)點(diǎn)都是一個(gè)通用計(jì)算機(jī),既執(zhí)行分布式DBMS,又執(zhí)行應(yīng)用程序。隨著工作站功能的增強(qiáng)和廣泛使用,為了解決計(jì)算機(jī)的瓶頸問題,需要把DBMS功能和應(yīng)用處理功能分開。網(wǎng)絡(luò)中一些節(jié)點(diǎn)上的計(jì)算機(jī)專門用于執(zhí)行DBMS功能,稱為DB服務(wù)器(DBServer)。(例如:在服務(wù)器上安裝DB2或SQLSserver,用于完成事務(wù)處理和數(shù)據(jù)訪問的控制);而另一些節(jié)點(diǎn)上的計(jì)算機(jī)則專門處理用戶的應(yīng)用程序,稱為客戶機(jī)(Client)。通常在客戶機(jī)上安裝DBMS的應(yīng)用開發(fā)工具(如:PowerBuilder、VisualBasic、Delphi),實(shí)現(xiàn)用戶界面和前端處理。

C/S結(jié)構(gòu)的DBS又可分為單服務(wù)器結(jié)構(gòu)和多服務(wù)器結(jié)構(gòu)兩類。單服務(wù)器結(jié)構(gòu)是在網(wǎng)絡(luò)中僅有一臺(tái)DB服務(wù)器,而有多臺(tái)客戶機(jī)(本質(zhì)上仍然屬于集中式DBS);多服務(wù)器結(jié)構(gòu)是在網(wǎng)絡(luò)中可以有多臺(tái)DB服務(wù)器和多臺(tái)客戶機(jī),屬于分布式DBS范疇。用戶客戶機(jī)DB服務(wù)器數(shù)據(jù)請求處理結(jié)果通信線路14.2

客戶機(jī)/服務(wù)器計(jì)算模式2.1C/S結(jié)構(gòu)的工作模式

C/S結(jié)構(gòu)的基本原則是將計(jì)算機(jī)應(yīng)用任務(wù)分解成多個(gè)子任務(wù),由多臺(tái)計(jì)算機(jī)分工完成。即“功能分布”原則??蛻舳送瓿蓴?shù)據(jù)處理、數(shù)據(jù)表示、用戶接口等功能;服務(wù)器完成DBMS的核心功能。這種客戶請求服務(wù)、服務(wù)器提供服務(wù)的處理方式是一新型的計(jì)算機(jī)應(yīng)用模式。

C/S結(jié)構(gòu)的工作模式客戶機(jī)的任務(wù)服務(wù)器的任務(wù)管理用戶界面接受來自客戶機(jī)的數(shù)據(jù)庫請求接受用戶數(shù)據(jù)處理對數(shù)據(jù)庫的請求處理應(yīng)用邏輯格式化結(jié)果并傳給客戶機(jī)生成數(shù)據(jù)庫請求進(jìn)行完整性檢查向服務(wù)器發(fā)數(shù)據(jù)庫請求維護(hù)數(shù)據(jù)字典、索引從服務(wù)器接受結(jié)果處理數(shù)據(jù)恢復(fù)格式化結(jié)果優(yōu)化查詢/更新處理2.2C/S環(huán)境下應(yīng)用成分的分布一個(gè)典型的應(yīng)用程序可分解成四個(gè)組成成分。1、用戶界面的顯示邏輯:這是與用戶交互的應(yīng)用代碼。它完成屏幕格式化、屏幕信息讀寫、窗口管理、鍵盤及鼠標(biāo)管理等任務(wù)。最流行的形式是各種圖形用戶界面。2、應(yīng)用邏輯:這是根據(jù)輸入數(shù)據(jù)來完成業(yè)務(wù)處理和規(guī)則的應(yīng)用代碼。用3GL或4GL編寫。

3、事務(wù)邏輯:這是應(yīng)用程序中DML語句編寫的代碼,在RDBMS中一般是用SQL編寫。4、數(shù)據(jù)管理:應(yīng)用程序中由DBMS完成訪問實(shí)際DB的程序。雖不屬于應(yīng)用程序本身,但它是分布式處理的基本組成部分。14.3C/S系統(tǒng)的體系結(jié)構(gòu)3.1C/S系統(tǒng)的體系結(jié)構(gòu)文件打印機(jī)DB用戶客戶機(jī)用戶客戶機(jī)用戶客戶機(jī)文件服務(wù)器打印服務(wù)數(shù)據(jù)庫服務(wù)客戶機(jī)中間件服務(wù)器14.4C/S結(jié)構(gòu)的演變1.兩層C/S結(jié)構(gòu)客戶軟件和服務(wù)器軟件可以放在一臺(tái)計(jì)算機(jī)上,但多數(shù)情況下放在網(wǎng)絡(luò)中不同計(jì)算機(jī)上。客戶軟件一般在客戶端運(yùn)行,服務(wù)器軟件一般在服務(wù)器上運(yùn)行。客戶機(jī)1客戶機(jī)N服務(wù)器DB用戶用戶第一層第二層

2.三層C/S結(jié)構(gòu)由于兩層結(jié)構(gòu)中客戶機(jī)上都必須安裝應(yīng)用程序和工具(含公共程序),例如在每臺(tái)客戶機(jī)上都安裝PowerBuilder,使客戶端過于龐大、負(fù)載太重,從而影響效率。因此引入三層。三層結(jié)構(gòu)中,服務(wù)器端分為兩個(gè)部分:應(yīng)用服務(wù)器(包括從客戶端劃分出一部分應(yīng)用和從專用服務(wù)器中劃分出一部分工作)和DB服務(wù)器。三層結(jié)構(gòu)的思想是:①使客戶機(jī)變“瘦”,即進(jìn)一步變小,客戶端只安裝瀏覽器就可以訪問應(yīng)用程序②并不是使服務(wù)變“肥”,而是增加服務(wù)器的品種,容易組裝。三層結(jié)構(gòu)的功能層次如下:①

表示層:負(fù)責(zé)顯示和與用戶交互(由客戶機(jī)實(shí)現(xiàn))。②

功能層:實(shí)現(xiàn)應(yīng)用邏輯(由應(yīng)用服務(wù)器實(shí)現(xiàn))。③數(shù)據(jù)層:負(fù)責(zé)數(shù)據(jù)管理(由DB服務(wù)器實(shí)現(xiàn))。

客戶機(jī)1客戶機(jī)N應(yīng)用服務(wù)器DB用戶用戶第一層第二層DB服務(wù)第三層

Web上的數(shù)據(jù)庫應(yīng)用是典型的三層C/S結(jié)構(gòu)(稱為B/S)下圖所示的是WWW的三層C/S結(jié)構(gòu):

表示層:由WWW瀏覽器實(shí)現(xiàn)。功能層:由Web服務(wù)器實(shí)現(xiàn)。數(shù)據(jù)層:由DB服務(wù)器實(shí)現(xiàn)。

WWW瀏覽器WWW服務(wù)器DB用戶DB服務(wù)器3.多層C/S結(jié)構(gòu)WWW瀏覽器WWW服務(wù)器DB用戶DB服務(wù)器中間件DB服務(wù)器文件服務(wù)器事務(wù)服務(wù)器文檔服務(wù)器Web服務(wù)器電子郵件服務(wù)器其他應(yīng)用服務(wù)器4.網(wǎng)絡(luò)服務(wù)器的類型Internet數(shù)據(jù)庫服務(wù)器Web服務(wù)器客戶端瀏覽器JavaJavaScriptActiveXVBScriptHTML/DHTML文檔VRML文檔5.Web的工作過程步驟如下:(1)用戶啟動(dòng)客戶端瀏覽器,在瀏覽器中確定將要訪問頁面的URL地址。瀏覽器軟件使用HTTP協(xié)議,向該URL地址所指向的Web服務(wù)器發(fā)出請求。Web服務(wù)器根據(jù)瀏覽器送來的請求,把URL地址轉(zhuǎn)換成頁面所在服務(wù)器上的文件路徑名,找到相應(yīng)的文件。(3)如果URL指向HTML文檔,則Web服務(wù)器使用HTTP

協(xié)議把該文檔直接送給瀏覽器。在HTML文檔中可能包含有JavaScript和VBScript等腳本程序段,隨HTML文檔一起下載的還可能有JavaApplet和ActiveX等小程序。如果HTML文檔中嵌入了CGI和ASP程序,則由Web服務(wù)器運(yùn)行這些程序,把結(jié)果送到瀏覽器。(4)瀏覽器解釋HTML文檔,在客戶端屏幕上向用戶展示結(jié)果。

6.與C/S模式相比,B/S模式具有以下特點(diǎn)1、使用簡單。2、易于維護(hù)。3、兼容性好。4、易于擴(kuò)展。5、多級(jí)安全保障機(jī)制。6、信息共享度高。XML——(ExtensibleMarkuplanguage)可擴(kuò)展標(biāo)記語言HTML——(HypertextMarkuplanguage)超文本標(biāo)記語言7.數(shù)據(jù)庫訪問中間件盡管有了標(biāo)準(zhǔn)SQL,但是一個(gè)個(gè)特定的前端應(yīng)用程序仍然無法訪問不同DBMS中的數(shù)據(jù),這主要是由于以下兩個(gè)原因決定:(1)各個(gè)廠商的SQL版本不同。他們對標(biāo)準(zhǔn)SQL進(jìn)行了獨(dú)特的擴(kuò)充或解釋,導(dǎo)致不同的RDBMS提供的SQL互不兼容(例:SQLSERVER使用的是T—SQL,ORACLE使用的是PL/SQL)。(2)各個(gè)廠商的RDBMS在客戶端和服務(wù)器之間的通信協(xié)議不同。C/S結(jié)構(gòu)是數(shù)據(jù)庫系統(tǒng)最常用的結(jié)構(gòu),而標(biāo)

準(zhǔn)SQL僅僅只對語言方面進(jìn)行了規(guī)定,對于客戶端和服務(wù)器之間的通信沒有進(jìn)行規(guī)定。為了降低應(yīng)用程序與數(shù)據(jù)庫管理系統(tǒng)的耦合性,提供應(yīng)用系統(tǒng)的可移植性和可擴(kuò)展性,有必要建立一個(gè)公共的、網(wǎng)絡(luò)透明、與具體數(shù)據(jù)庫無關(guān)的應(yīng)用程序調(diào)用接口,這就形成了數(shù)據(jù)庫訪問中間件。一個(gè)數(shù)據(jù)庫訪問中間件的實(shí)現(xiàn)需要滿足三個(gè)透明性的要求:網(wǎng)絡(luò)透明性:能支持所有類型的網(wǎng)絡(luò)。服務(wù)器透明性:不管服務(wù)器上的DBMS是何種型號(hào)(SQLSERVE、ORACLE、SYBASE等),一個(gè)好的中間件應(yīng)能通過標(biāo)準(zhǔn)的SQL語言與不同的DBMS上的SQL語言連接起來。語言透明性:客戶機(jī)可用任何開發(fā)語言進(jìn)行發(fā)送請求和接受回答,被調(diào)用的功能應(yīng)該像語言那樣也是獨(dú)立的。另外,還需要保證開發(fā)語言的數(shù)據(jù)類型和服務(wù)器上數(shù)據(jù)庫使用的數(shù)據(jù)類型可以相互轉(zhuǎn)換。使用數(shù)據(jù)庫訪問中間件,用戶可以獲得多方面的好處:(1)它消除了數(shù)據(jù)庫平臺(tái)(軟、硬件)的差異,從而可以讓用戶將更多的精力集中在系統(tǒng)功能設(shè)計(jì)上,所得到的應(yīng)用軟件也易于移植和升級(jí)。(2)它能提供客戶機(jī)和服務(wù)器之間的多種功能,如:訪問優(yōu)化、分布式訪問管理等。(3)它具有安全性機(jī)制,保證數(shù)據(jù)在不可靠的網(wǎng)絡(luò)中安全的傳輸,防止企業(yè)信息在網(wǎng)絡(luò)傳輸過程中泄密。典型的數(shù)據(jù)庫訪問中間件有“開放數(shù)據(jù)庫互連”(ODBC)、“JAVA數(shù)據(jù)庫互連”(JDBC)。

(1)ODBCODBC技術(shù)為應(yīng)用程序提供了一套調(diào)用層接口函數(shù)庫和基于動(dòng)態(tài)鏈接庫的運(yùn)行支持環(huán)境。應(yīng)用程序調(diào)用標(biāo)準(zhǔn)的ODBC函數(shù)和SQL語句,通過可加載的驅(qū)動(dòng)程序?qū)⑦壿嫿Y(jié)構(gòu)映射到具體的DBMS系統(tǒng)。使用ODBCAPI幾乎可以將所有平臺(tái)上的關(guān)系數(shù)據(jù)庫連接起來。ODBC的體系結(jié)構(gòu)可以分為四層:ODBC數(shù)據(jù)庫應(yīng)用程序:主要處理業(yè)務(wù)邏輯,是ODBC的使用者。它調(diào)用ODBC函數(shù),遞交SQL語句給DBMS,從而實(shí)現(xiàn)與數(shù)據(jù)庫的交互,并對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行處理。

驅(qū)動(dòng)程序管理器:是一個(gè)名為ODBC.DLL的動(dòng)態(tài)鏈接庫。它為不同的數(shù)據(jù)庫驅(qū)動(dòng)程序提供統(tǒng)一的函數(shù)調(diào)用,并管理這些不同的驅(qū)動(dòng)程序,實(shí)現(xiàn)各種驅(qū)動(dòng)程序的正確調(diào)度。數(shù)據(jù)庫驅(qū)動(dòng)程序:是一個(gè)動(dòng)態(tài)鏈接庫,由各個(gè)數(shù)據(jù)庫廠商提供。它提供對具體數(shù)據(jù)庫操作的接口,因此它是應(yīng)用程序?qū)Ω鞣N數(shù)據(jù)源發(fā)出操作的實(shí)際執(zhí)行者。ODBC規(guī)范定義了兩種類型的DB驅(qū)動(dòng)程序——單層驅(qū)動(dòng)程序和多層驅(qū)動(dòng)程序。數(shù)據(jù)源(DSN):是驅(qū)動(dòng)程序與數(shù)據(jù)庫系統(tǒng)連接的橋梁,數(shù)據(jù)源不是數(shù)據(jù)庫系統(tǒng),而是用于表達(dá)一個(gè)ODBC驅(qū)動(dòng)程序和DBMS特殊連接的命名。在連接中,用數(shù)據(jù)源名來代表用戶名、服務(wù)器名和所連接的數(shù)據(jù)庫名等。

數(shù)據(jù)源可以分為三類:第一類是用戶數(shù)據(jù)源,只有創(chuàng)建者才能使用,并且只能在所定義的機(jī)器上運(yùn)行。任何用戶都不能使用其它用戶創(chuàng)建的用戶數(shù)據(jù)源。第二類是系統(tǒng)數(shù)據(jù)源,所有用戶和在WINNT下以服務(wù)方式運(yùn)行的應(yīng)用程序均可使用客觀存在。第三類是文件數(shù)據(jù)源,是ODBC3.0以上版本增加的一種數(shù)據(jù)源,將用戶定義數(shù)據(jù)源信息保存到一個(gè)文件中,并可被不同機(jī)器上安裝了相同驅(qū)動(dòng)程序的用戶共享??捎糜谄髽I(yè)用戶。

客戶應(yīng)用程序SQLServer驅(qū)動(dòng)程序Oracle數(shù)據(jù)源SQLServer數(shù)據(jù)源其他數(shù)據(jù)源驅(qū)動(dòng)程序管理器其他ODBC驅(qū)動(dòng)程序Oracle驅(qū)動(dòng)程序(2)JDBCJDBC是執(zhí)行SQL語句的JAVAAPI,它由一組用JAVA語言編寫的類和接口組成。它已成為一種供數(shù)據(jù)庫開發(fā)者使用的標(biāo)準(zhǔn)API,用戶可以使用純JAVAAPI來編寫數(shù)據(jù)庫應(yīng)用,大大擴(kuò)展了JAVA的應(yīng)用范圍。目前,JDBC已經(jīng)得到除微軟之外的幾乎所有廠商的支持。

JDBC接口分為兩個(gè)層次。一個(gè)是應(yīng)用程序?qū)拥腏AVAAPI,供數(shù)據(jù)庫應(yīng)用程序開發(fā)人員使用;另一個(gè)是驅(qū)動(dòng)程序?qū)拥腏DBCDriverAPI,由驅(qū)動(dòng)廠家實(shí)現(xiàn),并被驅(qū)動(dòng)程序管理器調(diào)用。

(3)OLEDB數(shù)據(jù)訪問接口

通常,數(shù)據(jù)庫管理系統(tǒng)都支持兩種數(shù)據(jù)訪問接口,一種是專用接口,一種是通用接口。專用接口是與特定的DBMS有關(guān)的,不同的DBMS提供的專用接口不同。而通用接口是很多DBMS都可以使用的,目前最流行的通用數(shù)據(jù)訪問接口是ODBC和OLEDB,現(xiàn)在很多DBMS都支持這兩種通用接口。

目前,人們采用的信息管理系統(tǒng)多種多樣,有文件系統(tǒng)、數(shù)據(jù)庫系統(tǒng)等,數(shù)據(jù)格式也各不相同,有文本格式、電子表格格式及在Internet上使用的電子郵件格式和HTML格式等。即使是在數(shù)據(jù)庫中,不同廠家的DBMS對數(shù)據(jù)的管理方式也不相同。而不同的管理系統(tǒng)中的數(shù)據(jù)有不同的訪問方法。這就意味著如果要同時(shí)訪問這些管理系統(tǒng)中的數(shù)據(jù)就必須使用多種數(shù)據(jù)訪問方法,應(yīng)用程序開發(fā)者也必須是多種數(shù)據(jù)訪問方法的專家,這顯然是不現(xiàn)實(shí)的。

為此,Microsoft提出了一致的數(shù)據(jù)訪問(UniversalDataAccess)策略,此策略可以在不同應(yīng)用程序(從C/S到Web)中保證開放和集成,并為訪問所有類型的數(shù)據(jù)(關(guān)系和非關(guān)系的,甚至是非結(jié)構(gòu)的)提供基于標(biāo)準(zhǔn)的方法。一致的數(shù)據(jù)訪問策略基于OLEDB(ObjectLinkedandEmbedDataBase),對象鏈接與嵌入式數(shù)據(jù)庫)來訪問所有類型的數(shù)據(jù),并通過ADO(ActiveXDataObject,ActiveX數(shù)據(jù)對象)來提供應(yīng)用程序開發(fā)者使用的編程模型。

ADO和OLEDB實(shí)際是同一種技術(shù)的兩種表現(xiàn)形式。OLEDB提供的是通過COM(ComponentObjectModel,組件對象模型)接口,而ADO提供的是一個(gè)對象模型,它簡化了應(yīng)用程序中使用OLEDB獲取數(shù)據(jù)的過程。ADO對象模型中包含了三個(gè)一般用途的對象:Connection、Commamd和Recordset。開發(fā)人員可以創(chuàng)建這三個(gè)對象并使用這些對象訪問數(shù)據(jù)庫。這些對象的描述如下:

ConnectionErrorsCommandParameterPropertyRecordsetFieldPropertyPropertyPropertyADO對象模型Connection對象:包含了與數(shù)據(jù)源連接的信息。Commamd對象:包含了與一個(gè)命令相關(guān)的信息。例,查詢字符串、參數(shù)定義等。Recordset對象:包含了從數(shù)據(jù)源得到的記錄集。Field對象:包含了記錄集中的某個(gè)記錄的字段信息。Property對象:ADO對象的屬性。Parameter對象:與Commamd對象相關(guān)的參數(shù)。Error對象:包含了由數(shù)據(jù)源產(chǎn)生的Error集合中的擴(kuò)展的錯(cuò)誤信息。

14.4分布式數(shù)據(jù)庫系統(tǒng)概述 隨著傳統(tǒng)的數(shù)據(jù)庫技術(shù)日趨成熟、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展和應(yīng)用范圍的擴(kuò)大,以分布式為主要特征的數(shù)據(jù)庫系統(tǒng)的研究與開發(fā)受到人們的注意。分布式數(shù)據(jù)庫是數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)技術(shù)相結(jié)合的產(chǎn)物,在數(shù)據(jù)庫領(lǐng)域已形成一個(gè)分支。分布式數(shù)據(jù)庫的研究始于20世紀(jì)70年代中期。世界上第一個(gè)分布式數(shù)據(jù)庫系統(tǒng)SDD-1是由美國計(jì)算機(jī)公司(CCA)于1979年在DEC計(jì)算機(jī)上實(shí)現(xiàn)。20世紀(jì)90年代以來,分布式數(shù)據(jù)庫系統(tǒng)進(jìn)入商品化應(yīng)用階段,傳統(tǒng)的關(guān)系數(shù)據(jù)庫產(chǎn)品均發(fā)展成以計(jì)算機(jī)網(wǎng)絡(luò)及多任務(wù)操作系統(tǒng)為核心的分布式數(shù)據(jù)庫產(chǎn)品,同時(shí)分布式數(shù)據(jù)庫逐步向客戶機(jī)/服務(wù)器模式發(fā)展。14.4.2DDBS的定義分布式系統(tǒng)是用通信網(wǎng)絡(luò)連接起來的結(jié)點(diǎn)(亦稱為“場地”)的集合,每個(gè)結(jié)點(diǎn)都是擁有集中式數(shù)據(jù)庫的計(jì)算機(jī)系統(tǒng)。定義14.1DDBS是物理上分散邏輯上集中的數(shù)據(jù)庫系統(tǒng),系統(tǒng)中的數(shù)據(jù)分布存放在計(jì)算機(jī)網(wǎng)絡(luò)的不同場地的計(jì)算機(jī)中,每一場地都有自治處理(即獨(dú)立處理)能力并能完成局部應(yīng)用,而每一場地也參與(至少一種)全局應(yīng)用,程序通過網(wǎng)絡(luò)通信子系統(tǒng)執(zhí)行全局應(yīng)用。定義14.2DDB是計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中各場地上數(shù)據(jù)庫的邏輯集合。定義14.3DDBMS是DDBS中的一組軟件,它負(fù)責(zé)管理分布環(huán)境下邏輯集成數(shù)據(jù)的存取、一致性和完備性。

14.4.3DDBS的特點(diǎn)和優(yōu)缺點(diǎn)(一)DDBS的基本特點(diǎn)物理分布性:數(shù)據(jù)不是存儲(chǔ)在一個(gè)場地上,而是存儲(chǔ)在計(jì)算機(jī)網(wǎng)絡(luò)的多個(gè)場地上。邏輯整體性:數(shù)據(jù)物理分布在各個(gè)場地,但邏輯上是一個(gè)整體,它們被所有用戶(全局用戶)共享,并由一個(gè)DDBMS統(tǒng)一管理。場地自治性:各場地上的數(shù)據(jù)由本地的DBMS管理,具有自治處理能力,完成本場地的應(yīng)用(局部應(yīng)用)。場地之間協(xié)作性:各場地雖然具有高度的自治性,但是又相互協(xié)作構(gòu)成一個(gè)整體。14.4.3DDBS的特點(diǎn)和優(yōu)缺點(diǎn)(二)DDBS的其他特點(diǎn)數(shù)據(jù)獨(dú)立性集中與自治相結(jié)合的控制機(jī)制適當(dāng)增加數(shù)據(jù)冗余度事務(wù)管理的分布性14.4.3DDBS的特點(diǎn)和優(yōu)缺點(diǎn)(三)DDBS的優(yōu)點(diǎn)具有靈活的體系結(jié)構(gòu)適應(yīng)分布式的管理和控制機(jī)構(gòu)經(jīng)濟(jì)性能優(yōu)越系統(tǒng)的可靠性高、可用性好局部應(yīng)用的響應(yīng)速度快可擴(kuò)展性好,易于集成現(xiàn)有的系統(tǒng)14.4.3DDBS的特點(diǎn)和優(yōu)缺點(diǎn)(四)DDBS的缺點(diǎn)

系統(tǒng)開銷較大,主要花在通信部分。復(fù)雜的存取結(jié)構(gòu)(如輔助索引、文件的鏈接技術(shù)),在集中式DBS中是有效存取數(shù)據(jù)的重要技術(shù),但在分布式系統(tǒng)中不一定有效。數(shù)據(jù)的安全性和保密性較難處理。14.4.4DDBS的分類同構(gòu)同質(zhì)型DDBS:各個(gè)場地都采用同一類型的數(shù)據(jù)模型(譬如都是關(guān)系型),并且是同一型號(hào)的DBMS。同構(gòu)異質(zhì)型DDBS:各個(gè)場地采用同一類型的數(shù)據(jù)模型,但是DBMS的型號(hào)不同,譬如DB2、ORACLE、SYBASE、SQLServer等。異構(gòu)型DDBS:各個(gè)場地的數(shù)據(jù)模型的型號(hào)不同,甚至類型也不同。隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,異種機(jī)聯(lián)網(wǎng)問題已經(jīng)得到較好的解決,此時(shí)依靠異構(gòu)型DDBS就能存取全網(wǎng)中各種異構(gòu)局部庫中的數(shù)據(jù)。14.4.1數(shù)據(jù)分片(一)水平分片:按一定的條件把全局關(guān)系的所有元組劃分成若干不相交的子集,每個(gè)子集為關(guān)系的一個(gè)片段。垂直分片:把一個(gè)全局關(guān)系的屬性集分成若干子集,并在這些子集上作投影運(yùn)算,每個(gè)投影稱為垂直分片。導(dǎo)出分片:又稱為導(dǎo)出水平分片,即水平分片的條件不是本關(guān)系屬性的條件,而是其他關(guān)系屬性的條件?;旌戏制阂陨先N方法的混合??梢韵人椒制俅怪狈制蛳却怪狈制偎椒制?,或其他形式,但他們的結(jié)果是不相同的。14.4.1數(shù)據(jù)分片(二)完備性條件:必須把全局關(guān)系的所有數(shù)據(jù)映射到片段中,決不允許有屬于全局關(guān)系的數(shù)據(jù)卻不屬于它的任何一個(gè)片段??芍貥?gòu)條件:必須保證能夠由同一個(gè)全局關(guān)系的各個(gè)片段來重建該全局關(guān)系。對于水平分片可用并操作重構(gòu)全局關(guān)系;對于垂直分片可用聯(lián)接操作重構(gòu)全局關(guān)系。不相交條件:要求一個(gè)全局關(guān)系被分割后所得的各個(gè)數(shù)據(jù)片段互不重疊(對垂直分片的主鍵除外)。14.4.2數(shù)據(jù)分配集中式:所有數(shù)據(jù)片段都安排在同一個(gè)場地上。分割式:所有數(shù)據(jù)只有一份,它被分割成若干邏輯片段,每個(gè)邏輯片段被指派在一個(gè)特定的場地上。全復(fù)制式:數(shù)據(jù)在每個(gè)場地重復(fù)存儲(chǔ)。也就是每個(gè)場地上都有一個(gè)完整的數(shù)據(jù)副本?;旌鲜剑哼@是一種介乎于分割式和全復(fù)制式之間的分配方式。14.5分布式數(shù)據(jù)庫的體系結(jié)構(gòu)14.5.1體系結(jié)構(gòu)(一)全局外模式全局概念模式分片模式分配模式局部概念模式局部內(nèi)部式14.5.1體系結(jié)構(gòu)(二)14.5.1體系結(jié)構(gòu)(三)數(shù)據(jù)分片和數(shù)據(jù)分配概念的分離,形成了“數(shù)據(jù)分布獨(dú)立型”概念。數(shù)據(jù)冗余的顯式控制。數(shù)據(jù)在各個(gè)場地的分配情況在分配模式中一目了然,便于系統(tǒng)管理。局部DBMS的獨(dú)立性。這個(gè)特征也稱為“局部映射透明性”。此特征允許我們在不考慮局部DBMS專用數(shù)據(jù)模型的情況下,研究DDB管理的有關(guān)問題。14.5.2分布透明性(一)14.5.2分布透明性(二)分片透明性位置透明性局部數(shù)據(jù)模型透明性14.5.3分布式數(shù)據(jù)庫管理系統(tǒng)(一)DDBS的組成框架

14.5.3分布式數(shù)據(jù)庫管理系統(tǒng)(二)接受用戶請求,并判定把它送到哪里,或必須訪問哪些計(jì)算機(jī)才能滿足該要求。訪問網(wǎng)絡(luò)數(shù)據(jù)字典,了解如何請求和使用其中的信息。如果目標(biāo)數(shù)據(jù)存儲(chǔ)于系統(tǒng)的多個(gè)計(jì)算機(jī)上,就必須進(jìn)行分布式處理。通信接口功能。在用戶、局部DBMS和其他計(jì)算機(jī)的DBMS之間進(jìn)行協(xié)調(diào)。在一個(gè)異構(gòu)型分布式處理環(huán)境中,還需提供數(shù)據(jù)和進(jìn)程移植的支持。這里的異構(gòu)型是指各個(gè)場地的硬件、軟件之間存在著差別。14.5.3分布式數(shù)據(jù)庫管理系統(tǒng)(三)14.6.3基于半聯(lián)接的優(yōu)化策略(一)數(shù)據(jù)在網(wǎng)絡(luò)中傳輸時(shí),都是以整個(gè)關(guān)系(也可以是片段)傳輸,顯然這是一種冗余的方法。在一個(gè)關(guān)系傳輸?shù)搅硪粓龅睾?,并非每個(gè)數(shù)據(jù)都參與聯(lián)接操作或都有用。因此,不參與聯(lián)接的數(shù)據(jù)或無用的數(shù)據(jù)不必在網(wǎng)絡(luò)中來回傳輸。這個(gè)思想引出了基于半聯(lián)接的優(yōu)化策略。這個(gè)方法的基本原理是采用半聯(lián)接操作,在網(wǎng)絡(luò)中只傳輸參與聯(lián)接的數(shù)據(jù)。14.6.3基于半聯(lián)接的優(yōu)化策略(二) 假設(shè)關(guān)系R在場地1,關(guān)系S在場地2,在場地2需要獲得R?S的結(jié)果。如果在場地2直接計(jì)算R?S的值,那么需要先把關(guān)系R從場地1傳輸?shù)綀龅?執(zhí)行。顯然,傳輸R的數(shù)據(jù)量較大。 可以采用半聯(lián)接方法計(jì)算聯(lián)接操作的值。設(shè)R和S的公共屬性為BR?S=(R?πB(S))?S=(R?S)?S。等式右邊的式子稱為“半聯(lián)接程序”。舉例:P36314.6.4基于直接聯(lián)接的優(yōu)化方法(一)兩個(gè)關(guān)系在同一場地嵌套循環(huán)法:順序掃描外層關(guān)系R,對R的每一個(gè)元組掃描內(nèi)層關(guān)系S,查找在聯(lián)接屬性上一致的元組,把匹配的元組組合起來使之成為聯(lián)接結(jié)果的一部分。這種方法要求掃描一次關(guān)系R和掃描card(R)次關(guān)系S(可見S的元組越少越好),以查找匹配的元組。排序掃描法:先把兩個(gè)關(guān)系按聯(lián)接屬性進(jìn)行排序,然后按照聯(lián)接屬性值的順序掃描這兩個(gè)關(guān)系,使匹配的元組成為聯(lián)接結(jié)果的一部分。這種方法對兩個(gè)關(guān)系都只掃描了一次。但增加了排序代價(jià)。14.6.4基于聯(lián)接的優(yōu)化方法(二)兩個(gè)關(guān)系在不同場地整體傳輸:若有聯(lián)接操作R?S,R為外層關(guān)系,S為內(nèi)層關(guān)系。如果傳送的是內(nèi)層關(guān)系S,則在目的地必須把它存入一個(gè)臨時(shí)關(guān)系中(因?yàn)镾將被多次掃描,但傳輸量少)。如果傳送的是外層關(guān)系R,則內(nèi)層關(guān)系S可直接使用依次到來的R元組,而無需保存R(但傳輸量大)。按需傳輸:只傳輸所需聯(lián)接的元組,一次一個(gè)元組,無需臨時(shí)存儲(chǔ)器。因?yàn)槊看翁崛《家蠼粨Q一次信息,所以傳輸代價(jià)較高,只有在高速局部網(wǎng)絡(luò)中才是合理的。14.7分布式事務(wù)管理

數(shù)據(jù)項(xiàng)的多拷貝問題:由于DDB存在著冗余,有可能一個(gè)數(shù)據(jù)存儲(chǔ)在多個(gè)場地,因此并發(fā)控制方法和恢復(fù)方法都應(yīng)保證這些拷貝間的一致性。單個(gè)場地的故障:當(dāng)系統(tǒng)中一個(gè)或多個(gè)場地發(fā)生故障時(shí),DDBMS應(yīng)當(dāng)繼續(xù)和其他正在運(yùn)行的場地一起工作。當(dāng)一個(gè)場地得到恢復(fù)時(shí),它的局部數(shù)據(jù)庫必須在它與系統(tǒng)重連接之前保持和其他場地同步。通訊網(wǎng)絡(luò)的故障:系統(tǒng)必須有能力處理一個(gè)或多個(gè)連接場地的通訊故障。這個(gè)問題的極端情況是發(fā)生網(wǎng)絡(luò)分割,即將網(wǎng)絡(luò)分割成若干分區(qū),每個(gè)分區(qū)內(nèi)的場地可以相互通訊,而不同分區(qū)內(nèi)的場地不能通訊。④分布式事務(wù)恢復(fù):如果某些場地在提交過程中發(fā)生故障時(shí),提交用于訪問存儲(chǔ)在多個(gè)場地?cái)?shù)據(jù)庫的事務(wù)時(shí)也會(huì)產(chǎn)生問題。兩階段提交協(xié)議(2PC)⑥并發(fā)控制:采用封鎖技術(shù)。例:ROWA協(xié)議。⑤分布式死鎖:死鎖可能會(huì)在若干場地中發(fā)生,處理死鎖的技術(shù)必須要擴(kuò)充以考慮這種情況。

14.7分布式事務(wù)管理

小結(jié)(一)“分布計(jì)算”概念突破了集中式DBS的框架,數(shù)據(jù)分布使系統(tǒng)走上分布式DB的道路,功能分布使系統(tǒng)走上C/S道路。這是DBS的兩個(gè)發(fā)展。C/S系統(tǒng)包括一個(gè)計(jì)算機(jī)網(wǎng)絡(luò),通常用一個(gè)局域網(wǎng)連結(jié)。幾乎在所有情況下,客戶機(jī)都是微機(jī);服務(wù)器有時(shí)用小型機(jī)或大型機(jī),但多數(shù)情況下也使用微機(jī)或高檔微機(jī)。應(yīng)用程序在客戶機(jī)上處理,DBMS和OS的數(shù)據(jù)管理分放在服務(wù)器上。小結(jié)(二)C/S結(jié)構(gòu)經(jīng)歷了從兩層、三層到多層的演變過程??偟内厔菔鞘箍蛻魴C(jī)越來越“瘦”,變成瀏覽器;而服務(wù)器的種類越來越多,容易實(shí)現(xiàn)系統(tǒng)的組裝。C/S系統(tǒng)使應(yīng)用與用戶更加貼近,為用戶提供較好的性能和更復(fù)雜的界面。分布式系統(tǒng)是在集中式系統(tǒng)的基礎(chǔ)上發(fā)展而來的。DDB是數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)技術(shù)結(jié)合的產(chǎn)物。隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,DDBS日

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論