iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0
AI & Data

AI 江湖本無路,有了 Data 便有了路系列 第 5

Day 05: 駕馭數據的雙輪:SQL 與 NoSQL 的選擇題

  • 分享至 

  • xImage
  •  

前言:江湖中的兩大兵器

在數據的江湖中,要存取和操作數據,你需要稱手的兵器。其中最經典、流傳最廣的,莫過於 SQL (結構化查詢語言)。然而,隨著大數據和 AI 應用的興起,另一派截然不同的兵器 — NoSQL (非僅 SQL) 也應運而生。

這兩者並非孰優孰劣,而是為了應對不同的戰場而設計。今天,我們就來探討這兩大主流資料庫類型的設計哲學,以及它們背後的理論基礎:ACID 與 CAP 定理。


兵器對決:SQL vs. NoSQL

特性 SQL (關聯式資料庫) NoSQL (非關聯式資料庫)
代表 MySQL, PostgreSQL, SQL Server MongoDB, Redis, Cassandra
資料結構 表格 (Table),結構固定 多樣 (文件、鍵值、圖形),結構彈性
核心優勢 資料一致性、完整性 高擴展性、高效能、彈性
擴展方式 垂直擴展 (加大單機伺服器) 水平擴展 (增加更多伺服器)
設計哲學 ACID CAP / BASE
AI 應用 儲存需要強一致性的交易資料 儲存使用者日誌、IoT 數據、社交關係圖

https://ithelp.ithome.com.tw/upload/images/20250916/20112423ArYRpGp9UO.png

圖片參考來源: https://www.scylladb.com/learn/nosql/nosql-vs-sql/


背後的理論心法:ACID vs. CAP

要理解兩者的差異,就必須了解其背後的理論基礎。

1. ACID - SQL 資料庫的穩定基石

ACID 是確保交易 (Transaction) 可靠性的四大原則,對於金融、電商等不容許任何錯誤的系統至關重要。

  • A (Atomicity 原子性): 交易中的所有操作,要嘛全部成功,要嘛全部失敗。就像轉帳,扣款和存款必須同時完成。
  • C (Consistency 一致性): 交易完成後,資料庫必須從一個有效的狀態轉變到另一個有效的狀態。例如,帳戶餘額不能是負數。
  • I (Isolation 隔離性): 多個交易並行執行時,彼此之間不能互相干擾。
  • D (Durability 持久性): 一旦交易被提交,其結果就是永久性的,即使系統崩潰也不會遺失。

2. CAP 定理 - NoSQL 資料庫的權衡之道

CAP 定理指出,在一個分散式系統中(NoSQL 資料庫通常是分散式的),最多只能同時滿足以下三項中的兩項

  • C (Consistency 一致性): 所有節點在同一時間看到的資料是完全一致的。
  • A (Availability 可用性): 每個請求都能收到一個(非錯誤的)回應,但不保證是最新資料。
  • P (Partition Tolerance 分區容錯性): 系統在遇到網路分區(節點間通訊中斷)時,仍能繼續運作。

由於在現代網路環境中,網路分區是不可避免的 (P 必須滿足),因此 NoSQL 資料庫的設計者必須在 一致性 (C) 和 可用性 (A) 之間做出取捨。

  • 選擇 CP (一致性 > 可用性): 當網路中斷時,為了保證資料一致,系統會拒絕寫入,暫時變得不可用。
  • 選擇 AP (可用性 > 一致性): 當網路中斷時,系統仍允許讀寫,但可能讀到舊資料(最終會同步,稱為「最終一致性」)。

AI 時代的選擇

那麼,開發一個 AI 應用時該如何選擇?

  • 如果你的應用是詐欺偵測系統,每一筆交易的正確性都至關重要,你應該選擇遵循 ACID 的 SQL 資料庫來儲存交易紀錄。
  • 如果你的應用是社群媒體的動態消息,偶爾晚幾秒看到朋友的最新貼文是可以接受的,但系統不能掛掉。這時,選擇犧牲部分一致性以換取高可用性的 AP 型 NoSQL 資料庫就更合適。

結論

SQL 與 NoSQL 並非敵人,而是相輔相成的夥伴。理解它們背後的 ACID 與 CAP 原則,能幫助我們在面對不同的 AI 應用場景時,選擇最稱手的兵器,打造出既穩定又高效的系統。


上一篇
Day 04: 數據的「身分證」:Metadata 的前世今生
系列文
AI 江湖本無路,有了 Data 便有了路5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言