Π ΠΏΡΠ΅Π΄Π΄Π²Π΅ΡΠΈΠΈ Π·Π°ΠΏΡΡΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠΎ ΠΊΡΡΡΡ
ΠΠ±Π·ΠΎΡ
ΠΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΌ ΠΏΠ°ΡΡΠ΅ΡΠ½Π΅, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π΄Π°Π½Π½ΡΡ , Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ ΡΠ΅Π»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΌΡ Π΄Π°Π½Π½ΡΡ (MySQL ΠΈ Ρ.Π΄.), ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎΠΈΡΠΊΠ° (ElasticSearch ΠΈ Ρ.Π΄.), ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Memcached ΠΈ Ρ.Π΄.) ΠΈ Π΄ΡΡΠ³ΠΈΡ . ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ .
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΡΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ Ρ.Π΄. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π² ΠΏΠ»Π°Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ. ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
, Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΠΎΠ³Π°ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, Π²ΡΠ·ΡΠ²Π°Ρ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ.
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° Delta. Delta Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΡ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΎΠ±ΠΎΠ³Π°ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ²ΠΎΠΉΠ½Π°Ρ Π·Π°ΠΏΠΈΡΡ
Π§ΡΠΎΠ±Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π²Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ , ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²ΠΎΠΉΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π° ΠΏΠΎΡΠΎΠΌ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°Π΅Ρ Π·Π°ΠΏΠΈΡΡ Π² Π΄ΡΡΠ³ΠΎΠ΅. ΠΠ΅ΡΠ²ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ, Π° Π²ΡΠΎΡΡΡ β ΠΏΡΠ΅ΡΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²Π°Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅ ΠΈΡΡΠ΅ΡΠΏΠ°Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠΏΡΡΠΎΠΊ. ΠΠ΄Π½Π°ΠΊΠΎ Π΄Π²Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ. Π Π΅ΡΠ°Π΅ΡΡΡ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π²ΠΎ Π²ΡΠΎΡΠΎΠ΅ ΠΈΠ»ΠΈ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π² Π΄Π°Π½Π½ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ:
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌΠΈ ΠΎΡΡΠ°ΡΡΡΡ ΡΠ°ΡΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π΄Π°Π½Π½ΡΡ . Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ .
Π’Π°Π±Π»ΠΈΡΠ° Π»ΠΎΠ³ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΠΠΎΠ³Π΄Π° Π² Π½Π°Π±ΠΎΡΠ΅ ΡΠ°Π±Π»ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠ°Π²ΠΊΠ°, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ), Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ Π»ΠΎΠ³ΠΎΠ², ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Π»ΠΎΠ³ΠΎΠ² ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡ Π² ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ΄Π°Π»ΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Π»ΠΎΠ³ΠΎΠ² ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π²ΡΠ΅ΠΌΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ:
ΠΡΠΎΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈ Π² ΠΈΠ΄Π΅Π°Π»Π΅ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ. Π ΡΡΠ΅Π΄Π΅-ΠΏΠΎΠ»ΠΈΠ³Π»ΠΎΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° Π»ΡΠ±ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΏΡΠΎΡΡΠΎ.
ΠΡΡΠ³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΠΎΠ΅ΡΡΡ Π² ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΡ Π΅ΠΌΡ, Π² ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ [1][2], ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, MySQL. ΠΠΎΡΡΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ) ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΅Π³ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΡ Π»ΠΎΠ³ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΠΌΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π»ΠΈΠ±ΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π»Π°ΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°Ρ , Π»ΠΈΠ±ΠΎ Π½Π΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π»Π°ΡΡ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ .
ΠΡΠΎΠ±Π»Π΅ΠΌΡ:
Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ β ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π»Ρ ΡΠ°Π·Π½ΠΎΡΠΎΠ΄Π½ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ ΠΎΠ±ΡΠΈΠΉ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Ρ ΡΡΠ°ΡΡΠ²ΡΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, XA-ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ±ΠΎΠΉ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, XA Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ² ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡ Π΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠΎΠΌ. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎ ΡΠΈΠΏΡ ElasticSearch Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ XA ΠΈΠ»ΠΈ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΡΡ Π³Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π΅ΡΡΠΌΠ° ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ [3].
Delta
Delta Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΠΎΠ³Π°ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° Π»Π΅ΡΡ. ΠΠ°ΡΠ° ΡΠ΅Π»Ρ ΡΠΎΡΡΠΎΡΠ»Π° Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΠΈΠ·Π½Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°. ΠΠ°Π»Π΅Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Β«Movie SearchΒ», ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Delta ΠΎΡ Netflix.
Π Netflix ΡΠΈΡΠΎΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΈΠ»ΡΠΌΠ΅ Π²ΡΠ½Π΅ΡΠ΅Π½Ρ Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Movie Service, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ΄ΡΡΠ΅ΡΠ°Ρ
, Π°ΠΊΡΠ΅ΡΠ°Ρ
, Π²Π΅Π½Π΄ΠΎΡΠ°Ρ
ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ (Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Deal Service, Talent Service ΠΈ Vendor Service).
ΠΠΈΠ·Π½Π΅Ρ-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π² Netflix Studios ΡΠ°ΡΡΠΎ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΏΠΎΠΈΡΠΊΠ΅ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ ΡΠΈΠ»ΡΠΌΠΎΠ², ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ Π½ΠΈΡ
ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π²ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΡΠΈΠ»ΡΠΌΠ°ΠΌΠΈ.
ΠΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Delta ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΈΠ»ΡΠΌΠΎΠ² Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΠ»ΡΠΌΠΎΠ². ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ»Π° Π±Ρ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ Π±ΡΠ»ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅. ΠΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΎΠ±ΡΠΎΡΠ»Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΈ Π΅Π΅ ΡΡΠ°Π»ΠΎ ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ.
Π ΠΈΡΡΠ½ΠΎΠΊ 1. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ»Π»ΠΈΠ½Π³Π° Π΄ΠΎ Delta
ΠΠΎΡΠ»Π΅ Π½Π°ΡΠ°Π»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Delta, ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ»Π° ΡΠΏΡΠΎΡΠ΅Π½Π° Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΈΡΡΠ½ΠΊΠ΅. Π‘ΠΎΠ±ΡΡΠΈΡ CDC (Change-Data-Capture) ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² ΡΠΎΠΏΠΈΠΊΠΈ Keystone Kafka Ρ ΠΏΠΎΠΌΠΎΡΡΡ Delta-Connector. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Delta, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Delta Stream Processing Framework (ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Flink), ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ CDC-ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ· ΡΠΎΠΏΠΈΠΊΠ°, ΠΎΠ±ΠΎΠ³Π°ΡΠ°Π΅Ρ ΠΈΡ
, Π²ΡΠ·ΡΠ²Π°Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΎΠ±ΠΎΠ³Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π² Elasticsearch. ΠΠ΅ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΡΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΎ Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠΈΡΡΡΡΡΡ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ.
Π ΠΈΡΡΠ½ΠΎΠΊ 2. ΠΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Delta
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠ°Π·Π΄Π΅Π»Π°Ρ
ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ Delta-Connector, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅Ρ CDC-ΡΠΎΠ±ΡΡΠΈΡ Π½Π° ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΡΡ CDC-ΡΠΎΠ±ΡΡΠΈΡ Π² ΡΠΎΠΏΠΈΠΊΠΈ Kafka. Π Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Delta, ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΎΠ±ΠΎΠ³Π°ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
.
CDC (Change-Data-Capture)
ΠΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ CDC-ΡΠ΅ΡΠ²ΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Delta-Connector, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠΈΡΠ°ΡΡ ΠΈΡ Π² ΠΏΠΎΡΠΎΠΊ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π±Π΅ΡΡΡΡΡ ΠΈΠ· ΠΆΡΡΠ½Π°Π»Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΈ Π΄Π°ΠΌΠΏΠΎΠ² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠ°ΠΌΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΆΡΡΠ½Π°Π»Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Ρ ΡΠ°Π½ΡΡ Π²ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΡΠΈΡ Delta, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ ΡΠΎΠΌ, ΠΎΡΠΊΡΠ΄Π° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.
Delta-Connector ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ:
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π² ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΈΠΌΠΎ Kafka.
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΡΡΡΠ½ΡΡ Π΄Π°ΠΌΠΏΠΎΠ² Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡ, ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ.
- ΠΠ°ΠΌΠΏΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΠΈΡΠ°ΡΡ ΡΠ°Π½ΠΊΠ°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡ Π²ΡΠ΅ Ρ Π½Π°ΡΠ°Π»Π° Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ±ΠΎΡ.
- ΠΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ°Π²ΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΠ°Π±Π»ΠΈΡΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠ°ΡΠΈΠΊ Π·Π°ΠΏΠΈΡΠΈ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»ΡΡ Π½Π°ΡΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ.
- ΠΡΡΠΎΠΊΠ°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΈΠ·-Π·Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π² AWS Availability Zones.
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌ MySQL ΠΈ Postgres, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ Π² AWS RDS ΠΈ Aurora. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌ Cassandra (multi-master). ΠΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ ΠΎ Delta-Connector Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π² ΡΡΠΎΠΌ
Kafka ΠΈ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ
Π’ΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΎΠ±ΡΡΠΈΠΉ Delta ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ
Π’Π°ΠΊ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² Netflix ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ, Π° Π½Π΅ Π΄ΠΎΠ»Π³ΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ (ΡΠΌ.
Π‘ Delta Π½Π°ΠΌ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ Π²Π΅ΡΠΎΠΌΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π΄ΠΎΠ»Π³ΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΄ΠΎΡΡΠ°Π²ΠΊΡ CDC-ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ Kafka Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π±ΡΠΎΠΊΠ΅ΡΠ° Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅:
Π ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ
Keystone Kafka, unclean leader election ΠΎΠ±ΡΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½Π΅ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π»ΠΈΠ΄Π΅ΡΠ°. ΠΠ»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Kafka ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ unclean leader election Π²ΡΠΊΠ»ΡΡΠ΅Π½, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΏΠΎΡΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΈ replication factor Ρ 2 Π΄ΠΎ 3 ΠΈ minimum insync replicas Ρ 1 Π΄ΠΎ 2. ΠΠ·Π΄Π°ΡΠ΅Π»ΠΈ, ΠΏΠΈΡΡΡΠΈΠ΅ Π² ΡΡΠΎΡ ΠΊΠ»Π°ΡΡΠ΅Ρ, ΡΡΠ΅Π±ΡΡΡ acks ΠΎΡ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ , Π³Π°ΡΠ°Π½ΡΠΈΡΡΡ, ΡΡΠΎ 2 ΠΈΠ· 3 ΡΠ΅ΠΏΠ»ΠΈΠΊ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΌΡΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΌ.
ΠΠΎΠ³Π΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΡΠΎΠΊΠ΅ΡΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ, Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠ°ΡΡΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ Π½ΠΎΠ²ΠΎΠΌΡ Π±ΡΠΎΠΊΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ³Π½Π°ΡΡ Π½Π΅ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ². Π§ΡΠΎΠ±Ρ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ, ΠΌΡ Π½Π°ΡΠ°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π»ΠΎΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ (Amazon Elastic Block Store) Π²ΠΌΠ΅ΡΡΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π΄ΠΈΡΠΊΠΎΠ² Π±ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΠΎΠ³Π΄Π° Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΠΈΠΉΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΡΠΎΠΊΠ΅ΡΠ°, ΠΎΠ½ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ EBS-ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Ρ Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΠ΅Π³ΠΎΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π΄ΠΎΠ³ΠΎΠ½ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π»ΠΈΠΊΠ²ΠΈΠ΄Π°ΡΠΈΠΈ ΠΎΡΡΡΠ°Π²Π°Π½ΠΈΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΡΠΎΠ² Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠ½ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. Π ΡΠ΅Π»ΠΎΠΌ, ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ Π±ΡΠΎΠΊΠ΅ΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΆΠ°ΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠ° ΠΎΡ ΡΠΌΠ΅Π½Ρ Π±ΡΠΎΠΊΠ΅ΡΠ°.
Π§ΡΠΎΠ±Ρ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ
Stream Processing Framework
Π£ΡΠΎΠ²Π΅Π½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π² Delta ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° Π±Π°Π·Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Netflix SPaaS, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Apache Flink Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Netflix. ΠΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΉ Flink ΠΈ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² Flink ΠΏΠΎΠ²Π΅ΡΡ Π½Π°ΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Titus. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌΠΈ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π΄Π°Π½ΠΈΡ Flink.
Delta ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (stream processing framework) Π΄Π°Π½Π½ΡΡ Π½Π° Π±Π°Π·Π΅ Flink ΠΈ SPaaS, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΡ DSL (Domain Specific Language), ΡΡΠΎΠ±Ρ Π°Π±ΡΡΡΠ°Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π³, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π±ΡΠ΄ΡΡ ΠΎΠ±ΠΎΠ³Π°ΡΠ°ΡΡΡΡ ΡΠΎΠ±ΡΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°Ρ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ DSL, Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π΅Π³ΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Flink.
Π ΠΈΡΡΠ½ΠΎΠΊ 3. ΠΡΠΈΠΌΠ΅Ρ ΠΎΠ±ΠΎΠ³Π°ΡΠ΅Π½ΠΈΡ Π½Π° DSL Π² Delta
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΊΡΠ°ΡΠ°Π΅Ρ ΠΊΡΠΈΠ²ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠ°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π΄Π΅Π΄ΡΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΡΡ Π΅ΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΡΠ°Π±ΠΎΡΠ΅.
Delta Stream Processing Framework ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΌΠΎΠ΄ΡΠ»Ρ DSL & API ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Runtime. ΠΠΎΠ΄ΡΠ»Ρ DSL & API ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ DSL ΠΈ UDF (User-Defined-Function) API Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ). ΠΠΎΠ΄ΡΠ»Ρ Runtime ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΡΡΠ΅ΡΠ° DSL, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠΎΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π³ΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΠΌΠΎΠ΄Π΅Π»ΡΡ DAG. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Execution ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ DAG-ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Flink ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Flink. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π° Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΈΡΡΠ½ΠΊΠ΅.
Π ΠΈΡΡΠ½ΠΎΠΊ 4. ΠΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Delta Stream Processing Framework
Π£ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²:
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΉ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ΅ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ Flink ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ SPaaS.
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, Π° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (UDF).
- Π Π°Π±ΠΎΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Delta ΡΠΏΡΠΎΡΠ΅Π½Π° Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΌΠ΅ΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅
Delta ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ ΡΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π³ΠΎΠ΄Π° ΠΈ ΠΈΠ³ΡΠ°Π΅Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠΎΠ»Ρ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Netflix Studio. ΠΠ½Π° ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ°, Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ. ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΎΠ±Π·ΠΎΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Delta.
Π ΠΈΡΡΠ½ΠΎΠΊ 5. ΠΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Delta.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠΈ
ΠΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π»ΡΠ΄Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠΈ Delta Π² Netflix: Allen Wang, Charles Zhao, Jaebin Yoon, Josh Snyder, Kasturi Chatterjee, Mark Cho, Olof Johansson, Piyush Goyal, Prashanth Ramdas, Raghuram Onti Srinivasan, Sandeep Gupta, Steven Wu, Tharanga Gamaethige, Yun Wang ΠΈ Zhenzhong Xu.
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ
dev.mysql.com/doc/refman/5.7/en/implicit-commit.html dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html - Martin Kleppmann, Alastair R. Beresford, Boerge Svingen: Online event processing. Commun. ACM 62(5): 43β49 (2019). DOI:
doi.org/10.1145/3312527
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com