什麼是關聯式資料庫 (RDBMS)?

關係式資料庫是一種資料庫,用於儲存並存取相關的資料點。關聯式資料庫的基礎建立於關聯模型之上,以直接且直覺的方式於資料表上顯示資料。在關係式資料庫中,資料表中的每一列資料行都是一條記錄,並有唯一的ID,稱為索引鍵。資料表的資料列中存放著資料的屬性,每條記錄通常有一個屬性值,這樣就很容易建立資料點之間的關係。

關聯式資料庫範例

以下簡單範例顯示,一個小型企業可能會使用兩個資料表來處理其產品的訂單。第一個資料表是客戶資訊表,所以每條記錄都包括客戶的姓名、地址、運送地址和帳單地址資訊、電話號碼和其他聯絡資訊。每個資訊位元 (每個屬性) 都在自己的資料列中,資料庫會為每列資料行分配唯一的 ID (索引鍵)。在第二個表格 - 客戶訂單表格 - 每筆記錄都包括下訂單的客戶 ID、訂購的產品、數量、選擇的尺寸和顏色等,但不包括客戶的姓名或聯絡資訊。

這兩個表格只有一個通用項目:ID 資料欄 (索引鍵)。但是由於這個共同的資料列,關係式資料庫可以在兩個資料表間建立關係。然後,公司訂單處理應用程式將訂單提交至資料庫時,資料庫就可以進入客戶訂單表,提取正確的產品訂單資訊,並利用該表格的客戶 ID 在客戶資訊表中查詢客戶的帳單和出貨資訊。接著倉庫就可以調出正確的產品,客戶就可以及時收到訂單,公司就可以獲得付款。

關聯式資料庫的結構

關聯模型代表邏輯資料結構 (資料表、檢視和索引) 與實體儲存結構分離。這種分離代表資料庫管理員可以管理物理資料儲存,而不影響將這些資料作為邏輯結構存取。例如,重新命名一個資料庫檔案並不會重新命名其中儲存的資料表。

邏輯操作和實體操作的區分也適用於資料庫操作,這些操作是明確定義的動作,使應用程式能夠管理資料和資料庫結構。邏輯操作允許應用程式指定其所需的內容,而實體操作則確定應如何存取該資料然後執行任務。

為了確保資料總是準確並可供存取,關係式資料庫會遵循一定的完整性規則。例如,完整性規則可以指定資料表中不允許有重複的資料行,以消除錯誤資訊進入資料庫的可能性。

關聯式模型

在資料庫初期,每個應用程式都以自己獨特的結構儲存資料。當開發人員想要構建應用程式來使用這些資料時,他們必須對特定的資料結構有很多瞭解,才能找到所需的資料。這些資料結構效率低下且難以維護,也難以最佳化以提供良好的應用效能。關係式資料庫模型就是為瞭解決多種任意資料結構的問題而設計的資料庫。

關聯式資料模型提供了一種標準方式來表示和查詢資料,任何應用程式均可加以使用。從一開始,開發人員就知道關係式資料庫模型的主要優勢在於對資料表的使用,資料表既直覺又高效率,可靈活儲存和存取結構化資訊。

隨著時間的推移,關係模型又出現了另一個優勢,因為開發人員開始使用結構化查詢語言 (SQL) 來編寫和查詢資料庫中的資料。多年來,SQL 已被廣泛使用為資料庫查詢語言。以關係代數為基礎,SQL 提供了內部一致的數學語言,使所有資料庫查詢的效能更容易提高。相比之下,其他方法必須定義個別查詢。

關聯式資料庫管理系統的優點

各種類型和規模的組織簡單而強大的關係模型將各種類型和規模的組織用來滿足各種資訊需求。他們將關係式資料庫用於追蹤庫存、處理電子商務交易、管理大量的關鍵客戶資訊等等。關係式資料庫可用來考慮任何資訊需求,在這些需求中,資料點彼此相互關聯,並且必須以安全且符合規則的一致方式加以管理。

關係式資料庫從 1970 年代開始就已經出現了。現今,關係模型的優勢仍然使它成為最廣泛接受的資料庫模型。

關聯式模型和資料一致性

關係模型最擅長在應用程式和資料庫副本 (稱為執行個體) 之間保持資料一致性。例如,當客戶在自動提款機上存款,然後在手機上查看帳戶餘額時,客戶希望看到這筆存款立即反映在更新的帳戶餘額中。關係式資料庫擅長處理這種資料一致性,確保一個資料庫的多個執行個體一直擁有相同的資料。

對於其他類型的資料庫,以維持此一即時一致性與大量資料相當困難。有些最新的資料庫 (如 NoSQL) 只能提供最終的一致性。」在本原則中,當資料庫被擴展或當多位使用者同時存取同一資料時,資料需要一些時間來「跟上進度」。有些使用情境可接受最終一致性,比如維護產品目錄中的清單,但對於關鍵的業務操作,比如購物車交易,關係式資料庫仍然需要採行黃金標準。

承諾和原子性

