Aaron Li

MySQL: Introduction

Table of Content

Introduction

資料庫是資料的電子存儲,系統的收集。它可以包含任何類型的資料,包括單詞,數字,圖像,視頻和文件。

資料庫的分類

關聯式資料庫( RDBMS )

  • 資料庫是由多個資料表( Table )所組成,並且可以將資料表關聯起來,去連結多個資料表之間的關係
  • 由資料表( Table )組成,其中 row 代表一筆資料,column 代表資料欄位名稱
  • Schema 必須先定義好,並且只接受同樣格式資料的插入與修改
  • 具備 ACID 特性

非關聯式資料庫(NOSQL)

  • 不需要定義 schema 、沒有關聯的關係
  • collection 中每筆資料為一份 document,document 的資料格式不需一致
  • 以 CAP theorem 為概念設計
關聯式資料庫非關聯式資料庫
ExampleMySQL, PostgreSQLMongoDB, CouchDB
組成tablecollection
資料row-columndocument
特性ACIDCAP

ACID

  • Atomicity(原子性):只會是全部執行或全部尚未執行的其中一種狀態
  • Consistency(ㄧ致性):交易前後資料的完整性受到保持,例如透過定義 Model Schema
  • Isolation(隔離性):交易執行時,其他使用者看不到正在處理的資料,也不會受到影響
  • Durability(持久性):交易完成後將永久被儲存

CAP

  • 一致性(Consistency):使用者讀到的”總是”最新的資料
  • 可用性(Availability):使用者的請求”總是”可以獲得回應,也就是可以正常讀寫(回傳錯誤訊息並不算滿足可用性)
  • 分區容錯性(Partition tolerance):就算網路出現問題導致資料分區,整個系統仍然要可以繼續運作

在分散式系統中,這三個特性只能同時滿足兩個 (CP, AP) 最終一致性(eventually consistency)。當使用者更新某筆資料時,也許因為網路暫時中斷或延遲,沒有即時同步到另一個資料庫。我們還是讓其他使用者可以繼續存取資料(不是最新的也沒關係),但最終,我們保證這筆資料一定會同步(最後的結果還是對的)

什麼時候要用 RDBMS/NOSQL?

必須依照使用情境與需求,分析 RDBMS & NOSQL 的特性,進而去選擇最適合的資料庫來使用。

  • RDBMS: 擁有ACID特性,保證了資料的一致性。舉例在金融類型的應用
  • NOSQL: 擁有CAP特性,適合資料更新可以有一點延遲的場合,例如文章的新留言、影片總共觀看人數