๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ” database

mysql ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹ค์‹œ๊ฐ„ ํ™•์ธ

by ๋ฐ”์ฟ„๋ฆฌ 2024. 10. 2.

๊ฐœ์š”

์ด๋ฒˆ์— ์ƒˆ๋กœ ์ง„ํ–‰๋˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ search ํ–ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ํ•˜๊ฒŒ๋˜์–ด์„œ ๋„ˆ๋ฌด ์ข‹๋‹ค !

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์˜ Back์€ Fastapi, Front๋Š” javascript๋กœ ์ง„ํ–‰ํ•  ๊ฒƒ์ด๋‹ค.

 

๊ฐ„๋‹จํ•˜๋‹ค.

1. Robot์—์„œ Database์— ๋ฐ์ดํ„ฐ updateํ•œ๋‹ค.

2. Database์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ์‹œ Fastapi (Back)์ด ์•Œ์•„์•ผํ•œ๋‹ค.

3. Fastapi (Back)์—์„œ javascript (Front) ๋กœ ๋ณ€ํ™”๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

 

ํ™•์ธ

1. Database → Back : polling / CDC

2. Back → Front : web socket

 

Polling

์ผ์ • ์ฃผ๊ธฐ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•ด์„œ ๋ณ€ํ™”๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

1. ์ฃผ๊ธฐ๋ฅผ ์งง๊ฒŒ ์„ค์ •ํ•˜๋ฉด → ์„œ๋ฒ„ ๋ถ€ํ•˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ

2. ์ฃผ๊ธฐ๋ฅผ ๊ธธ๊ฒŒ ์„ค์ •ํ•˜๋ฉด → ์‹ค์‹œ๊ฐ„ ๋ฐ˜์‘์„ฑ ํ•œ๊ณ„

 

CDC

Change Data Capture

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

polling ์ฒ˜๋Ÿผ ์ง์ ‘ ์ฟผ๋ฆฌ๋ฅผ ์ „์†กํ•˜๋Š” ์•Š๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•ด์„œ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ์ „์†กํ•œ๋‹ค.

 

[๋™์ž‘ ๋ฐฉ์‹ ์ •๋ฆฌ]

  1. ํŠธ๋žœ์žญ์…˜ (INSERT, UPDATE, DELETE) ์„ ์ถ”์ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ captureํ•œ๋‹ค.
  2. capture๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ event stream ํ˜•ํƒœ๋กœ ๋‚ด๋ณด๋‚ธ๋‹ค.
    1. message queue (ex. Kafka, RabbitMQ ..) ๊ฐ™์€ ์‹œ์Šคํ…œ์œผ๋กœ ์ „์†กํ•œ๋‹ค.
  3. ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ(binlog), ํŠธ๋žœ์žญ์…˜ ๋กœ๊ทธ๋ฅผ ์ฝ์–ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๊ฐ์ง€ํ•œ๋‹ค.
    1. ์ด ๋กœ๊ทธ์—๋Š” database์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ ๋‚ด์—ญ์ด ๊ธฐ๋ก๋˜์–ด ์žˆ์–ด์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋‹ค.

[CDC ๊ตฌํ˜„์„ ์œ„ํ•œ ๋„๊ตฌ]

  • Debezium
    • ์˜คํ”ˆ์†Œ์Šค, Mysql ์ง€์›, Kafka์™€ ํ†ตํ•ฉ๋˜์–ด ์žˆ์Œ
    • ํ๋ฆ„
      • MySQL Binlog๋ฅผ ์ฝ์–ด์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ์ง€
      • Kafka Connect๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ Kafka ํ† ํ”ฝ์œผ๋กœ ์ „์†ก
      • application์ด Kafka๋กœ๋ถ€ํ„ฐ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ 
  • AWS DMS
    • AWS์—์„œ ์ œ๊ณตํ•˜๋Š” CDC ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ณต์ œ ์„œ๋น„์Šค
    • ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ ํ•˜์—ฌ ๋‹ค๋ฅธ AWS ์„œ๋น„์Šค(S3, Redshift ..)๋กœ ์ „์†ก
  • Apache Kafka + Kafka connect
    • Debezium์ด๋ž‘ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์Œ

 

์ด์ œ ๋‹ค์Œ์—” ์‹ค์ œ๋กœ ์ง„ํ–‰ํ•ด์•ผ๊ฒ ๋‹ค

 

> ์ง„ํ–‰:

 

mysql ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹ค์‹œ๊ฐ„ ํ™•์ธ ์ง„ํ–‰

mysql ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•˜๊ณ  ์‹ถ์–ด์„œ searchํ•˜๊ณ  ์ •๋ฆฌํ–ˆ๋‹ค. mysql ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹ค์‹œ๊ฐ„ ํ™•์ธ๊ฐœ์š”์ด๋ฒˆ์— ์ƒˆ๋กœ ์ง„ํ–‰๋˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณ€ํ™”

bonory.tistory.com