View & Materialized View 概念

差異

在 CannerFlow 上做的資料虛擬化設計,像是把數十個數百的資料庫變成一個虛擬的資料庫,可以在上面直接針對不同的 Table 做整合、運算、大量處理。

在 CannerFlow 中 View 以及 Materialized View 就像是我們在一般 Database 裡面所操作的 View & Materialized View,使用時機也不太一樣。最大的差異是 View 只是儲存原始的 SQL statement 並未先執行,Materialized view 會在每次執行時會暫存數據未來可直接對暫存數據操作

View

在 CannerFlow 的 View,您也可以想成像是我們在操作 Database 時的 View。我能夠直接把不同的資料庫的執行 SQL 轉成一個 SQL View,然後再用 View 去與其他 Table 去做 Join 等等操作。

查看更多 View 的操作

Materialized View

若您有使用 PostgreSQL, Oracle 等關聯式資料庫的經驗,或多或少會聽過 Materialized View,簡單來說,Materialized View 會把 SQL Query 的結果實體化,最常見的用途為提高查詢的效能。在 CannerFlow 的 Materialized View,您也可以想成像是我們在操作 Database 時的 Materialized View,也就是我們在一般操作資料庫時,您希望有 "預先運算" 的結果儲存成一個新的 Table 時,您可以創立一個新的 Materialized View。

在 CannerFlow 中,Materialized View 在 Storage 中會佔有獨立空間,我們可以將一些費時,複雜的查詢結果用 Materialized View 建立快照的話,可以透過查詢該 Materialized View 節省每次回到資料來源取的資料的時間成本,例如我們透過 Oracle, PostgreSQL Join 幾張表得到一份業務資料,這樣的查詢若使用頻率較高,但不需要非常即時,一天更新一次即可,與其每次使用都到 Oracle 及 PostgreSQL 取得資料,不如設定一個 Scheduled Materialized View,一天執行一次並把資料實體化,這樣不管後續查詢或是 BI 軟體需要,都可以使用這份。

Materialized View 的使用方法:

  1. 預先運算結果,讓終端使用者可以快速地取得資料在他們的應用中
  2. 可以降低每次都要重新運算的 Effort,使用 Materialized View 預先算好常用的報表後續使用者可以直接使用,不需重複運算。
  3. 自動化更新,在 CannerFlow 中您可以排程固定時間更新 Materialized View 產生後續使用報表,未來不需要人力的建置產生報表。
Partitions

目前限制最多只能分 100 個 Partitions

查看更多 Materialized View 的操作

CannerFlow 資料流

當使用者在 SQL explorer 下很複雜的 Query 時,這個 Query 會像下圖執行:

  1. 從源頭我們只會取得需要運算的數據,在 SQL 通常就只是單純的 SELECT statement。
  2. 拉到運算層時我們會用分散式運算去把 Heavy computing 的東西拉到多台節點運算,像是 Join, max, min, etc...
  3. 運算完的結果呈現在 SQL explorer 的畫面上
  4. 使用者可以定期排程實體化(Materialized View),供未來應用單位可以快速的使用數據,不需每次都重新重頭運算。
  5. 實體化的數據可以到各種不同單位的應用,像是 Power BI, Tableau, 各種 SDK 等。

concept chart