分散式資料庫管理系統實踐

分散式資料庫管理系統實踐

《分散式資料庫管理系統實踐》是2013年清華大學出版社出版的圖書,作者是Saeed K. Rahimi、Frank S. Haug。

基本介紹

  • 書名:分散式資料庫管理系統實踐
  • 作者:Saeed K. Rahimi、Frank S. Haug
  • 譯者:邱海艷、徐曉蕾、李翔鷹 等
  • ISBN:9787302336549
  • 定價:79元
  • 出版社:清華大學出版社
  • 出版時間:2013-12-23
  • 裝幀:平裝
圖書簡介,前言,內容簡介,目錄,

圖書簡介

分散式資料庫系統是在集中式資料庫系統的基礎上發展起來的,是資料庫技術和網路技術結合的產物。分散式資料庫由一個統一的資料庫管理系統,即分散式資料庫管理系統。管理分散式資料庫作為計算機專業及相關專業的核心課程,在國內外已經出版了大量有關的教科書,Saeed和Frank編寫的這本書,清晰地闡述了分散式資料庫的基本理論和設計問題,涵蓋了分散式資料庫系統的設計、實現和管理等方面的諸多專題,內容充實、結構合理、表現形式多樣,運用了豐富的講授方法(如圖表說明、程式示例等)。全書的理論體系完整,結構編排有序,其最大特點是理論和實踐的完美結合,通過優秀的示例引入最新的分散式資料庫技術,深入淺出地引領讀者從理論到建模再到體系結構的實現,實用性很強,是高等院校計算機及相關專業本科生或研究生資料庫系統課程的理想教材,對相關技術人員也是非常有價值的一本參考書,讀者必將從中獲益匪淺。

前言

譯 者 序
分散式資料庫系統是在集中式資料庫系統的基礎上發展起來的,是資料庫技術和網路技術結合的產物。分散式資料庫由一個統一的資料庫管理系統,即分散式資料庫管理系統。管理分散式資料庫作為計算機專業及相關專業的核心課程,在國內外已經出版了大量有關的教科書,Saeed和Frank編寫的這本書,清晰地闡述了分散式資料庫的基本理論和設計問題,涵蓋了分散式資料庫系統的設計、實現和管理等方面的諸多專題,內容充實、結構合理、表現形式多樣,運用了豐富的講授方法(如圖表說明、程式示例等)。全書的理論體系完整,結構編排有序,其最大特點是理論和實踐的完美結合,通過優秀的示例引入最新的分散式資料庫技術,深入淺出地引領讀者從理論到建模再到體系結構的實現,實用性很強,是高等院校計算機及相關專業本科生或研究生資料庫系統課程的理想教材,對相關技術人員也是非常有價值的一本參考書,讀者必將從中獲益匪淺。
本書共分為3部分。第1部分(第1~9章)著重討論分散式資料庫理論。這些章節面向分散式資料庫系統的多個側面展開討論,介紹可用於解決這些問題的多種技術和方法。第2部分(第10~14章)關注於分散式資料庫的“實踐的狀態”。這一部分前面的章節概述一個常規的數據建模方法,並討論了幾個其他的數據建模方法。後面的章節關注於體系結構需求,並提出了幾個不同的體系結構,包括傳統的、自上而下設計的同構分散式資料庫和自底向上設計的異構聯邦式資料庫,以及兩個新的、非傳統的體系結構方法,這兩個新的方法注重具有更多動態部署特性的環境。第3部分(第15~19章)關注於分散式資料庫的實現
在翻譯的過程中,我們感到,作者在全書內容的組織上可謂用心良苦,3部分19章的內容相對獨立,又融會貫通,從理論到實踐,使讀者可以根據自身情況和不同需求,自由選取3部分的章節來學習,也能很好地服務於各種課程設定的需要。
前 言
集中式資料庫管理系統(Database Management System,DBMS)是複雜的軟體程式,它允許企業在單機上控制數據。在過去的數十年中,由於一些組織機構擁有多個DBMS,從而產生了很多合併和組合。這些系統來自不同的廠商。例如,通常會有這樣的情況,企業有一個主體資料庫,是由IBM DB2控制的,還有幾個較小的工作組(或部門)資料庫,是由Oracle、Microsoft SQL Server、Sybase或其他廠商控制的。大多數時間用戶需要訪問各自的工作組資料庫。有時用戶還需要訪問某些其他工作組資料庫,甚或是更大的、企業級資料庫中的數據。這種數據共享的需求交叉分散於企業之中,而集中式資料庫是不能滿足這種需求的。為了滿足這種需求,需要一種新的軟體來管理分散的(或分散式的)數據,稱這種軟體為分散式資料庫管理系統(Distributed Database Management System,DDBMS)。
DDBMS維護和管理多個計算機上的數據。可以將DDBMS看作多個單獨的DBMS的集合,每個DBMS運行在單獨的計算機上,為了共享訪問企業數據,可以利用某種通信工具來協同它們的行為。數據分散於不同的計算機中,且由不同的DBMS產品來控制,這個事實對於用戶來說是完全隱藏的。這種系統的用戶對數據的訪問和使用,就好像數據是本地可用的,且由單一的DBMS控制。
本書主要討論DDBMS的設計和開發的問題,並概述解決上述問題的不同方法。我們還會給出兩個基於Java的框架和一個微軟的基於.Net的框架,它們提供了開發DDBMS所需的底層結構。

