ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ! ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ°ΠΊΡΠΈΠΌ ΠΠ°ΡΠΈΠ»ΡΠ΅Π², Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΎΠΌ ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π² FINCH. Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ Ρ
ΠΎΡΠ΅Π» Π±Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ElasticSearch, ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ 15 ΠΌΠ»Π½ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π·Π° 6 ΠΌΠΈΠ½ΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°ΡΠΈΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· ΠΈΠΌΡΠ½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π°Ρ NDA, Π½Π°Π΄Π΅Π΅ΠΌΡΡ, ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈ ΠΎΡ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΡΡΡΠ°Π΄Π°Π΅Ρ. Let`s go.
ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ
ΠΠ° Π½Π°ΡΠ΅ΠΌ Π±ΡΠΊΠ΅Π½Π΄Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ°ΠΉΡΠΎΠ² ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠ±ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π° ΡΡ Π΅ΠΌΠ΅:
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ: ΠΏΠΎΠΊΡΠΏΠΎΠΊ, Π²ΡΠΏΠ»Π°Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ Π±Π°Π»Π°Π½ΡΠ°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ Ρ
ΡΠ°Π½ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
Π’Π°ΠΊΠΆΠ΅ ΠΈΠ΄ΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠ»Π°ΡΠ΅ΠΆΠ°ΠΌΠΈ ΠΈ Π±ΠΎΠ½ΡΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ.
ΠΠΎΡΠΎΡΠΊΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΡΠΎΡΠΈΡ
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ 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 Π²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΈ Π½Π° ΡΡΠΎΠΌ ΠΏΠΎΠΊΠ° ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΠ°ΡΠ·Ρ. Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΠΏΠΎΠ²Π΅ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² Postgres ΡΡΡΠΎΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ Π² Elastic, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° ΡΠ΅Π±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ.
Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡ Π΄Π°Π½Π½ΡΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌ ΠΈ ΠΈΡΠ΅ΡΡΡ ΠΏΠΎ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ. ΠΡΠΎ ΡΠΆΠ΅ Π·Π°Π΄Π°ΡΠ° Π½Π΅ Π΄Π»Ρ Postgres.
ΠΡΠ»ΠΈ Π½Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π½ΡΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΠΏΠΎΠΈΡΠΊ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅ ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π² ΠΏΠΎΠΈΡΠΊΠ° ΡΠΎ ΠΌΡ ΡΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ Π² Elastic.
βββ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΡΠΎΡΠΈΡΠ°Π»ΠΈ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠΎΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ElasticSearch ΠΈ Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠ΅ΠΉΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΠΈΡΠ΅. ΠΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊ Ρ Π΄ΡΡΠ³ΠΈΡ
π
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com