Loading...

資料庫是存放資料的容器。但究竟什麼是「資料」?本文帶大家從最基礎的概念「資料」談起,再來則認識資料庫的歷史與類型,資料庫管理系統的功能。

什麼是資料?

資料 (data) 是一個抽象的概念名詞,在生活中,任何事實 或數值都可以是資料。例如:你的名字、你的生日、一首歌、一張照片或車牌號碼等。

但若在電腦科學領域談到資料,會是指電腦怎麼表現資料,那就是 0 和 1。電腦用 0 和 1 這樣的數位形式來處理資料,所以資料要轉換成 0 和 1,電腦才能夠處理。

什麼是資料庫?

而資料庫  (database) ,則是為了解決組織、存取、刪除、編輯大量資料的問題。它提供完整結構,幫我們更有效滿足需求。

例如在日常生活中,我們會利用電腦、數位形式長久地保存資料,像是儲存 MS Word .doc 或純文字在檔案中。但當資料量比較大時,隨機、無秩序地儲存資料,會造成花很多時間、甚至找不到資料的困擾。

又或想進一步管理、查詢與操作資料;或是想多人、多個應用程式去使用資料時,也會因為檔案缺乏結構與管理工具,執行過程中會遇到更多的不便。

什麼是資料庫管理系統?

資料庫可能是實際的資料集合體,或是指「資料庫管理系統」。但現在大部分的人提到「資料庫」這個詞彙時,通常指的其實是資料庫管理系統。

若是指資料實際儲存的地方,早期年代是以傳統磁帶 (magnetic tape) 儲存資料;而現在則使用快取硬碟與高速記憶體的組合,能快速處理大量資料。

而想要有效率地使用與管理資料,能方便、有效使用資料庫的軟體,也就是資料庫管理系統 (database management system,簡稱 DBMS)。它能幫我們、或要使用資料庫的應用程式,與資料庫做溝通。

資料庫管理系統的功能

前面提到,資料庫管理系統就是一個使用者與資料庫之間的溝通媒介,它有幾個主要功能:管理資料、管理權限、控制效能與備份資料。

管理資料,是指能提供一個介面,幫助使用者組織、存取、刪除、編輯資料。管理權限,則可區分不同使用權限等級的使用者,以管理資料的瀏覽對象、確保資料安全。控制效能,能透過參數設定,幫助使用者調整資料庫到最佳的運最狀態和效能。備份資料,能設定自動化機制,能轉移會備份資料到不同儲存位置,提高資料的安全。

8 週帶你專修後端,熟悉資料庫設計應用,成為與業界接軌的工程師

資料庫管理系統的演變與類型

資料庫管理系統主要有以下幾種,往下會說明資料庫管理系統發展的幾個階段:

  • Hierarchical Database
  • Network Database
  • Relational Database
  • NoSQL

Hierarchical 與 Network 資料庫

最早期的設計模型是在 1960 年代 IBM 公司設計的 hierarchical (階層式) 與 network (網狀式) 資料庫。

在 hierarchical 模型裡,資料是以「樹狀」的結構去整理,因此資料呈現出清楚的「層級」。從第一筆名為「根 (root)」的資料開始,每一筆資料都有它的「子 (child)」資料。

Hierarchical 模型的設計其實跟人類的組織架構很像,像是家庭、公司、政府部門,都有差不多的組織架構。

在 hierarchical 資料庫裡,每筆資料只有一個屬性。如果你想要得到某筆資料,就要遍歷 (traverse) 整棵樹或整個架構。由於這個過程很費時、也沒有彈性,所以有人提出另一個方案:network 模型。

在 network 模型裡,每筆資料能有多個 parent 或 child 資料,可以表現更複雜的資料關聯。例如,同一個產品可以同時被不同的客戶購買,而一個客戶,也可以購買多個產品。

Relational Database 關聯式資料庫

