ΠΠ΄ΡΠ°Π²Π΅ΠΉ, Π₯Π°Π±Ρ! ΠΠ°Π·Π²Π°ΠΌ ΡΠ΅ ΠΠ°ΠΊΡΠΈΠΌ ΠΠ°ΡΠΈΠ»ΡΠ΅Π², ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΡΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π² FINCH. ΠΠ½Π΅Ρ Π±ΠΈΡ
ΠΈΡΠΊΠ°Π» Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ElasticSearch ΡΡΠΏΡΡ
ΠΌΠ΅ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠΌ 15 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π·Π° 6 ΠΌΠΈΠ½ΡΡΠΈ ΠΈ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊ Π½Π° ΡΠ°ΠΉΡΠ° Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ. ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΠΌ Π±Π΅Π· ΠΈΠΌΠ΅Π½Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ NDA, Π½Π°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΡΡΡΠ°Π΄Π°. ΠΠ° Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅.
ΠΠ°ΠΊ Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ ΠΏΡΠΎΠ΅ΠΊΡΡΡ
ΠΠ° Π½Π°ΡΠΈΡ Π±Π΅ΠΊΠ΅Π½Π΄ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ°ΠΉΡΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ. ΠΠ±ΡΠ°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ Π½Π° ΡΡ Π΅ΠΌΠ°ΡΠ°:

Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΠΌΠ΅ Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ: ΠΏΠΎΠΊΡΠΏΠΊΠΈ, ΠΏΠ»Π°ΡΠ°Π½ΠΈΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π±Π°Π»Π°Π½ΡΠΈ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΆΡΡΠ½Π°Π»ΠΈ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°ΠΌΠ΅ ΠΈ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π²ΡΠ² Π²ΡΠ½ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ Π³ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π²ΡΠ΅ ΠΎΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΠ»Π°ΡΠ°Π½ΠΈΡΡΠ° ΠΈ Π±ΠΎΠ½ΡΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ.
ΠΡΠ°ΡΠΊΠ° ΠΏΡΠ΅Π΄ΠΈΡΡΠΎΡΠΈΡ
ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ PostgreSQL. ΠΠ΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π·Π° Π‘Π£ΠΠ: Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠ°Π·Π²ΠΈΡ Π΅Π·ΠΈΠΊ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΡΠΈΡΠΎΠΊ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ; Π² ΡΡΡΠ΅ΡΠ°Π½ΠΈΠ΅ Ρ Π΄ΠΎΠ±ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π΄ΠΎΠ²ΠΎΠ»ΡΠ²Π°Ρ Π° Π½Π°ΡΠΈΡΠ΅ Π½ΡΠΆΠ΄ΠΈ.
Π‘ΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΠΌΠ΅ Π² Postgres Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ: ΠΎΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄ΠΎ Π½ΠΎΠ²ΠΈΠ½ΠΈ. ΠΠΎ Ρ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅, ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°ΡΠ΅ ΡΠ΅ ΠΈ Π±ΡΠΎΡΡ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ°.
ΠΠ° Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅, Π³ΠΎΠ΄ΠΈΡΠ½ΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠΈΠΈ ΠΏΡΠ΅Π· 2017 Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ°ΠΌΠΎ Π½Π° Π΄Π΅ΡΠΊΡΠΎΠΏ ΡΠ°ΠΉΡΠ° β 131 ΠΌΠΈΠ»ΠΈΠΎΠ½Π°. ΠΡΠ΅Π· 2018 β 125 ΠΌΠΈΠ»ΠΈΠΎΠ½Π°. ΠΡΠ΅Π· 2019 ΠΎΡΠ½ΠΎΠ²ΠΎ 130 ΠΌΠΈΠ»ΠΈΠΎΠ½Π°. ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΎΡΠ΅ 100-200 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΠΎΡ ΠΌΠΎΠ±ΠΈΠ»Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ°ΠΉΡΠ° ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΠΊΠΎΠ»ΠΎΡΠ°Π»Π½ΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ.
Π‘ ΡΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Postgres Π²Π΅ΡΠ΅ Π½Π΅ ΡΡΠΏΡΠ²Π°ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Ρ Ρ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, Π½Π΅ ΡΡΠΏΡΠ²Π°Ρ ΠΌΠ΅ β ΠΏΠΎΡΠ²ΠΈ ΡΠ΅ Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, Π·Π° ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ°Ρ ΠΌΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ.
Π Π°Π·Π±ΠΈΡΠ°Ρ ΠΌΠ΅, ΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° ΠΎΡΠΈΠ³ΡΡΡΡ Π½Π°ΡΠΈΡΠ΅ Π½ΡΠΆΠ΄ΠΈ ΠΈ Π΄Π° ΠΎΠ±Π»Π΅ΠΊΡΠ°Ρ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° PostgreSQL. ΠΠ°ΡΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΌΠ΅ Elasticsearch ΠΈ MongoDB. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ Π³ΡΠ±Π΅ΡΠ΅ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ:
- ΠΠ°Π²Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΏΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΠΈ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅. ΠΡΠΈ Elastic ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΎΠ±Π΅ΠΌΠ° Π΄Π°Π½Π½ΠΈ.
- ΠΡΠΌΠ° ΠΏΡΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎ ΡΡΡΡΠ΅Π½Π΅
Π’Π°ΠΊΠ° ΠΈΠ·Π±ΡΠ°Ρ ΠΌΠ΅ Elastic ΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈΡ ΠΌΠ΅ Π·Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ°.
ΠΠΈΠ³ΡΠ°ΡΠΈΡ ΠΊΡΠΌ Elastic
1. ΠΠ°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Ρ ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΡΡΡΡΠ΅Π½Π΅ Π½Π° ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΡΠΎΡΠΊΠΈ. ΠΠ°ΡΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠΌΠ° ΠΎΠ±ΡΠΎ ΠΎΠΊΠΎΠ»ΠΎ 70 000 ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΡΠΎΡΠΊΠΈ ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΡΡΡΡΠ΅Π½Π΅ Π½Π° ΡΠ°ΠΉΡΠ° ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ:
- Π’Π΅ΠΊΡΡΠΎΠ²ΠΎ ΡΡΡΡΠ΅Π½Π΅ ΠΏΠΎ ΠΈΠΌΠ΅ Π½Π° Π½Π°ΡΠ΅Π»Π΅Π½ΠΎ ΠΌΡΡΡΠΎ
- ΠΠ΅ΠΎΡΡΡΡΠ΅Π½Π΅ Π² Π·Π°Π΄Π°Π΄Π΅Π½ ΡΠ°Π΄ΠΈΡΡ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠΎΡΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΈΡΠΊΠ° Π΄Π° Π²ΠΈΠ΄ΠΈ ΠΊΠΎΠΈ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΡΠΎΡΠΊΠΈ ΡΠ° Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ Π΄ΠΎΠΌΠ° ΠΌΡ.
- Π’ΡΡΡΠ΅Π½Π΅ Π² Π·Π°Π΄Π°Π΄Π΅Π½ ΠΊΠ²Π°Π΄ΡΠ°Ρ β ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΎΡΠ΅ΡΡΠ°Π²Π° ΠΊΠ²Π°Π΄ΡΠ°Ρ Π½Π° ΠΊΠ°ΡΡΠ°ΡΠ° ΠΈ ΠΌΡ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΡΠΎΡΠΊΠΈ Π² ΡΠΎΠ·ΠΈ ΡΠ°Π΄ΠΈΡΡ.
- Π’ΡΡΡΠ΅Π½Π΅ ΠΏΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠΈΠ»ΡΡΠΈ. Π’ΡΡΠ³ΠΎΠ²ΡΠΊΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΠΏΠΎ Π°ΡΠΎΡΡΠΈΠΌΠ΅Π½Ρ.
Π©ΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ°, Π² Postgres ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΊΠ°ΠΊΡΠΎ Π·Π° ΠΊΠ°ΡΡΠΈΡΠ΅, ΡΠ°ΠΊΠ° ΠΈ Π·Π° Π½ΠΎΠ²ΠΈΠ½ΠΈΡΠ΅, Π° Π² Elastic ΡΠ΅ ΠΏΡΠ°Π²ΡΡ SnapshotβΠΈ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. Π€Π°ΠΊΡ Π΅, ΡΠ΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Postgres Π½Π΅ ΡΠΌΠΎΠ³Π²Π°ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ Ρ ΡΡΡΡΠ΅Π½Π΅ΡΠΎ ΠΏΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠΈΡΠ°Ρ, Π·Π°ΡΠΎΠ²Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡΡ Π½Π° Postgres ΡΠ΅ Π·Π°Π³ΡΠ±Π²Π°ΡΠ΅ ΠΈ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΠΊΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°.
2. Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π½Π° ΡΠ΅Π΄ Π±Π΅ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° Π·Π° Π½ΠΎΠ²ΠΈΠ½ΠΈ. ΠΠ° ΡΠ°ΠΉΡΠ° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, Π·Π° Π΄Π° Π½Π΅ ΡΠ΅ ΠΈΠ·Π³ΡΠ±ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π² ΠΏΠΎΡΠΎΠΊΠ° ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠΎΡΡΠΈΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ. ΠΠ° ΡΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΡΠ΅Π½Π΅ΡΠΎ: Π½Π° ΡΠ°ΠΉΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΡΡΠΈ ΠΏΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠΈΠ»ΡΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΡΡΡΠΎ ΡΠ° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΡΡΠ΅Π· Elastic.
3. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡ ΠΌΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΊΡΠΏΡΠ²Π°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΡΠΎΠ΄ΡΠΊΡ Π½Π° ΡΠ°ΠΉΡΠ° ΠΈ Π΄Π° ΡΡΠ°ΡΡΠ²Π°Ρ Π² ΡΠΎΠΌΠ±ΠΎΠ»ΠΈ. Π‘Π»Π΅Π΄ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΠΎΠΊΡΠΏΠΊΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΠΌΠ΅ Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΠΈ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΡΠ΅Π· ΡΠΈΠΊΠ΅Π½Π΄ΠΈ ΠΈ ΠΏΡΠ°Π·Π½ΠΈΡΠΈ. ΠΠ° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, Π°ΠΊΠΎ ΠΏΡΠ΅Π· ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ Π΄Π½ΠΈ Π±ΡΠΎΡΡ Π½Π° ΠΏΠΎΠΊΡΠΏΠΊΠΈΡΠ΅ Π΅ ΠΎΠΊΠΎΠ»ΠΎ 1,5-2 ΠΌΠ»Π½, ΠΏΠΎ ΠΏΡΠ°Π·Π½ΠΈΡΠΈΡΠ΅ ΡΠΈΡΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ 53 ΠΌΠ»Π½.
ΠΡΠΈ ΡΠΎΠ²Π°, Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΡ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ β ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π΅ ΠΎΠ±ΠΈΡΠ°Ρ Π΄Π° ΡΠ°ΠΊΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π½ΠΈ. ΠΡΠ΅Π· Postgres Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΡΠ°ΠΊΡΠ² ΡΡΠΎΠΊ β ΡΠ΅ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Π΄ΠΎΠΊΠ°ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΡ Π΄Π°Π»ΠΈ ΡΠ° ΡΠΏΠ΅ΡΠ΅Π»ΠΈΠ»ΠΈ Π½Π°Π³ΡΠ°Π΄ΠΈ ΠΈΠ»ΠΈ Π½Π΅. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΡΠ½ΠΎ Π·Π° Π±ΠΈΠ·Π½Π΅ΡΠ°, Π·Π°ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡ ΠΌΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π² Elasticsearch.
Π§Π΅ΡΡΠΎΡΠ°
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ° Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ ΠΏΡΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ:
- Π’ΠΎΡΠΊΠΈ Π½Π° ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π°. ΠΠ΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π²ΡΠ½ΡΠ΅Π½ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ, ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΡΠΎ.
- ΠΠΎΠ²ΠΈΠ½ΠΈ. ΠΠ΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈΠ½Π° Π½Π° ΡΠ°ΠΉΡΠ°, ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π² Elastic.
Π’ΡΠΊ ΠΎΡΠ½ΠΎΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠΏΠΎΠΌΠ΅Π½Π΅ΠΌ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° Π½Π° Elastic. Π Postgres, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ°ΠΊΠ°ΠΌΠ΅, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈ Π²ΡΠΈΡΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ. Π Elastic ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ 10 000 Π·Π°ΠΏΠΈΡΠ° ΠΈ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°, Π±Π΅Π· Π΄Π° ΡΠ°ΠΊΠ°ΠΌΠ΅, Π΄ΠΎΠΊΠ°ΡΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΡ ΠΏΠΎ Π²ΡΠΈΡΠΊΠΈ Shards. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½ΡΠΊΠΎΠΉ Shard ΠΈΠ»ΠΈ Replica ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π²ΠΈΠ΄ΡΡ Π΄Π°Π½Π½ΠΈΡΠ΅ Π²Π΅Π΄Π½Π°Π³Π°, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠΎΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ.
ΠΠ°ΡΠΈΠ½ΠΈ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ
ΠΠΌΠ° 2 Π½Π°ΡΠΈΠ½Π° Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Elastic:
- Π§ΡΠ΅Π· Π½Π°ΡΠΈΠ²Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎ TCP. ΠΠ°ΡΠΈΠ²Π½ΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠΌΠΈΡΠ°: ΡΠΏΠΈΡΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ ΠΌΡ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ΄ΠΎΠ±Π΅Π½. ΠΠ°ΡΠΎΠ²Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡ Π½Π΅Π³ΠΎ Π½Π°ΠΏΡΠ»Π½ΠΎ.
- Π§ΡΠ΅Π· HTTP ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π² ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠ°ΠΊΡΠΎ JSON Π·Π°ΡΠ²ΠΊΠΈ, ΡΠ°ΠΊΠ° ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° Lucene. ΠΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΡΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Elastic. Π ΡΠ°ΠΊΡΠ² Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Batch ΡΡΠ΅Π· JSON Π·Π°ΡΠ²ΠΊΠΈ ΠΏΠΎ HTTP. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ·ΠΈ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° HTTP ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° HTTP ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΡ Batch ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡ API, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΊΡΠ°Ρ Π΄Π°Π²Π° Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΠΊΠΎΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π² Π΄Π½ΠΈΡΠ΅ Π½Π° Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° Π°ΠΊΡΠΈΡ (ΠΏΠΎ-Π΄ΠΎΠ»Ρ Π·Π° ΡΠΎΠ²Π°)
ΠΡΠΊΠΎΠΈ ΡΠΈΡΡΠΈ Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅:
- ΠΠ°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π½Π°Π³ΡΠ°Π΄ΠΈ Π² Postgres Π² 20 ΠΏΠΎΡΠΎΠΊΠ° Π±Π΅Π· Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅: 460713 Π·Π°ΠΏΠΈΡΠ° Π·Π° 42 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ
- Elastic + ΡΠ΅Π°ΠΊΡΠΈΠ²Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° 10 ΠΏΠΎΡΠΎΠΊΠ° + batch Π½Π° 1000 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°: 596749 Π·Π°ΠΏΠΈΡΠ° Π·Π° 11 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ
- Elastic + ΡΠ΅Π°ΠΊΡΠΈΠ²Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° 10 ΠΏΠΎΡΠΎΠΊΠ° + batch Π½Π° 1000 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°: 23801684 Π·Π°ΠΏΠΈΡΠ° Π·Π° 4 ΠΌΠΈΠ½ΡΡΠΈ
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠΌΠ΅ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ HTTP ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° JSON, ΠΊΠ°ΡΠΎ Batch/Π½Π΅ Batch ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΠΏΡΠ΅Π· Π²ΡΠ΅ΠΊΠΈ HTTP ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈΠ»ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ.
Π Π½ΡΠΊΠΎΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ, Π½ΠΎ ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΡΠΎΡ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠ° ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³. ΠΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° Π±Π°Π·Π° Spring WebClient.