內容簡介

本書劃分為3個不同的部分。第1部分著重討論分散式資料庫理論。這些章節面向分散式資料庫系統的多個側面展開研究,討論了可用於解決這些問題的多種技術和方法。第2部分(第10~14章)關注於分散式資料庫的“實際狀態”。這一部分最初的章節概述了一個常規的數據建模方法,並討論了其他幾個數據建模方法。後面的章節關注於體系結構需求,並提出了幾個體系結構,包括傳統的、自上而下設計的同構分散式資料庫、自底向上設計的異構聯邦式資料庫,以及兩個新的、非傳統體系結構的方法,這兩個方法注重具有更多動態部署特性的環境。第3部分(第15~19章)關注於分散式資料庫的實現。這一部分的章節試驗了可用於分散式資料庫開發的3種平台。還討論了3個入門工具包,以及創建它們的平台。
第1部分:理論
為了設計並最終創建DDBMS,首先必須了解何為分散式資料庫,DDBMS的作用是什麼,這些問題必須得到解決。這一部分首先對DDBMS及其所需的功能進行概述。然後詳細研究每個主要子集。通過研究“大圖片”和“小細節”,這一部分為理解DDBMS的內部處理打下理論基礎。
第2部分:實踐
由於大多數實踐者都是從零開始,可能不會有設計分散式資料庫環境(DDBE)的豐富經驗,因此這一部分研究了可選的體系結構方法(和論題),它們是實踐者在現實中很有可能會遇到的。首先,回顧了概念、邏輯和物理模型之間的不同。接著,將關注點放在幾個邏輯數據建模方法(以及一些實際的物理考慮因素)上,這些方法是當今現實世界中“實際上”使用的。為了描述“實踐的狀態”,這一部分探索了4個(兩個傳統的、兩個可選的)DDBE體系結構,它們是設計用於現有DBMS實現環境的。接著,對於能實現DDBE可選體系結構的平台,研究了其一般需求。
第3部分:實現
由於體系結構是龐大的、複雜的設計,當試圖創建實際的體系結構實現時,即使對“微小細節”的討論,也好像“英里之上的地面”較之於“地面之下”一樣,需要考慮的方面是不同的。軟體開發上的最新進展使得實現複雜的、分散式的套用變得更容易。實際上,在平台、開發和部署細節的選擇上,有很多可選的方案。這些可選方案都有很多支持分散式套用開發和部署的工具。對於實踐者,為了精通任何特殊的可選方案,他們需要在時間、精力,甚至是金錢上花費巨大投資。因此,在現實世界中,雖然有很多可選方案,但是仍然會迫於強大壓力而使用特定的一般方法,甚至是特定的專用方法。話雖如此,我們必須認識到,在DDBE的實現上沒有可選的、特定的目標。這一部分試圖減輕混淆,並提供一個具體的場所以開發實際的DDBE。本部分還詳細研究了3種可選的實現,對這3種實現中的每一個都提供了詳細的概覽和可擴展的框架,稱為入門者工具包(SKIT)。我們對每個SKIT均進行了詳細討論。並給出了一個擴展的例子來示範SKIT如何可用於開始實現一個實際的DDBE項目。
本書的章節
本書由19章節組成。
第1章:概述
適合實現資料庫管理系統(DBMS)體系結構的基本類型有兩種。最著名的也是最普遍的體系結構類型是稱為集中式DBMS的體系結構。它的定義非常合理和成熟,它是如此常見,以至於在使用術語“DBMS體系結構”時,往往忽略名字中的“集中式”部分,而默認為集中式DBMS體系結構。另一種體系結構類型是不常見的,不成熟的,其定義也是不完善的,稱為分散式DBMS(DDBMS)體系結構。在這個介紹性的章節中,我們對這兩種體系結構均進行了描述,然後對它們進行了比較和對照。討論了每個結構的強勢和弱點,促使讀者去了解哪種體系結構是最適合他/她的情況。本章還研究了分散式查詢執行的不同實現方法,分析了主-從和三方分散式執行控制機制。對於每個執行方法,還使用兩個例子來解釋如何計算通信代價。
第2章:數據分布的方法
本章學習和比較分散式資料庫管理系統中數據分布的不同設計方法。分析了可選的分片方法,主要是水平、垂直和混合分片。討論了支持數據複製所產生的影響,並考慮了數據放置問題。還概述了這些方法的正確性條件,解釋了DDBMS如何提供分片、位置和分布透明,並討論了如何設計一個全局的數據字典來支持這些透明。我們給出了分散式設計的一些不同例子,並用它們闡述不同的數據分布透明對用戶查詢的影響。
第3章:資料庫控制
本章重點討論關於集中式和分散式資料庫系統的安全性和語義完整性控制。當資料庫面向並發事務時,如果沒有控制,那么資料庫的完整性就會受到危害。使用事務的最基本的原因之一是保持數據的完整性,因此,需要提出和討論集中式和分散式的語義完整性問題。在實現分散式數據控制時,我們考慮如何平衡本地(集中式)資料庫管理系統中的語義完整性控制機制,並討論在分散式實現和本地強制實現中數據分布的影響。我們研究了4個可選的實現方法,它們用於強制實現語義完整性,評估了它們的優點和缺點,並提出了一個在分散式系統中強制語義完整性的代價分析機制,該機制關注於不同實現方法所需的訊息數。
第4章:查詢最佳化
在集中式系統中,查詢最佳化不是基於規則的,就是基於代價的。除了集中式系統中的最佳化方法之外,查詢最佳化器的主要目標是最小化查詢的回響時間。查詢最佳化的代價要素包括CPU時間和磁碟訪問時間。從目前的發展來看,磁碟訪問時間是查詢代價中的主要因素。就此而言,大多數查詢最佳化器注重最小化磁碟I/O數,從而最小化磁碟訪問時間。本章將關注於分散式資料庫管理系統中的查詢處理。我們將集中式系統中查詢處理的概念擴展為混合分布。在一個分散式資料庫管理系統中,查詢處理時間代價由本地CPU時間、查詢中涉及的所有伺服器的本地磁碟訪問時間,以及同步這些伺服器活動所需的通信代價組成。由於在分散式查詢中通信代價是主要代價因素,因此分散式查詢最佳化器應注重最小化該代價。我們討論分散式查詢的可選最佳化方法,這些方法著重減少在分散式系統中執行查詢所需的訊息數目。為了最小化通信代價,其中一個方法務必確保系統具有最優的分布設計,使得到不同資料庫伺服器的信息可以配置在合理的位置。已經證明如果將該問題涉及的所有因素都考慮進來,那么解決這個問題是一個NP難題。因此,解決該問題的目標不是最優方法,而是最接近最優的方法。
第5章:並發控制
本章涵蓋了分散式資料庫管理系統中的並發問題。首先定義了什麼是事務,以及事務在資料庫管理系統中必須滿足的特性,然後回顧了集中式資料庫管理系統中可選的並發控制方法,並概述了兩類並發控制算法(悲觀算法和樂觀算法)。我們分析了如何改變這些方法以適應分散式資料庫管理系統的並發控制要求。由於每類算法都可用鎖或時間戳來實現,因此對於基於鎖和基於時間戳的並發控制算法的實現,我們評估了它們的優缺點。大多數並發控制方法使用鎖作為提供隔離的主要機制。
第6章:死鎖處理
當對系統中並發運行的事務使用鎖時,可能會進入死鎖狀態。死鎖被定義為這樣一種系統狀態,在該狀態中,一個或多個事務陷入無限等待循環中。這意味著循環中的每個事務持有一個或多個鎖,並等待得到當前被循環中其他事務之一持有的鎖。由於每個事務都不會釋放其持有的鎖,所有事務將進入無限等待。本章討論集中式系統中處理死鎖問題的3種經典方法:死鎖預防、死鎖避免和死鎖檢測,如何將這些方法用於分散式資料庫管理系統中,以及每種方法的優點和缺點。本章介紹了在死鎖預防中使用預先獲取所有鎖的方法,討論了等待-死亡和受傷-等待算法如何用於死鎖避免。還給出了集中式和分散式死鎖檢測和消除方法。
第7章:複製控制
複製表或分片可以改善數據的可用性、可靠性和可恢復性(與第2章所討論的一樣),可以極大地改善系統的性能(特別是第4章討論的查詢最佳化)。不幸的是,關於複製的環境也有很多複雜的限制問題。本章討論分散式資料庫管理系統中複製的作用。重點討論複製控制,該技術用於確保所有複製的表和表分片相互之間的一致性和同步。複製控制專門針對分散式資料庫管理系統的問題。在DDBMS環境中有很多可選的複製控制方法,我們將其歸類為異步或同步複製控制算法。我們討論的複製控制算法有無爭議的(Unanimous)、主副本的(Primary-Copy)、分散式的(Distributed)、基於投票的(Voting-Based)、基於法定人數的(Quorum-Based)和基於令牌傳遞的(Token-Passing-Based)複製控制算法。
第8章:故障和提交協定
DBMS必須保證即使當系統出現故障時,能保持資料庫內容的一致性。這一章討論DBMS中對事務故障、電源故障和計算機硬體故障的容錯能力。研究DDBMS用於提供此類保證的提交協定,該協定討論DDBMS如何確定一個特定的事務是否可以安全提交。還研究了當事務不安全時,DBMS容錯機制如何取消事務,以及當事務的所有修改已經成功寫入日誌時,系統如何提交事務。在集中式系統中,日誌管理器負責與事務管理器一起工作以正確實現提交協定。另一方面,在分散式系統中,多個DBMS伺服器需要協同它們的活動以確保全局事務可以在發生過改變的所有DBMS站點上成功提交或取消。因此,我們討論DDBMS如何實現分散式提交協定,研究諸如兩階段和三階段提交協定這樣的可選的分散式提交協定。網路分區是分散式系統中最困難的一種故障(一組計算機通過網路連線在一起,但它們與另一組內部相連的計算機是分隔的)。當發生網路分區時,則每個分區中的計算機可以單方面決定提交或取消事務,這樣是危險的。如果兩個分區不能對相同的行為做出決定(要么都提交事務,要么都取消事務),那么將損失資料庫的完整性。因此,我們還研究了一個基於法定人數的提交協定,用它來處理網路分區。
第9章:DDBE安全
這一章討論安全性問題,包括改善數據在分散式資料庫環境(DDBE)中私密性和安全性的認證、授權和編程技術。由於通信是資料庫伺服器在DDBE中協同操作的基礎,應該確保伺服器的通信和用戶對數據的訪問是安全的,因此,為研究私鑰和公鑰安全方法,我們討論安全套接層(Secure Sockets Layer,SSL)和傳輸層安全(Transport Layer Security,TLS),並解釋在分散式資料庫系統中,許可證書如何用於組件和套用(包括基於Web的套用)。我們還考慮“隧道”方法,包括虛擬專用網(Virtual Private Network,VPN)和安全外殼(Secure Shell,SSH),討論它們在分散式資料庫系統中的潛在功能。
第10章:數據建模概述
這一章概述數據建模的概念和技術,研究數據建模並討論它的目標。考慮數據模型的不同創建和分類方法以及數據建模語言,接下來關注於概念數據建模,並給出了創建概念數據模型和圖的3種不同的語言。詳細探討了實體關係建模以及其他一些概念建模技術。簡要討論了邏輯數據建模以及它的目標是如何不同於概念數據建模的。類似地,還討論了物理數據建模以及它的目標是如何不同於概念和邏輯數據建模的,然後簡要介紹了一些命名法和符號,它們用於記錄這些不同類型的數據模型。最後,研究這些不同類型的數據建模在異構資料庫環境中是如何共存的。
第11章:邏輯數據模型
這一章研究現實世界中用於資料庫的四種邏輯數據建模語言。關係數據模型是本書介紹的第一個建模語言,因為它是很多集中式DBMS的基礎。它也是最有可能用於DDBE的邏輯建模語言,我們將詳細研究這種語言。層次數據模型和網狀數據模型是可以在一些歷史遺留的資料庫系統中,尤其是大型機中找到的兩種邏輯建模語言。因此,也要了解這些語言。面向對象的程式設計(OOP)已經成為很多組織機構事實上的標準。雖然OOP套用可以訪問存儲為任意格式的數據,但是最自然的格式可以在面向對象的DBMS(OODBMS)中找到。這種格式也可以在所謂的對象持久性引擎中找到。面向對象資料庫使用面向對象建模語言,它與本章中討論的其他建模語言在本質上是不同的。然而,這些語言之間存在某些相似的地方,我們將對其進行討論。對於每種建模語言,介紹符號和命名法,以及將概念數據模型轉換為使用這些邏輯建模語言之一創建的數據模型時必須遵循的規則。我們簡要比較和對比了這4種語言,並考慮了在向前和向後推動使用這些語言的數據模型時值得一提的問題。
第12章:傳統DDBE體系架構
在現實世界中,可以使用幾種可選的不同的體系結構方法代替傳統的、同構的、自頂向下設計的DDBMS。聯邦式資料庫或多資料庫是將現有的資料庫伺服器集成起來,它們是自底向上創建的。在聯邦式資料庫管理系統中,組織機構需要的數據已經存在於多個資料庫伺服器上。這些資料庫也許不是相同類型的資料庫(相同數據模型/數據建模語言)。這種異構的資料庫集合需要集成起來為聯邦式資料庫系統的用戶提供統一和相關的接口。這種集成涉及的問題是數據模型到關係數據模型的轉換,以及將一組關係數據模型集成到一個聯邦式視圖中。
第13章:新DDBE體系架構
傳統上,DDBE中的一個組件或子系統不是一個獨立的過程。這一章探索分散式資料庫環境的體系結構。傳統體系結構中的大多數組件都是由一個或多個子系統控制的,而大多數子系統是用一個“指揮系統”設計自身,定義其內部的組件。因此,我們給出的第一個新的體系結構是這樣的,它的組件和子系統相互之間以協同方式的關係工作,而不是在相互控制下工作。另一種在大多數體系結構中可以找到的傳統性特徵是這樣的事實,即DDBE體系結構中的子系統不是“生而平等的”。體系結構中的某些子系統被設計得比其他子系統更重要、更權威、更強大和更複雜。這也表明即使開發和部署環境提供動態部署和配置服務,體系結構也是略微有些剛性的。因此,這一章還給出了另一種新的體系結構,其子系統是基本對等的。這也使得環境可以更加動態,而對等子系統可以相對容易和靈活地加入和離開環境。
第14章:DDBE平台需求
分散式資料庫環境(DDBE)運行在計算機網路之上。這些計算機中的每一個都有自己的作業系統或其他系統,諸如本地DBMS,需要將這些系統集成進DDBE體系結構中。儘管每個單獨的計算機有其自身的作業系統,但是完全地分散式作業系統沒有多大意義。這意味著我們必須在現有軟體之上編寫一個軟體層,部署在每個單獨的計算機上。稱這個軟體層為DDBE平台。可以以多種不同方法構建(和實現)該層。相對於關注實現細節,這一章更側重於體系結構問題和通用DDBE平台需求,特別是我們的DDBE平台必須如何處理通信、組件命名、體系安全、部署、分散式事務,以及一般的便攜性/互用性問題。這一章還簡要探索了可以為DDBE平台提供的一些(或許全部)需求的某些實現。我們研究用於遠程調用(Remote Call)的RPC和RMI機制、用於遠程訊息(Remote Messaging)的Java訊息服務(Java Message Service,JMS)實現。我們還給出了XML Web Service的一個高級概述,這是以交叉平台方式實現服務提供者的一種相對新的技術。
第15章:JMS開發工具包
這一章考慮如何開發分散式資料庫管理系統DDBE,它可用於集成Oracle、Microsoft、IBM、Sybase及其他資料庫。我們提供一個DDBE開發工具包,作為開發我們的DDBE組件和子系統的起點,包括一個框架和一個擴展的例子。它使用Java 2標準版(J2SE)實現,通過Java訊息服務(Java Message Service,JMS)的實現來增強。可以用這個框架作為一個基礎,在沒有額外複雜性(或能力)的完整J2EE套用伺服器的情況下,使用Java來創建異構的分散式資料庫管理系統,可以得到快速啟動。討論如何使用這個框架,為實現當前框架中沒有提供的附加功能創建新的擴展。最後,我們給出了擴展的例子(用開發工具包編寫的),它使用3個資料庫,討論了設定和運行這個例子所需的步驟。
第16章:J2EE平台
這一章討論J2EE平台,對平台進行簡要概述,介紹不同DDBE平台服務的詳細實現細節。特別明確了J2EE規範中定義的可滿足第14章所明確需求的J2EE服務。還考慮了此時選擇的不同實現,其中包括Apache Geronimo和JBoss的研究,它們研究了Enterprise Java Beans(EJB)提供的遠程支持能力,並討論了其他J2EE工具如何可用於DDBE項目。對工具的討論包括Java Naming和Directory Interface(JNDI)、XML Web Services和RMI,以及J2EE提供的安全、部署和事務管理工具。
第17章:J2EE開發工具包
這裡給出了另一個DDBE開發工具包,它類似於第15章給出的那個。但是,這個開發工具包是使用J2EE平台實現的,只需最小的修改就可以傳送到幾個可選的J2EE實現中。可以使用這個框架作為一個基礎,在使用J2EE以及它提供的全功能子系統創建異構的分散式資料庫管理系統時,可以得到快速啟動。尤其是遠程能力和分散式事務管理工具,使得這個實現比我們在第15章使用的JMS/J2SE方法更強大(也更複雜)。這個開發工具包中包含一個平台和一個擴展的例子。本章討論如何使用這個框架,為實現當前框架中沒有提供的附加功能創建新的擴展。最後,給出了一個簡單的擴展的例子(用初學者工具包編寫的),它使用3個資料庫,我們討論了它的實現。
第18章:微軟.NET平台
這一章將微軟.Net框架用作一個可能的DDBE開發平台,對該平台進行了簡要的概覽,介紹了在前面第14章中明確的各種DDBE平台需求的詳細實現細節。特別研究了用於遠程代碼執行(Remote-Code Execution)的TCP/IP Remoting和HTTP Remoting實現,還探索了用於XML Web Services的通用訊息工具和支持。討論了微軟.Net基於框架的DDBE平台如何提供目錄服務(Directory Services),展示並研究了該平台是如何支持安全、部署和事務管理的。
第19章:DNET開發工具包
這一章給出了另一個DDBE開發工具包,與第17章介紹的類似。然而,這個開發工具包是使用微軟.Net框架實現的。因此,我們可以使用這個框架作為一個基礎,在使用微軟.Net框架支持的任何程式語言(Visual C#、Visual C++或Visual Basic)創建我們的異構的分散式資料庫管理系統時,可以得到快速啟動。這個開發工具包扭轉了工具在微軟.Net基於框架的平台中的可用性,我們討論第18章中指定的工具如何用於構建我們的DDBE項目。這個開發工具包中包含一個框架和一個擴展的例子,我們討論如何使用這個框架,為實現當前框架中沒有提供的附加功能創建新的擴展。最後,給出了一個簡單的擴展的例子(用初學者工具包編寫的),它使用3個資料庫,我們討論了它的設計。
本書的有效使用
下面描述的是貫穿全書的不同學習路徑或“軌跡”:
* 當本書用於課堂環境時,推薦使用第1部分的全部內容,並按其順序介紹。根據課程的範圍,從第2部分選擇包含的內容也應該基於課程中討論的異構程度。這條軌跡應該最有可能包含第1部分的所有內容(第1~9章),以及至少第10章和第11章的部分內容。
* 如果課程中包含任何關於實現的活動或思考,那么同樣我們推薦將第1部分包含進來,在這種情況下,第10章、第11章和第14章也是很有助益的。根據選擇的實現平台,這條軌跡還應包括第3部分的適當章節。換言之,它應包括J2EE的章節(第16章和第17章)、Microsoft .Net Framework-based的章節(第18章和第19章),或包含JMS的章節(第15章)。
* 如果讀者計畫設計自己的實際的DDBMS體系結構,第1章和第2部分中的章節(第10~14章)提供了理解系統體系結構需求的必要背景知識。同樣,根據讀者實現時選擇的開發平台,可以選擇包含第3部分的適當章節。
* 如果讀者使用現有的DDBMS體系結構,那么可以將第1部分作為其實現中組件和子系統背後的理論支撐參考。第2部分可以用於理解體系結構問題或是有助於思考其體系結構的改變。可以根據現有的開發環境,或是在可選的開發環境中的實現原型來選擇第3部分。
致謝
特别致謝:Brad Rubin博士,聖托馬斯大學軟體程式設計專業,對安全方面的章節做出了貢獻;Dyanne Haug和Patricia Rahimi為本書初稿提供了很有價值的反饋和建議:非常感激占用了他們的時間和精力;IBM公司的Khalid Albarrak博士,幫助我們學習、安裝和調試InfoSphere Federation Server軟體,並對我們的測試設定和測試結果提供了反饋。聖托馬斯大學的Saladin Cerimagic,軟體程式設計專業,感謝他對並發討論的幫助。

目錄

第1章 概述 1
1.1 資料庫的概念 1
1.1.1 數據模型 1
1.1.2 資料庫操作 2
1.1.3 資料庫管理 2
1.1.4 DB客戶機、伺服器、環境 3
1.2 DBE體系結構概念 3
1.2.1 服務 4
1.2.2 組件和子系統 4
1.2.3 站點 5
1.3 典型的DBE體系結構 5
1.3.1 必需的服務 5
1.3.2 基礎的服務 6
1.3.3 期望的服務 6
1.3.4 期望的子系統 7
1.3.5 典型的DBMS服務 8
1.3.6 概要級的圖 8
1.4 一種新的分類法 9
1.4.1 COS分布和部署 10
1.4.2 COS封閉或開放 10
1.4.3 模式和數據可見性 11
1.4.4 模式和數據控制 12
1.5 一個DDBE的例子 13
1.6 一個DDBE體系結構的參考 14
1.6.1 DDBE信息體系結構 14
1.6.2 DDBE軟體體系結構 15
1.7 分散式系統中的事務管理 17
1.8 本章小結 23
1.9 術語表 23
參考文獻 24
第2章 數據分布的方法 25
2.1 設計方法 26
2.1.1 本地化數據 27
2.1.2 分散式數據 27
2.2 分片 28
2.2.1 垂直分片 28
2.2.2 水平分片 30
2.2.3 混合分片 33
2.2.4 垂直分片生成指南 35
2.2.5 垂直分片正確性規則 42
2.2.6 水平分片生成指南 42
2.2.7 水平分片正確性規則 46
2.2.8 複製 47
2.3 分布透明性 47
2.3.1 位置透明性 47
2.3.2 分片透明性 48
2.3.3 複製透明性 48
2.3.4 位置、分片和複製透明性 48
2.4 分布對用戶查詢的影響 48
2.4.1 無GDD——無透明性 49
2.4.2 包含位置信息的GDD——位置透明性 50
2.4.3 分片、複製和位置透明性 51
2.5 一個更複雜的例子 52
2.5.1 位置、分片和複製透明性 53
2.5.2 位置和複製透明性 53
2.5.3 無透明性 54
2.6 本章小結 55
2.7 術語表 55
參考文獻 57
練習題 57
第3章 資料庫控制 59
3.1 認證 59
3.2 訪問許可權 61
3.3 語義完整性控制 61
3.4 分散式語義完整性控制 68
3.4.1 編譯時驗證 70
3.4.2 運行時驗證 70
3.4.3 執行後驗證 70
3.5 語義完整性的執行代價 70
3.6 本章小結 77
3.7 術語表 77
參考文獻 78
練習題 78
第4章 查詢最佳化 80
4.1 樣例資料庫 80
4.2 關係代數 81
4.3 關係代數運算元的計算 87
4.3.1 選擇計算 87
4.3.2 連線計算 90
4.4 集中式系統中的查詢處理 93
4.4.1 查詢解析和轉換 94
4.4.2 查詢最佳化 95
4.4.3 代碼產生 107
4.5 分散式系統中的查詢處理 108
4.5.1 將全局查詢映射到本地查詢中 108
4.5.2 分散式查詢最佳化 112
4.5.3 異構資料庫系統 125
4.6 本章小結 127
4.7 術語表 128
參考文獻 130
練習題 132
第5章 並發控制 135
5.1 術語 135
5.1.1 資料庫 135
5.1.2 事務 136
5.2 多事務處理系統 140
5.2.1 調度 140
5.2.2 衝突 141
5.2.3 等價 142
5.2.4 可串列化調度 143
5.2.5 高級事務類型 147
5.2.6 分散式系統中的事務 148
5.3 集中式DBE並發控制 149
5.3.1 基於加鎖的並發控制算法 150
5.3.2 時間戳並發控制算法 156
5.3.3 樂觀並發控制算法 159
5.3.4 真實DBMS(Oracle)中的並發控制 160
5.4 分散式資料庫系統中的並發控制 168
5.4.1 分散式系統中的兩階段加鎖 171
5.4.2 分散式時間戳並發控制 175
5.4.3 分散式樂觀並發控制 178
5.4.4 聯邦式/多資料庫並發控制 178
5.5 本章小結 179
5.6 術語表 179
參考文獻 182
練習題 184
第6章 死鎖處理 186
6.1 死鎖的定義 186
6.2 集中式系統中的死鎖 186
6.2.1 預防死鎖 186
6.2.2 避免死鎖 187
6.2.3 死鎖檢測和解除 190
6.3 分散式系統中的死鎖 190
6.3.1 事務站點問題 191
6.3.2 事務控制問題 192
6.3.3 分散式死鎖預防 192
6.3.4 分散式死鎖避免 192
6.3.5 分散式死鎖檢測 197
6.4 本章小結 203
6.5 術語表 204
參考文獻 205
練習題 205
第7章 複製控制 207
7.1 複製控制方案 208
7.1.1 同步複製控制方法 208
7.1.2 異步複製控制 209
7.2 複製控制算法 210
7.2.1 體系上的考慮 211
7.2.2 主-從複製控制算法 211
7.2.3 分散式投票算法 212
7.2.4 多數一致性算法 213
7.2.5 循環令牌算法 215
7.2.6 複製控制的廣泛投票算法 217
7.2.7 發布更新的方法 219
7.3 本章小結 220
7.4 術語表 220
參考文獻 222
練習題 222
第8章 故障和提交協定 224
8.1 術語 224
8.1.1 軟故障 224
8.1.2 硬故障 224
8.1.3 提交協定 225
8.1.4 事務狀態 227
8.1.5 資料庫更新模式 228
8.1.6 事務日誌 228
8.1.7 DBMS存儲類型 229
8.1.8 日誌目錄 230
8.2 撤銷/重做和資料庫恢復 233
8.3 事務狀態的再訪問 237
8.3.1 延遲更新事務步驟 237
8.3.2 立即更新事務步驟 237
8.4 資料庫恢復 238
8.4.1 日誌進程 238
8.4.2 恢復過程 239
8.5 其他類型的資料庫恢復 242
8.5.1 恢復到現在 242
8.5.2 恢復到過去的一個時間點 242
8.5.3 事件恢復 242
8.6 基於重做/撤銷過程取消的恢復 244
8.7 完全恢復算法 245
8.8 分散式提交協定 246
8.8.1 體系結構需求 247
8.8.2 分散式提交協定 248
8.8.3 一階段提交協定 248
8.8.4 兩階段提交協定 250
8.8.5 三階段提交協定 263
8.8.6 網路分區和基於法定人數的提交協定 267
8.9 本章小結 268
8.10 術語表 269
參考文獻 270
練習題 271
第9章 DDBE安全 273
9.1 密碼學 273
9.1.1 常規加密 274
9.1.2 報文摘要和訊息驗證碼 277
9.1.3 公鑰密碼 277
9.1.4 數字簽名 279
9.1.5 數字證書和認證授權 280
9.2 固定通信 280
9.2.1 SSL/TLS 281
9.2.2 VPN、IPSec和SSH 281
9.3 固定數據 282
9.3.1 認證和授權 282
9.3.2 數據加密 283
9.3.3 非法輸入和SQL注入 284
9.3.4 數據推理 287
9.3.5 數據審計 288
9.4 體系結構問題 288
9.5 一個典型的部署 289
9.6 本章小結 289
9.7 術語表 290
參考文獻 292
練習題 293
第10章 數據建模概述 294
10.1 數據建模語言和數據模型的分類 295
10.1.1 CLP分類系統 296
10.1.2 3LM分類系統 297
10.1.3 其他分類方法 299
10.2 CLP分類系統中的概念層 299
10.2.1 概念層問題 299
10.2.2 概念層目標 302
10.3 概念建模語言舉例 304
10.4 數據模型的使用 317
10.4.1 CDM 317
10.4.2 LDM 319
10.4.3 PDM 320
10.5 使用建模的多種類型 321
10.5.1 轉換成多個模型 322
10.5.2 正向工程 322
10.5.3 逆向工程 323
10.6 本章小結 323
10.7 術語表 324
參考文獻 326
練習題 327
第11章 邏輯數據模型 328
11.1 RDM 329
11.1.1 命名 329
11.1.2 正向工程規則 331
11.1.3 逆向工程的規則 336
11.1.4 特殊的考慮 336
11.2 網狀數據模型 337
11.2.1 命名 338
11.2.2 正向工程規則 339
11.2.3 逆向工程規則 340
11.2.4 特殊的考慮 341
11.3 層次數據模型 341
11.3.1 命名 341
11.3.2 正向工程規則 342
11.3.3 逆向工程規則 343
11.3.4 特殊的考慮 343
11.4 面向對象數據模型 343
11.4.1 命名 344
11.4.2 正向工程規則 345
11.4.3 逆向工程規則 345
11.4.4 特殊的考慮 346
11.5 本章小結 346
11.6 術語表 346
參考文獻 349
練習題 350
第12章 傳統DDBE體系架構 351
12.1 對傳統DDBE體系架構套用分類學 352
12.1.1 分類傳統的DDBMS體系架構 352
12.1.2 聯邦資料庫體系架構分類 354
12.1.3 非聯邦資料庫體系架構分類 355
12.2 MDBS體系架構分類 356
12.3 開發DDBE的方法 357
12.3.1 自頂向下的方法 357
12.3.2 自底向上的方法 358
12.4 部署DDBE軟體 359
12.5 集成面臨的挑戰 360
12.5.1 軟體集成問題 361
12.5.2 模式集成的問題 362
12.6 模式集成示例 371
12.6.1 轉化步驟 371
12.6.2 輸出模式生成 373
12.6.3 發現和解決步驟 373
12.6.4 重構步驟 373
12.7 現有商業DDBE示例 374
12.7.1 商業系統中的模式集成 376
12.7.2 現有產品的軟體集成 376
12.7.3 Microsoft Access 377
12.7.4 InfoSphere Federation Server 378
12.8 示例 378
12.8.1 示例資料庫 378
12.8.2 資料庫分布 379
12.8.3 設定 380
12.8.4 設定數據源名稱 381
12.8.5 將數據源連結至Federation Server 386
12.8.6 實驗 390
12.8.7 從Access和Federation Server資料庫進行查詢 391
12.8.8 從Access和Federation Server資料庫進行修改 392
12.9 本章小結 395
12.10 術語表 395
參考文獻 397
練習題 398
第13章 新DDBE體系架構 399
13.1 協作式DDBE 399
13.1.1 子系統概述 400
13.1.2 實現說明 406
13.2 點到點DDBE 410
13.2.1 P2P概述 410
13.2.2 實現細節 412
13.3 比較COOP與P2P 412
13.3.1 COOP與P2P 413
13.3.2 COOP/P2P與傳統DDBE 413
13.3.3 COOP/P2P與其他DDBE 413
13.4 本章小結 414
13.5 術語表 414
參考文獻 415
練習題 416
第14章 DDBE平台需求 417
14.1 DDBE體系架構辭彙 418
14.1.1 組件和子系統 418
14.1.2 服務消費者和服務提供者 419
14.1.3 體系架構可視化表示 419
14.1.4 中間件 422
14.2 基本平台需求 424
14.2.1 開發需求 424
14.2.2 部署需求 427
14.2.3 執行需求 429
14.3 分散式處理平台需求 433
14.3.1 遠程性需求 433
14.3.2 目錄服務需求 440
14.4 分散式數據平台需求 442
14.4.1 體系架構安全需求 442
14.4.2 資料庫連線需求 444
14.4.3 事務管理需求 445
14.5 概述第15~19章使用的DDBE平台 445
14.5.1 Java訊息服務(JMS)平台 446
14.5.2 Java 2企業版(J2EE)平台 446
14.5.3 Microsoft .NET基於框架平台 446
14.6 本章小結 447
14.7 術語表 448
參考文獻 451
練習題 451
第15章 JMS開發工具包 452
15.1 Java訊息服務概述 453
15.1.1 體系架構概述 454
15.1.2 訊息概述 458
15.1.3 訊息域 465
15.1.4 JMS API構件 467
15.2 JMS Provider實現方法 470
15.2.1 Apache ActiveMQ 471
15.2.2 OpenJMS 472
15.3 JMS開發工具包(JMS-SKIT)框架概述 474
15.3.1 框架目標 474
15.3.2 框架軟體包概述 476
15.4 使用JMS-SKIT框架 479
15.4.1 示例擴展概述 479
15.4.2 創建新擴展 481
15.4.3 改進基於JMS的框架 481
15.5 本章小結 482
15.6 術語表 482
參考文獻 485
練習題 485
第16章 J2EE平台 486
16.1 Java 2企業版(J2EE)概述 486
16.1.1 基本J2EE術語 487
16.1.2 體系架構概述 489
16.1.3 開發概述 489
16.1.4 部署概述 490
16.2 J2EE對分散式處理平台需求的支持 490
16.2.1 J2EE遠程代碼執行 490
16.2.2 J2EE遠程訊息 492
16.2.3 J2EE目錄服務 493
16.3 J2EE對分散式數據平台需求的支持 494
16.3.1 J2EE安全性 494
16.3.2 Java資料庫連線 495
16.3.3 J2EE事務 495
16.4 J2EE平台實現方法 496
16.4.1 JBoss 496
16.4.2 Apache Geronimo 497
16.4.3 JOnAS 497
16.4.4 其他J2EE平台實現方法 497
16.5 本章小結 498
16.6 術語表 498
參考文獻 501
練習題 501
第17章 J2EE開發工具包 502
17.1 Java 2企業版開發工具包(J2EE-SKIT)概述 502
17.1.1 J2EE-SKIT目標 503
17.1.2 J2EE-SKIT 體系架構概述 504
17.1.3 J2EE-SKIT框架體系架構概括 507
17.1.4 J2EE-SKIT擴展體系架構概括 507
17.2 J2EE-SKIT設計概括 509
17.2.1 J2EE-SKIT框架設計概括 510
17.2.2 J2EE-SKIT擴展設計概括 512
17.2.3 參數類型接口 514
17.2.4 例外類型類 515
17.3 本章小結 516
17.4 術語表 517
參考文獻 518
練習題 519
第18章 微軟.NET平台 520
18.1 平台概括 521
18.1.1 基本的平台特定的辭彙術語 522
18.1.2 體系架構概述 527
18.1.3 開發概述 528
18.1.4 程式集部署概括 529
18.2 對分散式處理平台需求的支持 533
18.2.1 遠程代碼執行需求 533
18.2.2 遠程訊息請求 534
18.2.3 目錄服務需求 534
18.3 分散式數據平台需求 534
18.3.1 .NET安全性 535
18.3.2 ADO.NET資料庫連線 535
18.3.3 .NET事務 535
18.4 本章小結 536
18.5 術語表 536
參考文獻 538
練習題 539
第19章 DNET開發工具包 540
19.1 DNET-SKIT概述 540
19.1.1 DNET-SKIT目標 541
19.1.2 DNET-SKIT體系架構概述 542
19.1.3 DNET-SKIT擴展體系架構概述 545
19.2 DNET-SKIT設計概述 547
19.2.1 DNET-SKIT框架設計概述 548
19.2.2 DNET-SKIT擴展設計概述 550
19.3 本章小結 554
19.4 術語表 555
參考文獻 556
練習題 556

相關詞條

熱門詞條

聯絡我們