iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
Software Development

NoSQL: Not Only SQL系列 第 2

[Day2] 資料庫的歷史:NoSQL 的出現

  • 分享至 

  • xImage
  •  

儘管關聯式資料庫那麼方便好用,但在資料量持續增長、強調高可用性和可擴展性的領域,關聯式資料庫並無法滿足期望。

當應用服務需要消化的請求數量逐漸成長,我們可以把資料庫和應用分開放在不同的主機,讓他們各自擁有更多的硬體資源。當原本配置的硬體資源不足以應付運算量,我們可以透過幫它升級CPU、加記憶體和掛上更多硬碟等方式擴展它的性能,這樣的擴充方式稱為「垂直擴展 (Scale Up)」。一台應用服務無法消化時,因為應用服務本身是無狀態的(Stateless),所以我們可以加開兩三四五六台,讓他們平行處理各自被分派到的請求,這樣的擴展方式稱為「水平擴展 (Scale Out)」。由於資料庫是有狀態的,且垂直擴展有其極限,於是資料庫成為系統的效能瓶頸。

https://ithelp.ithome.com.tw/upload/images/20220904/20151137gVVqyBe5lD.png

有些功能在符合需求時你會說「太棒了!」,但當你不需要或是它並不是最優先事項時,若因這些功能拖累其他更重要的需求而變成成本,這情境就不怎麼棒了。關聯式資料庫的強約束資料模型設計在符合需求時是強項,但若系統的需求是更彈性且多變的資料長相,Schema 異動的高成本成為關聯式資料庫的缺點。同樣的,關聯式資料庫中資料的強一致性在某些情境並沒有那麼重要,這時為了達到強一致性的運算成本就超過資料一致帶來的價值。

社群媒體等領域使用關聯式資料庫面臨的就是上述問題,於是發展出 NoSQL Database。NoSQL 是 Not only SQL 的意思,它有策略的犧牲關聯式資料庫的某些特性,像是資料的強一致性,以換取更高的可擴展性及可用性。NoSQL Database 為了不同需求有不同的設計,一般分為四大類:

  1. Key-Value Database
  2. Document Database
  3. Column Family Database
  4. Graph Database

接下來幾天會先了解關聯式資料庫的一些特性,再來看 NoSQL Database 在這些特性上做了什麼取捨,又用什麼方式處理這些特性,最後針對四種不同的 NoSQL Database 進行介紹並搭配應用實作範例。


上一篇
[Day1] 資料庫的歷史:關聯式資料庫的出現
下一篇
[Day3] 關聯式資料庫交易的 ACID 特性
系列文
NoSQL: Not Only SQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言