iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
Software Development

NoSQL: Not Only SQL系列 第 5

[Day 5] CAP理論:取捨取捨,到底取什麼捨什麼?

  • 分享至 

  • xImage
  •  

前幾天不斷提到取捨、選擇、犧牲、放棄、追求......等行為,到底取什麼捨什麼?

以社群媒體的情境來考慮,用戶會期望可以隨時隨地滑手機看到好友們的新動態。如果暫時性的看到舊資料像是按讚數量差了兩個人沒什麼大不了,下次重新整理看到新的資料就好。但每個用戶每天都在發大量的照片、文章或限動因此需要可以穩定應付資料量成長的資料庫,不難理解設計系統時的選擇。

另一種情境,如果今天存款戶頭出現「暫時性」的舊金額,問題就大條了。如果我戶頭原本有10000元,信用卡扣款扣了3000元,然而ATM卻以為我的戶頭還有10000元,於是我就領了10000元現金走,這是不可接受的狀況,如果因此系統慢有時會需要下線進入維護升級期間導致無法使用,那就之後再使用吧!

CAP 理論的 CAP 分別代表 Consistency、Availability 和 Partition Tolerance,當今天資料分布在多台設備時,這三個特性只能同時滿足兩個,不可能全滿足。

  • Consistency 一致性:這邊的一致性指的是強一致性,也就是隨時都可以得到最新的資料。
  • Availability 可用性:每次的存取都可以得到回應。
  • Partition Tolerance 分區容錯性:當網路等原因造成部分節點暫時無法正常存取,服務仍要可以正常地進行操作。

https://ithelp.ithome.com.tw/upload/images/20220907/20151137yKibxS1H7r.png

若符合 CA,表示所有的節點間都要持續連線,彼此之間同步資料到一致的狀態才可回應,這表示當其中一個節點無法進行同步時,系統就無法回應,代表整個系統都不可用。

https://ithelp.ithome.com.tw/upload/images/20220907/20151137uERag8BbRZ.png

若符合 AP,其實就是之前提到的 BASE 特性,部分節點無法與其他節點連線進行同步時該節點仍可繼續提供服務,只是有可能取不到最新的資料。

https://ithelp.ithome.com.tw/upload/images/20220907/2015113721P8M8jcMv.png

若符合 CP,則可以達到 ACID 特性,無法使用的節點會被切分出去,在其他正常節點完成同步達成強一致性後回應,但被切分出去的節點變為不可用狀態。

https://ithelp.ithome.com.tw/upload/images/20220907/20151137EbovnJR8cc.png

因此在設計系統時必須考量到應用的情境,來決定 CAP 三者要捨棄哪一項,才會是最符合需求的方案。


上一篇
[Day 4] NoSQL Database 的 BASE 特性
下一篇
[Day 6] Master-Slave Replication 主從複製
系列文
NoSQL: Not Only SQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言