[Clickhouse] Materialized View
Materialized View๋ ํจ๊ณผ์ ์ธ ์ฟผ๋ฆฌ ์ต์ ํ๋ฅผ ์ํ ๋ณด์กฐ๋๊ตฌ ์ค ํ๋๋ค.
๋ฏธ๋ฆฌ ์ํ๋ ํํ๋๋ก ์กฐํ์ฉ ํ
์ด๋ธ์ ์์ฑํ๋ ๊ฒ์ด๋ค.
Incremental Materialized View์ Refreshable Materialized View 2๊ฐ์ง๊ฐ ์ง์๋๋ค.
๋์ ๊ตฌ์กฐ
์ด๊ฒ ๋ญ๋๋ฉด, ๋ทฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํด๋๋ฉด clickhouse๊ฐ ์๋์ผ๋ก ๊ทธ์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ด์ฃผ๋ ๊ฒ์ด๋ค.
https://clickhouse.com/docs/materialized-view/incremental-materialized-view
๊ทธ๋๊ทธ๋ ๋ค์ด์จ ๊ฐ์ ๋ํด์๋ง ์ง๊ณ ์ฐ์ฐ์ ํด์ ๋์ ํ
์ด๋ธ์ ๋ถ์ด์ค๋ค.
View INSERT์ ๋ฐ๋ฅธ ๋ถํ๊ฐ ์ฆ๊ฐํ์ง๋ง, ๊ทธ๋์ ํด๋น View ์ ๊ทผ ํจํด์ ๋ํด์๋ ๋งค์ฐ ๊ทน์ ์ธ ์ต์ ํ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
Incremental๊ณผ Refreshable์ ์ฐจ์ด๋ INSERT ๋ ๋๋ง๋ค ์ค์๊ฐ์ผ๋ก View๋ฅผ ์์ฑํ๋ ๊ฒ์ธ์ง, ์๋๋ฉด ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋๊ธํ๊ฒ View๋ฅผ ๋ง๋๋ ๊ฒ์ธ์ง๋ค.
Refreshable์ ๊ตฌ์กฐ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
https://clickhouse.com/docs/materialized-view/refreshable-materialized-view
์ด๊ฑด ์ผ์ ๋ง๋ค ์ ์ฒด์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค์ ๋ฃ๋๊ฑฐ๋ผ์, Incremental์ ๋นํด ๋ถํ๊ฐ ์ข ํฌ๋ค.
SummingMergeTree ์์ง
View ๊ธฐ๋ฅ์ ์๋ฐํ๊ฒ๋ ๊ทธ ์์ฒด๋ก ์์ฑ๋ ํ
์ด๋ธ์ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ์ ์๋๋ค.
๋ณ๋์ View ํ
์ด๋ธ์ ๋ง๋ค๊ณ ๋์ ๊ฑฐ๊ธฐ์ ๋ถ์ด์ฃผ๋ ์ญํ ์ ํ๋๊ฒ Materialized View์ ๋์์ด๋ค.
View ์ ์ฅ ๋์ ํ ์ด๋ธ์ ์ํด ์กด์ฌํ๋ ๊ฒ์ด SummingMergeTree๋ผ๋ ์์ง์ด๋ค.

์ด๋ฐ ์ง๊ณ ์ฟผ๋ฆฌ๊ฐ ์๋ค๋ฉด
๊ทธ ๊ตฌ์กฐ์ ๋ง์ถฐ์ ํ
์ด๋ธ์ ์ง์ฃผ๋ฉด ๋๋ค.
View ์ ์ฉ (Incremental)
๋ทฐ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋ค.
CREATE MATERIALIZED VIEW ๋ทฐ์ด๋ฆ TO ๋์ํ
์ด๋ธ AS
SELECT ์ฟผ๋ฆฌ...

๊ทธ๋ผ ๋ทฐ๊ฐ ์์ฑ๋๋๋ฐ, ์ ์ํ ์ ์ ๋ทฐ๋ ํ ์ด๋ธ์ฒ๋ผ ์ทจ๊ธ๋๋ค๋ ๊ฒ์ด๋ค. ์กฐํ๋, ์ญ์ ๋ฐฉ๋ฒ๋ ๊ฐ๋ค.

์ฌ๊ธฐ์์ ๋ฌธ์ ๋, ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ฎ๊ฒจ์ฃผ๊ฑฐ๋ ํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค. INSERT์ ๋ฐ์ํด์ ์ฎ๊ฒจ์ค๋ค.
๊ทธ๋์ ์ฒ์์๋ ์๋์ผ๋ก ์ฟผ๋ฆฌ ๋ ๋ ค์ ํ๋ฒ ์ด๊ธฐํํด์ฃผ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
์ดํ๋ถํฐ ๋ค์ด์ค๋ INSERT์ ๋ํด์๋ ์๋์ผ๋ก ์ง๊ณ ๊ฒฐ๊ณผ๊ฐ ์ฝ์ ๋๋ค.
์ง์์ ์ผ๋ก ๊ด๋ฆฌํ ๊ฑฐ๋ผ๋ฉด ์ด Incremental ๋ฐฉ์์ด ํจ์ฌ ๋ฆฌ์์ค ํจ์จ์ ์ด๊ณ ๊ถ์ฅ๋๋ ํธ์ด๋ค.
Refreshable Materialized View
REFRESH View๋ ์ฌ์ฉ๋ฒ์ด ํฌ๊ฒ ๋ค๋ฅด์ง ์๊ณ , Refresh ์ ๋ง ์ถ๊ฐํ๋ฉด ๋๋ค.
CREATE MATERIALIZED VIEW ๋ทฐ์ด๋ฆ
REFRESH ์ผ์
TO ๋์ํ
์ด๋ธ AS
SELECT ...
์๋ฅผ ๋ค์ด, ์์ ๊ฒฝ์ฐ์๋ 10๋ถ๋ง๋ค ๋๊ธฐํ๋ฅผ ํ๊ณ ์ถ๋ค๋ฉด ์ด๋ ๊ฒ ํ ์ ์๋ค.

๊ทธ๋ฆฌ๊ณ ์ด๊ฑด ์ฃผ๊ธฐ๋ง๋ค ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๊ณ ์๋ก ๋ฃ๋๊ฑฐ๋ผ์, Incremental๊ณผ๋ ๋ค๋ฅด๊ฒ ์ด์ ์ ์๋ ๋ฐ์ดํฐ๋ ํ๋ฒ์ ๋๊ธฐํ๊ฐ ๋๋ค.
๋ค๋ง ๋์ฒด๋ก๋ Incremental์ ๋นํด ๋นํจ์จ์ ์ธ ํธ์ด๋ค.
์ ํฉ์ฑ ๊ฐ์๊ฒ ๋งค์ฐ ์ค์ํ๊ฑฐ๋, ์ด๋ฐ ์ผ์ ์ฃผ๊ธฐ ๊ธฐ๋ฐ์ ์ง๊ณ๊ฐ ํจ์จ์ ์ธ ๊ฒฝ์ฐ์ ์ฐจ์ ์ฑ ์ผ๋ก ์ ํํด์ผ ํ๋ค.
์ฐธ์กฐ
https://clickhouse.com/docs/materialized-view/incremental-materialized-view
https://clickhouse.com/docs/materialized-view/refreshable-materialized-view