Oracle 和 DB2,比較與相容性/架構/摘要
本章開頭介紹的通用關係資料庫架構,為描述關係資料庫主要功能元件提供了一個框架。然後,每個主要的架構區域,儲存、記憶體和程序,都將針對 Oracle 和 DB2 的具體情況進行更詳細的討論。雖然在實際資料庫程式碼級別上的實現存在很大差異,但資料庫的工作方式非常相似。這並不奇怪,因為它們使用標準的經過驗證的計算機科學技術進行記憶體管理,使用 Codd 博士開創性著作中描述的結構來處理關係資料,並且都在實現相同的基本功能。可以看出,兩者都使用在例項、資料庫和應用程式級別分配的記憶體,並且這些記憶體區域中實現的結構取決於資料庫是獨立的(專用)還是共享的(分割槽)。在兩種情況下,都使用相同技術將磁碟資料儲存在記憶體中(緩衝池),緩衝池由類似的 LRU 演算法提供服務。
本章中描述的架構必然是簡化的。本章旨在提供 Oracle 和 DB2 相當詳細的功能概述,但為了清晰起見,省略了一些駐留在磁碟上的檔案、記憶體結構和程序。在適當的後續部分將介紹此架構概述中未包含的重要例項,並參考此處使用的通用架構以提供上下文。Oracle 和 DB2 是複雜且成熟的產品,並且存在特定於每個資料庫中不同選項和功能的結構和流程。其中一些將在後續部分介紹,但本部分的主要目的是介紹有關每個 DBMS 如何實現和管理基本資料庫操作(從記憶體到磁碟以及反之亦然的讀寫資料,記錄更改,處理使用者連線,鎖定資料庫中的物件以及管理緩衝池)的通用概念。
熟悉 Oracle 和/或 DB2 的專業人員可以輕鬆識別特定於兩者的元件,以及每個元件的獨特結構。軟體的一大優勢(也是劣勢)在於,通常有很多不同的方式來實現相同的功能。這些差異通常由資料庫供應商描述為“競爭差異化”;他們選擇這種實現的原因是它更優越。
從通用架構開始的原因是,只熟悉一個數據庫的人可以瞭解另一個數據庫如何實現相同的功能——如果你願意,可以將其比作英語到西班牙語的翻譯。本書的目標不僅僅是比較和對比資料庫實現,而是描述在 DB2 中如何實現 Oracle 相容性,為此,有必要了解每個資料庫如何處理我們需要在兩者中等效的功能實現。
對於希望更改資料庫的組織來說,關於相似性和差異的架構討論只是一個起點。必須對所有相似性和差異進行詳細比較,因為沒有兩個 Oracle 或 DB2 實現是相同的。不同的組織實現不同的功能和選項,而更改資料庫是一個重要的過程。墨菲定律指出,在這個過程開始時被忽視的一些差異將導致整個專案失敗,因此重要的是儘可能全面地涵蓋所有差異,以便你能夠從一開始就找到兩個非常重要的問題的答案
a) 我們是否已經確定對我們重要的差異,以及
b) 我們是否已經確定了所有差異?
所有關係資料庫都將使用者資料儲存為表中的行和列。這種結構及其訪問方法由 Codd 博士在 1970 年的開創性論文中描述。資料庫的操作由軟體處理。由於模型本質上是相同的,並且軟體是靈活的,因此資料和 DBMS 似乎應該是可互換的。隨著資料庫功能的發展,通用功能的實現差異以及有價值但專有的功能的新增意味著資料庫實現已經分化,現在僅僅知道資料庫如何工作是不夠的,還需要了解你正在使用的哪個資料庫。自原始資料庫實現以來,一直存在資料庫遷移——將資料從一個供應商的資料庫遷移到另一個供應商的資料庫。這涉及到全面的資料操作,稱為提取、轉換和載入 (ETL)。資料落地後,還需要進行另一項工作,即修改應用程式邏輯(在使用者程式中,以及在資料庫中的儲存過程、觸發器、規則和函式中),以使你的系統能夠與新遷移的資料庫協同工作。
這一過程中的下一個邏輯步驟是相容性,最終目標是能夠將資料從一個數據庫解除安裝並載入到另一個數據庫,而無需擔心操作不相容的資料結構,並且訪問這些資料的應用程式只需將其連線從原始資料庫路由到新資料庫即可。這種方法是透過供應商實現競爭供應商的功能來實現的。目的是使整體資料庫遷移或異構資料庫的互操作性變得無縫。雖然確實有一些專案已經順利完成了,但所有這些專案都需要以下內容
• 瞭解源資料庫的實現細節。
• 瞭解目標資料庫的實現細節。
• 瞭解源資料庫系統中使用的功能(資料結構和應用程式邏輯)的清單
• 將源資料庫中的結構對映到目標資料庫。
所有使用者實現都是不同的,它們使用資料庫功能的不同子集,並且並非所有這些功能在不同的資料庫之間都是完全等效的。
本華夏公益教科書的剩餘部分提供了有關 Oracle 和 DB2 實現細節的更全面列表,使用記憶體模型、程序模型和儲存模型的框架進行比較。