後端工程師的第一堂課 (15) : 資料庫 — 介紹與比較

Johnliutw
JohnLiu 的軟體工程思維
7 min readAug 21, 2022

--

這是篇共 30 篇的後端領域入門系列文章,預計 1 -2 週新增 1 個新文章。
在後端領域有許多資源在告訴我們怎麼寫好 Python, Golang, Java, PHP … 等各種程式語言。但卻很少告訴我們怎麼學會 Web 後端領域 的知識。

希望你可以透過這篇文章,搭配你正熟悉中的某門任何程式語言,讓你順利入門 Web 後端 :)

【後端工程師的第一堂課】全系列: https://medium.com/@johnliutw/list/da301cc31b15

從這篇開始,我們會開始進入 資料庫 的領域。資料庫可以說是後端工程師,每天都會跟他泡茶聊天維繫感情的領域,而資料庫到現今的發展,也逐漸有幾家獨霸的廠商。此外,因為不同的問題解決方向,發展出所謂的 NoSQL 這類特別的資料庫類型。

NoSQL 也是現代化必知的資料庫類型,不過首先我們會先介紹的是 關聯式資料庫(RDBMS) ,NoSQL 會在之後的章節再特別跟大家介紹!

此篇會介紹四個,筆者認為目前使用上較常見的資料庫系統: MySQL、 PostgreSQL 、 Microsoft SQL Server、Oracle Database

常見重要名詞解釋

  1. query : 指的是對資料庫作查詢時,會寫出的資料庫 SQL 程式語言,所組合而成的語句。
  2. transaction : 交易功能,有些資料庫的操作流程,會一次需要多個 query ,而 transaction 的功能,就可以把這麼多的 query,當作一個統一的單位來操作,是設計安全且可靠的資料庫系統,不可或缺的一環。

MySQL

隆重介紹,鐺鐺鐺,幾乎是現在資料庫系統前兩把交椅的 MySQL~~~ MySQL 會這麼風靡的原因,主要是因為他有下列幾項優點:

  1. 開放原始碼,更新快速
    因為開放原始碼的關係,一直會有來自社群的更新反饋,驅使 MySQL 的官方持續強化這個資料庫軟體,每年的技術研討會都會看見許多新的嘗試被發表。
  2. 相容於各個不同的程式語言、作業系統
    不管是哪種語言、作業系統的工程師,都能快速的簡單設定後,開始使用 MySQL,不會被任何平台所限制。
  3. 具有多執行緒,能充分利用資源做運算
    簡單來說, MySQL 能同時處理好幾份工作,盡可能不讓電腦有閒置的資源。
  4. 社群活躍,資源眾多
    開發階段遇到的任何問題,幾乎都可以在 Google 上找到答案,或是各大技術社群都會提供協助。或是能在回報問題後,很快的獲得協助與回饋。
  5. 使用此資料庫軟體的成本極低
    如題,不管是針對 $$ 或是時間而言,成本都很低廉。

但相對於優點,他也有以下的缺點

  1. 性能較差,適合中小型應用程式
    MySQL 的免費公開版性能一直是個罩門,不過對於中小型應用程式綽綽有餘,但當使用者人數和流量漸升,勢必是個問題,主要是跟核心設計架構有關。
  2. 安全性
    MySQL 的安全機制相較其他資料庫是較薄弱的,機制上設定較為複雜,且非標準化機制。

最後要提醒大家,MySQL 跟 MySQL Workbench 不一樣喔!!很多新手都會搞混這兩者,並卡很久。

MySQL 是沒有介面的,因此可以透過像 MySQL Workbench 或是 PHP myAdmin 這類軟體,來用介面的方式操作 MySQL 資料庫,非常重要,請各位讀者一定要牢牢記住喔!!

PostgreSQL

PostgreSQL 是最常拿來和 MySQL 比較的資料庫系統,因為他有和 MySQL 高度重疊的特性,因此使用上來說,其實如果沒有特別的需求,筆者認為兩者都是可以在通用情境下,隨意擇其一的資料庫系統。

