當前位置:首頁 » 數據倉庫 » 分布式資料庫實例
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

分布式資料庫實例

發布時間: 2023-03-13 07:15:34

㈠ 如何編寫一個分布式資料庫

某種程度上看來,資料庫作為整個系統的核心,這句話其實並不誇張,資料庫的選型關繫到上層業務代碼實現的方方面面,現在比較流行的架構方案是上層業務邏輯微服務化,並且結合分布式緩存,這套框架已經基本能做到上層業務的彈性擴展,但是最底層的數據存儲還是很難去中心化(除非整個技術棧中去除關系型資料庫(RDBMS), 全部採用 NoSQL)。所以,經常是 RDBMS 成為整個系統的瓶頸。
在長期的斗爭中,大家總結出了很多方式來擴展最底層的關系型資料庫:
1. 主從,一主多從,雙寫,通過隊列暫存請求... 這些方案其實並沒有解決問題,寫入仍然是單點,而且對於 DBA 的挑戰比較大,今天我們暫時就不討論了。
2. 通過中間件 Sharding,常見的開源方案有: Cobar, TDDL, Vitess, Kingshard, MyCat 等,這些方案的思路是攔截 SQL 的請求通過 sharding key 和一定規則,將請求轉發/廣播到不同的 MySQL 實例上,從而實現水平擴展的效果,這個方案基本解決了單點寫入的問題,對於業務來說整體的吞吐也上來了,看上去不錯,這個方案是大多數業務遇到性能瓶頸的解決方案,但是缺點也是有的:
1)大多中間件都沒有解決動態擴容的問題,多採用了靜態的路由策略,擴容一般還處於人工 x2 的狀態,對 DBA 要求比較高。
2)從一定程度上來說都放棄了事務,這是由於一條語句有可能會涉及到多個資料庫實例,實現分布式 事務是一個比較難的事情,我們後面會詳細的介紹。
3)對業務不透明,需要指定 sharding key, 心智負擔較大

㈡ 什麼是分布式資料庫

精確的分布式資料庫定義:分布式資料庫是由一組數據組成的,這組數據分布在計算機網路中的不同的計算機上,網路中的每個節點具有獨立處理的能力(稱為場地自治),可以執行局部應用。同時,每個節點也能通過網路通信子系統執行全局應用。與之前的定義相比,更注重場地自治性以及自治場地之間的協作性。

分布式資料庫系統:一個粗略的定義是“分布式資料庫由一組數據組成,這些數據物理上分布在計算機網路的不同節點上(亦稱場地)上,邏輯上是屬於同一個系統。” 這里強調兩點:

(1)分布性:資料庫中的數據不是存儲在同一場地,更確切的說,不存儲在同一計算機的存儲設備上,這就可以和集中式資料庫相互區別。

(2)邏輯整體性:這些數據邏輯上是互相聯系的,是一個整體(邏輯上如同集中資料庫)。

㈢ 分布式系統的例子和這個例子的工作模式

分布式軟體系統(Distributed Software Systems)是支持分布式處理的軟體系統,是在由通信網路互聯的多處理機體系結構上執行任務的系統。它包括分布式操作系統、分布式程序設計語言及其編譯(解釋)系統、分布式文件系統和分布式資料庫系統等。

分布式操作系統負責管理分布式處理系統資源和控制分布式程序運行。它和集中式操作系統的區別在於資源管理、進程通信和系統結構等方面。

分布式程序設計語言用於編寫運行於分布式計算機系統上的分布式程序。一個分布式程序由若干個可以獨立執行的程序模塊組成,它們分布於一個分布式處理系統的多台計算機上被同時執行。它與集中式的程序設計語言相比有三個特點:分布性、通信性和穩健性。

分布式文件系統具有執行遠程文件存取的能力,並以透明方式對分布在網路上的文件進行管理和存取。

分布式資料庫系統由分布於多個計算機結點上的若干個資料庫系統組成,它提供有效的存取手段來操縱這些結點上的子資料庫。分布式資料庫在使用上可視為一個完整的資料庫,而實際上它是分布在地理分散的各個結點上。當然,分布在各個結點上的子資料庫在邏輯上是相關的。

