πΉ CDC: ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΠ (Change Data Capture) πΉ ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ CDC ΠΈ ΡΡΠΎ ΠΎΠ½ ΡΠ΅ΡΠ°Π΅Ρ? πΈ ΠΠ΅Π· CDC Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡ ΠΏΠ°ΡΠΊΠ°ΠΌΠΈ β ETL (Extract, Transform, Load) ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΡΠ΅ Π΄Π°ΠΌΠΏΡ: Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, Π½Π°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΠΠ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ. CDC ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π΄Π°ΡΡ nearβrealβtime Π΄ΠΎΡΡΠ°Π²ΠΊΡ.
πΈ Log-based CDC ΡΠΈΡΠ°Π΅Ρ ΠΆΡΡΠ½Π°Π» ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ (WAL β write-ahead log ΠΈΠ»ΠΈ binlog) Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°Π±Π»ΠΈΡ; ΡΡΠΎ low-impact Π½Π° Π±Π°Π·Ρ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ΄ΡΡ ΠΊΠ°ΠΊ streams (ΠΏΠΎΡΠΎΠΊΠΈ) Π² Π±ΡΠΎΠΊΠ΅ΡΡ (Kafka) ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΠΎΠΈΡΡ event-driven sync.
πΈ ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ: realtime-Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ°, ΠΌΠ΅ΠΆΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Debezium ΡΠΈΡΠ°Π΅Ρ WAL Postgres ΠΈ ΠΏΠΈΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΡ Π² Kafka, downstream ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
{"op":"u","table":"users","id":42,"after":{"name":"Ivan"}}
π Log-based CDC + streams β Π»ΡΡΡΠΈΠΉ Π²ΡΠ±ΠΎΡ Π΄Π»Ρ ΡΠ°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
β‘οΈ ΠΡ Π² Telegram - Π‘Π΅ΡΠΊΠ΅ - ΠΠ ΠΡΠ΄Ρ ΡΠ°Π΄ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°ΠΊΡΠΈΠΈ Π·Π΄Π΅ΡΡβ¬οΈ
Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΡΡΠ»ΠΊΠΈ, Π½ΠΎ ΠΌΡ ΠΈΡ ΡΠ΄Π°Π»ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π‘Π΅ΡΠΊΠΈ