iT邦幫忙

2022 iThome 鐵人賽

DAY 1
1
Software Development

NoSQL: Not Only SQL系列 第 1

[Day1] 資料庫的歷史:關聯式資料庫的出現

  • 分享至 

  • xImage
  •  

現在最常見的關聯式資料庫並不是橫空出世後就廣泛被使用,而是隨著資料管理需求逐漸發展而成,再持續因需求與技術不斷的變化,於是出現了 NoSQL。我們就從資料庫的發展歷史開始了解資料庫吧!

資料庫指的是在電腦中以一定的規則存放的資料的集合,而我們所說的資料庫通常是指「資料庫管理系統(DBMS)」,負責處理對資料的存取、權限控管和備份等行為,讓開發者可以專注在資料的使用。

Hierarchical Database

當有很多資料時,我們將檔案依規則分類放,如果分一層不夠,就分兩層,這樣的資料庫模型稱為 Hierarchical Database Model。這種資料庫模型有個困擾,就是當同筆資料有不只一份時如何處理資料的一致性?例如:每個人擁有各自的財產,但若夫妻兩人共同擁有烏咪(貓)時,烏咪的資料在老公名下會有一份,在老婆名下也會有一份,當纖細小屁貓長大成中年肥宅貓後要修改她的體重,就要記得同時修改兩份資料,否則會出現烏咪既是1.3公斤,也是3.5公斤的奇怪狀況。

https://ithelp.ithome.com.tw/upload/images/20220903/20151137lUPgRyVqho.png

Network Database

既然樹狀結構的資料庫模型不能滿足需求,如果不限制一筆資料只能有一個父節點,不就能解決資料一致性問題了嗎?於是 Network Database Model 現世,它可以在滿足資料多對多關係的同時維持一致性。然而這種模型只能滿足某些情境,它不可以出現 Cycle 的設計,且由於複雜度高,在使用上也沒那麼方便。

https://ithelp.ithome.com.tw/upload/images/20220903/201511373oDwz69FJr.png

兩種資料庫模型都有一個共同的困擾,就是他們只在少數特定條件下能做到快速查詢。假設你的寵物病歷資料依寵物的出生年月日分類存放,突然有個需求是:我要找一位名為燒仙草的病患資料,但我不知道他的出生年月日。這時你只能很苦命的從第一份病歷開始找,然後期望剛好這次要找的資料不要離起點太遠。又或者,今天要統計診所貓、狗、鳥、烏龜、兔子......各種動物各有多少病患,這類的操作同樣麻煩。

Relational Databse

於是關聯式資料庫登場。1970年由 E. F. Codd 發表的《A Relational Model of Data for Large Shared Data Banks》引起大家的注意,裡面提出的關聯式資料模型成為現在關聯式資料庫的基礎。把所有的資料以二維表格的方式呈現,再透過欄位間的關聯設計將所有資料組合起來,解決了過去其他資料庫模型的痛點,又同時能滿足需求。

https://ithelp.ithome.com.tw/upload/images/20220903/20151137aufzrodfux.png


下一篇
[Day2] 資料庫的歷史:NoSQL 的出現
系列文
NoSQL: Not Only SQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言