關係式資料庫會在極精細層次上處理業務規則和策略,有嚴格的承諾策略 (即使資料庫的改變變為永久性)。例如,假設有庫存資料庫追蹤三個總是一起使用的零件。當有一個零件從庫存中調出時,您也必須調出另外兩個零件。如果這三個部分的其中一個無法使用,則您不需要先提取其中一個部分,全部的三個部分都必須先可供使用,然後再執行任何承諾。關聯式資料庫將不確認一部分,除非知道它可適用於這三個條件。這種多方位的承諾能力被稱為原子性。原子性是保持資料庫中資料準確的關鍵,也是確保資料符合業務規則、法規和政策的關鍵。

ACID 特性和 RDBMS

四個重要特性定義關聯式資料庫交易:單元、一致性、隔離以及持久性 (通常稱為 ACID)。

  • 原子性定義了構成完整的資料庫交易的所有元素。
  • 一致性定義了在交易後保持資料點處於正確狀態的規則。
  • 隔離性使交易的效果在提交之前不會向其他人顯示,以避免混淆。
  • 耐久性確保一旦提交交易後,資料變化就成為永久性。

儲存程序和關聯式資料庫

資料存取涉及許多重複操作。例如,從資料表中獲取資訊的簡單查詢可能需要重複數百次或數千次才能得到所需結果。這些資料存取功能需要某種類型的程式碼來存取資料庫。應用程式開發人員不想要在每個新應用程式中撰寫這些函數的新程式碼。幸運的是,關係式資料庫允許您儲存過程,它是可以透過簡單的應用程式呼叫來存取的程式碼區塊。例如,一個儲存過程可以為多個應用程式的使用者提供一致的記錄標記。儲存過程還可以協助開發人員確保以特定方式實現應用程式中的某些資料功能。

資料庫鎖定和並行

當多個使用者或應用程式試圖同時更改相同的資料時,資料庫內會出現衝突。鎖定和並行技術可以減少衝突的可能性,同時保持資料的完整性。

鎖定可以防止其他使用者和應用程式在更新資料時存取資料。在一些資料庫中,鎖定適用於整個資料表,但這會對應用程式的效能產生負面影響。其他資料庫 (如 Oracle 關係式資料庫) 會在記錄層級上套用鎖定,使資料表內的其他記錄可用,有助於確保更好的應用程式效能。

並行管理多個使用者或應用程式同時在同一資料庫上調用查詢時的活動。這種功能可以根據為資料控制所定義的策略,為使用者和應用程式提供正確的存取權限。

選擇關聯式資料庫時應注意哪些事項

用於儲存、管理、查詢和擷取關聯式資料庫中所儲存資料的軟體,稱為關聯式資料庫管理系統 (RDBMS)。RDBMS 提供使用者和應用程式與資料庫之間的介面,以及管理資料儲存、存取和效能的管理功能。

在資料庫類型和關係式資料庫產品中選擇時,有幾個因素可以指導您的決策。您選擇的 RDBMS 需視您的業務需求而定。問自己以下問題:

  • 我們的資料準確性要求為何?資料的儲存和準確性是否會仰賴業務邏輯?我們的資料是否對準確性有嚴格的要求 (例如,財務資料和政府報告)?
  • 我們需要可擴展性嗎?需要管理的資料規模是多少,預期增長是多少?資料庫模型是否需要支援鏡像資料庫副本 (作為獨立的執行個體) 以實現可擴展性?如果需要,它能在這些執行個體之間保持資料的一致性嗎?
  • 並行有多重要?多個使用者和應用程式是否需要同時存取資料?資料庫軟體是否在保護資料的同時支援並行?
  • 我們對效能和可靠性的需求為何?我們是否需要高效能且高可靠性的產品?對查詢-回應效能有什麼要求?服務層級協議 (SLA) 或非計畫性停機的廠商承諾為何?

未來關聯式資料庫:自主驅動資料庫

多年來,關係式資料庫已經變得更好更快、更強大也更容易使用。不過,他們也變得更複雜,而管理資料庫一直以來都是全職的工作。開發人員不得不把大部分時間花在最佳化資料庫效能所需的管理活動上,而不是利用他們的專業知識來專注開發能為業務帶來價值的創新應用。

自主式技術現今建置於關聯式模型、雲端資料庫技術及機器學習的優勢,以提供全新的關聯式資料庫。自主驅動資料庫 (又稱自主資料庫) 保持了關係模型的強大功能和優勢,但使用人工智慧 (AI)、機器學習和自動化來監控和改善查詢效能和管理任務。例如,為了提升查詢效能,自我驅動資料庫可假設並測試索引,讓查詢更快,然後將最佳索引推送至實際執行環境 - 全部都在各自獨立執行。自主驅動資料庫可以持續地進行這些改進,而不需要人工參與。

自主技術讓開發人員能從管理資料庫的日常工作得到解脫。例如,他們不再需要提前確定基礎架構要求。相反地,有了自主驅動資料庫,他們可以根據需要新增儲存和運算資源,以支援資料庫的成長。只需幾個步驟,開發人員就可以輕鬆建立自主關係式資料庫,從而加快應用開發的時間。