引言
分布式數(shù)據(jù)庫系統(tǒng)(DDBS)概述
結(jié)合了數(shù)據(jù)庫系統(tǒng)(database system)和計(jì)算機(jī)網(wǎng)絡(luò)(computer network)技術(shù)
達(dá)到為對于數(shù)據(jù)的集中定義和集中管理的目的
帶來了數(shù)據(jù)獨(dú)立性(data independence)
分布式數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)庫系統(tǒng)技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)兩者是否矛盾?兩者各自強(qiáng)調(diào)什么?
數(shù)據(jù)庫系統(tǒng)強(qiáng)調(diào)提供集中的、對于數(shù)據(jù)可控制的存取
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)強(qiáng)調(diào)反對集中的工作模式
將兩者結(jié)合的重要思想:
數(shù)據(jù)庫技術(shù)最重要的目標(biāo)是集成而不是集中
集成和集中是兩個(gè)不同概念,必要時(shí)會(huì)為了集成而放棄集中
分布式數(shù)據(jù)處理
本書中關(guān)于分布式處理的定義:
使用的分布式計(jì)算系統(tǒng)(distributed computing system)的定義,要求它具備一定數(shù)量的自主式處理單元(不一定同構(gòu)),這些單元通過計(jì)算機(jī)網(wǎng)絡(luò)互連,并且協(xié)同處理它們各自分配到的任務(wù)。
- 這里的"處理單元"是指能夠執(zhí)行自己程序的計(jì)算裝置
根據(jù)什么分布?
處理邏輯分布
功能分布
- 計(jì)算機(jī)系統(tǒng)的不同功能可以分派到不同的硬件或軟件部件上
數(shù)據(jù)分布
- 應(yīng)用所使用的數(shù)據(jù)可以分派到若干處理站點(diǎn)上
控制分布
- 不同任務(wù)的控制執(zhí)行也可以分布,而不是由一個(gè)計(jì)算機(jī)系統(tǒng)完成。從分布式數(shù)據(jù)庫系統(tǒng)的觀點(diǎn)看,所有這些方式都是必要和重要的
為什么需要分布?
使用一種分而治之的辦法應(yīng)對今天所面臨的大規(guī)模數(shù)據(jù)管理問題
把復(fù)雜的問題分割成更小的部分并把它們分配到不同的軟件群加以解決
這些軟件群工作在不同的計(jì)算機(jī)上,它們形成一個(gè)系統(tǒng),運(yùn)行在多個(gè)處理單元上,有效工作,完成一件共同的任務(wù)
什么是分布式數(shù)據(jù)庫系統(tǒng)?
分布式數(shù)據(jù)庫定義:
- 一群分布在計(jì)算機(jī)網(wǎng)絡(luò)上、邏輯上互相關(guān)聯(lián)的數(shù)據(jù)庫
數(shù)據(jù)發(fā)送的不同選擇
數(shù)據(jù)發(fā)送的不同選擇:
發(fā)送方式 delivery mode
頻率 frequence
通信方法 communication methods
發(fā)送方式:
內(nèi)拉(pull-only)
由客戶端的發(fā)起請求,從服務(wù)器端拉取數(shù)據(jù)
特點(diǎn)
- 新數(shù)據(jù)到達(dá)或已有數(shù)據(jù)的更新不會(huì)通知客戶
外推(push-only)
- 由服務(wù)器發(fā)起,將數(shù)據(jù)推送給客戶端
混合(hybrid)
把客戶端的內(nèi)拉和服務(wù)器端的外推結(jié)合起來
實(shí)現(xiàn):
連續(xù)查詢
起初由客戶端發(fā)起內(nèi)拉
而后服務(wù)器端將更新的數(shù)據(jù)外推給客戶端
數(shù)據(jù)發(fā)送規(guī)律的頻率有三種典型的度量
有周期(periodic)
服務(wù)器端按照一定的時(shí)間間隔將數(shù)據(jù)推送給客戶端
外推、內(nèi)拉都能定義為周期性的方式
有條件(conditional)
數(shù)據(jù)按照定義的條件發(fā)送,而不是重復(fù)的發(fā)送
例子:
- 僅當(dāng)變化時(shí)才發(fā)送股票價(jià)格就是一個(gè)典型的有條件外推
憑經(jīng)驗(yàn)(ad-hoc)或不規(guī)則(irregular)
- 憑經(jīng)驗(yàn)的發(fā)送是不規(guī)則的,且在大部分情況下是在基于內(nèi)拉式的系統(tǒng)里執(zhí)行
通信方法
指服務(wù)器和客戶端的對應(yīng)關(guān)系,可以分為:
單播(unicast)
- 客戶和服務(wù)器之間的通信是一對一的:服務(wù)器按照某種頻率,采用特定的發(fā)送方式,僅把數(shù)據(jù)發(fā)送給一個(gè)客戶
一對多(one-to-many)
在一對多的情況下,如同它的名稱所說的那樣,服務(wù)器向許多客戶發(fā)出數(shù)據(jù)
- 請注意,我們這里沒有指定任何協(xié)議。一對多的通信可以使用多播或者廣播協(xié)議
DDBS的承諾
DDBS的四個(gè)基礎(chǔ)問題
分布及復(fù)制數(shù)據(jù)的透明管理
分布式事務(wù)提供可靠的數(shù)據(jù)存取
改進(jìn)的性能
更為容易的系統(tǒng)擴(kuò)展
分布及復(fù)制數(shù)據(jù)的透明管理
透明的含義
將系統(tǒng)的高層語義和底層的實(shí)現(xiàn)相分離。
向用戶"隱藏"了系統(tǒng)實(shí)現(xiàn)的細(xì)節(jié)
透明在這里可以理解為隱藏實(shí)現(xiàn)細(xì)節(jié),以下各種名詞+透明,核心意思就是向用戶隱藏對應(yīng)的名詞實(shí)現(xiàn)細(xì)節(jié)
為了讓分布式系統(tǒng)能夠處理分布、分片、復(fù)制的數(shù)據(jù)查詢需要應(yīng)對幾種不同類型透明
- 數(shù)據(jù)獨(dú)立性
指用戶應(yīng)用不會(huì)受到數(shù)據(jù)的定義的變化影響
數(shù)據(jù)定義的兩個(gè)維度
邏輯結(jié)構(gòu) 通常稱為模式定義(schema definition)
物理結(jié)構(gòu) 通常稱為物理數(shù)據(jù)描述(physical data description)
所以為了保證數(shù)據(jù)定義的透明,就要保證數(shù)據(jù)的獨(dú)立性,按照數(shù)據(jù)定義的維度保證對應(yīng)兩者的獨(dú)立性
邏輯數(shù)據(jù)獨(dú)立性(logical data independence)
- 是說用戶應(yīng)用不受數(shù)據(jù)庫的邏輯結(jié)構(gòu)(例如模式)變化的影響。
物理數(shù)據(jù)獨(dú)立性(physical data independence)
- 向用戶應(yīng)用隱蔽了存儲(chǔ)結(jié)構(gòu)的細(xì)節(jié)。當(dāng)編寫用戶應(yīng)用時(shí),不會(huì)涉及物理存儲(chǔ)結(jié)構(gòu)的細(xì)節(jié)
- 網(wǎng)絡(luò)透明(network transparency)或分布透明(distribution transparency)
用戶應(yīng)當(dāng)免于關(guān)心網(wǎng)絡(luò)的細(xì)節(jié),甚至可能不必關(guān)心網(wǎng)絡(luò)的存在,從DBMS的角度來說,分布透明要求用戶不必指出數(shù)據(jù)在哪里存放
分布透明除了指網(wǎng)絡(luò),還有另外兩種透明:
位置透明(location transparency)是指這樣的事實(shí):
- 用來執(zhí)行任務(wù)的命令既和數(shù)據(jù)的位置無關(guān),也和由哪個(gè)系統(tǒng)完成無關(guān)
命名透明(naming transparency)是指:
- 對于數(shù)據(jù)庫里的每個(gè)對象都提供一個(gè)唯一的名字。如果沒有命名透明,用戶需要把位置名稱(或一個(gè)標(biāo)識(shí)符)放入對象名稱內(nèi)
- 復(fù)制透明
復(fù)制
- 這里指分布式系統(tǒng)中數(shù)據(jù)的復(fù)制,即副本的概念
數(shù)據(jù)復(fù)制透明
- 即是否向用戶隱藏副本的存在,而不是副本的位置,副本位置屬于網(wǎng)絡(luò)透明范疇
- 分片透明
分片的兩種方式:
水平分片(horizontal fragmentation)
- 按照行拆分
垂直分片(vertical fragmentation)
- 按照列拆分
怎么理解分片透明
將數(shù)據(jù)分片后,對于用戶端的查詢是基于原先完整關(guān)系上的查詢,而在DDBS中需要轉(zhuǎn)換這種查詢,將最初關(guān)系查詢轉(zhuǎn)換成基于分片后的查詢
分布式事務(wù)提供的可靠性
事務(wù)(transaction)是一個(gè)一致和可靠計(jì)算的基本單元,由作為原子單元執(zhí)行的一系列數(shù)據(jù)庫操作組成。
事務(wù)的核心就是保證數(shù)據(jù)的一致性
即使是在多個(gè)事務(wù)并發(fā)執(zhí)行(有時(shí)稱為并發(fā)透明(concurrency transparency))的情況下,在發(fā)生故障的情況下也可以把數(shù)據(jù)庫從一個(gè)一致的狀態(tài)轉(zhuǎn)變到另一個(gè)一致的狀態(tài)(也稱為故障原子性(failure atomicity))
提供完全事務(wù)支持的DBMS即使是而臨系統(tǒng)故障,只要事務(wù)是正確的,即遵守為數(shù)據(jù)庫所聲明的完整性規(guī)則,也可以保證用戶并發(fā)事務(wù)的執(zhí)行不會(huì)違反數(shù)據(jù)庫的一致性
改進(jìn)的性能
分布式數(shù)據(jù)庫性能的改進(jìn)來源于兩點(diǎn):
本地化(localization)
這就帶來了兩個(gè)潛在的好處:
由于每個(gè)站點(diǎn)僅僅處理數(shù)據(jù)庫的一小部分,對CPU和I/O的服務(wù)競爭不會(huì)有集中式數(shù)據(jù)庫那樣激烈。
本地化減少了通常由廣域網(wǎng)帶來的遠(yuǎn)程訪問的延時(shí)(例如,在基于衛(wèi)星的系統(tǒng)中,最小的雙向消息傳播的時(shí)間大約為1秒)。
大多數(shù)分布式DBMS按照從數(shù)據(jù)本地化中獲得最大利益的思路來構(gòu)造。
- 減少競爭和減少通信額外開銷的完全好處只有通過數(shù)據(jù)的正確劃分和數(shù)據(jù)庫的分布才能取得。
查詢之間的和查詢內(nèi)的并行化
查詢之間的并行化
- 來自于同時(shí)執(zhí)行多個(gè)查詢的能力
查詢內(nèi)的并行
- 是通過把單個(gè)查詢分解成若干個(gè)子查詢,讓每個(gè)子查詢在不同的站點(diǎn)上執(zhí)行,訪問分布式數(shù)據(jù)庫的不同部分。
更為容易的系統(tǒng)擴(kuò)展
分布式環(huán)境更為容易適應(yīng)不斷增長的數(shù)據(jù)規(guī)模。主要的系統(tǒng)變更很少發(fā)生,通過增加處理和存儲(chǔ)的能力即可做到系統(tǒng)擴(kuò)展。顯然,不可能在能力上做到線性增長,這是由于分布產(chǎn)生的額外開銷的緣故。但是,獲得能力上顯著的提高還是完全可以的。
分布帶來的復(fù)雜性
分布式環(huán)境下復(fù)雜性主要受到了三方面的影響:
數(shù)據(jù)可以在分布的環(huán)境里復(fù)制。
分布式數(shù)據(jù)可以設(shè)計(jì)成部分或全部的數(shù)據(jù)庫復(fù)制在計(jì)算機(jī)網(wǎng)絡(luò)的每個(gè)站點(diǎn)上。網(wǎng)絡(luò)的每個(gè)站點(diǎn)包含一個(gè)數(shù)據(jù)庫并不重要,重要的問題是數(shù)據(jù)庫駐留在不止一個(gè)站點(diǎn)上。
復(fù)制數(shù)據(jù)項(xiàng)的出發(fā)點(diǎn)是可靠性和性能的考慮,因此分布式數(shù)據(jù)庫系統(tǒng)要負(fù)責(zé):
選擇一個(gè)副本來響應(yīng)搜索
保證數(shù)據(jù)項(xiàng)的每個(gè)副本都會(huì)得到有效的更新。
故障恢復(fù)
- 如果正在更新時(shí)某些站點(diǎn)出現(xiàn)故障(例如,硬件或軟件的功能出現(xiàn)問題),或者是通信故障(從而使得某些站點(diǎn)失去聯(lián)系)。在這種情況下,系統(tǒng)必須確保在故障恢復(fù)時(shí)將更新的效果反映到出現(xiàn)故障的站點(diǎn)或當(dāng)時(shí)無法聯(lián)系的站點(diǎn)上。
分布式環(huán)境中的事務(wù)同步
- 因?yàn)槊總€(gè)站點(diǎn)不可能隨時(shí)知道其他站點(diǎn)上正在進(jìn)行的操作,這就使得多站點(diǎn)上的事務(wù)同步比集中式系統(tǒng)要困難得多
設(shè) 計(jì) 問 題
分布式數(shù)據(jù)庫設(shè)計(jì)
即如何將數(shù)據(jù)庫放置到分散的站點(diǎn)上。
對于數(shù)據(jù)的放置存在兩種不同的選擇:
劃分(partitioned)(或無重復(fù)(non-replicated))
- 在劃分的方案下,數(shù)據(jù)被劃分成不同片段,分別存放在不同的節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)上存放數(shù)據(jù)均不同
重復(fù)(replicated)
- 不同節(jié)點(diǎn)可以存放相同數(shù)據(jù)
分布式目錄管理
和數(shù)據(jù)放置問題相似,目錄可以集中一個(gè)節(jié)點(diǎn),可以分布在幾個(gè)節(jié)點(diǎn)
分布式查詢處理
這里涉及兩個(gè)算法:
對查詢進(jìn)行分析的算法
將查詢轉(zhuǎn)換為數(shù)據(jù)操作的算法
這里的主要問題是當(dāng)給出了代價(jià)的定義之后,如何確定在網(wǎng)絡(luò)上執(zhí)行每個(gè)查詢的策略:
分布式并發(fā)控制
并發(fā)控制不僅要考慮單個(gè)數(shù)據(jù)庫的完整性,而且還要考慮數(shù)據(jù)庫多個(gè)副本的一致性。需要每個(gè)數(shù)據(jù)項(xiàng)的多個(gè)副本的值趨于一致的條件稱為相互一致性(mutual consistency)。
這一問題的解決方案太多太多,總體上講存在兩大類通用的方法
悲觀(pessimistic)方法
- 在執(zhí)行用戶請求開始之前首先同步這些請求。
樂觀(optimistic)方法
首先執(zhí)行用戶請求,然后再檢查是否違反了數(shù)據(jù)庫的一致性。
有兩個(gè)基本元語可供這兩種方法所使用。
第一個(gè)基本元語是加鎖(locking),它建立在對所訪問的數(shù)據(jù)的相互排斥的基礎(chǔ)之上。
第二個(gè)元語是加時(shí)間戳(timestamping),它按照時(shí)間戳的順序執(zhí)行事務(wù)。
分布式死鎖管理
如果同步機(jī)制使用的是加鎖的方法,訪問同一組資源(即數(shù)據(jù))的用戶之間的競爭會(huì)導(dǎo)致死鎖。
分布式數(shù)據(jù)庫的可靠性
我們必須提供一些機(jī)制來保證數(shù)據(jù)庫一致性,以及故障恢復(fù)。
一致性
- 對分布式數(shù)據(jù)庫而言,當(dāng)發(fā)生故障導(dǎo)致不同的站點(diǎn)或者是停止運(yùn)行,或者是不可訪問時(shí),正常運(yùn)行的站點(diǎn)上的數(shù)據(jù)庫仍然保持在一致和最新的狀態(tài)
故障恢復(fù)
當(dāng)計(jì)算機(jī)系統(tǒng)或網(wǎng)絡(luò)從故障中恢復(fù)時(shí),DDBMS應(yīng)當(dāng)能夠恢復(fù),并且必須將故障站點(diǎn)的數(shù)據(jù)庫帶入到最新的狀態(tài)。
- 在出現(xiàn)網(wǎng)絡(luò)劃分的情況時(shí),這可能非常困難。因?yàn)檎军c(diǎn)被劃分成兩個(gè)或更多的小組,在這些小組之間無法通信。分布式可靠性協(xié)議是第12章的主題。
復(fù)制
如果分布式數(shù)據(jù)庫是(部分或全部)復(fù)制的,則必須執(zhí)行保證副本一致性的協(xié)議,即同一個(gè)數(shù)據(jù)項(xiàng)的拷貝要具有相同的值。
副本一致性協(xié)議的兩種方式
即時(shí)(eager)的,即在事務(wù)完成之前強(qiáng)迫執(zhí)行一致性協(xié)議;
惰性(lazy)的,即事務(wù)只更新一個(gè)拷貝(稱為主拷貝(master),而在事務(wù)完成之后再把更新傳播給其他拷貝。第13章將討論復(fù)制協(xié)議。
問題之間的相互關(guān)系
自然,這些問題不是互相孤立的。每個(gè)問題受到其他問題的影響,直至影響到解決這些問題的可行的方法,這正是本節(jié)所要討論的內(nèi)容。
分布式DBMS體系架構(gòu)
本節(jié)為分布式數(shù)據(jù)庫DBMS給出三個(gè)參考體系架構(gòu)
客戶/服務(wù)器系統(tǒng)
P2P分布式DBMS
多數(shù)據(jù)庫系統(tǒng)。
ANSI/SPARC體系架構(gòu)

圖中有三種數(shù)據(jù)視圖:
外部視圖(external view),即終端用戶例如程序員所見到的視圖;
內(nèi)部視圖(internal view),即系統(tǒng)或機(jī)器所見的視圖;
概念視圖(conceptual view),即企業(yè)所見的視圖。
這一體系架構(gòu)的最底層是內(nèi)部視圖
- 它處理數(shù)據(jù)的物理定義和組織。數(shù)據(jù)的位置以及不同的存儲(chǔ)設(shè)備,為了獲得并操縱數(shù)據(jù)所使用的機(jī)制等問題是這一層必須要考慮的。
另一個(gè)極端是
- 外部視圖,主要與用戶如何看待數(shù)據(jù)庫有關(guān)。個(gè)別用戶的視圖代表的是該用戶所存取的那部分?jǐn)?shù)據(jù),以及用戶看到的數(shù)據(jù)之間的關(guān)系。多個(gè)用戶可以共享同一個(gè)視圖,這些用戶的視圖構(gòu)成了一個(gè)外部模式。
集中式DBMS的通用體系架構(gòu)
DBMS是一個(gè)可由多個(gè)進(jìn)程(事務(wù)(transaction))組成的程序,而這些進(jìn)程又運(yùn)行它們自己的數(shù)據(jù)庫程序。
DBMS要和另外兩個(gè)部件交互
通信子系統(tǒng)
通信子系統(tǒng)支持DBMS和其他子系統(tǒng)交互,實(shí)現(xiàn)和應(yīng)用之間的聯(lián)絡(luò)。
- 例如,終端監(jiān)視器需要和DBMS聯(lián)絡(luò)以便運(yùn)行交互式事務(wù)。
操作系統(tǒng)。
- 操作系統(tǒng)提供了 DBMS和計(jì)算機(jī)資源(處理器、內(nèi)存、磁盤驅(qū)動(dòng)器等等)之間的接口。
集中式DBMS的功能層

