ΠΡ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π»ΠΈ ΠΏΡΠΎ ΠΏΠΎΠΈΡΠΊ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΈ ΠΈΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Apache Flink. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΡΡΡ Π²Π°ΠΆΠ½ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π΄Π°ΡΠ°-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ² ΡΠ΅ΠΌΡ, ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ CDC-ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡ ΠΎΡ GetIndata ΡΠΏΡΠΎΡΠ°Π΅Ρ Π·Π°ΠΏΡΡΠΊ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π½Π° ΠΏΠΎΡΠΎΠΊΠ°Ρ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π°Ρ
Π²Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JDBC-Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ
ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ Flink SQL.CEP ΠΈ CDC Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ Π² ΠΏΠΎΡΠΎΠΊΠ°Ρ
ΡΠΎΠ±ΡΡΠΈΠΉ, ΡΡΠΎΠ±Ρ Π·Π°Π±Π»Π°Π³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Big Data ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
CEP-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (Complex Event Processing, CEP). ΠΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° Π²Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΡΠΎΠ±ΡΡΠΈΠΉ Ρ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ, Π½Π° Π»Π΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΠΈΡΠΊ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Ρ Π½Π΅ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°. CEP ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΉΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡΡ Π² Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ΅ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ. Π ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π½Π°Π±ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ CEP ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΈΡΠΊΠΎΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.Π Apache Flink ΠΈΠ΄Π΅Ρ CEP ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ Π΅Π³ΠΎ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ
. ΠΠΏΠ΅ΡΠ²ΡΠ΅ API Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ CEP Π² Apache Flink Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² 2016 Π³ΠΎΠ΄Ρ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° FlinkCEP Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ²Π½ΠΎ Π·Π°Π΄Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ FlinkCEP Π² ΡΠ°ΠΉΠ» pom.xml Flink-ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ Π·Π΄Π΅ΡΡ.ΠΠ΄Π΅ΠΈ CEP ΠΊΠΎΡΡΠ΅Π»ΠΈΡΡΡΡ Ρ Π·Π°Ρ
Π²Π°ΡΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
(Change Data Capture, CDC) β ΠΏΠΎΠ΄Ρ
ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΡΠΎΠ±Ρ Π²Π·ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CDC Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΡΡ
Π² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΠΎΡΠΎΠΊ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ ΡΠ°Π±Π»ΠΈΡΡ. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΏΠΎΡΠΎΠΊ CDC ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ Apache Flink, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ Π±ΠΎΠ»ΡΡΠΈΡ
Π΄Π°Π½Π½ΡΡ
, Π² Ρ.Ρ. ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ².Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ,ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ ΡΡΠΎΡΠΌΡΠ»ΠΈΡΡΠ΅ΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠΈ: Β«ΠΠ°ΠΊ Π±ΠΈΠ·Π½Π΅Ρ-Π°Π½Π°Π»ΠΈΡΠΈΠΊ, Ρ Ρ
ΠΎΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ Π±ΡΡΡΡΡΠΌ ΠΊΡΠ΅Π΄ΠΈΡΠ°ΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ». ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ ΠΏΡΠΈΠ΅ΠΌΠΊΠΈ ΡΡΠΎΠΉ User Story ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅:- Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π° ΡΡΠΌΠΌΡ Π±ΠΎΠ»Π΅Π΅ 1000, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 3 Π΄Π½Π΅ΠΉ ΠΏΠΎΡΠ»Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ;- Π½Π΅ Π²Π·ΡΠ»ΠΈ ΠΊΡΠ΅Π΄ΠΈΡ;- ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 7 Π΄Π½Π΅ΠΉ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ.ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ΅ΠΉΡΠ° Ρ
ΡΠ°Π½ΡΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Ρ
: Π² ΡΠΎΠΏΠΈΠΊΠ°Ρ
Apache Kafka Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° PostgreSQL ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΠΊΡΠ΅Π΄ΠΈΡΠ°Ρ
.ΠΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ°Ρ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Apache Flink, Π΅Π³ΠΎ CEP-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΡ. ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄Π°Π»Π΅Π΅.CDC ΠΈ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΡ Apache FlinkApache Flink ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ
ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊ Kafka, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΠΏΠΈΠΊ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΈΡΡ Π² Flink SQL. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ
ΠΈ ΡΠΎΠ±ΡΡΠΈΡΡ
ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, Π·Π°Ρ
Π²Π°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ ΠΠ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ: Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ
Π±Π°Π· Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ CDC. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½ΠΈΡ
ΡΠ²Π»ΡΠ΅ΡΡΡ Debezium β ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Red Hat. ΠΠ½ Π·Π°Ρ
Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΠ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π² ΡΠΎΠΏΠΈΠΊΠ°Ρ
Kafka, Π½Π΅ ΡΠ½ΠΈΠΆΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. Debezium ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΡ, ΠΎΡΡΠ°ΠΆΠ°Ρ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅.ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ Debezium ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Apache Kafka, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
Binlog ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ
Π±Π°Π· Π΄Π°Π½Π½ΡΡ
.ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ Debezium ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ CDC-ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΡ ΠΎΡ Ververica, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ Apache Flink. Flink-CDC-ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Debezium ΠΊΠ°ΠΊ CDC-Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΠΎΠΆΠ΅ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠ½Ρ ΡΠ°Π½Π΅Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΡ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ MySQL (5.7, 8.0.x), PostgreSQL (9,6, 10, 11, 12) ΠΈ MongoDB (4,0, 4,2, 5,0).Π’Π°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CDC ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ Flink Connector JDBC, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΈ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ
Π±Π°Π· (MySQL, PostgreSQL, Derby) Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΠΎ Flink SQL. ΠΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ Π½Π΅Π»ΡΠ·Ρ Π½Π°Π·Π²Π°ΡΡ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ CDC.ΠΠΎΡΡΠΎΠΌΡ Π΄Π°ΡΠ°-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ GetIndata ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ CDC-ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡ JDBC, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡ Π² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ
Π±Π°Π·Π°Ρ
. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Debezium, ΠΎΠ½ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Π»ΡΠ±ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡΡΠ°Π²ΠΈΡΡ SQL-Π·Π°ΠΏΡΠΎΡΡ Π΄Π»Ρ JDBC-Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°. ΠΠΎΠ½Π½Π΅ΠΊΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΡΡΠΉ SQL Π΄Π»Ρ CDC, Π½Π΅ Π½ΡΠΆΠ΄Π°ΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΡ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ CDC-ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΡΠ΅Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, last_modify_date. Π Π°Π±ΠΎΡΠ° ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° SQL-Π·Π°ΠΏΡΠΎΡΠ°, ΡΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠΎΠ½Π½Π΅ΠΊΡΠΎΡ GetIndata ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΡΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ: Π»ΠΎΠ³ΠΈΠΊΠ° CDC ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΅ΡΡΡ ΡΠΈΡΠΊ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ CDC Π² ΡΠ°ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΡ
ΡΡ ΡΡΡΠΎΠΊΠ°Ρ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΠ°Π²ΠΊΠ° ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π΄Π°Π½Π½ΡΠ΅.ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΎΠ³ΠΎ CDC-ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΡΠ° Π΄Π°ΡΠ°-ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ GetIndata ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ API, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Flink. Flink ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°. ΠΠ°ΡΠ΅ΠΌ ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Flink SQL. ΠΡΠΈ ΡΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ° Flink Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π²Π½Π΅ΡΠ½ΠΈΡ
Π΄Π°Π½Π½ΡΡ
: Π΄Π²ΠΈΠΆΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°.Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΠ΄Π΅ΠΈ CDC Ρ CEP, Ρ.Π΅. ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Flink SQL:SELECT *FROM eventsMATCH_RECOGNIZE(PARTITION BY customer_idORDER BY tsMEASURESTRX.event_id AS trx_event_id,TRX.customer_id AS trx_customer_id,TRX.type AS trx_type,TRX.payload AS trx_payload,TRX.ts AS trx_ts,APP_1.event_id AS app_1_event_id,APP_1.customer_id AS app_1_customer_id,APP_1.type AS app_1_type,APP_1.payload AS app_1_payload,APP_1.ts AS app_1_tsONE ROW PER MATCHPATTERN (TRX APP_1 NOT_LOAN*? APP_2) WITHIN INTERVAL '10' DAYDEFINETRX AS TRX.type = 'trx_event' AND TRX.payload > 1000,APP_1 AS APP_1.type = 'clickstream_event' AND APP_1.ts < TRX.ts + INTERVAL '3' DAY,APP_2 AS APP_2.type = 'clickstream_event' AND APP_2.ts > APP_1.ts AND APP_2.ts < APP_1.ts + INTERVAL '7' DAY,NO_LOAN AS NOT_LOAN.type 'loan_event') MR;Π Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ· ΡΠ°Π½Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠΈ ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ Π±ΡΡΡΡΡΠΌ ΠΊΡΠ΅Π΄ΠΈΡΠ°ΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:- TRX - ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Ρ ΡΡΠΌΠΌΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 1000;- APP_1 - ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 3 Π΄Π½Π΅ΠΉ ΠΏΠΎΡΠ»Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ;- NO_LOAN - ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π²Π·ΡΠ» ΠΊΡΠ΅Π΄ΠΈΡ.Π’Π°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ΄Π΅ ΡΠΊΠ°Π·Π°Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ Π²ΡΡ
ΠΎΠ΄, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΡΠ°Π±Π»ΠΎΠ½ ΠΈΠ· ΡΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠΈ. ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.ΠΡΠ²ΠΎΠΉΡΠ΅ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Apache Flink ΠΈ Spark Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ Π±ΠΎΠ»ΡΡΠΈΡ
Π΄Π°Π½Π½ΡΡ
Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΊΡΡΡΠ°Ρ
Π² Π½Π°ΡΠ΅ΠΌ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΡΠ΅Π±Π½ΠΎΠΌ ΡΠ΅Π½ΡΡΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ², Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΠΎΡΠΎΠ², ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΎΠ², Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ², Data ScientistβΠΎΠ² ΠΈ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠ² Big Data Π² ΠΠΎΡΠΊΠ²Π΅:- ΠΠΎΡΠΎΠΊΠΎΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄Π°Π½Π½ΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ Apache Flink- ΠΠΎΡΠΎΠΊΠΎΠ²Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π² Apache SparkΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ1. - https://getindata.com/blog/change-data-capture-JDBC-Flink-FlinkSQL/2. - https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/libs/cep/