iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 15
0

資料庫介紹與比較

從今天開始呢,我們會開始進入『資料庫』的領域。
資料庫可以說是後端工程師,每天都會跟他泡茶聊天維繫感情的領域。
而資料庫到現今的發展,也逐漸有幾家獨霸的廠商,
也根據不同的應用方向,發展出所謂的『NoSQL』這種特別的資料庫類型,
但 NoSQL 偏向前端的應用較多,就不在此深入探討,
今天會介紹四個筆者認為目前使用上較常見的資料庫系統:
『MySQL』, 『PostgreSQL』,『Microsoft SQL Server』,『Oracle Database』,
以及幾個簡單的名詞解釋

名詞解釋

query : 指的是對資料庫作查詢時的語句
transaction : 交易功能,有些流程會一次綁定多個 query ,而 transaction 就是設定說,一定要每個 query 都正確才會全部 query 被真正執行,如果有任何錯誤,就全部 query 執行結果都捨棄。
rollback : 取消這次所有的 SQL 查詢更新結果

MySQL

https://ithelp.ithome.com.tw/upload/images/20181029/20107758WhCHqKQzMB.png
隆重介紹,鐺鐺鐺,幾乎是現在資料庫系統前兩把交椅的 MySQL~
MySQL 會這麼風靡的原因,主要是因為他有下列幾項優點:

  1. 開放原始碼,更新快速

因為開放原始碼的關係,
一直會有來自社群的更新反饋,
驅使 MySQL 的官方持續強化這個資料庫軟體。
且使用此資料庫軟體的成本極低。

  1. 相容於各個不同的程式語言、作業系統
    不管是哪種語言、作業系統的工程師,
    都能快速的簡單設定後,開始使用 MySQL。

  2. 具有『多執行緒』,能充分利用資源運算
    簡單來說,他能同時處理好幾份工作,
    不會讓電腦有閒置的資源。

  3. 社群活躍,資源眾多
    開發階段遇到的任何問題,
    幾乎都可以在 Google 上找到答案,
    或是各大技術社群都會提供協助,
    或是能在回報後,一定的時間內更新。

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

  1. 性能較差,適合中小型應用程式
    MySQL 的免費公開版性能一直是個罩門,
    對於中小型應用程式綽綽有餘,
    但當使用者人數和流量漸升,勢必是個問題。
    不過在 8.0 更新後,會相較舊版提升 1 倍以上的效能,
    因此直得觀察此項缺點的後續發展。

  2. 安全性
    MySQL 的安全機制相較其他資料庫是較薄弱的,
    機制上設定較為複雜,且非標準化機制。

最後要提醒大家,MySQL 跟 MySQL Workbench 不一樣喔!!
很多新手都會搞混這兩者,並卡很久。
MySQL 是沒有介面的,
因此是透過像 MySQL Workbench 或是 PHPmyAdmin 這種軟體,
用介面的方式,操作 MySQL 資料庫,
非常重要,請各位讀者一定要牢牢記住喔!!

PostgreSQL


https://ithelp.ithome.com.tw/upload/images/20181029/20107758ApIZgfMZ4u.png
PostgreSQL 是最常拿來和 MySQL 比較的資料庫系統,
因為他有和 MySQL 高度重疊的特性,
因此使用上來說,其實如果沒有特別的需求,
筆者認為兩者都是可以隨意選擇的資料庫系統( 所以不用寫了..? ),
當然沒有,還是會跟各位介紹優缺點喔!

優點:

  1. 更加開放,貼近社群
    跟 MySQL 相同,都為開源軟體,
    但 Postgre 的設計上又更加以社群需求為導向去設計,

  2. 商業應用導向
    設計更新皆以商業應用導向為主,
    像是最重要的 『transaction 』,資料的交易機制,
    擁有更嚴格的測試驗證和設計機制。

  3. Store Procedure 和 View 功能強化
    Store Procedure 是類似資料庫裡的『函式』功能,
    可以在資料庫裡撰寫邏輯。
    View 則是把資料庫的複雜查詢語句,直接儲存起來,
    當做一個 table ( 表 )。
    在這種複雜的應用上,具有比 MySQL 更強的機制

  4. 地理結構資料類型
    PostgreSQL 非常適合製作有地理相關功能的應用程式,
    除了提供專屬的資料類型,
    也提供相關的資料庫函式,非常方便