---------------

分布式資料庫系統是由若干個站集合而成。這些站又稱為節點,它們在通訊網路中聯接在一起,每個節點都是一個獨立的資料庫系統,它們都擁有各自的資料庫、中央處理機、終端,以及各自的局部資料庫管理系統。因此分布式資料庫系統可以看作是一系列集中式資料庫系統的聯合。它們在邏輯上屬於同一系統,但在物理結構上是分布式的。

分布式資料庫系統已經成為信息處理學科的重要領域,正在迅速發展之中,原因基於以下幾點:

1、它可以解決組織機構分散而數據需要相互聯系的問題。比如銀行系統,總行與各分行處於不同的城市或城市中的各個地區,在業務上它們需要處理各自的數據,也需要彼此之間的交換和處理,這就需要分布式的系統。

2、如果一個組織機構需要增加新的相對自主的組織單位來擴充機構,則分布式資料庫系統可以在對當前機構影響最小的情況下進行擴充。

3、均衡負載的需要。數據的分解採用使局部應用達到最大,這使得各處理機之間的相互干擾降到最低。負載在各處理機之間分擔,可以避免臨界瓶頸。

4、當現有機構中已存在幾個資料庫系統,而且實現全局應用的必要性增加時,就可以由這些資料庫自下而上構成分布式資料庫系統。

5、相等規模的分布式資料庫系統在出現故障的幾率上不會比集中式資料庫系統低,但由於其故障的影響僅限於局部數據應用,因此就整個系統來講它的可靠性是比較高的。

特點

1、在分布式資料庫系統里不強調集中控制概念,它具有一個以全局資料庫管理員為基礎的分層控制結構,但是每個局部資料庫管理員都具有高度的自主權。

2、在分布式資料庫系統中數據獨立性概念也同樣重要,然而增加了一個新的概念,就是分布式透明性。所謂分布式透明性就是在編寫程序時好象數據沒有被分布一樣,因此把數據進行轉移不會影響程序的正確性。但程序的執行速度會有所降低。

3、集中式資料庫系統不同,數據冗餘在分布式系統中被看作是所需要的特性,其原因在於:首先,如果在需要的節點復制數據,則可以提高局部的應用性。其次,當某節點發生故障時,可以操作其它節點上的復制數據,因此這可以增加系統的有效性。當然,在分布式系統中對最佳冗餘度的評價是很復雜的。

分布式系統的類型,大致可以歸為三類:

1、分布式數據,但只有一個總? 據庫,沒有局部資料庫。

2、分層式處理,每一層都有自己的資料庫。

3、充分分散的分布式網路,沒有中央控制部分,各節點之間的聯接方式又可以有多種,如鬆散的聯接,緊密的聯接,動態的聯接,廣播通知式聯接等。

㈣ 資料庫有哪幾種

常用資料庫有:

1、關系型資料庫

關系型資料庫是由IBM的E.F. Codd於1970年發明的,它是一個表格資料庫,其中定義了數據,因此可以以多種不同的方式對其進行重組和訪問。關系資料庫由一組表組成,其中的數據屬於預定義的類別。每個表在一個列中至少有一個數據類別,並且每一行對於列中定義的類別都有一個特定的數據實例。

2、分布式資料庫

分布式資料庫是一種資料庫,資料庫存儲在多個物理位置,處理在網路中的不同點之間分散或復制。分布式資料庫可以是同構的,也可以是異構的。同構分布式資料庫系統中的所有物理位置都具有相同的底層硬體,並運行相同的操作系統和資料庫應用程序。異構分布式資料庫中的硬體、操作系統或資料庫應用程序在每個位置上可能是不同的。

3、雲資料庫

雲資料庫是針對虛擬化環境優化或構建的資料庫。雲資料庫提供了一些好處,比如可以按每次使用支付存儲容量和帶寬的費用,還可以根據需要提供可伸縮性和高可用性。雲資料庫還為企業提供了在軟體即服務部署中支持業務應用程序的機會。

