小時候長輩常說:「剛吃完飯不可以直接躺著,不然會消化不良。」
小孩總會追問:「為什麼?」大人往往一時語塞,最後只能回答:「這是老一輩的智慧,照做就對了。」
直到長大後學了一點生理知識,才恍然大悟:原來躺著時,重力無法幫助食物順利進入胃部,食道括約肌的壓力也會改變,容易導致胃酸逆流。理解了原理後,我們甚至能推論:如果改成右側躺(胃的位置較低),影響就會比平躺小一些。
這個故事告訴我們:知道「為什麼」,才能在不同情境下靈活應對,而不是死記硬背規則。
回到軟體工程領域,我們常常看到類似的情況:
這些「定理」或「最佳實踐」,很多文章只告訴你「要這樣做」,卻沒有解釋:
沒有這些解釋,技術就變成了玄學,最後也只能說:「這是老一輩的智慧,照做就對了。」
更糟的是,當你遇到這些定理無法解決的問題時,這些定理反而變成發展的天花板。因為你不知道背後的原理,就不知道什麼時候該打破規則,什麼時候該堅持原則。
身為一個後端工程師,我也踩過無數的坑:
每次踩坑後回頭研究,才發現:原來前人的智慧都有其道理,只是沒人好好解釋。
所以我想透過這系列文章,補充那些「被當成常識但沒人解釋」的部分,讓大家不只知道「怎麼做」,更知道「為什麼這樣做」、「什麼時候不該這樣做」。
為什麼選擇資料庫作為主題?
因為資料庫系統濃縮了後端工程的核心問題:
| 核心問題 | 資料庫的解法 | 延伸應用 |
|---|---|---|
| 並發控制 | 鎖、MVCC | 分散式鎖、樂觀鎖 |
| 資料一致性 | ACID、交易 | 分散式交易、Saga |
| 查詢效能 | 索引、查詢優化 | 快取策略、查詢設計 |
| 系統擴展 | 分散式、複製 | 微服務、CAP 理論 |
就像書法中的「永字八法」,筆畫雖不多,但寫好這個字,就能掌握八成的基礎筆法。學好資料庫,就能理解大部分後端系統的設計思維。
本系列分為上下兩部:
📚 上集:單體式資料庫(本系列)
🚀 下集:分散式資料庫(敬請期待)
讓我們開始這趟旅程吧!從最基礎的 Transaction 開始,一步步理解資料庫背後的設計哲學。
超讚的內容, 希望大大能完賽
話說你這資料庫的對象主要是PostgreSQL吧?
謝謝,大同小異的範例主要都會是postgres
如果設計上思路不同的會選mysql與postgres來做說明
這次範圍主要限制在RDB
~