- 新型數據庫系統:原理、架構與實踐
- 金培權 趙旭劍編著
- 2663字
- 2024-06-06 18:41:12
1.3 新型數據庫應用的發展
關系數據庫理論與技術是20世紀70年代為了滿足各類企業或組織的數據管理需求而提出的。限于以往數據采集手段的限制以及當時的應用需求,關系數據庫技術要求存儲的數據必須滿足特定的要求,例如屬性值不可分的1NF要求,以及實體之間只能通過外碼建立聯系等。但是,隨著計算機網絡技術的發展,尤其是20世紀90年代以來的互聯網應用的急速發展,許多新型的數據庫應用開始出現。它們對傳統的關系數據庫技術提出了極大的挑戰,也促進了新型數據庫技術的發展。本節主要介紹當前一些新型的數據庫應用。
1.3.1 分布式數據庫應用
分布式數據庫(distributed databases,DDB)通常指物理上分散而邏輯上集中的數據庫系統。分布式數據庫系統通常使用較小的計算機系統,每臺計算機可單獨放在一個地方,每臺計算機中都有DBMS的一份完整副本,并具有自己局部的數據庫,位于不同地點的許多計算機通過網絡互相連接,共同組成一個完整的、全局的大型數據庫。圖1-9給出了分布式數據庫應用的一個示例。

圖1-9 分布式數據庫應用示例
在分布式數據庫應用中,每個站點(site)自身具有完全的本地數據庫系統,所有站點協同工作,組成了一個邏輯上統一的數據庫。站點數據由分布式DBMS(DDBMS)管理——DBMS+分布式擴展模塊。分布式數據庫系統中的應用可分為本地應用(局部應用)和全局應用,用戶也可以相應地分為本地用戶和全局用戶。本地應用和本地用戶只能訪問其所注冊的那個站點上的數據,而全局應用和全局用戶則可訪問多個站點上的數據。以銀行系統為例,目前很多銀行都建立了全國通存通兌系統。利用該系統,不僅可以使一個支行的用戶通過訪問支行的賬目數據庫來完成現金的存取等交易,實現所謂的局部應用,還可以通過計算機網絡實現異地異行現金轉賬等業務,從一個支行的賬戶中轉出若干金額到另一個支行的賬戶中去,實現同時訪問兩個支行(異地)上的數據庫的所謂全局應用。
分布式數據庫系統的特點可總結為下面幾點。
(1)物理分布性
在分布式數據庫系統中,數據是物理分布在不同的站點上的。不同站點之間相距甚遠,如在幾十千米以上;也可以相距很近,如在同一個大樓里。站點之間通過網絡聯系,每一個站點一般使用一個集中式數據庫系統。
(2)邏輯整體性
分布式數據庫系統中的數據雖然從物理上說分布在不同的站點,但各個站點上的數據在邏輯上屬于同一個系統,對用戶而言是一個整體,就像一個集中式數據庫一樣。物理分布性、邏輯整體性是分布式數據庫系統最主要的特點。因此,如果簡單地將多個集中式數據庫系統通過網絡相連接并不能構成分布式數據庫系統,因為這種方法不能對用戶應用提供一個統一的數據庫視圖,用戶在訪問數據時必須要顯式地說明數據的存儲站點等信息。
(3)站點自治性
分布式數據庫系統強調站點自治,即每個站點都擁有自己獨立的本地數據庫系統,有自己獨立的操作系統、CPU等,也有專門的數據庫管理人員,具有高度的自治能力。在一些分布式數據庫系統中,還允許每個站點有異構的數據庫系統。站點自治性使得本地應用都可以在單個站點上完成,有利于系統性能的提升。
(4)數據透明性
由于分布式數據庫系統的物理分布特性,其要能夠支持涉及多個站點的全局應用,便于全局應用的用戶使用分布式數據庫系統,應將主要精力集中在應用的邏輯上,而不是數據的位置分布上。因此,分布式數據庫系統提供了數據透明性,即用戶不需要知道數據的物理位置,以及如何訪問某個特定站點的數據。
數據透明性包括位置透明性、復制透明性和分片透明性。
1)位置透明性是指用戶和應用程序不必知道它所用的數據在什么站點。用戶所要使用的數據很可能在本地的數據庫中,也可能在外地的數據庫中。系統具有數據位置透明性時,用戶就不必關心數據是在本地還是外地,應用程序的邏輯變得簡單,而且允許數據在使用方式改變時,不必重寫程序,這樣避免了應用程序的頻繁變更,也降低了應用程序的復雜程度。
2)復制透明性是指在分布式系統中,為了提高系統的性能和可用性,將部分數據同時重復地存放在不同的站點,這樣,在本地數據庫中也可能包含外地數據庫中的數據。應用程序執行時,就可以在本地數據庫的基礎上運行,盡量不借助通信網絡去與外地數據庫聯系,而用戶還以為在使用外地數據庫中的數據。這樣可以避免站點之間的通信開銷,加快應用程序的運行速度,對查詢操作比較有利。但是,各個站點大量復制其他站點的數據會使數據的更新操作涉及所有復制數據,提高維護數據一致性的代價,也會加大系統的維護開銷。
3)分片透明性是指用戶不需要知道數據庫中的數據是如何分片的。數據分片是指將數據分割成不同的片段,例如將學生數據分為計算機系學生片段和電子系學生片段,并且可以將計算機學生片段存儲在站點A,將電子系學生片段存儲在站點B。但這種數據分片對于用戶來說是透明的。
圖1-10給出了分片透明性的一個示例。在這個例子中,學生數據被分成了兩個片段CS_Student和EE_Student并且分別存儲在站點A和站點B上,當用戶在站點C上發出學生數據查詢時,系統會自動完成分片上的查詢及結果匯總工作,用戶并不知道這些與分片相關的處理細節。

