DB學習筆記 — 基本概念/安裝資源

SeanChien
Feb 25, 2021

--

Photo by Luke Chesser on Unsplash

前言

在出發美國就讀商業分析碩士之前,除了打好程式基礎之外,也花了一些時間來研究所謂的資料庫。未來如果想找到Business Analyst相關的工作,一定會接觸大量的資料,那這些資料就是存在資料庫中。除了一般的透過Query讀取之外,還可能接觸到擷取、轉換和載入(Data ETL)的工作,最後再把這些資料做分析、視覺化。

所以就把練習跟研讀的心得寫成筆記,除了自己可以複習之外,也希望分享給大家,讓看到這篇的人少走一點彎路😂

什麼是資料庫?為什麼要用資料庫?

資料庫就是一個儲存、讀取、管理資料的地方,像是在傳統的柑仔店,可能就是在紙上寫了今天進貨了什麼,賣出了什麼東西,然後去管理庫存,這些紙張整理起來的資料夾,就是一種資料庫;或是很多公司透過EXCEL在資料表中紀錄各種資料,這個EXCEL檔也可以是資料。那我們這邊提到的資料庫,是透過電腦來進行資料管控的軟體。使用資料庫來管理下面幾個優點:

  • 保存性
    資料庫存在硬碟裡,不是存在記憶體,所以即使電腦關機,資料也不會不見,透過資料庫存資料就能確保資料的保存性。
  • 方便性
    使用資料庫儲存,除了方便管理資料存放的位置,也儲存資料的過程中也會對資料進行壓縮,所以效能更高,要找資料也更方便。
  • 安全性
    通常使用資料庫都需要登入使用者帳號跟密碼,這樣的設計就可以確保資料不輕易被讀取。
  • 管理性
    資料庫是透過軟體的方式來操作,所以不論是要對資料處理還是移植或是進行升級,都可以透過指令來完成,所以很適合集中管理。
Photo by Tobias Fischer on Unsplash

資料庫種類

常見的資料庫分為兩類,分別是透過SQL來查詢的關連式資料庫,以及NoSQL查詢的資料庫。常聽到的MySQL、MSSQL、PostgreSQL都是關連式資料庫,至於NoSQL則是Redis、Mongodb等等。接下來針對兩種類型進行簡單的解說。

關連式資料庫 Relational Database Management System (RDBMS)

關連式資料庫有三個重點:

  1. 透過表格(Table)的方式儲存,並且進行資料正規化,來避免重複的資料不同的表格出現,有效率的儲存與讀取資料。
  2. 表格與表格之間有所關聯,這也是為什麼叫做關連式資料庫的原因。
表格SCORE
表格USER

像左側有兩個表格分別是USER跟SCORE,並且已經資料正規化了,詳細的資料正規化之後有空會再寫一篇,那可以看到,這兩個表格的關聯就是ID,所以可以透過ID來將兩個表格JOIN(合併)來查詢。

3. 透過SQL語言來進行查詢與其他操作。

最常見的SQL語法如下:

SELECT [欄位名稱] FROM [資料庫名稱]
WHERE [篩選條件]

如果像上面的範例要查詢的話,可以透過下面的方式來查詢

SELECT USER.ID, USER.Name, SCORE.Score
FROM USER JOIN SCORE
WHERE USER.ID = SCORE.ID
USER join SCORE

關連式資料庫的建置以及SQL語法的使用都是一門很深奧的學問,要設計一個良好的資料,是一件非常不容易的事。同時,要最有效率的透過SQL語法來讀取資料也是要下一番功夫。之後還會有一系列的SQL筆記,因為畢竟在美國要找Business Analyst這個職缺的話,大概有90%的白板題都是考SQL😂

NoSQL資料庫

NoSQL的意思是Not-Only SQL,就是有別於傳統的關聯式資料庫,將資料存文件(Document)的格式,文件們組成集合(Collection),最後存在資料庫裡面,那在文件中資料的儲存格式通常會像是JSON的格式,透過key-value的方式來存取資料。

至於NoSQL資料庫則有三個特性:

  1. 效能高:NoSQL的存取方式讓他有更高的效能及有較高的開發彈性。
  2. 可擴展性:可以透過硬體的分散式方式向外擴展,不需要花費昂貴的伺服器來進行垂直擴展。
  3. 功能性高:NoSQL的資料庫非常適合各種資料模型建置的API跟資料。

接下來以MongoDB的操作來做示範!

假設今天有這資料的存取方式是用json的格式存入,共有三筆,那要將這樣的資料讀取出來其實非常的簡單,只要切換到該資料庫,並選擇該集合,最後在用CRUD(增刪查改Create/Read/Update/Delete)指令就可以讀出來了。

Show dbs #可以查看現有資料庫們
USE [資料庫名] #切換到該資料庫
Show collections #可以查看現有集合們
db.[集合名].find({}) #就可以找到該集合內全部的資料的

詳細的MongoDB教學,也會在之後寫幾篇,因為我現在也正在練習啦🤣
最後大家可以參考下圖比較RDBMS跟NoSQL資料庫的比較!

資料來源:蔡維成 SlideShare P.13

Mac版下載教學

因為自己是用Mac,常常遇到下載軟體會有一些問題,所以就上網搜尋了大量的資料,終於找到兩個比較有用的下載教學

Photo by Sigmund on Unsplash

PostgreSQL 安裝教學

連結:https://www.vnewin.com/day3-macos-install-postgresql-pgadmin/

透過PostgreSQL、pgAdmin這兩個app來輔助啟動與建制資料庫,可說是相當方便,跟著文中的步驟走,就可以在10分鐘內搭建完PostgreSQL資料庫

MongoDB 安裝教學

連結:https://docs.mongodb.com/guides/server/install/

官網的安裝介紹就寫得相當詳細了,要特別注意的是,網路上有很多Mac的安裝教學是透過b̶r̶e̶w̶ ̶i̶n̶s̶t̶a̶l̶l̶ ̶m̶o̶n̶g̶o̶d̶b̶ 的方式來下載,但現在已經不支援,不要浪費時間在研究為什麼會卡在那邊,直接透過下載檔案以及解壓縮的方式安裝,既快速又不會遇到問題!

小結

基本的資料庫介紹就到這裡啦,之後會分別對SQL跟NoSQL去撰寫各自的筆記,不論是建置、讀取、修改,或是各種邏輯運算。另外也會將Leetcode跟HackerRank相關的題目帶進來分析與討論。

我是尚恩,一個從商學院畢業的菜鳥工程師,有任何想從商轉換跑道的問題都可以找我聊聊,歡迎透過Linkedin@SeanChien聯絡我~

如果喜歡我的文章可以幫我鼓掌、訂閱、分享謝謝😇!

--

--