中文的「資料庫」一詞在日常使用上,涵蓋電腦科學的 “database”(資料庫系統), 以及泛學科的 “Lists of databases”。
我們對生物領域的人講「資料庫」,對方可能會理解為「人類基因資料庫」這類的物件。題外話,溝通要進行到確認對方的理解與我們的傳達一致,才算完成,不同領域可能對同一詞彙賦予不同意義。以下我們只談電腦科學領域的「資料庫系統」。
資料庫系統要到 1970 年代實作「資料庫管理系統」才變得強大起來,實現了應用程式與資料間的統一、共享接口,讓資料庫系統中的資料具備易用性。研究特定技術的發展背景,尤其是該技術所取代者與挑戰者,有助於我們掌握該技術的本質、優勢,甚至是缺陷。資料庫系統的發展歷史超過六十年,就留給各位自行研究。我們將重點放在跟資料專案密切相關,各種資料庫系統所對應解決方案間的關鍵差異。
圖片來源:Robin Purohit (原始網站已不存在)
通常我們只會比較 Data Warehouse(資料倉儲) 與 Data Lake(資料湖泊),因為它們同屬於資料分析與報表用途(OLAP, 線上分析處理),與 OLTP(線上交易處理)的資料庫系統不同。這些都是資料庫系統,只適用於不同的用途,雖然 Data Lake 也可以儲存非結構化資料而有些爭議,因為資料庫系統是以儲存結構化資料為前提。我們就用一張表來概覽它們之間的區別:
/ | Database for OLTP | Data Warehouses | Data Lakes |
---|---|---|---|
OLTP / OLAP | OLTP | OLAP | OLAP |
儲存資料類型 | 結構化資料 | 結構化資料 | 結構化, 非結構化 |
常規儲存資料規模 | <10 TB | 10-20 TB | > 30 TB |
資料管理類型 | schema on write | schema on write | schema on read |
資料應用主題 | 預先定義 | 預先定義 | 先儲存後定義 |
資料新鮮度 | 即時 | D+1, M+1 以上 | D+1, M+1 以上 |
主要使用者 | 交易系統 | 資料分析人員,商業分析人員,報表系統 | 資料科學家,資料分析人員,商業分析人員,報表系統 |
業界常用方案 | Oracle, MSSQL | Teradata, Oracle, MSSQL | Hadoop |
實際上,多年前我曾經看過一家大型醫院,把交易資料庫與資料倉儲,用同一個資料庫系統實現。早上它是交易資料庫滿足門診住院急診處理,晚上它是資料倉儲滿足醫療研究人員需求。數年後,這家醫院還是分拆出獨立的資料倉儲系統,這也表示這樣的方案還是撐了幾年。
這個問題沒有固定的答案,可以簡化從以下三個面向來評估:
以台灣高科技製造業的多樣少量的業務型態,可能一條產線只為 1-2 年的特定訂單存在,資料湖泊用於長期資料分析,難以發揮效益。半導體產業有其特殊性需要資料湖泊,此篇暫時擱置不討論。金融業長期耕耘特定客戶群,而且接觸客戶渠道多元,投資資料湖泊收納結構與非結構資料整合分析,有其必要與效益。
公有雲的出現讓企業擁有更多元的選擇。
也正因為如此,企業能更加專注在本業上,加上全球化,競爭也就更白熱化了。企業為了在競爭中勝出,追求營運效率的提升,因此寄望於資料驅動的數位轉型。這個背景造就資料領域逐漸從資訊領域中分化出來,也是我們後面會談到的”Data as a Product“,資料產品出現的原因。