iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 15
0

對於web-server來說,基本上都是建構在對於資料的取得 寫入和刪除當中,
配合各種商業邏輯,來達成客戶的需求,
那麼我們應該要選擇哪個資料庫來使用呢?

MySQL

提到資料庫,八成的工程師第一個想到的,大概就是MySQL了,
最早由瑞典的MySQL AB公司所開發的關聯式資料庫管理系統,
現在則是甲骨文(Oracle)公司旗下的產品之一。
支援多平台,基本上window, linux和mac都可以安裝MySQL,
並有著對於結構化查詢語言(Structured Query Language - SQL)語法的最佳化,
基本上沒特別需求的情況下,選MySQL就對了。

Scylla

是個以C++打造,開源的NoSQL資料庫,
擁有高延展性,快速查詢能力以及透過多節點所獲得的容錯能力,
Scylla不像MySQL有著方便的Join功能去查詢表單間的資料,
取而代之是有著很強大的讀寫能力,官方宣稱能夠處理每秒100萬筆TPS,
如果web-server對於讀寫非常要求,但是不需要去不同表單join,
那麼選用Scylla會是一個很好的選擇。

Redis

當你開放api給人呼叫時,多少都會產生資料庫的存取,
如果使用者人數少還不是什麼問題,但是當人數一多,
就有機會造成資料庫處理時間拉長,
加上通常有些資料是長久不改變的,使用者會去撈取並確認,
這種時候就可以把這類資料放入快取之中。
Redis是一個In-memory的Key-Value資料庫,由於將資料存放在記憶體內,
因此處理速度非常的快,非常適合用於資料快取,
不過因為是Key-Value的儲存方式,就沒辦法像MySQL跟Scylla針對某個條件去查詢了。

經過上面的說明,各個資料庫都有不同的使用情境,在建構web-server時,
依照需求使用不同的資料庫,需要組合不同表單的資料存放到MySQL,
需要高速查詢某個條件用Scylla,存放快取則用Redis,
接下來的章節會介紹上面這些資料庫在go裡面可使用的套件。


上一篇
Day14-錯誤回應
下一篇
Day16-MySQL
系列文
從0開始的golang web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言