เป‚เบซเบผเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ Highload เบ”เป‰เบงเบ ElasticSearch

เบชเบฐเบšเบฒเบเบ”เบต, Habr! เบ‚เป‰เบญเบเบŠเบทเปˆ Maxim Vasiliev, เบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เบ™เบฑเบเบงเบดเป€เบ„เบฒเบฐเปเบฅเบฐเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบขเบนเปˆ FINCH. เบกเบทเป‰เบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ ElasticSearch, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ 15 เบฅเป‰เบฒเบ™เบ„เปเบฒเบ–เบฒเบกเปƒเบ™ 6 เบ™เบฒเบ—เบตเปเบฅเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป‚เบซเบผเบ”เบ›เบฐเบˆเปเบฒเบงเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบŠเบทเปˆ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต NDA, เบžเบงเบเป€เบฎเบปเบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบˆเบฐเบšเปเปˆเบ—เบปเบ™เบ—เบธเบเบˆเบฒเบเบ™เบตเป‰. เป„เบ›โ€‹เบเบฑเบ™โ€‹เป€เบฅเบตเบ.

เป‚เบ„เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”

เปƒเบ™ backend เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบกเบทเบ–เบท. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบปเปˆเบงเป„เบ›เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เปƒเบ™เปเบœเบ™เบงเบฒเบ”:

เป‚เบซเบผเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ Highload เบ”เป‰เบงเบ ElasticSearch

เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบ—เบธเบฅเบฐเบเปเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ: เบเบฒเบ™เบŠเบทเป‰, เบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™, เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบเบฑเบšเบเบญเบ”เป€เบ‡เบดเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบšเบฑเบ™เบ—เบถเบเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ, เปเบฅเบฐเบเบฑเบ‡เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเปเบฅเบฐเบชเบปเปˆเบ‡เบญเบญเบเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบเบฑเบšเบฅเบฐเบšเบปเบšเบžเบฒเบเบ™เบญเบ.

เบเบฑเบ‡เบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเบชเบปเปˆเบ‡เบกเบฑเบ™เป„เบ›เบซเบฒเบœเบนเป‰เปƒเบŠเป‰. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฑเบ‡เบกเบตเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™เปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™เป‚เบšเบ™เบฑเบ”.

เบ›เบฐเบซเบงเบฑเบ”เบซเบเปเป‰

เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ PostgreSQL เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบงเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ‚เปเป‰เบ”เบตเบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบš DBMS: เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ, เบžเบฒเบชเบฒเบเบฒเบ™เบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบซเบฅเบฒเบเบซเบฅเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡; เบšเบงเบโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ—เบตเปˆโ€‹เบ”เบตโ€‹เบžเปโ€‹เปƒเบˆโ€‹เบ„เบงเบฒเบกโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ”เบปเบ™โ€‹เบ™เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ‚เป‰เบญเบ™โ€‹เบ‚เป‰เบฒเบ‡โ€‹.

เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เปƒเบ™ Postgres: เบˆเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเป„เบ›เบซเบฒเบ‚เปˆเบฒเบง. เปเบ•เปˆเบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เปƒเบŠเป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เปเบฅเบฐเบ”เป‰เบงเบเบกเบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป.

เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆ, เบˆเปเบฒเบ™เบงเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ›เบฐเบˆเปเบฒเบ›เบต 2017 เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒ desktop เบ”เบฝเบงเปเบกเปˆเบ™ 131 เบฅเป‰เบฒเบ™. เปƒเบ™เบ›เบต 2018 - 125 เบฅเป‰เบฒเบ™. เปƒเบ™เบ›เบต 2019 เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡ 130 เบฅเป‰เบฒเบ™. เป€เบžเบตเปˆเบกเบญเบตเบ 100-200 เบฅเป‰เบฒเบ™เบˆเบฒเบเบชเบฐเบšเบฑเบšเบกเบทเบ–เบทเบ‚เบญเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเปเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบกเบทเบ–เบท, เปเบฅเบฐเบ—เปˆเบฒเบ™. เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบงเบ‡โ€‹เบซเบผเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹.

