[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