iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
2
AI & Data

與資料庫共舞系列 第 1

Day 1 — 30天與資料庫共舞

  • 分享至 

  • xImage
  •  

每年的鐵人都是在最忙的時候舉辦的,今年鼓起勇氣再忙也要來寫。希望可以把30天寫好寫滿!
廢話不多說讓我們直接切入正題

給誰看

TL;DR 本系列文章適合大概知道基本的資料結構,並且有些許的程式編輯經驗,但是還沒有認真學過資料庫的朋友。
這個系列的技術文章將會用主題式來深入淺出介紹資料庫。參考資料主要會使用學校裡大學部學生的入門資料庫課程,配合使用資料庫的聖經 Database Systems: The Complete Book 2nd Edition。但既然是部落格形式的文章,內容會盡可能的包含範例,所以會犧牲一些內容來換去多一點的實作。
另外,這個系列的文章不會介紹如何將終端應用程式連接上資料庫。

資料庫是什麼

大部分的人聽到資料庫反射動作就是:「哦! 大數據嗎? 感覺可以存很多資料。好厲害喔!」
但是這裡我們講的資料庫指的是資料庫管理系統 (Database Management System, DBMS)。有發現加上了管理系統其實表示兩件事情:

(1) 他是一個系統: DBMS 不只是儲存資料,更勝於操作、並且管理這些儲存的資料。
(2) 既然可以管理: 代表資料是「有結構」的被儲存的,而這些不同的「結構」就成了不同類型的資料庫系統。

所以當讀者在閱讀這個系列文章的時候,可以從「管理資料」的角度去思考和吸收,並儘量避免去想如何「應用」這些儲存的資料。不是應用資料不重要,而是這不是 DBMS 主要的功能。此外,為了讓編輯和閱讀起來比較輕鬆,這個系列文章中,資料庫管理系統、DBMS、和資料庫三個名詞都指同一個東西。文章中會盡可能用教育部的學術名詞資訊網的中文用語,但是如果我找不到就會自行翻譯。

一個好的資料庫系統必須要確定他在每個操作 (註: 這裡講的是transaction, 之後會在討論到) 的過程中,都是正確而且可靠的。所以資訊科學家認為DBMS需要具備四個特性,我們簡稱叫做 ACID:

  • 原子性 (Atomicity,又稱不可分割性): 每個操作必須要一次到位,不可以做一半。也就是說,當操作發生錯誤、好的DBMS系統不應該對於原始資料做出任何的修改,應該直接放棄然後回到原始狀態。
  • 隔離性 (Isolation,又稱獨立性): 每一次只能執行一個操作,不應該存在互相影響的操作。也就是操作必須要獨立不受干擾。
  • 持久性 (Durability): 每個完成執行的操作所獲得的結果必須要永久的保存下來,不能隨便被更動。
  • 一致性 (Consistency): 在同一個時間點,資料庫的內容必須要一致,不管事資料之間的結構、關係、或是資料內容,在每個時間點不管從何讀取都應該要是一致的。

有沒有發現上面提到的有三個在討論操作,只有一個講述資料庫的內容結構。在30天的後段我們會更仔細的討論資料庫運作的原理。這裡想要讓讀者看的是資料庫重點在它是操作資料的工具,而非資料本體的應用。

三十天大綱

與資料庫共舞總共分為五個大章節:

第一章 關聯式資料庫
這個章節主要會筆記 結構化查詢語言 (Structured Query Language, SQL) 的使用語法以及在自己的電腦上架起MySQL。

第二章 非關聯式資料庫
這個章節會筆記 什麼是非關聯式資料庫,並且介紹 MongoDB 的語法並操作MongoDB Atlas。

第三章 圖資料庫
同屬非關聯式資料庫的一種,這個章節介紹 Neo4j 的語法。

第四章 資料庫設計
第四章我們回到關聯式資料庫,但是這次我們會更深入討論如果身為資料庫管理員是如何設計並建構資料庫。

第五章 資料庫運作原理
最後我們會介紹關聯式資料庫一些深入的運作原理。

參考資料


下一篇
Day 2 — 有「關係」的資料
系列文
與資料庫共舞30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

2
glj8989332
iT邦研究生 4 級 ‧ 2020-09-01 15:10:44

咦, 這本 Fundamentals of Database Systems 不才是聖經嗎 XD

30天 GO~~

我要留言

立即登入留言