什麼是 Incremental Materialized View?
什麼是 Incremental Materialized View ? 為何需要它 ?
我們在 產生 Materialized View (資料實體化)
章節中了解到如何創建 Materialized View,但 Materialized View 在更新時,整個 Query 會重新執行,資料也會從來源重新抓取,若資料量大,會造成系統較大的負擔.
而 Incremental Materialized View (增量式資料實體化) 就是為了解決這個問題而設計出來的,運作機制如下:
使用者需指定來源的 Table,
Incremental Key
以及Unique Key
Incremental Key
(Required): 每次更新會記錄此欄位的最大值,並對資料來源下大於 (>
) 此最大值的 Query,取得片段的更新資料.Unique Key
(Optional): 在後續增量式更新時,會以此欄位做資料合併,若不指定此欄位,將會忽略來自資料來源 update row 的更新,並只把 insert 到資料來源的新資料 append 到 Materialized View 中.
在第一次抓取時,如同一般的 Materialized View,整份資料會被複製進來,這時我們會紀錄
incremental key
此欄位的最大值.我們抓取
users
這張表,把id
當作 unique key,updated_at
當作 incremental key.第二次之後更新,就會是增量式的更新,
上一次更新,我們紀錄
update_at
的最大值是1/5
,我們從來源端取得> 1/5
的資料,並使用id
合併更新舊資料,若原本沒有此id
對應的資料,就會 insert 成新資料.
注意
目前 Canner Enterprise 僅支援資料有 Append 及 Update 的更新,尚未支援 Delete 情況的更新