《分布式數(shù)據(jù)庫系統(tǒng)原理》第一章 讀書筆記

引言

分布式數(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ǔ)問題

  1. 分布及復(fù)制數(shù)據(jù)的透明管理

  2. 分布式事務(wù)提供可靠的數(shù)據(jù)存取

  3. 改進(jìn)的性能

  4. 更為容易的系統(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)對幾種不同類型透明

  1. 數(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é)
  1. 網(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)
  1. 復(fù)制透明

復(fù)制

  • 這里指分布式系統(tǒng)中數(shù)據(jù)的復(fù)制,即副本的概念

數(shù)據(jù)復(fù)制透明

  • 即是否向用戶隱藏副本的存在,而不是副本的位置,副本位置屬于網(wǎng)絡(luò)透明范疇
  1. 分片透明

分片的兩種方式:

  • 水平分片(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)

1.png

圖中有三種數(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的功能層

40A5FD8A-59E2-49C7-A141-774D888934F6.png

圖中的箭頭指出了數(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)方式

ABECCFEA-D5FB-4083-B419-8EAA7FB3B41D.png

構(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é)議。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容