圖1-10 分片透明性示例
1.3.2 Web 2.0應用
隨著Web 2.0的興起,非關系數據庫現在成為一個極其熱門的新領域,非關系數據庫產品迅速發展。而傳統的關系數據庫在應對Web 2.0網站,特別是超大規模和高并發的社交網絡網站時已經顯得力不從心,暴露了很多難以克服的問題。
Web 2.0應用對數據庫的需求可簡單總結為如下幾個方面:
(1)對數據庫高并發讀/寫的需求
Web 2.0網站要根據用戶個性化信息來實時生成動態頁面和提供動態信息,所以基本上無法使用動態頁面靜態化技術,因此數據庫并發負載非常高,往往要達到每秒上萬次讀/寫請求。關系數據庫應付上每秒萬次SQL查詢還勉強可以,但是要應付每秒上萬次SQL寫數據請求,硬盤I/O就無法承受了。其實對于普通的BBS網站來說,往往也存在對高并發寫請求的需求。
(2)對海量數據的高效率存儲和訪問的需求
對于大型的社交網絡網站,用戶每天產生海量的動態。以Friendfeed為例,一個月就有約2.5億條用戶動態。對于關系數據庫來說,在一張2.5億條記錄的表里面進行SQL查詢,效率是極其低下甚至不可忍受的。再如大型Web網站的用戶登錄系統,如騰訊、盛大等,動輒數以億計的賬號,關系數據庫也很難應對。
(3)對數據庫的高可擴展性和高可用性的需求
在基于Web的架構當中,數據庫是最難進行橫向擴展的。當一個應用系統的用戶量和訪問量與日俱增的時候,數據庫卻沒有辦法像Web服務器和應用服務器那樣簡單地通過添加更多的硬件和服務節點來擴展性能與負載能力。對于很多需要提供24小時不間斷服務的網站來說,對數據庫系統進行升級和擴展是非常痛苦的事情,往往需要停機維護和數據遷移。