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:
- Extract(擷取):從各來源系統取出資料。
- Transform(轉換):清理、統一格式、去除重複、計算彙總值。
- 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(轉換) 階段:把所有日期統一轉成同一種格式後再載入倉儲。