4、NoSQL資料庫

NoSQL資料庫對於大型分布式數據集非常有用。NoSQL資料庫對於關系資料庫無法解決的大數據性能問題非常有效。當組織必須分析大量非結構化數據或存儲在雲中多個虛擬伺服器上的數據時,它們是最有效的。

5、面向對象的資料庫

使用面向對象編程語言創建的項通常存儲在關系資料庫中,但是面向對象資料庫非常適合於這些項。面向對象的資料庫是圍繞對象(而不是操作)和數據(而不是邏輯)組織的。例如,關系資料庫中的多媒體記錄可以是可定義的數據對象,而不是字母數字值。

6、圖形資料庫

面向圖形的資料庫是一種NoSQL資料庫,它使用圖形理論存儲、映射和查詢關系。圖資料庫基本上是節點和邊的集合,其中每個節點表示一個實體,每個邊表示節點之間的連接。

㈤ 如何用SQL Server建立分布式資料庫

很多組織機構慢慢的在不同的伺服器和地點部署SQL Server資料庫——為各種應用和目的——開始考慮通過SQL Server集群的方式來合並。

將SQL Server實例和資料庫合並到一個中心的地點可以減低成本,尤其是維護和軟硬體許可證。此外,在合並之後,可以減低所需機器的數量,這些機器就可以用於備用。

當尋找一個備用,比如高可用性的環境,企業常常決定部署Microsoft的集群架構。我常常被問到小的集群(由較少的節點組成)SQL Server實例和作為中心解決方案的大的集群哪一種更好。在我們比較了這兩個集群架構之後,我讓你們自己做決定。

什麼是Microsoft集群伺服器

MSCS是一個Windows Server企業版中的內建功能。這個軟體支持兩個或者更多伺服器節點連接起來形成一個「集群」,來獲得更高的可用性和對數據和應用更簡便的管理。MSCS可以自動的檢查到伺服器或者應用的失效,並從中恢復。你也可以使用它來(手動)移動伺服器之間的負載來平衡利用率以及無需停機時間來調度計劃中的維護任務。

這種集群設計使用軟體「心跳」來檢測應用或者伺服器的失效。在伺服器失效的事件中,它會自動將資源(比如磁碟和IP地址)的所有權從失效的伺服器轉移到活動的伺服器。注意還有方法可以保持心跳連接的更高的可用性,比如站點全面失效的情況下。

MSCS不要求在客戶計算機上安裝任何特殊軟體,因此用戶在災難恢復的經歷依賴於客戶-伺服器應用中客戶一方的本質。客戶的重新連接常常是透明的,因為MSCS在相同的IP地址上重啟應用、文件共享等等。進一步,為了災難恢復,集群的節點可以處於分離的、遙遠的地點。

在集群伺服器上的SQL Server

SQL Server 2000可以配置為最多4個節點的集群,而SQL Server 2005可以配置為最多8個節點的集群。當一個SQL Server實例被配置為集群之後,它的磁碟資源、IP地址和服務就形成了集群組來實現災難恢復。

SQL Server 2000允許在一個集群上安裝16個實例。根據在線幫助,「SQL Server 2005在一個伺服器或者處理器上可以支持最多50個SQL Server實例,」但是,「只能使用25個硬碟驅動器符,因此如果你需要更多的實例,那麼需要預先規劃。」

注意SQL Server實例的災難恢復階段是指SQL Server服務開始所需要的時間,這可能從幾秒鍾到幾分鍾。如果你需要更高的可用性,考慮使用其他的方法,比如log shipping和資料庫鏡像。

單個的大的SQL Server集群還是小的集群

下面是大的、由更多的節點組成的集群的優點:

◆更高的可用新(更多的節點來災難恢復)。

◆更多的負載均衡選擇(更多的節點)。

◆更低廉的維護成本。

◆增長的敏捷性。多達4個或者8個節點,依賴於SQL版本。

◆增強的管理性和簡化環境(需要管理的少了)。

