ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅, Π₯Π°Π±Ρ! ΠΠ°Π·Π²Π°ΠΌ ΡΠ΅ ΠΠ°ΠΊΡΠΈΠΌ ΠΠ°ΡΠΈΠ»ΡΠ΅Π², ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΡΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² 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 Ρ ΠΈΠ»ΡΠ΄ΠΈ Π·Π°ΠΏΠΈΡΠ° ΠΈ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅Ρ ΡΠ°Π±ΠΎΡΠ°, Π±Π΅Π· Π΄Π° ΡΠ°ΠΊΠ°Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΏΠΎ Π²ΡΠΈΡΠΊΠΈ 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 ΠΊΠ»ΠΈΠ΅Π½Ρ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π±ΠΈΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈΠ»ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ.
Π Π½ΡΠΊΠΎΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ transport client, Π½ΠΎ ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΡΠΎΡ Π½Π° ΠΏΡΠ΅Π΄ΡΡΠΎΡΡΠ° ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ. ΠΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ, ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° 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
