前面 6-1 到 6-3,你已經會用 Git 跟 GitHub 把「程式碼」好好存起來了。接下來 App 要存的,是另一種東西:「用戶的資料」(帳號、訂單、留言這些),這就要靠資料庫。 AI 能幫你寫程式,但不會主動幫你想「這份資料活在哪一層」。 這 Unit 從 CS 角度拆給你看,資料庫到底在解什麼問題、為什麼非它不可、跟 AI 講需求時你要提供哪些 context。
不是資料夾、不是 Google Sheets,而是為「跨重整、跨裝置、跨用戶共享」而存在的儲存系統。
資料庫不是「比較厲害的檔案」、也不是「線上版 Excel」。它存在的理由很單純:讓資料活過程式的生命週期、讓不同裝置的不同人讀到同一份。
同一則 IG 貼文,同時開在你的筆電跟手機上。下面這台 demo 試兩件事:
一個重整就沒、一個跨裝置同步,差別就是有沒有存進資料庫。
資料庫住在整條「記憶體階層」的最下面。「該存哪」其實就是在問「該住哪一階」:
資料庫就是最下、最慢、但最持久、最共享的那一階。
→ 知道資料庫是什麼之後,先別急著學它怎麼運作。下一段先講一件更高層的事:為什麼「累積的資料」是 AI 時代最拿不走的資產。
先講最高層的一件事:為什麼資料,是你跟 AI 協作時最該從第一天就守住的資產。
AI 時代 介面是廉價的,AI 看一眼就能仿。真正貴的是被存下來的東西:你追蹤的 800 個朋友、看到第幾分鐘、失戀那週狂播哪首歌,新平台抄不走、也補不回來。下面點不同品牌,看它的護城河是什麼。
九宮格照片牆、限動圓圈、底部導覽,看一眼就知道怎麼排
~ 2,000 億條好友關係,追蹤的 800 個人、五年來按過讚的每張照片、跟誰常互傳訊息,換到新 App,朋友全不在那邊,你還要不要用?
→ 知道資料值錢之後,接下來先綜觀一遍:一個真正的資料庫,到底默默幫你顧了哪四件事。
它之所以叫資料庫,是因為這四件事它一次全包了。這裡先各看一眼,接下來一件一件深入。
→ 四件事先有個輪廓了。接下來一件一件拆開玩,從第一件「結構化」開始。
上一段預告了四個契約,這段拆第一個:結構化。同樣一筆髒資料丟進 NoSQL 倉庫 vs SQL 守門,結果差很多。
前端能擋的,AI agent、webhook、後台腳本 都能繞過、直接寫進資料庫。Schema 是把同一套規則寫進資料庫本身,每條寫入路徑都被它當下擋下。
做一個 users 表:
- 每個人一定要有名字
- 年齡要是數字
- email 要長得像 email
- 價格不能是負的CREATE TABLE users (
name TEXT NOT NULL, -- 一定要有名字
age INTEGER, -- 數字
email TEXT CHECK (email~'@'), -- email 格式
price NUMERIC CHECK (price >= 0) -- 不能負
);AI 自動翻成 CREATE TABLE 約束。NoSQL 沒這層、什麼都收,等你讀資料才發現一半對不上。
→ Schema 守住資料的形狀,但 100 萬筆裡找一筆還是慢,這是下一段要解決的問題。
上一段守住資料形狀,這段要解決『找得快』。同一筆查詢,O(n) vs O(log n) vs O(1)。
沒有目錄的字典要一頁頁翻(full table scan),資料愈多愈慢。Index(索引) 就是幫某個欄位多做一份「目錄」,把查詢從「跟資料量成正比」變成「幾步就到」。
O(n)O(log n)O(1)id = 502但 index 不是免費的:每加一個,寫入變慢、多吃硬碟空間,哪些欄位該下是真實的工程取捨。下面是真的 benchmark,100 萬筆的時間差直接打在你眼前。
→ 找得快了,但同一筆資料兩個人同時要改怎麼辦?這就是下一段的並發控制。
資料的正確性除了形狀,還有『多人同時動』。切換 3 種寫法,看哪一邊會出包。
庫存剩 10,A 和 B 幾乎同時按購買:各自「讀到 10 → 算 9 → 寫回 9」,該賣兩件卻只扣一件。這就是 race condition,誰先誰後沒人管、靠 OS 排程的運氣。切換下面三種寫法看差別。
BEGIN / COMMIT 包成不可打斷的單位,鎖住那列,A 做完才換 B。UPDATE stock = stock - 1,DB 保證不可分割。SELECT 抓出來、改一改、再 UPDATE 回去」三步式邏輯,在庫存、餘額、按讚數這類場景,一個人用對、多人用就會少賣。→ 結構、查詢、並發都做了,但機器一斷電全沒了,這就是下一段的持久化。
最後一個契約,寫進去之後真的活著。4 台機器排在你面前,寫入、拔電源、看誰活下來。
「寫進去了」其實有等級之分:資料從程式到「真的躺在硬碟上」,中間會在 OS 暫存區停留,這個空窗期斷電就消失。資料庫用三道保險頂住。
→ 結構、查詢、並發、持久,四件事都各別玩過了。接下來換你實戰複習:看 AI 給的方案,到底漏了哪一件。
四件事都玩過了,這裡來一場實戰。每一關,AI 都給你一個「現在能跑、之後會出事」的方案,換你看出它漏掉哪一件。
→ 最後補一個本能:其實「並不是所有資料都該丟進資料庫」,下一段教你怎麼分。
這個 Unit 走完前的最後一個本能,下需求前先分桶。拖卡片到三個桶,放完按「看正解」會告訴你為什麼 + AI 會怎麼猜。
每份資料都歸到三個位置之一。分錯桶會出事(訂單放 useState 重整就棄單、搜尋記憶放資料庫每筆都打 server),而 AI 沒 context 時「預設往最簡單那層猜」。下面拖卡片,把每份資料分到對的桶。
→ 分完桶你才知道哪些丟資料庫、哪些留前端。這個 Unit 差不多了,最後收個尾。
資料庫不是讓 App「能存資料」,
是讓 App 從玩具 變成產品。
跟 AI 協作時,你帶走的 6 個直覺:
知道資料庫顧了哪些事之後,下一步最關鍵的問題是:怎麼選對一個。下個單元帶你認識主流的資料庫、它們差在哪,還有大家最常聽到的 SQL 和 NoSQL 到底是什麼。