ΠΠΎΠ»ΡΠΌΠ° Π°ΠΊΡΠΈΡ
ΠΠ΅Π΄Π½ΡΠΆ Π³ΠΎΠ΄ΠΈΡΠ½ΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π° Π³ΠΎΠ»ΡΠΌΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ β ΡΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° Π΅ Highload, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎ ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ Π΄Π΅ΡΠ΅ΡΠΊΠΈ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΏΠΈΠΊΠΎΠ²Π΅ΡΠ΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°Ρ Π² ΠΏΡΠ°Π·Π½ΠΈΡΠ½ΠΈ Π΄Π½ΠΈ, Π½ΠΎ ΡΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ Π΅ Π½Π° ΡΡΠ²ΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ Π½ΠΈΠ²ΠΎ. ΠΡΠ΅Π΄ΠΈ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π½Π° Π΄Π΅Π½Ρ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ ΠΏΡΠΎΠ΄Π°Π΄ΠΎΡ ΠΌΠ΅ 27 580 890 Π΅Π΄ΠΈΠ½ΠΈΡΠΈ ΡΡΠΎΠΊΠ°. ΠΠ°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ ΡΠ°Ρ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅. ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡ Π° Π½Π°Π³ΡΠ°Π΄ΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ ΡΠΈ, Π½ΠΎ ΡΡΠ°Π½Π° ΡΡΠ½ΠΎ, ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΠΊΠΎΡΠΈ.
Π Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° 2019 Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ΅ΡΠΈΡ ΠΌΠ΅, ΡΠ΅ Π½ΠΈ Π΅ Π½ΡΠΆΠ΅Π½ ElasticSearch. Π¦ΡΠ»Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π² Elastic ΠΈ ΡΡΡ Π½ΠΎΡΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π² API Π½Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°ΠΉΡΠ°. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ°, Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΡ ΠΌΠ΅ 15 131 783 Π·Π°ΠΏΠΈΡΠ° Π·Π° 6 ΠΌΠΈΠ½ΡΡΠΈ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΆΠ΅Π»Π°Π΅ΡΠΈ Π΄Π° ΠΊΡΠΏΡΡ ΡΡΠΎΠΊΠ° ΠΈ Π΄Π° ΡΡΠ°ΡΡΠ²Π°Ρ Π² ΡΠΎΠΌΠ±ΠΎΠ»Π°ΡΠ° Π·Π° Π½Π°Π³ΡΠ°Π΄ΠΈ, ΡΠΎΠ²Π° Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π°ΠΊΡΡΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Elastic, Π½ΠΎ Π² Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ Π°ΡΡ ΠΈΠ²Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΠΌΠ΅ΡΠ΅ΡΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Ρ Π² Postgres, ΠΊΠ°ΡΠΎ ΠΏΠ΅ΡΠΌΠ°Π½Π΅Π½ΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΠ° Π΄Π° Π½Π΅ Π·Π°ΠΌΡΡΡΡΠ²Π°ΠΌΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π° Elastic, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΠΈΠΌΠ° ΡΠ²ΠΎΠΈΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅/ΠΈΠ·Π²ΠΎΠ΄ΠΈ
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠΌΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΠΈΠ»ΠΈ Π² Elastic Π²ΡΠΈΡΠΊΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ ΠΌΠ΅, ΠΈ Π·Π° ΡΠ΅Π³Π° ΡΠΌΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ·Π°. Π‘Π΅Π³Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ Π² Elastic Π²ΡΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² Postgres, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅.
Π Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΠΈΠΌ ΡΡΠ»ΡΠ³ΠΈ, Π°ΠΊΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π·Π° Π΄Π°Π½Π½ΠΈ ΡΡΠ°Π²Π°Ρ ΡΠ²ΡΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΈ ΠΈ ΡΠ΅ ΡΡΡΡΡΡ ΠΏΠΎ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π±ΡΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΈ. Π’ΠΎΠ²Π° Π²Π΅ΡΠ΅ Π΅ Π·Π°Π΄Π°ΡΠ° Π½Π΅ Π·Π° Postgres.
ΠΠΊΠΎ Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΡΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ² ΡΡΡΡΠ΅Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΈ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π·Π° ΡΡΡΡΠ΅Π½Π΅, Π²Π΅ΡΠ΅ Π·Π½Π°Π΅ΠΌ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΠΈΠΌ Π² Elastic.
βββ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ, ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ
ΡΠ΅. ΠΠΊΠΎ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Π²ΠΈ ΡΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ElasticSearch ΠΈ ΠΈΠΌΠ°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅, ΡΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅. Π©Π΅ Π±ΡΠ΄Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡΠ΅ π
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
