目錄
SQL 與 NoSQL
世上分兩種資料庫 — SQL DB 與 NoSQL DB。
SQL DB 採用的是「關聯式」儲存法,也就是先依種類把資料分別存在不同的表格,再透過表格的「關聯」獲取表格與表格之間的相關資訊 — 如:學生放在 students 表格、考卷放 quizs 表格,當需要提取資料時「關聯」這兩個表格,再提取出數值。
NoSQL 相對不強調關聯。若你的資料有很密集的關聯關係,例如:你有人工衛星,關聯著行星,行星又關聯數個衛星,這時你該考慮不要用 NoSQL。
兩者比較
|
NoSQL |
SQL |
Type |
collection |
table |
Scability |
Easy for Horizontal way |
Easy for Vertical way |
Schema |
flexible |
rigid |
Type
- 儲存一坨資料的基本單位。SQL 使用 table、NoSQL 使用 collection
- 舉例:儲存「朋友」資訊
- SQL 會開一個 “friends” table,再開一個 “cities” table。然後再替這兩者建立「關聯」用以儲存「朋友住哪裡」的資訊
- NoSQL 會開一個 “friends” collection,裡面有朋友的任何資訊,也包含住處,於是就沒有 cities 的 collection。此時 NoSQL 不用關聯搜索,速度會更快
Scability
- 當你想「升級」你的資料庫,你可以選 Vertical 式升級、也可以 Horizontal 式升級
- Vertical ⇒ 原本五坪的房間擴大成十坪,對資料庫而言就是 CPU、Memory 加大
- 土豪式行為,一般人辦不到
- 過去 SQL 支援 Vertical Scability,NoSQL 相較不支援;但現在 NoSQL 也漸漸支援
- Horizontal ⇒ 原本五坪的房間,改成買兩間五坪的房間,對資料庫而言就是買第二台 DB Server
- 一般人的行為,因為便宜
- 過去 NoSQL 內建支援此法,SQL 相較不支援;現在也漸漸支援了 (我感受不到就是)
Schema