圖中的箭頭指出了數(shù)據(jù)和控制流的方向。自頂向下來看,這些層分別是界面、控制、編譯、執(zhí)行、數(shù)據(jù)訪問以及一致性管理。
界面層(interface layer)
- 管理和應(yīng)用交互的界面。
控制層(control layer)
通過在查詢中加入語義完整性謂詞和授權(quán)謂詞完成對查詢的控制。
而這種語義完整性的限制和授權(quán)是由說明性語言所定義的,這會(huì)在第5章進(jìn)行討論。
這一層的輸出是用高級語言加以豐富的查詢。
查詢處理層(query processing)(或編譯(compilation))
把查詢映射成優(yōu)化后的低層操作的序列。
這一層與性能有關(guān),它把查詢分解成代數(shù)操作的樹結(jié)構(gòu)并試圖尋找操作的“最優(yōu)”順序,它的結(jié)果保存在訪問計(jì)劃里。
這一層的輸出是底層代碼(代數(shù)操作)表示的查詢。
執(zhí)行層(execution layer)
指揮訪問計(jì)劃的執(zhí)行,包括事務(wù)管理(提交,重做)以及代數(shù)操作的同步。
它通過調(diào)用數(shù)據(jù)訪問層的檢索和更新請求來解釋關(guān)系代數(shù)。
數(shù)據(jù)訪問層(data access layer)
管理實(shí)現(xiàn)文件和索引的數(shù)據(jù)結(jié)構(gòu)。
它也管理緩沖區(qū),對最經(jīng)常訪問的數(shù)據(jù)進(jìn)行快速緩存。
對于這一層的精心使用可以把對磁盤數(shù)據(jù)的讀寫降到最低。
一致層(consistency layer)
對并發(fā)控制進(jìn)行管理,同時(shí)記錄更新請求的日志。
這一層支持事務(wù)、系統(tǒng)、介質(zhì)的故障恢復(fù)。
分布式DBMS體系架構(gòu)的模型
DBMS的不同實(shí)現(xiàn)方式

