Oracle 和 DB2,比較與相容性/資料庫擴充套件/共享架構
有很多共享硬體和軟體架構可用於實現高可用性、容錯和擴充套件。就像“資料庫”一詞的含義取決於上下文(例項、伺服器、檔案系統)一樣,“叢集”在資料庫領域也是一個普遍存在的詞。
雖然這些詞似乎代表著一種語義上的“誰是誰非”的方法,排斥了那些不瞭解笑話的人,但這實際上是一種有用術語的副作用。叢集是將事物分組在一起。它可以與索引相關(正如我們之前所見),也可以與硬體相關——將一組機器分組在一起並作為一個單一的協調資源執行。在資料庫世界中,一組機器協同處理資料庫,恰如其分地被稱為“叢集資料庫”。不幸的是,這兩個詞——資料庫和叢集——都是獨立的詞,每個詞都有大約三種含義。對於這兩個詞,它們使用的上下文提供了含義。
共享一切 (SE) 架構實際上只是上面描述的一般資料庫架構的擴充套件。共享的是一組處理器之間的記憶體。以這種方式執行的資料庫被稱為 SMP(對稱多處理)。處理器之間的通訊通常透過匯流排進行,不過也可以是交叉開關或片上網格。使用現代多核處理器(其中 CPU 晶片中的每個核心都是連線到同一匯流排的處理器),任何在這些處理器上執行的應用程式(不僅僅是資料庫)都可以是 SMP。
共享一切架構的優點是,Oracle 和 DB2 都可以在沒有任何更改的情況下利用這種能力。如果您將這兩個資料庫中的任何一個放在多核系統上,它將利用額外的處理能力(這就是我們為什麼將共享一切描述為一般資料庫架構的簡單擴充套件)。
這就是許多資料庫伺服器以及正在執行的資料庫例項訪問單個數據庫檔案系統的地方。一個數據庫伺服器可以執行一個或多個數據庫例項。在迄今為止的架構描述中,我們一直在描述一個針對磁碟上的單個數據庫執行的單個數據庫例項。在共享磁碟架構中,多個數據庫例項與磁碟上的單個數據庫進行叢集。這種架構看起來像這樣
在共享磁碟架構中,非常龐大的計算機網路可以對單個數據集進行操作,而無需複製或分片該資料集。顯然,在這種情況下,資料集本身存在一個單點故障,但是可以透過映象資料集(以及使用高可用性技術,包括複製)來緩解這種情況。在共享磁碟系統中,磁碟上的資料塊(或頁)只能有一個所有者。塊(或頁)的所有權將轉移到正在執行更新的例項。這會產生網路流量,通常會在資料庫例項之間實施專用基礎設施以應對這種流量。共享磁碟是同步多主(每個資料庫例項都可以同時(同步地)寫入(即為主))的一個示例。這是一個功能強大的實現,最適合具有龐大物流或製造系統的組織(即適用於 SAP 的 R3 等應用程式)。共享磁碟系統需要仔細的設計和實施。他們需要大量的基礎設施和管理來維持執行。好訊息是,如果您需要這種馬力,您是一家財富型公司,並且擁有足夠的收入來為其提供資金。
在共享無 (SN) 架構中,資料庫(磁碟上的資料)可以被認為是一個邏輯整體——整個磁碟資料的集合構成了資料庫,但資料總體被物理地分成單獨的資料總體。這個概念稱為分割槽或分片。分割槽可以在資料庫內進行(其中資料庫中的一個表被分成多個分割槽)或跨資料庫進行(其中資料庫被分成多個分割槽,每個分割槽都有一個針對其執行的資料庫例項)。正如架構所暗示的那樣,沒有共享,單個數據庫例項和資料庫分割槽看起來並執行起來就像圖 N 中描述的架構一樣。一般資料庫架構在上面。資料庫對終端使用者看起來像一個統一整體的方式由一個協調器處理,它將使用者請求定向到適當的例項,並管理資料的分配(即確保插入資料庫的資料進入適當的分割槽)。共享無架構看起來像這樣
在共享無系統中,資料庫被分成多個“分割槽”或“分片”。每個部分都包含整個資料集中的一個已知的“塊”。之所以是“已知的”,是因為資料只存在於一個地方,因此對該資料的讀寫訪問需要知道它在哪裡。“塊”由您的需求決定,可以按地理位置(即按州)或時間(我的月份或年份)來劃分。這種架構的優點是沒有單點故障——如果其中一個數據集不可用,其餘資料集仍然可以執行。這也分散了處理過程,您有很多分割槽,每個分割槽都有自己獨立執行的資料庫例項。這種型別的安排非常適合 DSS 型別的系統,並且可以幾乎無限地擴充套件。考慮這種型別的安排的一個因素是資料需要在一個地方——這意味著如果它需要移動(即一組資料需要從一個州轉移到另一個州,或者從一年轉移到另一年),它可能會產生大量的網路流量或需要進行資料遷移。另一個可能出現的情況是資料可能變得不平衡——即聖誕樹企業可能在年底看到大量資料。雖然這似乎很明顯,但不太明顯的是單片資料集中的資料傾斜,因為所有資料都在同一個地方。如果在實施共享無解決方案時沒有考慮到這一點,一個分片或分割槽最終可能會獲得不成比例的活動量。
每種架構的優缺點在此只是簡單介紹。關於哪種架構更優越的激烈爭論是存在的,它們在架構層面上與法拉利是否比水泥攪拌車更適合你一樣相關。這取決於你想要做什麼以及你有多少錢。當然,如果您有這麼多錢,並且只是想出於純粹的智力原因來探討這個話題,那麼 IBM 和 Oracle 都將非常樂意為您提供幫助。


