上回簡介了 Rails,其中 MVC 架構中的 Model 負責存取資料,這次就來講一下資料庫是什麼東西。
資料庫顧名思義就是儲存資料的地方。那為何不用直接用檔案來存就好了呢?原因是使用資料庫的需求就是要經常存取資料,可能會需要過濾、排序,也可能經常會要新增、修改資料,這些需求如果使用一般檔案的話,會需要經常對檔案內容全部掃過一遍才能達到,比較沒有效率。資料庫的內容最終也是會存在硬碟的檔案中,但是這些檔案不是一般的文字檔,而是用特別的資料結構儲存的,方便資料庫的程式操作。
資料庫的實作有許多電腦科學理論的作為基礎,本身就是一個複雜龐大的軟體。這時候又回到之前提過的抽象化原則,我們身為資料庫系統的使用者,不需要知道資料庫的所有細節,就能操作使用。當然,有些設計原則還是會需要了解,才能正確地、更好地利用資料庫。
目前大部分網路應用使用 C / S 架構的資料庫服務,也就是像網頁一樣,會有個強大的伺服器,我們使用資料庫時,是從客戶端對資料庫服務下達指令,資料庫服務再將結果回傳。而我們下的指令,常見的是一種特殊設計的語言,專門用來和資料庫溝通,叫做 SQL (Structured Query Language)。
我們常聽到的資料庫有 MySQL/MariaDB、PostgreSQL、MSSQL、Oracle DB,被歸類為「關聯式資料庫」。通常會將不同的資料放在不同的 Table,Table 可以有多個 Column 來表示該資料的不同欄位。Table 中有什麼 Column 的定義叫做 Schema。想要同時看不同 Table 的有關聯的資料時,就可以使用 SQL 的 join 語法將它們同時撈出來。
NoSQL 是不同於關聯式資料庫,另一種設計風格的資料庫,在一些特定用途會使用,但並不能取代廣泛使用的關聯式資料庫。