◆更少的停機時間(災難恢復更多的選擇)。

◆災難恢復性能不受集群中的節點數目影響。

下面是單個大的集群的缺點:

◆集群節點數目有限(如果需要第9個節點怎麼辦)。

◆在集群中SQL實例數目有限。

◆沒有對失效的防護——如果磁碟陣列失效了,就不會發生災難恢復。

◆使用災難恢復集群,無法在資料庫級別或者資料庫對象級別,比如表,創建災難恢復集群。

虛擬化和集群

虛擬機也可以參與到集群中,虛擬和物理機器可以集群在一起,不會發生問題。SQL Server實例可以在虛擬機上,但是性能可能會受用影響,這依賴於實例所消耗的資源。在虛擬機上安裝SQL Server實例之前,你需要進行壓力測試來驗證它是否可以承受必要的負載。

在這種靈活的架構中,如果虛擬機和物理機器集群在一起,你可以在虛擬機和物理機器之間對SQL Server進行負載均衡。比如,使用虛擬機上的SQL Server實例開發應用。然後在你需要對開發實例進行壓力測試的時候,將它災難恢復到集群中更強的物理機器上。

集群伺服器可以用於SQL Server的高可用性、災難恢復、可擴展性和負載均衡。單個更大的、由更多的節點組成的集群往往比小的、只有少數節點的集群更好。大個集群允許更靈活環境,為了負載均衡和維護,實例可以從一個節點移動到另外的節點。

㈥ 分布式資料庫的典型應用

最典型應用的銀行領域為例: 將分散的資料庫從邏輯上聯系在一起,可以大大提高數據的管理效率。這就是總行和支行之間的關系:總行與全國各地的支行之間既有各自需要處理的數據,又有需要交換的數據。 將數據分散存儲在各地的資料庫中,可提高故障發生時的數據安全性。一旦上海支行的資料庫出現故障,比如停機、損壞,也是僅僅限於上海支行,總行、廣州等其他地區的支行資料庫的數據都不會受到影響。 分布式架構具備良好的擴展性。比如建立一個新的海外支行時,只要將新建的資料庫加入到原有的分布式資料庫架構中就可以,以最小的代價在不影響原有支行、總行的情況下完成資料庫的擴展。 以冗餘方式進行數據的備份,以備在系統崩潰、數據丟失的情況下仍有備份數據可以進行恢復。

㈦ 如何編寫一個分布式資料庫

基於hadoop的分布式資料庫有hbase。安裝hbase除了要安裝hadoop外,還要安裝Zookeeper。
分布式hbase安裝和分布式hadoop安裝方法差不多,hbase要有master和regionserver,regionserver相當於slave,你可以在maser上面安裝好hbase,然後把它拷貝到其它slave伺服器,再修改一些配置.

㈧ 分布式資料庫、分布式操作系統的通俗解釋

通俗?呵呵分布式的意思就是物理上不在一起,是分開的,但宏觀來說是在一起的只是通過網路連接形成以個體系就像網吧是個區域網,多個網吧之間不在一起但多個網吧連接在一起,他就形成了一個體系,廣域網

㈨ 解析:怎樣理解分布處理和分布式資料庫

