有效地支持增量處理可以分解為以下幾個(gè)原語(yǔ)操作:
更新插入:從概念上講,重寫整個(gè)分區(qū)可以被視作一個(gè)非常低效的更新插入操作,最終會(huì)寫入比進(jìn)來的數(shù)據(jù)多得多的數(shù)據(jù)。因此,對(duì)(批量)更新插入的首要支持成為非常的重要工具。事實(shí)上,像Kudu和Hive事務(wù)等最近的趨勢(shì)的確是朝著這一方向發(fā)展的。谷歌的Mesa(谷歌的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng))論文也談?wù)摿藥醉?xiàng)技術(shù),可以被應(yīng)用到快速數(shù)據(jù)注入的場(chǎng)景里。
增量消費(fèi):盡管更新插入可以解決快速地向一個(gè)分區(qū)發(fā)布新數(shù)據(jù)的問題,下游的數(shù)據(jù)消費(fèi)者并不知道從過去的哪一個(gè)時(shí)刻開始哪些數(shù)據(jù)被改變了。通常,消費(fèi)者通過掃描整個(gè)分區(qū)/數(shù)據(jù)表并重新計(jì)算所有數(shù)據(jù)來得知改變的數(shù)據(jù),這需要花費(fèi)相當(dāng)多的時(shí)間和資源。因此,我們也需要一種機(jī)制來更加高效地獲取從上次分區(qū)被消費(fèi)的時(shí)間點(diǎn)開始改變過的數(shù)據(jù)記錄。有了上面兩種原語(yǔ)操作,你可以通過更新插入一個(gè)數(shù)據(jù)集,然后從中增量消費(fèi),并建立(也是增量的)另外一個(gè)數(shù)據(jù)集來支持很多常見的案例。數(shù)據(jù)投影就是最好理解的案例(如圖六所示):
