πŸ“Έ λ³€κ²½ 데이터 캑처(CDC, Change Data Capture)

 

CDCλž€ 무엇인가?

λ³€κ²½ 데이터 μΊ‘μ²˜λž€ 데이터가 λ³€κ²½λ˜λŠ” μ‹œμ  및 λ³€κ²½ ν•­λͺ©μ— λŒ€ν•œ 좔적을 μ˜λ―Έν•©λ‹ˆλ‹€. μΆ”μ μ˜ λͺ©μ μ€ 변경에 λŒ€μ‘ν•˜κΈ° μœ„ν•¨μž…λ‹ˆλ‹€. μ‹œμŠ€ν…œ(μ„œλΉ„μŠ€) Aκ°€ 변경될 λ•Œ μ‹œμŠ€ν…œ(μ„œλΉ„μŠ€) B에 영ν–₯도가 μžˆλ‹€λ©΄ B μ‹œμŠ€ν…œ(μ„œλΉ„μŠ€)에 μ•Œλ¦Όμ„ μ „μ†‘ν•˜μ—¬ 변경에 λŒ€μ‘ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

λ³€κ²½ 데이터 캑처λ₯Ό ν†΅ν•΄μ„œ 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  μ‹œμŠ€ν…œμ—μ„œ 일관성 및 κΈ°λŠ₯을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 메타 μ‹œμŠ€ν…œμ—μ„œλŠ” λ³€κ²½ λŒ€μ‘ μ‹œμŠ€ν…œ 쑴재 여뢀에 따라 ν”Œλž˜κ·Έλ₯Ό ν‘œμ‹œν•˜κ³ , 영ν–₯도가 μžˆλŠ” λŒ€μƒμ˜ λ³€κ²½ μš”μ²­μ„œκ°€ λ“±λ‘λ˜μ—ˆμ„ λ•Œ 원본 μ‹œμŠ€ν…œμ˜ ν…Œμ΄λΈ” λ³€κ²½ μš”μ²­μ„œλ₯Ό κ²°μž¬ν•  수 μžˆλ„λ‘ λ°©μ–΄ λ‘œμ§μ„ κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

λ³€κ²½ 데이터 캑처λ₯Ό ν™œμš©ν•˜μ—¬ 데이터 μ›¨μ–΄ν•˜μš°μŠ€(DW) μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ETL λ‹¨μˆœν™”

문제: 맀일 λ°€ 쑰직 λ‚΄μ˜ μ—¬λŸ¬ μ‹œμŠ€ν…œμ˜ 데이터가 μΆ”μΆœλ˜μ–΄ DW둜 μ΄λ™ν•©λ‹ˆλ‹€. ν•΄λ‹Ή 과정을 ν†΅ν•΄μ„œ DW의 λͺ¨λ“  데이터가 원본 μ‹œμŠ€ν…œμ˜ λ°μ΄ν„°λ‘œ Update λ©λ‹ˆλ‹€. μ΄λŠ” λ§Žμ€ λ¦¬μ†ŒμŠ€λ₯Ό μž‘μ•„λ¨ΉλŠ” μž‘μ—…μ΄λ©° λ§Žμ€ μ‹œκ°„μ„ ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. λ§ˆμ§€λ§‰ μΆ”μΆœ μ΄ν›„λ‘œ λ³€κ²½λœ λ°μ΄ν„°λ§Œ μ„ νƒμ μœΌλ‘œ μΆ”μΆœν•  μˆ˜λ„ μžˆμœΌλ‚˜, μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλŠ” 뢀뢄이 μ•„λ‹™λ‹ˆλ‹€. 그리고 원본 μ‹œμŠ€ν…œμ΄ λ‹€μˆ˜μ˜ λŒ€μƒ μ‹œμŠ€ν…œμ— 데이터λ₯Ό 곡급할 λ•Œμ—λ„ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

CDC 적용: λ³€κ²½ 데이터 이관 μž‘μ—… μ‹œ 식별 ν”„λ‘œμ„ΈμŠ€λ₯Ό ν†΅ν•΄μ„œ 데이터 μΆ”μΆœ μ‹œκ°„μ„ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€. 데이터 톡합과 κ΄€λ ¨ν•œ ν”„λ‘œμ νŠΈλ₯Ό λ‹΄λ‹Ήν•˜λŠ” 개발자 λ˜λŠ” DBA라면 CDC ν™œμš©μ„ 톡해 ETL μž‘μ—… μ‹œκ°„μ„ 단좕할 수 μžˆμŠ΅λ‹ˆλ‹€.

Change Data Capture​

CDC 기본 ꡬ쑰

CDC κ΅¬μ‘°λŠ” 등둝/κ°€μž…μž λͺ¨λΈμ„ 기반으둜 ν•©λ‹ˆλ‹€. λ“±λ‘μžλŠ” λ³€κ²½ 데이터 캑처의 μ±…μž„μ΄ 있으며, κ°€μž…μžλŠ” λ³€κ²½ 데이터λ₯Ό ν™œμš©ν•©λ‹ˆλ‹€.

  1. λ“±λ‘μžκ°€ 원본 ν…Œμ΄λΈ”μ„ μ‹λ³„ν•œλ‹€.

  2. λ³€κ²½ 데이터λ₯Ό μΊ‘μ²˜ν•˜μ—¬ λ³€κ²½ ν…Œμ΄λΈ”μ— μ €μž₯ν•œλ‹€.

  3. κ°€μž…μžκ°€ λ³€κ²½ ν…Œμ΄λΈ”μ— μ—‘μ„ΈμŠ€ν•  수 μžˆλ„λ‘ ν•œλ‹€.

  4. κ°€μž…μžκ°€ 관련이 μžˆλŠ” λ°μ΄ν„°λ§Œ μ‘°νšŒν•  수 μžˆλ„λ‘ κ°€μž…μž Viewλ₯Ό λ§Œλ“€μ–΄ λ³€κ²½ 데이터에 μ—‘μ„ΈμŠ€ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.



References
https://www.redhat.com/ko/topics/integration/what-is-change-data-capture https://dataonair.or.kr/db-tech-reference/d-lounge/technical-data/?mod=document&uid=235694