跳轉至

建立 2026-11-12 更新 2026-11-12 HL only

A3.4 替代資料庫與資料倉儲(HL)

替代資料庫與資料倉儲(Alternative databases and data warehouses)介紹關聯式資料庫以外的資料儲存方式:NoSQL 資料庫、分散式資料庫,以及專為分析大量歷史資料設計的資料倉儲。本子題只有 HL 需要學,重點是判斷不同情境適合哪一種資料庫。

HL 專屬子題

A3.4 整個子題只出現在 HL 考卷,SL 學生可略過本頁。

為什麼需要 NoSQL?

關聯式資料庫結構嚴謹,但面對 資料量極大、結構常變動、需要水平擴充到多台伺服器 的情境(例如社群網站、物聯網感測器資料),NoSQL(Not only SQL)資料庫更有彈性。

類型 資料模型 適合用途 例子
鍵值(key–value) 一個鍵對應一個值 快取、使用者工作階段 Redis
文件(document) JSON 類文件,每份結構可不同 內容管理、商品目錄 MongoDB
寬欄(wide-column) 每列可有不同欄位,依欄族儲存 大量寫入、時間序列 Cassandra
圖形(graph) 節點與邊 社群關係、推薦系統、詐騙偵測 Neo4j
{
  "_id": "s101",
  "name": "Chris",
  "courses": [
    { "id": "CS-HL", "score": 7 },
    { "id": "MATH-SL", "score": 6 }
  ]
}

上例的文件資料庫把學生與修課成績放在同一份文件,一次讀取就能拿到全部,不需要 JOIN。

關聯式與 NoSQL 怎麼比較?

比較 關聯式(SQL) NoSQL
結構 固定綱要(schema) 彈性或無綱要
擴充方式 主要垂直擴充(升級單台伺服器) 水平擴充(增加伺服器)
一致性 強調 ACID 常採最終一致性(eventual consistency),換取可用性與速度
查詢 標準 SQL、複雜 JOIN 依產品而異,JOIN 能力較弱
適合 金融交易、成績系統等結構固定、正確性要求高的資料 巨量、快速變動、半結構化資料

什麼是分散式資料庫?

分散式資料庫(distributed database)把資料存放在多個地點的多台伺服器上,對使用者來說仍像一個資料庫。

  • 分片(sharding):把資料依規則切開放到不同伺服器,例如依使用者所在地區。
  • 複寫(replication):同一份資料存多份副本,一台故障時其他副本可接手。
  • 優點:可靠度高、可擴充、資料靠近使用者可降低延遲。
  • 缺點:維持各副本一致很困難,設計與維護成本高,網路分割時必須在一致性與可用性之間取捨(CAP 定理)。

資料倉儲和一般資料庫有什麼不同?

資料倉儲(data warehouse) 從多個營運系統收集歷史資料,整理後專門用於分析與決策,例如「過去五年各地區每季銷售趨勢」。

比較 營運資料庫(OLTP) 資料倉儲(OLAP)
目的 日常交易:下單、註冊、轉帳 分析、報表、商業智慧
資料 目前資料,頻繁新增與修改 歷史資料,大多只讀
設計 高度正規化 常反正規化(星狀綱要),加快查詢
查詢 簡單、快速、大量 複雜、掃描大量資料

資料進入倉儲前要經過 ETL:

  1. Extract(擷取):從各來源系統取出資料。
  2. Transform(轉換):清理、統一格式、去除重複、計算彙總值。
  3. Load(載入):寫入資料倉儲。

資料探勘(data mining) 則是在倉儲資料中找出模式,例如購物籃分析發現「買尿布的人常買啤酒」,可以連結到 A4 機器學習。

推薦影音

七種資料庫典範

簡述:Fireship 介紹鍵值、寬欄、文件、關聯式、圖形、全文搜尋與多模型資料庫,每種都說明適合的情境,正好對應本頁 NoSQL 比較表。

練習題

練習 1:選擇資料庫

一個社群 App 要儲存使用者之間的追蹤關係,並推薦「朋友的朋友」。應選哪一種資料庫?為什麼?

參考答案

圖形資料庫。使用者是節點、追蹤關係是邊,「朋友的朋友」就是走兩步的路徑查詢,在圖形資料庫中很快;在關聯式資料庫中需要多次自我 JOIN,資料量大時效能差。

練習 2:OLTP 或 OLAP

判斷下列工作屬於營運資料庫還是資料倉儲:(a) 顧客在網站結帳;(b) 分析近三年各商品的退貨率;(c) 更新會員地址。

參考答案

(a) 營運資料庫(OLTP);(b) 資料倉儲(OLAP);(c) 營運資料庫(OLTP)。

練習 3:評估分散式資料庫

一家跨國電商考慮把資料庫改成分散在三大洲的分散式資料庫。Evaluate 這個決定。

參考答案

優點:各洲使用者連到附近伺服器,延遲降低;一個資料中心故障時其他地區仍可服務;容易隨業務擴充。缺點:庫存數量等資料要在各地保持一致很困難,可能發生超賣;需要處理各國資料保護法規;建置與維運成本高。結論:適合讀取多、可容忍短暫不一致的資料(商品目錄),而庫存與付款等關鍵資料需要強一致性設計。

練習 4:ETL

三家分店的銷售系統分別用 YYYY/MM/DD、DD-MM-YYYY 與 Unix 時間戳記錄日期。這個問題要在 ETL 的哪個階段處理?

參考答案

Transform(轉換) 階段:把所有日期統一轉成同一種格式後再載入倉儲。