缺點:

  1. 結構龐大
    PostgreSQL 因為有許多商業性的功能應用,
    因此容量大小上較為巨大,
    可能對於較小型的伺服器是個負擔。

  2. 複雜的查詢會導致效能低落
    對於比較複雜語句的查詢,會有較低的效能,
    主要是因為 PostgreSQL 軟體本身結構的緣故。

Microsoft SQL Server

https://ithelp.ithome.com.tw/upload/images/20181029/20107758cwKmxI0pCL.png
Microsoft SQL Server 是偉大的微軟公司推出的資料庫系統軟體,
我們先別說他遠到不行的親戚 Access (或許連親戚都不算?)
微軟推出的這個資料庫軟體,非常微軟,
也就是不是微軟相關的開發應用,根本不能用,或是用不起來,
但鑒於 C# 的聲名遠播,筆者仍認為這是很重要常用的 SQL 軟體。

優點:

  1. 工具整合性
    微軟生態系的雙面刃,
    對於微軟相關的開發工具都有非常好的整合應用,
    不管是報表、商業智慧( BI ) 相關的功能,
    或是和 C# 相關程式的對接,
    都非常的流暢好用。

  2. 使用的學習曲線低
    Ms SQL Server 的學習曲線較其餘兩者低,
    較不需要一些繁瑣的設定,
    且自帶資料庫介面操作工具,
    新手也能快速開始使用。

3 嚴格的交易安全與控制
對於資料庫 transaction 的安全控制非常良好,
畢竟是大軟體商經營的DB 伺服器,因此這部分算是基本盤。

缺點:

  1. 封閉的使用和開發環境
    基本上是屬於原始碼封閉的開發環境,
    因此社群上的討論度也略低,
    且雖然在 2017 年推出可以在 Linux 上運行的版本,
    但基本上,穩定的商用版本還是限定在 Windows 平台上為主。

  2. 較為笨重
    由於對於資料庫技術不是微軟 Team 主打的方向,
    因此使用了稍嫌龐大、資源吃重的資料庫引擎,
    會造成伺服器本身的資源負載量較大。

基本上,除了使用 C# 微軟的技術外,
其他不太推薦使用 MS SQL Server,
作為應用程式的資料庫。

Oracle Database

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

優點:

  1. 極高的安全性
    由於針對大型公司設計的緣故,
    在安全性機制的設定上,
    具有最高認證級別的ISO標準認證。

  2. 效能出色
    在從事各種大型運算,或查詢上,
    是經過 TPC 組織( 專門執行商用負載 )的認證,
    效能可以說是笑冠全主流資料庫系統。

  3. 功能齊全、強大
    具有多種資料儲存格式可以選擇,
    還有各式能夠自行制定的功能,
    例如同義詞、套件等等不同的模塊。

缺點:

  1. 使用成本昂貴
    基本上免費版是不太能用的,
    因此大部分都是在公司使用付費版,
    而付費版的價格較為高昂,
    相對應的硬體設施也有一定的要求。

  2. 學習成本高
    Oracle 是一個比較有技術含量的資料庫系統,
    對於新手來說,要快速學會核心的應用比較吃力些,
    需要較為 Senior 的技術開發者協助。

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

如果有任何問題,或是指證文中的錯誤,歡迎寄信給我或留言在下面喔~

參考資料:
不同資料庫的比較 - SQL Server vs Oracle and MySQL

SQL Server、MySQL、Oracle三種資料庫的優缺點比較,這一文夠了 原文網址:https://itw01.com/8DZ3EBL.html
PostgreSQL vs MySQL vs SQL Server vs Oracle


上一篇
[Day14] 演算法
下一篇
[Day16] 資料庫( SQL ) 基礎語法
系列文
菜鳥後端工程師的第一門課30

尚未有邦友留言

立即登入留言