iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 30
1
AI & Data

與資料庫共舞系列 第 30

Day 30 — 與資料庫共舞的結語

  • 分享至 

  • xImage
  •  

終於來到鐵人賽的最後一篇文章。這一篇文章中,我想再花一點時間,重新整理一下前面29天的內容、討論一些來不及寫進這個系列文章,或式資料庫相關的主題、最後附上一點點的心得。

回顧

在這個系列的文章中,我們介紹了關聯式資料庫、MySQL 的基本語法;兩種非關聯式資料庫: 以文檔為主的 MongoDB、以圖為底的Neo4j。在最後的幾天,我們討論了關聯式資料庫中比較複雜和進階的觀念。

這個系列文章當中,我並沒有討論這三種資料庫實際上串接應用程式的過程和其應用,而是這30天有成功的讓讀者看到資料庫管理系統的各個面向,然後在未來可以挑選適合自己應用程式的資料庫來解決問題。

寫出好的查詢很難

學習資料庫的過程中,不管是我自己,或是我的學生,最常遇到的問題就是到底要怎麼寫出好的查詢?

首先,不知道讀者有沒有發現,三種資料庫其實語法結構很類似,解問題的時候,就是要把問題拆成一樣的結構。當我打到一個需要查詢的資料,重要的是我要先用想出要從哪裡取得可能可以找到這個答案的資料。所以先不要擔心輸出的樣子,先選出需要的資料來源。選取之後依照自己的邏輯去篩選出這個資料集符合條件的數據,最後才去改變這個數據呈現的方式。在過去的時間中,最容易犯的錯誤就是看到的問題就直接想要把查詢寫出來。另外一個常犯的錯誤是太擔心效能,在寫查詢的過程中,先別擔心資料庫的速度,很多時候簡單的解法就可以解決,不需要太過複雜。

隨著越來越多人需要操作資料,現在有越來越多圖像畫資料庫工具可以供大家來使用,這也是為什麼在這一個系列文章當中,我盡可能的選用了有圖像化工具的工具來呈現跟解釋查詢。這會讓寫查詢的人有效了解程式碼中每一段到底在做什麼,也可以跟讓我們對於自己寫的查詢邏輯跟實際上運行的邏輯相吻合更有自信。

相關主題

有兩個跟資料庫相關的主題是我在這個系列文章沒有機會討論的。首先是「與人共容的資料庫管理系統」(Human-in-the-loop data mangement systems)。這個觀念的重點在資料庫和人應該是互相合作的。這個領域的研究學者認為,人在使用資料庫的時候有個想要達成的目的,舉例說,音樂創作者想要知道什麼人喜歡聽那些自己寫的歌,這時候在過程當中,我們沒有辦法一鍵完成這個過程,它需要人介入,把資料放進資料庫、標註不同的族群、了解自己歌曲的類別、拿到資料後要畫圖、整理結果。這些很多都需要人手工處理。這時候如果有工具和系統可以協助這樣的人機互動關聯可以讓流程更加的順暢。有興趣的讀者可以看看這些研究是蓋出來的系統: imMens, SeeDB, DataSpread 等等。

https://ithelp.ithome.com.tw/upload/images/20200930/20129829MDAQXGHqx7.png

(這張圖是 DataSpread 的系統截圖,和Excel 長得很像,但是你可以在這個試算表中執行SQL指令,但是又可以把資料框起來排序視覺化結果。)

另外一個沒有辦法討論的相關主題就是資料視覺化 (看看明年會不會有空來寫囉!),這類的系統像是 Tableau, PowerBI 都是這類的系統。大部分串接資料庫,但是用圖像的方式把結果顯示出來。例如 Tableau 就是用拖曳轉換成資料查詢的程式碼再把它繪製成圖,某種程度上它也是在做查詢。

(圖片取自 Tableau 官網)
https://ithelp.ithome.com.tw/upload/images/20200930/20129829WzJMnLaLxQ.png

心得

謝謝有 Follow 這個系列的讀者,與資料庫共舞的文章沒有庫存,幾乎每一篇都是當天寫出來的。錯字和文句還請多多包涵。很感謝自己堅持完成了 30 天。為了要把事情解釋清楚,過程中意外地也學到了很多沒有想過的問題。

鐵人 30 明年見?


上一篇
Day 29 — 資料庫的交易
系列文
與資料庫共舞30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言