เป€เบกเบทเปˆเบญเป‚เบ„เบ‡เบเบฒเบ™เป€เบ•เบตเบšเปƒเบซเบเปˆเบ‚เบถเป‰เบ™, Postgres เบšเปเปˆเบชเบฒเบกเบฒเบ”เบฎเบฑเบšเบกเบทเบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เป„เบ”เป‰เบญเบตเบเบ•เปเปˆเป„เบ›; เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเป„เบ”เป‰ - เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ›เบฒเบเบปเบ”, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบˆเปเบฒเบ™เบงเบ™เบ”เบฑเบ”เบชเบฐเบ™เบตเบžเบฝเบ‡เบžเป.

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบฎเบนเป‰โ€‹เบงเปˆเบฒโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบญเบทเปˆเบ™เป†โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ•เบญเบšโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เปเบฅเบฐโ€‹เป€เบญเบปเบฒโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹เบญเบญเบ PostgreSQLโ€‹. Elasticsearch เปเบฅเบฐ MongoDB เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบชเบธเบ”เบ—เป‰เบฒเบเป„เบ”เป‰เบชเบนเบ™เป€เบชเบเปƒเบ™เบˆเบธเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบ„เบงเบฒเบกเป„เบงเบ”เบฑเบ”เบชเบฐเบ™เบตเบŠเป‰เบฒเบเป‰เบญเบ™เบงเปˆเบฒเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ”เบฑเบ”เบŠเบฐเบ™เบตเป€เบ•เบตเบšเป‚เบ•. เบ”เป‰เบงเบ Elastic, เบ„เบงเบฒเบกเป„เบงเบšเปเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เปเป‰เบกเบนเบ™.
  2. เบšเปเปˆเบกเบตเบเบฒเบ™เบŠเบญเบเบซเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบฑเบก

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบ Elastic เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡เปเบฅเบฐเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™.

เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ Elastic

1. เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ”เป‰เบงเบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบˆเบธเบ”เบ‚เบฒเบ. เบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบˆเบธเบ”เบ‚เบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ›เบฐเบกเบฒเบ™ 70 เบˆเบธเบ”, เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบซเบผเบฒเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเปเบฅเบฐเปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™:

  • เบ„เบปเป‰เบ™เบซเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบฒเบกเบŠเบทเปˆเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™
  • Geosearch เบžเบฒเบเปƒเบ™เบฅเบฑเบ”เบชเบฐเปเบตเบ—เบตเปˆเปƒเบซเป‰เบˆเบฒเบเบˆเบธเบ”เปƒเบ”เปœเบถเปˆเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบœเบนเป‰เปƒเบŠเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบˆเบธเบ”เบ‚เบฒเบเปƒเบ”เบขเบนเปˆเปƒเบเป‰เบเบฑเบšเป€เบฎเบทเบญเบ™เบ‚เบญเบ‡เบฅเบฒเบงเบ—เบตเปˆเบชเบธเบ”.
  • เบ„เบปเป‰เบ™เบซเบฒเบ•เบฒเบกเบชเบตเปˆเบซเบผเปˆเบฝเบกเบ—เบตเปˆเปƒเบซเป‰เป„เบงเป‰ - เบœเบนเป‰เปƒเบŠเป‰เบชเบฐเปเบ”เบ‡เบฎเบนเบšเบชเบตเปˆเบซเบผเปˆเบฝเบกเบกเบปเบ™เป€เบ—เบดเบ‡เปเบœเบ™เบ—เบตเปˆ, เปเบฅเบฐเบˆเบธเบ”เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบฅเบฑเบ”เบชเบฐเปเบตเบ™เบตเป‰เบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบฅเบฒเบงเป€เบซเบฑเบ™.
  • เบ„เบปเป‰เบ™เบซเบฒเป‚เบ”เบเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบˆเบธเบ”เบเบฒเบ™เบ‚เบฒเบเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™เปƒเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฐเป€เบžเบ”

เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡, เปƒเบ™ Postgres เบžเบงเบเป€เบฎเบปเบฒเบกเบตเปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบฑเบ‡เปเบœเบ™เบ—เบตเปˆเปเบฅเบฐเบ‚เปˆเบฒเบง, เปเบฅเบฐเปƒเบ™ Elastic เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ” Snapshots เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™ Postgres เบšเปเปˆเบชเบฒเบกเบฒเบ”เบฎเบฑเบšเบกเบทเบเบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบฑเบ‡เบซเบกเบปเบ”. เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบกเบตเบ”เบฑเบ”เบชเบฐเบ™เบตเบซเบผเบฒเบ, เบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ—เบฑเบšเบŠเป‰เบญเบ™เบเบฑเบ™เป„เบ”เป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒ Postgres เป„เบ”เป‰เบชเบนเบ™เป€เบชเบเปเบฅเบฐเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบ”เบฑเบ”เบชเบฐเบ™เบตเปƒเบ”เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰.

