[CassandraDB] CDC (Change Data Capture)
CassandraDB๋ ์์ฒด์ ์ผ๋ก ๋ณ๊ฒฝ ๋ฐ์ดํฐ ์บก์ณ(CDC, Change Data Capture) ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ด๋ฅผ ํตํด CassandraDB์ ๋ฐ์ดํฐ๋ฅผ ์์ค๋ก ์ผ์, ์ธ๋ถ ์์คํ
์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ ์ ์๋ค.
๊ทผ๋ฐ ๋ค๋ฅธ ์ฃผ์ DB๋ค์ CDC ๊ธฐ๋ฅ์ ๋นํ๋ฉด ๋งค์ฐ ์ฑ์์๊ณ ์ ์ดํ ํํ๋ก ์ ๊ณต๋๋ค.
API๊ฐ ๋ญ ๋ฐ๋ก ์๋๊ฒ ์๋๊ณ , ๋ก์ปฌ ๋์คํฌ์ ์๋ ์ปค๋ฐ๋ก๊ทธ(WAL)์ ์ง์ ์ฝ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฐ ๋ฉด์์๋ ScyllaDB๊ฐ ํจ์ฌ ๋ฐ์ด๋๋ค.
CDC ํ์ฑํํ๊ธฐ
๋จผ์ DB ์์ค์์ ํ์ฑํ๋ฅผ ํด์ค์ผ ํ๋ค.
sudo vim /etc/cassandra/cassandra.yaml
sudo systemctl restart cassandradb
๊ธฐ๋ณธ๊ฐ์ ๋นํ์ฑํ๋ค.
cassandradb๋ฅผ ์ฌ๋ถํ ํด๋ณด๋ฉด, ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ์ cdc_raw๋ผ๋ ํด๋๊ฐ ์๊ธด๋ค.
์ ๊ธฐ์ cdc ์ฝ์ ๊ฒ์ด ๋ค์ด์จ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ณ CDC ์ต์
์ ํ
์ด๋ธ ์์ค์์ ๊ด๋ฆฌ๋๋ค.
ํ
์ด๋ธ์ ๋ง๋ค๋ cdc ํ๋๊ทธ๋ฅผ ์ฃผ๊ฑฐ๋
CREATE TABLE test_space.foo (id int, value text, PRIMARY KEY(id)) WITH cdc=true;
๋์ค์ ํ์ฑํํ ์๋ ์๋ค.
ALTER TABLE foo WITH cdc=true;
๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ์ฉ์ด ๋๋ค.

์์ฉ...
์ค์ํ๊ฑด, ์ด๊ฒ ํ๋ ์ญํ ์ ๊ทธ๋ฅ commitlog๊ฐ ์ฝํ๊ธฐ ์ ๊น์ง ์ง์์ง์ง ์๊ฒ ํ๋ ์ ๋๋ผ๋ ๊ฒ์ด๋ค.
์ง์ ๋ค ํด์ผ ํ๋ค. ๊ทธ๋์ CDC๋ฅผ ์ฝ๋ ํ๋ก๊ทธ๋จ์ ๋ฐ๋์ CassandraDB๊ฐ ์๋ ๋
ธ๋์ ๊ฐ์ด ์ฌ๋ผ๊ฐ์ผ ํ๋ค.
์ปค๋ฐ๋ก๊ทธ๋ ์๊น ์ธ๊ธํ๋ cdc_raw ๊ฒฝ๋ก์ ์๊ณ

์ ๊ฑธ ํ์ฑํด์ ์ฐ๋ฉด ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค ์ฒ๋ฆฌํ๋ค๋ฉด ์ง์ ์ง์ฐ๋ฉด ๋๋ค.
๊ทผ๋ฐ ์์ฒด ํฌ๋งท์ด๋ผ ์๋ฐ ์๋๋ฉด ํธํ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฐพ๊ธฐ๋ ์ฝ์ง ์๋ค.
๊ทธ๋์ ํธํ๊ฒ ์ฐ๋ ค๋ฉด ๊ทธ๋ฅ debezium ์ฒ๋ผ ๋์ ๊ตฌํํด์ค ๊ฒ์ ๊ฐ๋ค์ฐ๋ ํธ์ด ๋ซ๋ค.
https://github.com/debezium/debezium-connector-cassandra
์ฐธ์กฐ
https://cassandra.apache.org/doc/latest/cassandra/managing/operating/cdc.html
https://debezium.io/documentation/reference/stable/connectors/cassandra.html