BigQuery ― Google Data Warehouse 解決方案

簡介

Image result for data warehouse

在現今的企業中,越來越多公司傾向以資料導向作為企業的決策依據。哪麼資料倉儲系統就是一個現代企業不可或缺的一部分。然而現今各種資料來源充斥著整個企業內部,越來越來的資料需要進行分析。傳統上的資料倉儲效能變得越來越糟而企業需要根據資料來做決策卻要越來越即時,因為市場瞬息萬變。而隨著市場的動態,分析的需求也是不固定的。若要準備夠大的資料倉儲系統應對則有資源浪費的狀況發生,資料倉儲太小則分析需求就會有效能太慢跟不及時的狀況發生, BigQuery就在此種狀況狀況下應運而生。

什麼是BigQuery(以下簡稱BQ)

Image result for bigquery logo

Google BQ是一個託管式及高擴充性的服務,也就是說不再需要再像傳統的資料中心一樣建立一堆的機器以及需要各式基礎建設的各類工程師來幫你搭建這個環境,例如在BQ服務下你不需要一個資料庫管理員來做幫你做Data replication/defragmentation/Disaster Recovery等等的工作, Google都會幫你處理這些問題。您只需要一個熟習一般傳統SQL語法的工程師幫你使用即可。
Google BQ的效能能夠讓你在一秒內查詢TB及資料量或一分鐘內查詢PB及的資料量,也不再需要建立傳統資料庫為了加快資料量需要建立index機制。
BQ除了是一個全託管的服務外,它的高效能也是因為BQ是一種分散式的SQL Engine。你可以使直接在Google的UI介面上使接使用這一項服務,甚至可以查詢的資料不是放在BQ之內,例如 CVS/JSON/Avro等類型的檔案。當然你也可以直接將這些檔案直接載入到BQ內的系統,由於BQ是雲端服務所以你也不用擔心會把BQ的儲存空間用滿,除非你有一天不再需要這些資料。
BQ與一般傳統的資料倉儲系統不同在於,一般傳統的資料倉儲系統是 row base的設計,而BQ是用Column base的架構設計(如下圖)。

Image result for bigquery column oriented

如何將資料載入BQ呢?

Image result for extract transform load

這時免不了的需要ETL這一類的工具拉幫助我們將資料載入到BQ內, GCP也有一套全託管的ETL服務。
Extract — Cloud Pub/Sub(Stream) or Cloud Storage(Batch)
Transfer — Cloud Dataflow
Load — BQ
另外GCP也提供了另外兩項託管式服務
Datalab — EDA(exploratory data analysis)
DataPrep — 資料清洗服務
下圖為建立一個資料在GCP中產生的ETL流程圖,當然有有過ETL工具的人都知道。ETL並不是一個絕對必要的程序,可能是EL或ETL。是根據您的業務需求及資料特性來決定此一流程,故如何建立你的Data pipeline是非常重要的。

instant-insights-35pye.PNG

前面提到你可以因為BQ是一個SQL Engine,你除了用SQL語法直接查詢外。也可以使用外部的BI工具,例如Tableau/Looker/Google Data Studio(免費的)來對BQ做資料查詢。
而BQ也有內建ML(Machine Learning)機制,這部分我們後面有會專門的文章來介紹。也因為這一個功能BQ除了可以做到一般Data warehouse的Descriptive analytics 也能做到Predictive analytics。

以上就是GCP的Data warehouse–Bigquery簡單的介紹,下一篇我們將開始介紹如何開始使用BQ.

發佈留言