iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

資料庫

定義

首先,什麼是資料庫?資料庫就是一個用來存放與管理資料的系統。一般會搭配資料庫管理系統,來進行資料的新增、查詢、更新、刪除。

而資料庫要達成的目標是保持資料的正確性與一致性進而提供高效率的查詢,確保其安全性。

分類

資料庫的分類有分成關聯式資料庫和非關聯式資料庫,前者的關聯式資料庫是用在有明確搜索的目標,對於演算法較不適用,常見的代表是 MySQL ,它的特點是用表格化的整理方式來存資料,較常應用在傳統的資料管理系統。而後者非關聯式資料庫的發展比較彈性,擅長大數據分析,能將使用者瀏覽過的相關物件加以搜尋並且推薦相似的東西出來,較常使用在社群媒體或是推薦系統上。

儲存原理

在最一開始的時候,系統會先進行寫日誌的動作,確保崩潰後可重新儲存放入,再來會有一個緩衝池,也就是我們素稱的"快取",主要目的是減少磁碟的I/O,畢竟如果每次查詢時都要重新讀取一次硬碟,效率會非常慢,所以才直接在記憶體中執行,速度的差異可說是非常大的。

至於索引時,常見的有 B-Tree,因為它的使用範圍算是最廣的,再來是進行壓縮與編碼,有字典編碼和列式壓縮分析,都是提升效率的方式。

最後則是儲存時系統會分區/分片:

分區的意思是:同庫內按時間/範圍拆表。

分片的意思是:水平切分到多節點,需要用路由與跨分來聚合。


而新手要深入了解資料庫的運用,需要有一些 sql的基礎才比較不會那麼吃力,裡面包含像 SELECT、JOIN、聚合、索引概念,再者可以從資料建模開始學起,有正規化和反正規化,但都是依存取路徑來設計文件的模式。然後可以繼續考慮的是雲端儲存,在雲端儲存時複寫、分片、CAP、備援、備份還原, cap是指說,需要保證系統的"一致性"或是"可行性",但這部分比較複雜,簡單來說一致性就是寧可系統崩潰,但資料必續維持狀態,不能被更改(即使伺服器運行錯誤),而可行性則是在使用者端,系統必須有所回應,所以為此使用者仍有機會對資料進行修改,但會有可能面臨到產生資料不對等,產生原始資料檔的儲存落差。最後是安全性的問題,權限、加密金鑰等,既然是儲存資料的系統,對於資料的隱私安全管理自然也是不可或缺的。


上一篇
七大要點之一-後端
下一篇
七大要點之一-部署
系列文
從基礎開始—web學習之路12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言