構(gòu)造分布式DBMS有多種方法,該圖從以下幾個(gè)方面對系統(tǒng)進(jìn)行刻畫:
本地系統(tǒng)的自治性(Autonomy);
系統(tǒng)的分布(Distribution);
系統(tǒng)的異構(gòu)(Heterogeneity)。
自治性
這里所說的自治性(autonomy)是指對控制的分配,而不是數(shù)據(jù)的分配,它告訴我們在多大程度上每個(gè)單獨(dú)的DBMS能夠獨(dú)立地運(yùn)行。
自治性可以這樣來加以說明【Du and Elmagarmid,1989】:
設(shè)計(jì)自治:
- 每個(gè)單獨(dú)的DBMS可以自由地選擇數(shù)據(jù)模型和事務(wù)處理技術(shù)
通信自治:
- 每個(gè)單獨(dú)的DBMS可以自由地決定什么樣的信息可以提供給其他DBMS
執(zhí)行自治:
- 能夠用它自己的方式執(zhí)行提交事務(wù)
讓我們來看看如何使用這些特征來對DBMS進(jìn)行分類:
緊密集成(tight integration),
在多個(gè)數(shù)據(jù)管理程序中,有一個(gè)管理程序負(fù)責(zé)對每一個(gè)用戶的請求處理進(jìn)行控制,即使這個(gè)請求需要用到多個(gè)數(shù)據(jù)管理程序所提供的服務(wù)的情況下也是如此。
這種情況下,數(shù)據(jù)管理程序通常不會(huì)作為一個(gè)獨(dú)立的DBMS來運(yùn)行。
半自治系統(tǒng)(semiautonomous)
它由獨(dú)立運(yùn)行的DBMS組成,但是它們必須要加入一個(gè)聯(lián)盟才能實(shí)現(xiàn)本地?cái)?shù)據(jù)的共享
每一個(gè)這樣的DBMS要決定它擁有的數(shù)據(jù)的哪個(gè)部分可供其他DBMS使用。
它們還不是全自治的系統(tǒng),因?yàn)閷λ鼈儽仨氝M(jìn)行修改才能實(shí)現(xiàn)彼此間的信息交換.
全孤立(total isolation)系統(tǒng)
在這樣的系統(tǒng)里,每個(gè)DBMS都是獨(dú)立存在的,它們既不知道其他DBMS的存在,也不知道如何和它們通信
此時(shí),涉及多個(gè)數(shù)據(jù)庫的用戶事務(wù)處理特別困雄,因?yàn)橄到y(tǒng)內(nèi)不存在對于個(gè)別DBMS執(zhí)行所施加的全局控制.
分布
前面討論的自治指的是對于控制的分配(或分散),而下面要討論的分布則指的是如何處理數(shù)據(jù)的間題。
對于DBMS,已經(jīng)有了幾種不同的分布方式.可把它們抽象為
客戶/服務(wù)器(client/server)分布
把數(shù)據(jù)管理的任務(wù)集中在服務(wù)器端
而客戶端則集中于提供包括用戶界面在內(nèi)的應(yīng)用環(huán)境
通信的任務(wù)則由客戶和服務(wù)器共同承擔(dān)
P2P(peer-to-peer)分布
在P2P系統(tǒng)(peer-tbpeer systems)里不存在客戶端和服務(wù)器端機(jī)器這樣的差別
每臺(tái)機(jī)器具備完整的DBMS功能,同時(shí)可以和其他機(jī)器通信以完成査詢和事務(wù)的執(zhí)行
異構(gòu)性
在本書中和這個(gè)問題較為密切的是
數(shù)據(jù)模型
- 用不同的建模工具表示數(shù)據(jù)就會(huì)產(chǎn)生異構(gòu),這是由各個(gè)數(shù)據(jù)模型先天的表達(dá)能力和局限性所造成的。
查詢語言
查詢語言方面的異構(gòu)不僅與不同的模型采用完全不同的數(shù)據(jù)訪問的方式有關(guān)(從關(guān)系系統(tǒng)的一次一個(gè)集合,到某些面向?qū)ο笙到y(tǒng)的一次一個(gè)紀(jì)錄),而且還涉及語言的不同,即便是使用同一個(gè)模型也仍然會(huì)出現(xiàn)這個(gè)問題。
雖然SQL現(xiàn)在是標(biāo)準(zhǔn)的關(guān)系查詢語言,但是對它的實(shí)現(xiàn)不盡相同,而每個(gè)商家的語言則會(huì)帶著略有不同的風(fēng)格(有時(shí)甚至不同的語義,從而產(chǎn)生不同的結(jié)果)。
事務(wù)管理的協(xié)議。