Skip to main content
Version: v4

Incremental Material View 進階說明

什麼是 Incremental Materialized View?

Materialized View 在更新時,整個 Query 會重新執行,資料也會從來源重新抓取,若資料量大,會造成系統較大的負擔。而 Incremental Materialized View (增量式資料實體化) 就是為了解決這個問題而設計出來的,運作機制如下:

  1. 使用者需指定來源的 Table,Incremental Key 以及 Unique Key

    1. Incremental Key (必要欄位): 每次更新會記錄此欄位的最大值,並對資料來源下大於 (>) 此最大值的 Query,取得片段的更新資料.
    2. Unique Key (非必要欄位): 在後續增量式更新時,會以此欄位做資料合併,若不指定此欄位,將會忽略來自資料來源的更新(Update Row)訊息,並只將資料來源的更新資料以新增方式( append) 到 Materialized View 中.
  2. 在第一次抓取時,如同一般的 Materialized View,整份資料會被複製進來,這時我們會紀錄 incremental key 此欄位的最大值

    我們抓取 users 這張表,把 id 當作 unique key,updated_at 當作 incremental key。

  3. 第二次之後更新,就會是增量式的更新

    上一次更新,我們紀錄 update_at 的最大值是 2021/1/5,我們從來源端取得大於2021/1/5 的資料,並使用 id 合併更新舊資料,若原本沒有此 id 對應的資料,就會 insert 成新資料。

info

注意 : 目前 Canner Enterprise 僅支援資料有 Append 及 Update 的更新,尚未支援 Delete 情況的更新