colagy wang created FLINK-40343:
-----------------------------------

             Summary: Support row‑level precise batch incremental update for 
Materialized Table with Left Join support
                 Key: FLINK-40343
                 URL: https://issues.apache.org/jira/browse/FLINK-40343
             Project: Flink
          Issue Type: Improvement
          Components: Table SQL / API
    Affects Versions: 2.3.0
         Environment: Apache Flink 2.3, Apache Paimon
            Reporter: colagy wang


h3. Background
Currently Flink Materialized Table provides two refresh modes:
 # {{{}REFRESH_MODE = CONTINUOUS{}}}: long‑running streaming job. It maintains 
full operator state for a long time to handle changelog updates. For scenarios 
where only sparse updates arrive occasionally (e.g. only a few records changed 
within 180 days), keeping large state for months brings excessive storage and 
CPU overhead.
 # {{{}REFRESH_MODE = FULL{}}}: periodic batch refresh. Existing batch 
incremental capability only works for simple append‑only projection/filter. 
Once the query contains {{{}JOIN{}}}, {{{}GROUP BY{}}}, batch incremental is 
silently degraded to full recomputation. Even if only a tiny fraction of 
rows/partitions are modified, the whole dataset and massive partitions have to 
be recomputed, resulting in extremely high compute cost.
h3. Business Pain Point
Take {{LEFT JOIN(order, product)}} as a typical business case:
 The business runs on a 15‑minute scheduling cycle. Only sparse partial updates 
come in each cycle.
 * Streaming mode: We have to maintain huge join state continuously, just for 
very few changed records, state cost is unacceptable for long‑term running.
 * Existing full batch mode: Every refresh triggers recomputation of massive 
unchanged partitions, compute cost is expensive and wasteful.
We expect a *row‑level precise batch incremental refresh mode* for Materialized 
Table, based on Paimon source table:
 # It does NOT require long‑lived streaming operator state; there is no large 
state to persist for months.
 # Only process rows/partitions which have real changes within the scheduling 
interval (for example every 15 minutes). Avoid recomputing massive untouched 
partitions.
 # Support incremental computation for {{{}LEFT JOIN{}}}. This feature can be 
disabled by default for safety, but should be available when users explicitly 
enable it.
h3. Industry Reference
Aliyun Ververica platform has already implemented similar precise 
batch‑incremental materialized table capability in production. It proves this 
technical solution is feasible and valuable for real‑world production workloads.
h3. Expected Benefit
 # Reduce compute resource cost: avoid full partition recomputation when only 
sparse updates occur.
 # Eliminate heavy long‑term streaming state maintenance cost for 
low‑change‑frequency business.
 # Expand batch incremental capability beyond simple filter/projection, support 
common join workloads such as {{{}LEFT JOIN{}}}.
h3. Suggested acceptance criteria
 * New refresh mode for Materialized Table: precise row‑level batch incremental 
update against Paimon source.
 * Support incremental {{LEFT JOIN}} calculation, guarded by an explicit config 
switch (disabled by default).
 * Only process actually‑modified data set in each scheduled batch run; skip 
untouched partitions/rows.
 * No requirement for persistent long‑running streaming operator state.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to