沒有一體適用的資料庫。選型的核心是四個軸:schema 要不要固定、怎麼擴展、要不要 ACID、查詢多複雜。多數真實系統其實兩種都用。
🧠 Core Ideas
TIP
一句話分野:SQL=固定 schema + 垂直擴展 + ACID;NoSQL=動態 schema + 水平擴展 + 換效能可用性。先問「我的資料形狀穩不穩、要不要強交易保證」,答案就浮出來了。
- SQL(關聯式):表格/列/欄,固定 schema,SQL 查詢強大,多數符合 ACID。
- NoSQL 四種常見型:鍵值(Redis/Dynamo)、文件(MongoDB)、寬列(Cassandra/HBase)、圖(Neo4j)。
- NoSQL 天生水平擴展、schema 動態,代價通常是放掉部分 ACID。
⚖️ Tradeoffs
四個決策軸
- Schema:SQL 要先定好、改動可能要停機;NoSQL 隨時加欄、每筆不必一致。
- 擴展:SQL 多靠垂直擴展(加硬體、貴、有上限);NoSQL 原生水平擴展、商用硬體就能加機器、常自動分散資料。
- 可靠性:SQL 多為 ACID,交易安全好;NoSQL 多犧牲 ACID 換效能與擴展。
- 查詢:SQL 語言統一強大;NoSQL 各家語法不一,聚焦文件/集合。
什麼時候選誰
- 選 SQL:需要 ACID(金融、電商交易);資料結構穩定、不追求極端規模。
- 選 NoSQL:海量非結構化資料;要善用雲端、跨資料中心水平擴展;快速迭代、schema 常變又不能停機。
- 實務上常混用:交易核心放 SQL,session / 快取 / 事件流 / 大數據放 NoSQL。
🔑 Takeaways
- 用四軸挑:schema、擴展、ACID、查詢——不是「哪個比較好」,是「哪個配這份資料」。
- 要強交易保證就 SQL;要海量、彈性、水平擴展就 NoSQL。
- 別二選一到底——同一系統多半兩種並用,各放各的活。
No notes yet — jot your takeaways or Q&A here.