優點:

  1. 更加開放,貼近社群
    跟 MySQL 相同,都為開源軟體,但 Postgre 的設計上又更加以社群需求為導向去設計,畢竟 MySQL 目前是屬於非常有名的金錢怪獸 Oracle XD
  2. 商業應用導向
    設計更新皆以商業應用導向為主,像是最重要的 transaction ,資料的交易機制,擁有更嚴格的測試驗證和設計機制。
  3. Store Procedure 和 View 功能強化
    Store Procedure 是類似資料庫裡的 函式 功能,可以在資料庫裡撰寫邏輯 。View 則是把資料庫的複雜查詢語句,直接儲存起來,當做一個 table ( 資料表 )。
    在這種複雜的應用上,具有比 MySQL 更強的機制。
  4. 地理結構資料類型
    PostgreSQL 非常適合製作有地理相關功能的應用程式,除了提供專屬的資料類型,也提供許多相關的資料庫函式,非常方便。

缺點:

  1. 結構龐大
    PostgreSQL 因為有許多商業性的功能應用,因此容量大小上較為巨大,可能對於較小型的伺服器是個負擔。
  2. 複雜的查詢會導致效能低落
    對於比較複雜語句的查詢,會有較低的效能,主要是因為 PostgreSQL 軟體本身架構的緣故。

Microsoft SQL Server

Microsoft SQL Server 是偉大的微軟公司推出的資料庫系統軟體,我們先別說他遠到不行的親戚 Access (或許連親戚都不算?)。而微軟推出的這個資料庫軟體,非常微軟也就是不是微軟相關的開發應用,根本不能用,或是用不起來。

不過那也是過去的事情。

在現代, MSSQL 不停的提升其相容性,有越來越多的非微軟應用程式,要直接跟 MSSQL 做串接,因此筆者認為這會是很重要,常用的 SQL 軟體。

優點:

  1. 工具整合性
    微軟生態系的雙面刃,對於微軟相關的開發工具都有非常好的整合應用,
    不管是報表、商業智慧( BI ) 相關的功能,或是和 C# 相關程式的對接,都非常的流暢好用。
  2. 使用的學習曲線低
    Ms SQL Server 的學習曲線相較低,且不需要一些繁瑣的設定,並自帶資料庫介面操作工具,新手也能快速開始使用。
  3. 嚴格的交易安全與控制
    對於資料庫 transaction 的安全控制非常良好,畢竟是大軟體商經營的DB 伺服器,因此這部分算是基本盤。

缺點:

  1. 較為封閉的開發環境
    基本上是屬於原始碼封閉的開發環境,因此社群上的討論度比較低,雖然隨著許多開發者文件日漸開放,但仍是屬於 proprietary software ( 專有軟體)。
  2. 較為笨重
    由於對於資料庫技術不是微軟 Team 主打的方向,因此使用了稍嫌龐大、資源吃重的資料庫引擎,會造成伺服器本身的資源負載量較大。

Oracle Database

Oracle Database 是甲骨文公司推出的資料庫系統,基本上,是純粹針對大型公司行號推出的資料庫,因此在一般新創、個人開發上,極少使用 Oracle 資料庫。但會是較有歷史的組織,例如銀行、公部門,蠻有機會看見的資料庫系統。

優點:

  1. 極高的安全性
    由於針對大型公司設計的緣故,在安全性機制的設定上,具有最高認證級別的ISO標準認證。
  2. 效能出色
    在從事各種大型運算,或查詢上,是經過 TPC 組織( 專門執行商用負載 )的認證,效能可以說是笑冠全主流資料庫系統。
  3. 功能齊全、強大
    具有多種資料儲存格式可以選擇,還有各式能夠自行制定的功能,例如同義詞、套件等等不同的模塊。

缺點:

  1. 使用成本昂貴
    基本上免費版是不太能用的,因此大部分都是在公司使用付費版,而付費版的價格較為高昂,相對應的硬體設施也有一定的要求。
  2. 學習成本高
    Oracle 是一個比較有技術含量的資料庫系統,對於新手來說,要快速學會核心的應用比較吃力些,需要較為 Senior 的技術開發者協助。

基本上資料庫的選擇,也是根據自己目前的需求,去規劃設計,因此也沒有用哪個一定好唷~( 但筆者是開放派的啦 XD

--

--

Johnliutw
JohnLiu 的軟體工程思維

熱愛軟體全端技術開發,較為擅長 Web 領域,並有多年線上與線下授課經驗,專精軟體新手教學。 相關合作: johnliutw@hotmail.com