2. เบ•เปเปˆเป„เบ›เปƒเบ™เปเบ–เบงเปเบกเปˆเบ™เบžเบฒเบเบ‚เปˆเบฒเบง. เบชเบดเปˆเบ‡เบžเบดเบกเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบธเบเป†เบกเบทเป‰เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบชเบนเบ™เป€เบชเบเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เบ‚เปเป‰เบกเบนเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบญเบญเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เบปเป‰เบ™เบซเบฒเบชเปเบฒเบฅเบฑเบš: เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบปเป‰เบ™เบซเบฒเป‚เบ”เบเบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบ‚เปเป‰เบ„เบงเบฒเบก, เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ•เบปเบงเบเบญเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบเบฑเบ‡เป€เบฎเบฑเบ”เบœเปˆเบฒเบ™ Elastic.

3. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเป‰เบฒเบเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ—เบธเบฅเบฐเบเปเบฒ. เบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เบŠเบทเป‰เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบชเบฐเป€เบžเบฒเบฐเบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเปเบฅเบฐเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบˆเบฑเบšเบฅเบฒเบ‡เบงเบฑเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบŠเบทเป‰เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เบ—เป‰เบฒเบเบญเบฒเบ—เบดเบ”เปเบฅเบฐเบงเบฑเบ™เบžเบฑเบ. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเปƒเบ™เบกเบทเป‰เบ›เบปเบเบเบฐเบ•เบดเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบŠเบทเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบšเปˆเบญเบ™เบ›เบฐเบกเบฒเบ™ 1,5-2 เบฅเป‰เบฒเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เบงเบฑเบ™เบžเบฑเบเบ•เบปเบงเป€เบฅเบเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธ 53 เบฅเป‰เบฒเบ™.

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบ‚เปเป‰เบกเบนเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เป€เบงเบฅเบฒเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบšเปเปˆเบกเบฑเบเบฅเปเบ–เป‰เบฒเบซเบผเบฒเบเบกเบทเป‰เบชเปเบฒเบฅเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เบšเปเปˆเบกเบตเบ—เบฒเบ‡เบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบฅเบธเบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบœเปˆเบฒเบ™ Postgres - เบžเบงเบเป€เบฎเบปเบฒเบกเบฑเบเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ•เบฑเบ™, เปเบฅเบฐเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบฑเบ‡เบซเบกเบปเบ”, เบœเบนเป‰เปƒเบŠเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบฅเบฒเบ‡เบงเบฑเบ™เบซเบผเบทเบšเปเปˆ. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบžเปเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบ—เบธเบฅเบฐเบเบดเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเป‰เบฒเบเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป„เบ› Elasticsearch.

เป„เบฅเบเบฐเป€เบงเบฅเบฒ

เบ”เบฝเบงเบ™เบตเป‰เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบฒเบกเป€เบซเบ”เบเบฒเบ™, เบญเบตเบ‡เบ•เบฒเบกเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบˆเบธเบ”เบ‚เบฒเบ. เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเปเบซเบผเปˆเบ‡เบžเบฒเบเบ™เบญเบ, เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบตเบ”เบ•เบปเบงเบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบ—เบฑเบ™เบ—เบต.
  2. เบ‚เปˆเบฒเบง. เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบ‚เปˆเบฒเบงเปƒเบ”เบ–เบทเบเบ”เบฑเบ”เปเบเป‰เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒ, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป„เบ›เบซเบฒ Elastic.

เบญเบตเบเป€เบ—เบทเปˆเบญ เปœเบถเปˆเบ‡ เบกเบฑเบ™เบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบเปˆเบฒเบงเป€เบ–เบดเบ‡เบ‚เปเป‰เบ”เบตเบ‚เบญเบ‡ Elastic. เปƒเบ™ Postgres, เป€เบกเบทเปˆเบญเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบกเบฑเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ”เป‰เบงเบเบ„เบงเบฒเบกเบŠเบทเปˆเบชเบฑเบ”. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡ 10 เบžเบฑเบ™เบšเบฑเบ™เบ—เบถเบเป„เบ›เบซเบฒ Elastic เปเบฅเบฐเป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฑเบ™เบ—เบต, เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบˆเบฐเปเบˆเบเบขเบฒเบเปƒเบซเป‰ Shards เบ—เบฑเบ‡เบซเบกเบปเบ”. เปเบ™เปˆเบ™เบญเบ™, เบšเบฒเบ‡ Shard เบซเบผเบท Replica เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบซเบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ™เบ—เบต, เปเบ•เปˆเป„เบงเป†เบ™เบตเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰.

เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™

เบกเบต 2 เบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš Elastic:

  1. เบœเปˆเบฒเบ™เบฅเบนเบเบ„เป‰เบฒเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบœเปˆเบฒเบ™ TCP. เบ„เบปเบ™เบ‚เบฑเบšเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เปเบกเปˆเบ™เบ„เปˆเบญเบเป†เบ•เบฒเบเป„เบ›: เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบญเบตเบเบ•เปเปˆเป„เบ›, เปเบฅเบฐ syntax เบ‚เบญเบ‡เบกเบฑเบ™เบšเปเปˆเบชเบฐเบ”เบงเบเบซเบผเบฒเบ. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบกเบฑเบ™เปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบ–เบดเป‰เบกเบกเบฑเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.
  2. เบœเปˆเบฒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบŸเบ” HTTP เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ—เบฑเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป JSON เปเบฅเบฐ syntax Lucene. เบญเบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบเปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆ Elastic เปƒเบŠเป‰. เปƒเบ™เบ•เบปเบงเป€เบฅเบทเบญเบเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™ Batch เบœเปˆเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป JSON เบœเปˆเบฒเบ™ HTTP. เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰.

เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš HTTP, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” asynchronous เบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒ HTTP. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบ batch เปเบฅเบฐ asynchronous API, เป€เบŠเบดเปˆเบ‡เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบเปเปˆเปƒเบซเป‰เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบŠเปˆเบงเบเบซเบผเบฒเบเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบกเบทเป‰เบ‚เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ (เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰)

เบšเบฒเบ‡เบ•เบปเบงเป€เบฅเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš:

  • เบ›เบฐเบขเบฑเบ”เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบฅเบฒเบ‡เบงเบฑเบ™เปƒเบ™ Postgres เปƒเบ™ 20 เบเบฐเบ—เบนเป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบก: 460713 เบšเบฑเบ™เบ—เบถเบเปƒเบ™ 42 เบงเบดเบ™เบฒเบ—เบต
  • Elastic + reactive client เบชเปเบฒเบฅเบฑเบš 10 threads + batch เบชเปเบฒเบฅเบฑเบš 1000 เบญเบปเบ‡เบ›เบฐเบเบญเบš: 596749 เบšเบฑเบ™เบ—เบถเบเปƒเบ™ 11 เบงเบดเบ™เบฒเบ—เบต
  • Elastic + reactive client เบชเปเบฒเบฅเบฑเบš 10 threads + batch เบชเปเบฒเบฅเบฑเบš 1000 เบญเบปเบ‡เบ›เบฐเบเบญเบš: 23801684 เบšเบฑเบ™เบ—เบถเบเปƒเบ™ 4 เบ™เบฒเบ—เบต

เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ‚เบฝเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป HTTP เบ—เบตเปˆเบชเป‰เบฒเบ‡ JSON เป€เบ›เบฑเบ™ Batch/non-Batch เปเบฅเบฐเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เบฅเบนเบเบ„เป‰เบฒ HTTP เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”. เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป synchronously เบซเบผเบท asynchronously.

เปƒเบ™เบšเบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เปƒเบŠเป‰เบฅเบนเบเบ„เป‰เบฒเบเบฒเบ™เบ‚เบปเบ™เบชเบปเปˆเบ‡เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™ refactoring เบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ Spring WebClient, เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡.

เป‚เบซเบผเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™ Highload เบ”เป‰เบงเบ ElasticSearch

เบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบเบฒเบ™เปƒเบซเบเปˆ

เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบ•เปเปˆเบ›เบต, เป‚เบ„เบ‡เบเบฒเบ™เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบšเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบเบฒเบ™เปƒเบซเบเปˆเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰ - เบ™เบตเป‰เปเบกเปˆเบ™ Highload เบ”เบฝเบงเบเบฑเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบซเบผเบฒเบเบชเบดเบšเบฅเป‰เบฒเบ™เบ„เบปเบ™เบžเป‰เบญเบกเป†เบเบฑเบ™.

เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, เบเบฒเบ™เป‚เบซเบผเบ”เบชเบนเบ‡เบชเบธเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบงเบฑเบ™เบžเบฑเบ, เปเบ•เปˆเบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบ™เบตเป‰เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบกเบปเบ”. เบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เปƒเบ™เบกเบทเป‰เบชเบปเปˆเบ‡เป€เบชเบตเบกเบเบฒเบ™เบ‚เบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฒเบ 27 เบซเบ™เปˆเบงเบ. เบ‚เปเป‰เบกเบนเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบ„เบดเปˆเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡เป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™, เป€เบŠเบดเปˆเบ‡เบเปเปˆเปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบšเปเปˆเบชเบฐเบ”เบงเบเบ•เปเปˆเบœเบนเป‰เปƒเบŠเป‰. เบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰เบฎเบฑเบšเบฅเบฒเบ‡เบงเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบก, เปเบ•เปˆเบงเปˆเบฒเบกเบฑเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡.

เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡ 2019, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒ ElasticSearch เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™. เบชเปเบฒเบฅเบฑเบšเบ›เบตเบ—เบฑเบ‡เบซเบกเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเปƒเบ™ Elastic เปเบฅเบฐเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบกเบฑเบ™เปƒเบซเป‰เบเบฑเบš API เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบกเบทเบ–เบทเปเบฅเบฐเป€เบงเบฑเบšเป„เบŠเบ—เปŒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบ›เบตเบ•เปเปˆเป„เบ›เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เป€เบชเบตเบกเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ 15 เบฅเบฒเบเบเบฒเบ™เบžเบฒเบเปƒเบ™ 131 เบ™เบฒเบ—เบต.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบผเบฒเบเบ„เบปเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบทเป‰เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบฒเบ™เบˆเบฑเบšเบฅเบฒเบ‡เบงเบฑเบ™เปƒเบ™เป‚เบ›เป‚เบกเบŠเบฑเปˆเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ™เบตเป‰เปเบกเปˆเบ™เบกเบฒเบ”เบ•เบฐเบเบฒเบ™เบŠเบปเปˆเบงเบ„เบฒเบง. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เป„เบ›เบซเบฒ Elastic, เปเบ•เปˆเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเป€เบ”เบทเบญเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเป„เบ›เบซเบฒ Postgres เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ–เบฒเบงเบญเบ™. เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบญเบธเบ”เบ•เบฑเบ™เบ”เบฑเบ”เบŠเบฐเบ™เบต Elastic, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™.

เบšเบปเบ”เบชเบฐเบซเบผเบธเบš/เบšเบปเบ”เบชเบฐเบซเบผเบธเบš

เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบเบปเบโ€‹เบเป‰เบฒเบโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™ Elastic เปเบฅเบฐโ€‹เป„เบ”เป‰โ€‹เบขเบธเบ”โ€‹เป€เบŠเบปเบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเปƒเบ™ Elastic เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ•เบปเป‰เบ™เบ•เปเปƒเบ™ Postgres, เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เป‚เบซเบผเบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰.

เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป‚เบญเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบผเบฒเบเบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›เปเบฅเบฐเบ–เบทเบเบ„เบปเป‰เบ™เบซเบฒเบชเปเบฒเบฅเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ„เปเบฅเปเบฒเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเบเบฑเบ”. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบงเบฝเบเบ‡เบฒเบ™เบชเปเบฒเบฅเบฑเบš Postgres เบญเบตเบเบ•เปเปˆเป„เบ›.

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบŠเบญเบเบซเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบฑเบกเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบซเบผเบทเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบเบฒเบ™เบŠเบญเบเบซเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เปเบฅเป‰เบงเบงเปˆเบฒเบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบ›เป€เบ›เบฑเบ™ Elastic.

โŒ˜โŒ˜โŒ˜

เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™. เบ–เป‰เบฒเบšเปเบฅเบดเบชเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเบฑเบ‡เปƒเบŠเป‰ ElasticSearch เปเบฅเบฐเบกเบตเบเปเบฅเบฐเบ™เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เบเบฐเบฅเบธเบ™เบฒเบšเบญเบเบžเบงเบเป€เบฎเบปเบฒ. เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบฎเบนเป‰เบงเปˆเบฒเบ„เบปเบ™เบญเบทเปˆเบ™เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ” :)

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™