一個分布式資料庫在用戶面前為單個邏輯資料庫,但實際上是由存儲在多台計算機上的一組資料庫組成。在幾台計算機 上的資料庫通過網路可同時修改和存取,每一資料庫受它的局部的DBMS控制。分布式資料庫中每一個資料庫伺服器合作地維護全局資料庫的一致性。 在系統中的每一台計算機稱為結點。如果一結點具有管理資料庫 軟體,該結點稱為資料庫伺服器。如果一個結點為請求伺服器的信息的一應用,該結點稱為客戶。在ORACLE客戶,執行資料庫應用,可存取數據信息和與用戶交互。在伺服器,執行ORACLE軟體,處理對ORACLE資料庫並發、共享數據存取。ORACLE允許上述兩部分在同一台計算機上,但當客戶部分和伺服器部分是由網連接的不同計算機上時,更有效。 分布處理是由多台處理機分擔單個任務的處理。在ORACLE資料庫系統中分布處理的例子如: 客戶和伺服器是位於網路連接的不同計算機上。 單台計算機上有多個處理器,不同處理器分別執行客戶應用。 SQL*NET是ORACLE網路介面,允許運行在網路工作站的ORACLE工具和伺服器上,可存取、修改、共享和存儲在其它伺服器上的數據。SAQL*NET可被認為是網路通信的程序介面。SQL*NET利用通信協議和應用程序介面(API)為OARCLE提供一個分布式資料庫和分布處理。 SQL*NET驅動器為在資料庫伺服器上運行的ORACLE進程與ORACLE工具的用戶進程之間提供一個介面。 參與分布式資料庫的每一伺服器是分別地獨立地管理資料庫,好 像每一資料庫不是網路化的資料庫。每一個資料庫獨立地被管理,稱為場地自治性。場地自治性有下列好處: ◆系統的結點可反映公司的邏輯組織。 ◆由局部資料庫管理員控制局部數據,這樣每一個資料庫管理員責任域要 小一些,可更好管理。 ◆只要一個資料庫和網路是可用,那麼全局資料庫可部分可用。不會因一個資料庫的故 障而停止全部操作或引起性能瓶頸。 ◆故障恢復通常在單個結點上進行。 ◆每個局部資料庫存在一個數據字典。 ◆結點可獨立地升級軟體。 可從分布式資料庫的所有結點存取模式對象,因此正像非分布的局部的DBMS,必須提供一種機制,可在局部資料庫中引用一個對象。分布式DBMS必須提供一種命名模式,以致分布式資料庫中一個對象可在應用中唯一標識和引用。一般彩在層次結構的每一層實施唯一性。分布式DVMS簡單地擴充層次命名模型,實施在網路上唯一資料庫命名。因此一個對象的全局對象名保證在分布式資料庫內是唯一。 ORACLE允許在SQL語句中使用佤對象名引用分布式資料庫中的模式對象(表、視圖和過程)。在ORACLE中,一個模式對象的全局名由三部分組成:包含對象的模式名、對象名、資料庫名、其形式如: [email protected] 其中SCOTT為模式名,EMP為表名,@符號之後為資料庫名. 一個遠程查詢為一查詢,是從一個或多個遠程表中選擇信息,這些表駐留在同一個遠程結點. 一個分布式查詢可從兩個或多個結點檢索數據.一個分布式更新可修改兩個或兩個以上結點的數據. 一個遠程事務為一個事務,包含一人或多個遠程語句,它所引用的全部是在同一個遠程結點上.一個分布式事務中一個事務,包含一個或多個語句修改分布式資料庫的兩個或多個不同結點的數據. 在分布式資料庫中,事務控制必須在網路上直轄市,保證數據一致性.兩階段提交機制保證參與分布式事務的全部資料庫伺服器是全部提交或全部回滾事務中的語句. ORACLE分布式資料庫系統結構可由ORACLE資料庫管理員為終端用戶和應用提供位置透明性,利用視圖、同義詞、過程可提供ORACLE分布式資料庫系統中的位置透明性. ORACLE允許在SELECT(查詢)、INSERT、UPDATE、DELETE、SELECT…FOR UPDATE和LOCK TABLE語句中引用遠程數據。對於查詢,包含有連接、聚合、子查詢和SELECT …FOR UPDATE,可引用本地的、遠程的表和視圖。對於UPDATE、INSERT、DELETE和LOCK TABLE語句可引用本地的和遠程的表。注意在引用LONG和LONG RAW列、序列、修改表和封鎖表時,必須位於同一個結點。ORACLE不允許作遠程DDL語句。 在單場地或分布式資料庫中,所有事務都是用COMMIT或ROLLBACK語句中止。ORACLE提供兩種機制實現分布式資料庫中表重復的透明性:錶快照提供非同步的表重復;觸發器實現同步的表的重復。在兩種情況下,都實現了對表重復的透明性。