1970 年代初,在 IBM 研究實驗室工作的埃德加·科德 (Edgar F. Codd) 出版了一份名為「A Relational Model of Data for Large Shared Data Banks」的研究。這份研究是關聯式資料庫發展的起點,定義了關聯式資料 (Relational Database) 的概念、與資料組成表格的應用原則。

關聯式資料庫有三個特質:

1)資料是以一個或是多個資料表 (table) 的方式存放

在關聯式資料庫裡,每一筆資料都是在 table 中的一個 record,record 組成不同的 table 集合,就成為一個關聯式資料庫。

所以,使用關聯式資料庫的網站,背後都有多個 table,負責紀錄不同的資料。例如在電商網站中,應該會有賣家、商品、分類、使用者和交易紀錄等資料表。而這些資料表之間,也會有各自的不同關聯。

2)資料之間有明確的關聯一般來說,關聯式資料庫會用來儲存結構化的資料,而資料之間,也大多會有清楚的關聯。通常,這兩種資料會以兩個資料表來存放。

例如,在常見的待辦清單 To-do List 中,你會看到 user 和 Todo 這兩種資料表。而在兩個資料表之間,我們也會設定「 user 擁有 todo」這個關聯。

3)關聯式資料庫以 SQL 語言操作。

SQL (Structured Query Language 結構化查詢語言) 是專門用來管理與查詢關聯式資料庫的程式語言。透過 SQL,我們能在關聯式資料庫裡新增、查詢、更新和刪除資料;同時,也能建立和修改資料庫的模式。

關聯式資料庫使用簡單,穩定度高;而 SQL 功能強大,也積累了很多企業開放支援 SQL 的軟體與大量的成功案例,所以目前關聯式資料庫是最多軟體開發者使用的資料庫系統。在 Stackoverflow 2018 年的調查結果,關聯式資料庫系統是最多開發者使用的資料庫管理系統,佔前五名中的首四名!

SQL 是什麼?用實際案例操作資料入門SQL語法

NoSQL 非關聯式資料庫

NoSQL 非關聯式資料庫,是隨著電腦、行動裝置、與互聯網普及而興起的另一種資料庫形式。它從過去「能夠無錯誤地同步處理結構清楚的資料」,到現在「能更高速且大量地處理資料,但不需要即時同步或絕對地零錯誤」。

在縣在網路應用程式流量大幅地增長、使用者生產內容 (user generated content)」主流、社群媒體興盛的現代,使用者渴望的是與資料進行更多互動與創造。例如留言、標籤 (tags)。

NoSQL 資料庫呼應了這個改變。NoSQL 的意思是 "Not Only SQL",也就是不限定為「關聯式資料庫」的資料庫管理系統的統稱。

在操作上,NoSQL 並不支持 SQL 語法 與 SQL 的邏輯。所以,NoSQL 資料庫通常不使用關聯模型,也不需要固定的結構 (也就是 schema-free)。但有需要時,NoSQL 也可以使用關聯模型與 schema。

NoSQL 將聚集後的資料,作為儲存的最小單位。透過縝密豐富的資料結構,有利於將資料分散到多個節點。比起資料的關聯,NoSQL 更關注資料所代表的人(例如使用者)與物(例如一篇分享在社交平台上的文章)的「狀態」變動,例如文章被分享、按讚等。

此外,NoSQL 還有一個特點是,不講求資料同步,只求最後結果一致。例如我們要來處理一篇在 Facebook 上的 po 文有多少人按讚時,其實這個訊息的準確性就不是非常重要。當一篇文章獲得第 100 個按讚時,某些使用者可能會馬上看到新的數字,但部分使用者可能要隔數十秒後才看到按讚數從 99 轉到 100。這種延誤,並不會造成什麼嚴重的問題。而對 Facebook 來說,更重要的是能在一定的成本之下,去處理大量的數據。

SQL 入門課程: 14天訓練從語法到真實企業案例