昨天講到照片可以放在雲端之後,我又想到一個問題
如果 Instagram 裡面有這麼多使用者
每個人又有自己的照片、影片、留言、按讚紀錄
那系統到底要怎麼找到我的資料?
總不可能每次有人登入,就從頭到尾把所有資料翻一遍吧 😂
所以今天就來認識一個很重要的東西
Database 資料庫
一、Database 是什麼?
Database 中文叫做資料庫
簡單來說
就是一個專門用來儲存、管理和查找資料的系統
如果把它想得生活化一點
可以把資料庫想成一個超大型的整理好的資料櫃
裡面可能放著
而且這些資料不是全部亂塞在一起
而是會按照不同的方式整理和管理
這樣系統才可以在需要的時候快速找到資料
二、為什麼不能直接用 Excel?
我一開始想到的是
那不就很像 Excel 嗎?
某種程度上確實有一點像
Excel 也可以把資料整理成表格
例如
使用者編號 名字 年齡
001 小明 20
002 小華 21
003 小美 19
看起來資料庫好像也只是把資料整理成表格
但真正的資料庫需要處理的事情遠比一般 Excel 複雜
尤其當資料量變得非常大的時候
可能同時有成千上萬甚至更多的使用者在讀取和修改資料
這時候就需要專門的資料庫系統來處理!
三、那 Instagram 要怎麼找到我的資料?
假設今天我登入 Instagram
輸入自己的帳號
系統收到之後,就需要去尋找相關的使用者資料
大概可以想成
我登入 → 系統收到請求 → 查詢資料庫 → 找到我的資料 → 回傳結果
資料庫就像是一個很大的資料管理中心
當系統說
我要找這個使用者
資料庫就會根據相關條件去找到對應的資料
所以我們才可以很快看到自己的帳號、貼文和其他資訊
四、資料庫真的可以放這麼多資料嗎?
答案是可以的!!!
而且大型服務的資料量其實非常驚人
像社群平台、購物網站、銀行系統等
每天都可能產生大量的新資料
例如我今天在購物網站買了一件衣服
系統可能需要記錄
誰買的、買了什麼、買了幾件、什麼時候買的、付款狀態是什麼
這些資料之後都可能需要被查詢
所以資料庫不只是負責存東西
更重要的是
讓系統可以有效率地管理和找到資料
五、資料庫是不是只有一種?
其實不是
資料庫有很多不同的類型和設計方式
其中一種很常見的是關聯式資料庫
它會把資料整理成不同的表格
不同表格之間還可以透過關聯連在一起
例如購物網站可能會有
使用者資料表、商品資料表、訂單資料表、付款資料表
它們彼此之間可以透過一些欄位建立關係
所以當我們完成一筆訂單時
系統就可以把這些資料串在一起
六、那資料庫和伺服器是一樣的東西嗎?
這個我覺得很容易搞混
前幾天我們講到 Server
今天又講 Database
兩個東西其實不是完全一樣
可以簡單想成
Server 比較像是在處理事情
Database 比較像是在管理資料
例如我今天登入一個網站
伺服器收到我的請求
接著可能去資料庫查詢我的資料
資料庫找到資料之後
再把結果交給伺服器
最後伺服器再把結果傳回我的手機
所以它們可以一起合作
七、心得
以前看到資料庫這三個字
我覺得就是一個放資料的地方
但今天稍微了解之後
我覺得比較像是一個非常大型、而且整理得很有規則的資料管理系統
尤其想到我們每天使用的 App
背後可能都有大量資料需要被儲存和查詢
就覺得滿神奇的
我們只是在手機上按一下
背後可能就已經完成了很多資料的處理
這也讓我發現
存資料其實沒有想像中那麼簡單
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
Day 10 預告
今天知道 Database 是拿來管理資料之後
那下一個問題就是
App 和 App 之間到底要怎麼互相拿資料?
例如一個 App 想要取得另一個系統的資料
難道要直接跑進對方的資料庫裡面拿嗎?
當然不是 😂
下一篇就來認識一個很常出現在軟體開發裡的東西
API 到底是什麼? 🔗