เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบšเบปเบ”เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ—เป‰เบฒเบเบ›เบต 2019 เป‚เบ”เบ Alexander Valyalkin "เป„เบ›เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics"

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบงเบดเบ”เบตเป‚เบญเบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ™เบตเป‰ - https://youtu.be/MZ5P21j_HLE

เบชเบฐเป„เบฅเป‰

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡. เบ‚เป‰เบญเบเปเบกเปˆเบ™ Alexander Valyalkin. เบ—เบตเปˆเบ™เบตเป‰ เบšเบฑเบ™เบŠเบต GitHub เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ‚เป‰เบญเบเบกเบตเบ„เบงเบฒเบกเบเบฐเบ•เบทเบฅเบทเบฅเบปเป‰เบ™เบเปˆเบฝเบงเบเบฑเบš Go เปเบฅเบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบเปเบฅเบฐเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบšเปเปˆเบงเปˆเบฒเบˆเบฐ fast, เบซเบผเบทเบเบฑเบš quick เบ„เบณเบ™เบณเปœเป‰เบฒ.

เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบเบณเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆ VictoriaMetrics. เบกเบฑเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡เปเบฅเบฐเบ‚เป‰เบญเบเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™? เบ‚เป‰เบญเบเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เปƒเบ™เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ™เบตเป‰.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบกเบตเบ”เบฑเปˆเบ‡เบ™เบตเป‰:

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

VictoriaMetrics เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบŠเบธเบ”เป€เบงเบฅเบฒเบญเบทเปˆเบ™เป†.

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

VictoriaMetrics เบเบฑเบ‡เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฒเบกเปเบ™เบงเบ™เบญเบ™ - เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ‚เปเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบชเปˆเบเบธเปˆเบก VictoriaMetrics, เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป€เบเบทเบญเบšเป€เบ›เบฑเบ™เป€เบชเบฑเป‰เบ™.

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เปƒเบœเบฎเบนเป‰เบงเปˆเบฒเบŠเบธเบ”เป€เบงเบฅเบฒเปเบกเปˆเบ™เบซเบเบฑเบ‡? เบฅเบฒเบงเบเบฑเบ‡เบฎเบนเป‰เบˆเบฑเบเบซเบผเบฒเบเบ„เบปเบ™. เบŠเบธเบ”เป€เบงเบฅเบฒเปเบกเปˆเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบ„เบนเปˆ (timestamp, ะทะฝะฐั‡ะตะฝะธะต), เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เบนเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบˆเบฑเบ”เบฎเบฝเบ‡เบ•เบฒเบกเป€เบงเบฅเบฒ. เบ„เปˆเบฒเปเบกเปˆเบ™เบ•เบปเบงเป€เบฅเบเบˆเบธเบ”เบฅเบญเบ โ€“ float64.

เปเบ•เปˆเบฅเบฐเบŠเบธเบ”เป€เบงเบฅเบฒเบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเป‚เบ”เบเบเบฐเปเบˆ. เบเบธเบ™เปเบˆเบ™เบตเป‰เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบเบฑเบ‡? เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบŠเบธเบ”เบ„เบนเปˆเบ„เบต-เบ„เปˆเบฒเบ—เบตเปˆเบšเปเปˆเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ.

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบŠเบธเบ”เป€เบงเบฅเบฒ. เบเบธเบ™เปเบˆเบ‚เบญเบ‡เบŠเบธเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ„เบนเปˆ: __name__="cpu_usage" เปเบกเปˆเบ™โ€‹เบŠเบทเปˆโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบงเบฑเบ”โ€‹เปเบ—เบโ€‹, instance="my-server" - เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ„เบญเบกโ€‹เบžเบดเบงโ€‹เป€เบ•เบตโ€‹เบ—เบตเปˆ metric เบ™เบตเป‰โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹, datacenter="us-east" - เบ™เบตเป‰เปเบกเปˆเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป€เบ„เบทเปˆเบญเบ‡เบ™เบตเป‰เบ•เบฑเป‰เบ‡เบขเบนเปˆ.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบปเบšเบฅเบปเบ‡เบ”เป‰เบงเบเบŠเบทเปˆเบŠเบธเบ”เป€เบงเบฅเบฒเป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบฒเบกเบ„เบนเปˆเบ„เบต-เบ„เปˆเบฒ. เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบเบปเบ‡เบเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ„เบนเปˆ (timestamp, value). t1, t3, t3, ..., tN - เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบชเบฐโ€‹เปเบ•เบกโ€‹เป€เบงโ€‹เบฅเบฒโ€‹, 10, 20, 12, ..., 15 - เบ„เปˆเบฒโ€‹เบ—เบตเปˆโ€‹เบชเบญเบ”โ€‹เบ„เป‰เบญเบ‡โ€‹เบเบฑเบ™โ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เปƒเบŠเป‰ cpu เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เบ—เบตเปˆเปƒเบซเป‰.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบŠเบธเบ”เป€เบงเบฅเบฒเป„เบ”เป‰เบขเบนเปˆเปƒเบช? เบกเบตเปƒเบœเบกเบตเบ„เบงเบฒเบกเบ„เบดเบ”เปเบ™เบงเปƒเบ”?

  • เปƒเบ™ DevOps, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบงเบฑเบ”เปเบ—เบ CPU, RAM, เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, rps, เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
  • IoT - เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบงเบฑเบ”เปเบ—เบเบญเบธเบ™เบซเบฐเบžเบนเบก, เบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™, เบžเบดเบเบฑเบ”เบ—เบฒเบ‡เบžเบนเบกเบชเบฒเบ”เปเบฅเบฐเบชเบดเปˆเบ‡เบญเบทเปˆเบ™.
  • เบ™เบญเบโ€‹เบˆเบฒเบโ€‹เบ™เบตเป‰โ€‹เบ—เบฒเบ‡โ€‹เบ”เป‰เบฒเบ™โ€‹เบเบฒเบ™โ€‹เป€เบ‡เบดเบ™ โ€“ เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เบฅเบฒโ€‹เบ„เบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ„เบฑเบ”โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ‚เบญเบ‡โ€‹เบซเบผเบฑเบโ€‹เบŠเบฑเบšโ€‹เปเบฅเบฐโ€‹เบชเบฐโ€‹เบเบธเบ™โ€‹เป€เบ‡เบดเบ™โ€‹.
  • เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบŠเบธเบ”เป€เบงเบฅเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เปƒเบ™เป‚เบฎเบ‡เบ‡เบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเปƒเบŠเป‰ VictoriaMetrics เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบฅเบปเบก, เบชเปเบฒเบฅเบฑเบšเบซเบธเปˆเบ™เบเบปเบ™.
  • เบŠเบธเบ”เป€เบงเบฅเบฒเบเบฑเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเป€เบŠเบฑเบ™เป€เบŠเบตเบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบ•เปˆเบฒเบ‡เป†. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ; เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบฑเบ”เปเบ—เบเบ„เบงเบฒเบกเบเบปเบ”เบ”เบฑเบ™เบขเบฒเบ‡เบฅเบปเบ”; เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบฑเบ”เปเบ—เบเบ„เบงเบฒเบกเป„เบง, เป„เบฅเบเบฐเบ—เบฒเบ‡; เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบฑเบ”เปเบ—เบเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ™เปเป‰เบฒเบกเบฑเบ™เป€เบŠเบทเป‰เบญเป„เบŸ, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
  • เบŠเบธเบ”เป€เบงเบฅเบฒเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเป€เบฎเบทเบญเบšเบดเบ™. เปเบ•เปˆเบฅเบฐเป€เบฎเบทเบญเบšเบดเบ™เบกเบตเบเปˆเบญเบ‡เบชเบตเบ”เปเบฒเบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเบŠเบธเบ”เป€เบงเบฅเบฒเบชเปเบฒเบฅเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบชเบธเบ‚เบฐเบžเบฒเบšเบ‚เบญเบ‡เป€เบฎเบทเบญเบšเบดเบ™. เบŠเบธเบ”เป€เบงเบฅเบฒเบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒเบเบฒเบ™เบšเบดเบ™เบญเบฐเบงเบฐเบเบฒเบ”.
  • เบเบฒเบ™เบฎเบฑเบเบชเบฒเบชเบธเบ‚เบฐเบžเบฒเบšเปเบกเปˆเบ™เบ„เบงเบฒเบกเบ”เบฑเบ™เป€เบฅเบทเบญเบ”, เบเปเบฒเบกเบฐเบˆเบญเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบŠเบธเบ”เป€เบงเบฅเบฒเบกเบฑเบเบˆเบฐเบกเบตเบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ, เป€เบŠเบดเปˆเบ‡เบเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบฅเบฐเบ›เบธเบ‡เปเบ•เปˆเบ‡เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เปเบฒเบกเบฐเบ”เบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบดเป€เบชเบ”เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เป€เบงเบฅเบฒเบ›เบฒเบเบปเบ”. เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบกเบตเบ›เบฐเบชเบดเบ”เบ•เบดเบœเบปเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบˆเบธเบ” (timestamp, value) เบ”เป‰เบงเบเบเบฐเปเบˆเบ—เบตเปˆเปƒเบซเป‰เป„เบงเป‰. เบžเบงเบเป€เบ‚เบปเบฒเบชเบฐเบซเบ™เบญเบ‡ API เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เป‚เบ”เบเบ„เบต, เป‚เบ”เบเบ„เบนเปˆเบ„เบต-เบ„เปˆเบฒเบ”เบฝเบง, เบซเบผเบทเป‚เบ”เบเบ„เบนเปˆเบ„เบต-เบ„เปˆเบฒเบซเบผเบฒเบ, เบซเบผเบทเป‚เบ”เบ regexp. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบญเบเบซเบฒเบเบฒเบ™เป‚เบซเบผเบ” CPU เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบญเบฒเป€เบกเบฅเบดเบเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ pseudo-query เบ™เบตเป‰.

เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบŠเบธเบ”เป€เบงเบฅเบฒเปƒเบซเป‰เบžเบฒเบชเบฒเปเบšเบšเบชเบญเบšเบ–เบฒเบกเบžเบดเป€เบชเบ”เป€เบžเบฒเบฐเบงเปˆเบฒเบŠเบธเบ”เป€เบงเบฅเบฒ SQL เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบซเบผเบฒเบ. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ SQL, เบกเบฑเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบซเบผเบฒเบ. เบžเบฒเบชเบฒเบชเบญเบšเบ–เบฒเบกเป€เบŠเบฑเปˆเบ™ PromQL, InfluxQL, เป„เบซเบผ, Q. เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเบšเบฒเบ‡เบ„เบปเบ™เป„เบ”เป‰เบเบดเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบžเบฒเบชเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบซเบผเบฒเบเบ„เบปเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบเบดเบ™เบเปˆเบฝเบงเบเบฑเบš PromQL. เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฒเบชเบฒเบชเบญเบšเบ–เบฒเบก Prometheus.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบŠเบธเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ VictoriaMetrics เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡.

เบกเบฑเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเปเบฒเบฅเบฑเบšเบ”เบฑเบ”เบชเบฐเบ™เบต inverted เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเปเบฒเบฅเบฑเบšเบ„เปˆเบฒเบŠเบธเบ”เป€เบงเบฅเบฒ. repositories เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เปเบเบเบญเบญเบ.

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

เป€เบกเบทเปˆเบญเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบกเบฒเป€เบžเบทเปˆเบญเบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ TSDB, เบžเบงเบเป€เบฎเบปเบฒเบ—เปเบฒเบญเบดเบ”เป„เบ›เบซเบฒเบ”เบฑเบ”เบชเบฐเบ™เบต inverted. เปƒเบซเป‰เบ‚เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡ timeseries_ids เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบเบปเบ‡เบเบฑเบšเบŠเบธเบ”เบ™เบตเป‰ label=value. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบเบ„เบฑเบ‡เบ‚เปเป‰เบกเบนเบ™, เบ–เบทเบเบ”เบฑเบ”เบชเบฐเบ™เบตเป‚เบ”เบ timeseries_ids.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ‚เปเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบŠเบธเบ”เป€เบงเบฅเบฒเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒ.

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

เปƒเบ™เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบžเบฒเบเบชเปˆเบงเบ™เบ—เปเบฒเบญเบดเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ timeseries_ids เป‚เบ”เบ inverted index. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบเปˆเบฝเบงเบเบฑเบšเบžเบฒเบเบ—เบตเบชเบญเบ‡เปเบฅเบฐเบžเบฒเบเบ—เบตเบชเบฒเบกเบ•เปเปˆเบกเบฒ เปเบซเบผเปˆเบ‡ VictoriaMetrics, เบซเบผเบทเบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบเบฐเบเบฝเบกเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบญเบทเปˆเบ™เป† :)

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบฑเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ. เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบงเบฑเบ”เบˆเบฐเบ™เบฒเบ™เบธเบเบปเบกเบ—เบตเปˆเปเบœเบ™เบ—เบตเปˆเบฅเบฐเบซเบฑเบ”เป„เบ›เบซเบฒเบ„เปˆเบฒ. เบเบฐเปเบˆเปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ„เบนเปˆเบ™เบตเป‰ label=valueเบšเปˆเบญเบ™เบ—เบตเปˆ label ะธ value - เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฒเบ. เปเบฅเบฐเบ„เปˆเบฒเปเบกเปˆเบ™เบŠเบธเบ” timeseries_ids, เป€เบŠเบดเปˆเบ‡เบฅเบงเบกเบกเบตเบ„เบนเปˆเบ—เบตเปˆเปƒเบซเป‰ label=value.

Inverted index เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เป„เบง timeseries_ids, เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เปƒเบซเป‰โ€‹ label=value.

เบกเบฑเบ™เบเบฑเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบŠเบญเบเบซเบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ timeseries_ids เบŠเบธเบ”เป€เบงเบฅเบฒเบชเปเบฒเบฅเบฑเบšเบซเบผเบฒเบเบ„เบนเปˆ label=value, เบซเบผเบทเบชเปเบฒเบฅเบฑเบšเบ„เบนเปˆเบœเบปเบงเป€เบกเบ label=regexp. เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปเบ™เบงเปƒเบ”? เป‚เบ”เบเบŠเบญเบเบซเบฒเบˆเบธเบ”เบ•เบฑเบ”เบเบฑเบ™เบ‚เบญเบ‡เบŠเบธเบ” timeseries_ids เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เบนเปˆ label=value.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ‚เปเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบต inverted. เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” naive เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”. เบ™เบฒเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰.

เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡ getMetricIDs เป„เบ”เป‰เบฎเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบชเบฐเบ•เบฃเบดเบ‡. เปเบ•เปˆเบฅเบฐเบชเบฒเบเบ›เบฐเบเบญเบšเบ”เป‰เบงเบ label=value. เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบชเบปเปˆเบ‡เบ„เบทเบ™เบฅเบฒเบเบŠเบทเปˆ metricIDs.

เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ•เบปเบงเปเบ›เบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ invertedIndex. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบฑเบ”เบˆเบฐเบ™เบฒเบ™เบธเบเบปเบกเบ›เบปเบเบเบฐเบ•เบด (map), เป€เบŠเบดเปˆเบ‡เบˆเบฐเบชเป‰เบฒเบ‡เปเบœเบ™เบ—เบตเปˆ string เป€เบžเบทเปˆเบญเบ•เบฑเบ” ints. เป€เบชเบฑเป‰เบ™เบ›เบฐเบเบญเบšเบกเบต label=value.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ: เป„เบ”เป‰เบฎเบฑเบš metricIDs เบชเปเบฒเบฅเบฑเบšเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ” label=value, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบœเปˆเบฒเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™ label=value, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบกเบฑเบ™ metricIDs เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒ. เปเบฅเบฐเป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ intersectInts, เป€เบŠเบดเปˆเบ‡เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰. เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบชเบปเปˆเบ‡เบ„เบทเบ™เบˆเบธเบ”เบ•เบฑเบ”เบเบฑเบ™เบ‚เบญเบ‡เบฅเบฒเบเบŠเบทเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เป€เบŠเบฑเปˆเบ™: LevelDB, เบซเบผเบท RocksDB.

เปƒเบ™เบชเบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบฒเบกเบขเปˆเบฒเบ‡เป„เบง.

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

LevelDB เปเบฅเบฐ RocksDB - เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบ Google เปเบฅเบฐ Facebook. เบ—เปเบฒเบญเบดเบ”เบกเบฒ LevelDB. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, guys เบˆเบฒเบเป€เบŸเบชเบšเบธเบเป„เบ”เป‰เป€เบญเบปเบฒ LevelDB เปเบฅเบฐเป€เบฅเบตเปˆเบกเบ›เบฑเบšเบ›เบธเบ‡เบกเบฑเบ™, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เปƒเบซเป‰ RocksDB. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบเบทเบญเบšเบ—เบธเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเปƒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ RocksDB เบžเบฒเบเปƒเบ™ Facebook, เบฅเบงเบกเบ—เบฑเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒ RocksDB เปเบฅเบฐ MySQL. เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ•เบฑเป‰เบ‡เบŠเบทเปˆเปƒเบซเป‰เป€เบ‚เบปเบฒ MyRocks.

เบ”เบฑเบ”เบŠเบฐเบ™เบต inverted เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰ LevelDB. เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบกเบฑเบ™? เบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบ—เบถเบเป€เบ›เบฑเบ™เบเบฐเปเบˆ label=value. เปเบฅเบฐเบ„เปˆเบฒเปเบกเปˆเบ™เบ•เบปเบงเบฅเบฐเบšเบธเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบ„เบนเปˆเบขเบนเปˆ label=value.

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบขเบนเปˆเปƒเบ™ Go. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ”เบฑเบ”เบŠเบฐเบ™เบต inverted. เบ™เบตเป‰เปเบกเปˆเบ™ LevelDB.

เบซเบ™เป‰เบฒเบ—เบตเปˆเปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” naive. เบกเบฑเบ™เป€เบฎเบฑเบ”เป€เบฅเบทเป‰เบกเบ„เบทเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” naive เป€เบเบทเบญเบšเป€เบชเบฑเป‰เบ™เป‚เบ”เบเบชเบฒเบ. เบˆเบธเบ”เบ”เบฝเบงเปเบกเปˆเบ™เบงเปˆเบฒเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบซเบฑเบ™เป„เบ›เบซเบฒ map เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ”เบฑเบ”เบŠเบฐเบ™เบต inverted. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ” label=value. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบœเปˆเบฒเบ™เบ„เบนเปˆเบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบ—เบฑเบ‡เบซเบกเบปเบ” label=value เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบŠเบธเบ” metricIDs เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบ—เบฒเบ‡เปเบเบ.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ”เบต, เปเบ•เปˆเบกเบตเบ‚เปเป‰เป€เบชเบเบ•เปเปˆเบเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบ™เบตเป‰. VictoriaMetrics เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เบฑเบ”เบชเบฐเบ™เบต inverted เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ LevelDB. เปเบ•เปˆเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบญเบกเปเบžเป‰.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡? เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ LevelDB เปเบกเปˆเบ™เบŠเป‰เบฒเบเบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเป„เบฎเป‰เบ”เบฝเบ‡เบชเบฒ. เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเป„เบฎเป‰เป€เบซเบ”เบœเบปเบ™, เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบซเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ™เบ—เบตเบ”เบถเบ‡เป€เบญเบปเบฒเบ•เปˆเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” metricIDs. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เป„เบงโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ” - เบ•เปˆเบญเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปเบกเปˆเบ™โ€‹เบเบฝเบกโ€‹เบžเป‰เบญเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹.

เปƒเบ™ LevelDB, เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เบ–เบทเบเป€เบญเบตเป‰เบ™ GetValues เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ›เป‚เบ”เบเบœเปˆเบฒเบ™เบชเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ label=value. เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป€เบชเบฑเป‰เบ™ timeseries_ids. เบ‚เบญเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง timeseries_ids เป€เบเบฑเบšเบเปเบฒเบ‚เปเป‰เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰ timeseries_ids. เปเบ™เปˆเบ™เบญเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบŠเป‰เบฒเบเบงเปˆเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบซเบฒเปเบœเบ™เบ—เบตเปˆเบ›เบปเบเบเบฐเบ•เบดเป‚เบ”เบเบ„เบต.

เบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ LevelDB เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ C. เบเบฒเบ™เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™ C เบˆเบฒเบ Go เปเบกเปˆเบ™เบšเปเปˆเป„เบงเบซเบผเบฒเบ. เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบฎเป‰เบญเบ nanoseconds. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป„เบงเบซเบผเบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบเบฒเบ™เป‚เบ—เปเบšเบšเบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ go, เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒ 1-5 nanoseconds, เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบซเบผเบฒเบเบชเบดเบšเป€เบ—เบทเปˆเบญ. เบชเปเบฒเบฅเบฑเบš VictoriaMetrics เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡ :)

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ‚เบญเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบต inverted. เปเบฅเบฐเบžเบฃเบฐเบญเบปเบ‡เป„เบ”เป‰เป‚เบ—เบซเบฒเบ™เบฒเบ‡ เบฎเบงเบก.

Mergeset เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™ MergeTree. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบขเบทเบกเบกเบฒเบˆเบฒเบ ClickHouse. เปเบ™เปˆเบ™เบญเบ™, mergeset เบ„เบงเบ™เบ–เบทเบเบ›เบฑเบšเปเบ•เปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบญเบเบซเบฒเป„เบง timeseries_ids เบญเบตเบ‡เบ•เบฒเบกเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบซเป‰. Mergeset เบ–เบทเบเบ‚เบฝเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ Go. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡ เปเบซเบผเปˆเบ‡ VictoriaMetrics เปƒเบ™ GitHub. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต /lib/mergeset. เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบžเบฐเบเบฒเบเบฒเบกเบ„เบดเบ”เบญเบญเบเบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.

API mergeset เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบซเบผเบฒเบเบเบฑเบš LevelDB เปเบฅเบฐ RocksDB. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบ—เบถเบเบšเบฑเบ™เบ—เบถเบเปƒเบซเบกเปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเปเบฅเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒเบšเบฑเบ™เบ—เบถเบเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเป‚เบ”เบเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเบกเบฑเบ™เบˆเบถเปˆเบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™?

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

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

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

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

เบˆเบฒเบเบซเบ™เบถเปˆเบ‡ metrics เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš 40 x 8 = 320 metrics เบชเปเบฒเบฅเบฑเบšเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบต. เบ„เบนเบ™เบ”เป‰เบงเบ 100, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš 32 เปเบ—เบ™ 000.

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบญเบปเบฒ Kubernetes, เป€เบŠเบดเปˆเบ‡เบกเบตเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ” deployment, i.e. เป€เบกเบทเปˆเบญเป€เบงเบตเบŠเบฑเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบง. เบ”เป‰เบงเบเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ Kubernetes เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบžเบตเปˆเบก id เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบชเปˆเบ›เป‰เบฒเบเบเบณเบเบฑเบš.

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

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

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

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

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบกเบทเป‰เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡ ids เบ‚เบญเบ‡เบŠเบธเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบกเบทเป‰เบ™เบฑเป‰เบ™.

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

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

เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบ•เปเปˆเบชเบนเป‰เบเบฑเบšเบ™เบฒเบ‡. เบเบฒเบ™เบ•เปเปˆเบชเบนเป‰เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฅเบทเบญเบเบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ timeseries_ids เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบ”เบฑเบ”โ€‹เบŠเบฐโ€‹เบ™เบต inverted เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เปเบ™เบงเปƒเบ”? เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบกเบฑเบ™โ€‹เปƒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ•เบปเป‰เบ™โ€‹เบชเบฐโ€‹เบšเบฑเบš - เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบ•เบปเบงโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบŠเบธเบ”โ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบซเบผเบฒเบโ€‹เปƒเบ™โ€‹เปเบ•เปˆโ€‹เบฅเบฐ inverted index entry เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เบปเบงโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เบซเบ™เบถเปˆเบ‡โ€‹. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบธเบ™เปเบˆ label=value, เป€เบŠเบดเปˆเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบ—เบธเบเป†เบŠเบธเบ”เป€เบงเบฅเบฒ. เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบซเบเบฑเบ”เบซเบผเบฒเบ timeseries_ids เปƒเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เป€เบ‚เบปเป‰เบฒโ€‹.

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡. เปƒเบ™เป€เบกเบทเปˆเบญเบเปˆเบญเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบต N entries, เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบ™เบถเปˆเบ‡ entries เบ—เบตเปˆ prefix เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”. เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบ„เปˆเบฒเบ›เบฐเบเบญเบšเบกเบต ids เบŠเบธเบ”เป€เบงเบฅเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”.

เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเบเบฒเบ™เบชเบฐเปเบเบ™เบ‚เบญเบ‡เบ”เบฑเบ”เบŠเบฐเบ™เบต inverted เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบ–เบดเบ‡ 10 เป€เบ—เบปเปˆเบฒ. เปเบฅเบฐเบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบชเปเบฒเบฅเบฑเบš cache, เป€เบžเบฒเบฐเบงเปˆเบฒเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฒเบ label=value เบžเบฝเบ‡เปเบ•เปˆเบ„เบฑเป‰เบ‡เบ”เบฝเบงเปƒเบ™ cache เบฎเปˆเบงเบกเบเบฑเบ™ N เบ„เบฑเป‰เบ‡. เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป€เบชเบฑเป‰เบ™เบเบฒเบงเบขเบนเปˆเปƒเบ™เบ›เป‰เบฒเบเบŠเบทเปˆเปเบฅเบฐเบ›เป‰เบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เป€เบŠเบดเปˆเบ‡ Kubernetes เบกเบฑเบเบˆเบฐ shove เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เบ”เบฑเบ”เบชเบฐเบ™เบต inverted เปเบกเปˆเบ™ sharding. เบเบฒเบ™เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบต inverted เบซเบผเบฒเบเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปเบฅเบฐ sharding เบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป‚เบ”เบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบธเบ” key=value เบญเบฒเบ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ”เบฑเบ”เบชเบฐเบ™เบต inverted เป€เบญเบเบฐเบฅเบฒเบ”เบซเบผเบฒเบเบญเบฑเบ™, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบญเบšเบ–เบฒเบกเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เปƒเบ™เบซเบผเบฒเบเป†เป‚เบ›เป€เบŠเบ”เป€เบŠเบต. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป‚เบซเบกเบ”เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ”เบฝเบง, i.e., เบเบฒเบ™เบชเบฐเปเบเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เปเบเบ™เบ”เบฝเบงเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบ™เบตเป‰โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบชเบฐโ€‹เปเบเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบซเบผเบฒเบโ€‹เบซเบผเบฑเบโ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹, เป€เบ›เบฑเบ™ ClickHouse เบกเบฑเบโ€‹เป€เบฎเบฑเบ”โ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเปเบเบฐเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ - เบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เบฑเบ”เบเบฑเบ™ timeseries_ids. เบ‚เปโ€‹เปƒเบซเป‰โ€‹เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒโ€‹เบงเปˆเบฒโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เบฐเบ•เบดเบšเบฑเบ”โ€‹เบญเบฑเบ™โ€‹เปƒเบ”โ€‹เปเบ”เปˆ. เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบŠเบญเบเบซเบฒ timeseries_ids เบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰ label=value.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” naive. เบชเบญเบ‡ loops เบฎเบฑเบ‡. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบŸเบฑเบ‡เบŠเบฑเบ™ intersectInts เบชเบญเบ‡โ€‹เบ•เปˆเบญเบ™ - a ะธ b. เบขเบนเปˆเบ—เบตเปˆเบœเบปเบ™เบœเบฐเบฅเบดเบ”, เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบเบฑเบšเบ„เบทเบ™เบซเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบธเบ”เบ•เบฑเบ”เบเบฑเบ™เบ‚เบญเบ‡เบ•เปˆเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ” naive เบ„เบทโ€‹เปเบ™เบงโ€‹เบ™เบตเป‰. เบžเบงเบเป€เบฎเบปเบฒ iterate เบซเบผเบฒเบเบเบงเปˆเบฒเบกเบนเบ™เบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบ slice a, เบžเบฒเบเปƒเบ™ loop เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ›เป‚เบ”เบเบœเปˆเบฒเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ slice b. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ›เบฝเบšเบ—เบฝเบšเบžเบงเบเบกเบฑเบ™. เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบเบปเบ‡เบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบชเบตเปˆเปเบเบ. เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™ result.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ‚เปเป‰เป€เบชเบเปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเปเบกเปˆเบ™เบ‚เปเป‰เป€เบชเบเบซเบผเบฑเบเบ‚เบญเบ‡เบกเบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ–เบทเบเบ•เบฑเบ” a ะธ b เบซเบ™เบถเปˆเบ‡เบฅเป‰เบฒเบ™เบ•เปเปˆเบ„เบฑเป‰เบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบˆเบฐเบšเปเปˆเบ•เบญเบšเบ„เปเบฒเบ•เบญเบšเปƒเบซเป‰เบ—เปˆเบฒเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบซเบ™เบถเปˆเบ‡เบžเบฑเบ™เบ•เบทเป‰ iterations, เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เบซเบผเบฒเบเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ‚เปเป‰เป„เบ”เป‰เบ›เบฝเบšเปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เป€เบชเบฑเป‰เบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบŸเบฑเบ‡เบŠเบฑเบ™เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบ•เปˆเบญเบ™เปƒเบซเบเปˆ. เบชเปเบฒเบฅเบฑเบšเบ•เปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบฅเป‰เบฒเบ™, เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™ 2 เบฅเป‰เบฒเบ™ iterations, เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบš trillion iterations เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.

เบ‚เปเป‰เป€เบชเบเปเบกเปˆเบ™เบงเปˆเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบซเบผเบฒเบเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบ™เบตเป‰.

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

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เป€เบงเบฅเบฒ CPU เบˆเบถเปˆเบ‡เป€เบชเบเป„เบ›เปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰? เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ Go เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ hashing เปƒเบ™เบชเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เบ„เบดเบ”เป„เบฅเปˆ hash เบ‚เบญเบ‡เบ›เบธเปˆเบกเป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเบซเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ”เบฑเบ”เบŠเบฐเบ™เบตเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™ HashMap. เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ„เบดเบ”โ€‹เป„เบฅเปˆ hash เปเบกเปˆเบ™โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เปƒเบ™โ€‹เบชเบดเบšโ€‹เบ™เบฒโ€‹เป‚เบ™โ€‹เบงเบดโ€‹เบ™เบฒโ€‹เบ—เบตโ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบŠเป‰เบฒเบชเปเบฒเบฅเบฑเบš VictoriaMetrics.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

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

เบ‚เปเป‰เป€เบชเบเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™, เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบ.

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ™เบตเป‰. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡, เบกเบฑเบ™เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เปเบซเบผเปˆเบ‡ VictoriaMetrics, เปƒเบ™เป‚เบŸเบ™เป€เบ”เบต lib/uint64set. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบต VictoriaMetrics, เบšเปˆเบญเบ™เบ—เบตเปˆ timeseries_id เปเบกเปˆเบ™เบ„เปˆเบฒ 64-bit, เบšเปˆเบญเบ™เบ—เบตเปˆ 32 bits เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบ„เบปเบ‡เบ—เบตเปˆเป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบงเปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆ 32 bits เบชเบธเบ”เบ—เป‰เบฒเบเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เปเบœเปˆเบ™, เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ™เบตเป‰เปเบกเปˆเบ™ API เบ‚เบญเบ‡เบกเบฑเบ™. เบกเบฑเบ™เบšเปเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ. API เปเบกเปˆเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ VictoriaMetrics. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบšเปเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เป‚เบ”เบ VictoriaMetrics.

เบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆ add, เป€เบŠเบดเปˆเบ‡เป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒเปƒเบซเบกเปˆ. เบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆ has, เป€เบŠเบดเปˆเบ‡เบเบงเบ”เบชเบญเบšเบ„เปˆเบฒเปƒเบซเบกเปˆ. เปเบฅเบฐเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆ del, เป€เบŠเบดเปˆเบ‡เป€เบญเบปเบฒเบ„เปˆเบฒ. เบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบœเบนเป‰เบŠเปˆเบงเบ len, เป€เบŠเบดเปˆเบ‡เบชเบปเปˆเบ‡เบ„เบทเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบŠเบธเบ”. เบŸเบฑเบ‡เบŠเบฑเบ™ clone clones เบซเบผเบฒเบ. เปเบฅเบฐเบซเบ™เป‰เบฒเบ—เบตเปˆ appendto เบ›เปˆเบฝเบ™เบŠเบธเบ”เบ™เบตเป‰เป€เบ›เบฑเบ™เบŠเบญเบ timeseries_ids.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ. เบŠเบธเบ”โ€‹เบกเบตโ€‹เบชเบญเบ‡โ€‹เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹:

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

  • เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™ buckets. เบ™เบตเป‰เปเบกเปˆเบ™ slice เบˆเบฒเบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ bucket32. เปเบ•เปˆเบฅเบฐเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ hi เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™ 32 bits เป€เบ—เบดเบ‡. เปเบฅเบฐเบชเบญเบ‡เบ•เปˆเบญเบ™ - b16his ะธ buckets เบˆเบฒเบเบ™เบฑเป‰เบ™ bucket16 เป‚เบ„เบ‡เบชเป‰เบฒเบ‡.

เป€เบ—เบดเบ‡ 16 bits เบ‚เบญเบ‡เบชเปˆเบงเบ™เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ 64-bit เปเบกเปˆเบ™เป€เบเบฑเบšเป„เบงเป‰เบ—เบตเปˆเบ™เบตเป‰. เปเบฅเบฐเบ™เบตเป‰ bitsets เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เบชเปเบฒเบฅเบฑเบš 16 bits เบ•เปˆเปเบฒเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ byte.

Bucket64 เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบญเบฒเป€เบฃ uint64. เบ„เบงเบฒเบกเบเบฒเบงเปเบกเปˆเบ™เบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเปƒเบŠเป‰เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปƒเบ™เบซเบ™เบถเปˆเบ‡ bucket16 เบชเบนเบ‡เบชเบธเบ”เบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบ”เป‰ 2^16=65536 เบ™เป‰เบญเบ. เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเปเบšเปˆเบ‡เบญเบฑเบ™เบ™เบตเป‰เบ”เป‰เบงเบ 8, เบกเบฑเบ™เปเบกเปˆเบ™ 8 เบเบดเป‚เบฅเป„เบš. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบซเบฒเบ™โ€‹เป‚เบ”เบ 8 เบญเบตเบโ€‹เป€เบ—เบทเปˆเบญโ€‹เบซเบ™เบถเปˆเบ‡โ€‹, เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™ 1000โ€‹ uint64 เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบ. เบ™เบฑเป‰เบ™โ€‹เปเบกเปˆเบ™ Bucket16 - เบ™เบตเป‰เปเบกเปˆเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ 8 เบเบดเป‚เบฅเปเบกเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ uint64 เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆ 32 bits เป€เบ—เบดเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆ 32 bits เบ•เปˆเปเบฒ. เบ‚เปเปƒเบซเป‰เบœเปˆเบฒเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡ buckets. เบžเบงเบเป€เบฎเบปเบฒเบ›เบฝเบšเบ—เบฝเบš 32 bits เป€เบ—เบดเบ‡เบชเบธเบ”เปƒเบ™เปเบ•เปˆเบฅเบฐ bucket เบเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบ–เบทเบเป€เบžเบตเปˆเบก. เปเบฅเบฐเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบเบปเบ‡เบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ add เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ b32 buckets. เปเบฅเบฐเป€เบžเบตเปˆเบก 32 bits เบ•เปˆเปเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เปเบฅเบฐเบ–เป‰เบฒเบกเบฑเบ™เบเบฑเบšเบ„เบทเบ™เบกเบฒ true, เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบ„เปˆเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบ–เป‰เบฒเบกเบฑเบ™เบเบฑเบšเบ„เบทเบ™เบกเบฒ false, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเบซเบกเบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบกเบตเบขเบนเปˆเปเบฅเป‰เบง. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡.

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ b32.add. เบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆ 16 bits เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”, เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ” 16 bits.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ›เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ—เบดเบ‡ 16 bits. เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™. เปเบฅเบฐเบ–เป‰เบฒเบกเบตเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเป‚เบ—เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบก, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปƒเบ™เบซเบ™เป‰เบฒเบ•เปเปˆเป„เบ› bucket16.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒเบชเบธเบ”, เป€เบŠเบดเปˆเบ‡เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เบ”เบตเบ—เบตเปˆเบชเบธเบ”เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆเบชเปเบฒเบฅเบฑเบš uint64 เบ„เปˆเบฒ id เปƒเบ™ slice bit เปเบฅเบฐ bitmask. เบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบเบฒเบเบชเปเบฒเบฅเบฑเบšเบ„เปˆเบฒ 64-bit เบ—เบตเปˆเปƒเบซเป‰, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบšเบดเบ”เบ™เบตเป‰, เบซเบผเบทเบ•เบฑเป‰เบ‡เบกเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบšเบดเบ”เบ™เบตเป‰เบ–เบทเบเบ•เบฑเป‰เบ‡เปเบฅเบฐเบ•เบฑเป‰เบ‡เบกเบฑเบ™, เปเบฅเบฐเบเบฑเบšเบ„เบทเบ™เบกเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡ intersecting ids เบ‚เบญเบ‡เบŠเบธเบ”เป€เบงเบฅเบฒเป‚เบ”เบ 10 เป€เบ—เบทเปˆเบญเป€เบกเบทเปˆเบญเบ—เบฝเบšเบเบฑเบšเปเบœเบ™เบ—เบตเปˆเบ—เปเบฒเบกเบฐเบ”เบฒ.

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

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

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

เป„เบ›เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ VictoriaMetrics. Alexander Valyalkin

เบ‚เป‰เบญเบเบกเบตเบ„เปเบฒเบ–เบฒเบกเบเปˆเบฝเบงเบเบฑเบš bitset. เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” C++ vector bool, optimized bitset. เป€เบˆเบปเป‰เบฒเป€เบญเบปเบฒเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบˆเบฒเบเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™เบšเป?

เบšเปเปˆ, เบšเปเปˆเปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ” bitset เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบžเบฒเป‚เบ”เบเบ„เบงเบฒเบกเบฎเบนเป‰เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡ timeseries ids เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ VictoriaMetrics. เปเบฅเบฐเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เปเบกเปˆเบ™ 32 bits เป€เบ—เบดเบ‡เปเบกเปˆเบ™เบ„เบปเบ‡เบ—เบตเปˆเป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™. 32 bits เบ•เปˆเปเบฒเบญเบฒเบ”เบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบซเบ™เป‰เบญเบเบฅเบปเบ‡, เบกเบฑเบ™เบกเบฑเบเบˆเบฐเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” C ++, เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบฎเบนเป‰, เปเบกเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบปเปˆเบงเป„เบ›. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบปเปˆเบงเป„เบ›, เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบชเบฐเป€เบžเบฒเบฐ.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบเบฑเบ‡เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ‚เบญเบ‡ Alexey Milovid. เบ›เบฐเบกเบฒเบ™เบซเบ™เบถเปˆเบ‡เป€เบ”เบทเบญเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบฅเบฒเบงเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™ ClickHouse เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบดเป€เบชเบ”เบชเบฐเป€เบžเบฒเบฐ. เบฅเบฒเบงเบžเบฝเบ‡เปเบ•เปˆเป€เบงเบปเป‰เบฒเบงเปˆเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบปเปˆเบงเป„เบ›, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” C ++ เบซเบผเบทเบšเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเปƒเบ™เป‚เบฎเบ‡เบซเบกเป. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบฐเป€เบžเบฒเบฐเป€เบŠเบฑเปˆเบ™เบžเบงเบเป€เบฎเบปเบฒ, เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒ 32 bits เบชเบนเบ‡เบชเบธเบ”เปเบกเปˆเบ™เบ„เบปเบ‡เบ—เบตเปˆ.

เบ‚เป‰เบญเบเบกเบตเบ„เปเบฒเบ–เบฒเบกเบ—เบตเบชเบญเบ‡. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบˆเบฒเบ InfluxDB เปเบกเปˆเบ™เบซเบเบฑเบ‡?

เบกเบตเบซเบผเบฒเบเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™. เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, InfluxDB เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบผเบฒเบเบเบงเปˆเบฒ 10 เป€เบ—เบปเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เป€เบงเบฅเบฒ cardinality เบชเบนเบ‡, เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบกเบตเบžเบงเบเบกเบฑเบ™เบซเบผเบฒเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบฅเป‰เบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, VictoriaMetrics เปƒเบŠเป‰ 1 GB เบ•เปเปˆเบฅเป‰เบฒเบ™เปเบ–เบงเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ InfluxDB เปƒเบŠเป‰ 10 GB. เปเบฅเบฐเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡.

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

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

เปƒเบ™ VictoriaMetrics เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ. เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เปเบ•เปˆเบฅเบฐเบŠเบธเบ”เป€เบงเบฅเบฒเป€เบ›เบฑเบ™เบ„เปˆเบฒเบซเบผเบฑเบ. เบกเบนเบ™เบ„เปˆเบฒเปเบกเปˆเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบˆเบธเบ” - (timestamp, value), เปเบฅเบฐเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบŠเบธเบ” label=value. เบšเปเปˆเบกเบตเบเบฒเบ™เปเบเบเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ—เบปเปˆเบ‡เบ™เบฒเปเบฅเบฐเบเบฒเบ™เบงเบฑเบ”เปเบ—เบ. เบกเบฑเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเบ‚เปเป‰เบกเบนเบ™เปƒเบ”เป†เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบปเบกเบ—เบปเบš, เป€เบžเบตเปˆเบก, เบฅเบปเบš, เบ„เบนเบ™, เปเบšเปˆเบ‡, เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบš InfluxDB เบšเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เปเบ–เบงเบ•เปˆเบฒเบ‡เป†เบเบฑเบ‡เบšเปเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบ‚เป‰เบญเบเบฎเบนเป‰. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบ, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบซเบผเบฒเบ.

เบ‚เป‰เบญเบเบกเบตเบ„เบณเบ–เบฒเบกเบ—เบตเปˆเบŠเบตเป‰เปเบˆเบ‡. เบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบšเปเบงเปˆเบฒเบกเบตเบšเบฑเบ™เบซเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš, เบงเปˆเบฒเบ”เบฑเบ”เบชเบฐเบ™เบต inverted เบ™เบตเป‰เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบตเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™?

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

เบชเบฐเบšเบฒเบเบ”เบต! เบ‚เบญเบšเปƒเบˆเบชเปเบฒเบฅเบฑเบšเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™! เบ‚เป‰เบญเบเบŠเบทเปˆ Pavel. เบ‚เป‰เบญเบเบกเบฒเบˆเบฒเบ Wildberries. เบ‚เป‰เบญเบเบกเบตเบ„เบณเบ–เบฒเบกเบšเบฒเบ‡เบญเบฑเบ™เบชเบณเบฅเบฑเบšเป€เบˆเบปเป‰เบฒ. เบ„เปเบฒเบ–เบฒเบกเบซเบ™เบถเปˆเบ‡. เบ—เปˆเบฒเบ™เบ„เบดเบ”เบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบฅเบทเบญเบเบซเบผเบฑเบเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบชเป‰เบฒเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเปเบšเปˆเบ‡เบชเปˆเบงเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒ, เบšเบฒเบ‡เบ—เบตเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบชเบฒเบกเบฒเบ”เบ•เบฑเบ”เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป€เบงเบฅเบฒเบ„เบปเป‰เบ™เบซเบฒ, เบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบžเบฒเบ—เบดเบŠเบฑเบ™เบกเบตเบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡. เป„เบฅเบเบฐเป€เบงเบฅเบฒ, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฑเบ‡เบงเบปเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ–เบทเบเบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบšเป? เบ„เปเบฒเบ–เบฒเบกเบ—เบต 2 - เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” algorithm เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš bitset เปเบฅเบฐเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†, เบšเบฒเบ‡เบ—เบตเป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบต? เบšเบฒเบ‡เบ—เบตเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบšเป?

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

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

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

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

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

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเปƒเบŠเป‰เบ•เบปเบงเบเบฐเบžเบดเบšเป€เบžเบทเปˆเบญเบ‚เป‰เบฒเบกเบ‚เปเป‰เบกเบนเบ™?

เปเบกเปˆเบ™เปเบฅเป‰เบง.

เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบ–เบงเบ—เบตเปˆเบˆเบฑเบ”เบฎเบฝเบ‡เบขเบนเปˆเปƒเบ™ LevelDB เบซเบผเบทเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเป‰เบฒเบเบ•เบปเบงเบเบฐเบžเบดเบšเปเบฅเบฐเบŠเบญเบเบซเบฒเบชเบตเปˆเปเบเบ. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเปƒเบŠเป‰เบกเบฑเบ™? เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบŠเป‰เบฒ. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ•เบปเบงเบเบฐเบžเบดเบšเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป‚เบ—เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเปเบ–เบง. เบเบฒเบ™เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เปเบกเปˆเบ™ 5 เบ™เบฒเป‚เบ™เบงเบดเบ™เบฒเบ—เบต. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบต 100 เป€เบชเบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™ turns เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ„เบดเปˆเบ‡เบงเบดเบ™เบฒเบ—เบตเบžเบฝเบ‡เปเบ•เปˆเป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ.

เบกเบตเบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบกเปˆเบ™เปเบฅเป‰เบง. เปเบฅเบฐเบ„เปเบฒเบ–เบฒเบกเบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ„เบณเบ–เบฒเบกเบญเบฒเบ”เบŸเบฑเบ‡เป€เบšเบดเปˆเบ‡เปเบ›เบเป†. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบˆเบถเปˆเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบงเบกเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™เบกเบฒเบฎเบญเบ”เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบžเบงเบเบกเบฑเบ™เป„เบงเป‰เปƒเบ™เปเบšเบšเบŸเบญเบกเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰? เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ›เบฐเบซเบเบฑเบ”เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™เบšเบฒเบ‡เบฅเบฐเบšเบปเบšเป€เบŠเบฑเปˆเบ™ VictoriaMetrics, ClickHouse, เปเบฅเบฐเบญเบทเปˆเบ™เป†, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเบกเบฑเบ™?

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

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

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

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

เปเบฅเบฐเบญเบตเบเบซเบ™เบถเปˆเบ‡เบ„เปเบฒเบ–เบฒเบก. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบฐเป€เบฅเปˆเบ, เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบทเปˆเป„เบ”เป‰เบงเปˆเบฒเบกเบตเบ„เบฑเป‰เบ‡เบซเบ™เบถเปˆเบ‡เป€เบŠเบฑเปˆเบ™ Graphite เบเบฑเบš backend เบ„เบฒเบšเบญเบ™. เปเบฅเบฐเบฅเบฒเบงเบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เป€เบเบปเปˆเบฒ, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ›เปˆเบญเบเปƒเบซเป‰เบซเบ™เบถเปˆเบ‡เบˆเบธเบ”เบ•เปเปˆเบ™เบฒเบ—เบต, เบซเบ™เบถเปˆเบ‡เบˆเบธเบ”เบ•เปเปˆเบŠเบปเปˆเบงเป‚เบกเบ‡, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฐเบ”เบงเบเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ”เบดเบš, เป€เบงเบปเป‰เบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡, เบชเปเบฒเบฅเบฑเบšเป€เบ”เบทเบญเบ™, เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบญเบทเปˆเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰. เบˆเบฐโ€‹เบšเบฒเบ‡โ€‹เบญเบญเบโ€‹. เปเบ•เปˆ Prometheus เปเบฅเบฐ VictoriaMetrics เบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰. เบกเบฑเบ™เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฑเบ™เบšเป? เบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบšเปเปˆ?

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

เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ VictoriaMetrics, เป€เบŠเบฑเปˆเบ™ ClickHouse, เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ”เบดเบšเบ—เบตเปˆเบกเบตเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบชเบฒเบกเบฒเบ” shovel เป€เบ›เบฑเบ™เบžเบฑเบ™เบฅเป‰เบฒเบ™เบชเบฒเบเปƒเบ™เป€เบงเบฅเบฒเบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบงเบดเบ™เบฒเบ—เบตเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบซเบผเบฒเบ cores เปƒเบ™เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบเบฒเบ™เบชเบฐเปเบเบ™เบˆเบธเบ”เบŠเบธเบ”เป€เบงเบฅเบฒเปƒเบ™ VictoriaMetrics โ€“ 50 เบˆเบธเบ”เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเบ•เปเปˆเบซเบผเบฑเบ. เปเบฅเบฐเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เบ‚เบฐเบซเบเบฒเบเป„เบ›เบชเบนเปˆเบซเบผเบฑเบเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบต 000 เปเบเบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฐเปเบเบ™เบฅเป‰เบฒเบ™เบˆเบธเบ”เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต. เปเบฅเบฐเบŠเบฑเบšเบชเบดเบ™เบ™เบตเป‰เบ‚เบญเบ‡ VictoriaMetrics เปเบฅเบฐ ClickHouse เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบš downsamling.

เบฅเบฑเบเบชเบฐเบ™เบฐเบญเบทเปˆเบ™เปเบกเปˆเบ™เบงเปˆเบฒ VictoriaMetrics เบšเบตเบšเบญเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš. เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เปเบกเปˆเบ™เบˆเบฒเบ 0,4 เบซเบฒ 0,8 bytes เบ•เปเปˆเบˆเบธเบ”. เปเบ•เปˆเบฅเบฐเบˆเบธเบ”เปเบกเปˆเบ™เป€เบงเบฅเบฒ + เบ„เปˆเบฒ. เปเบฅเบฐเบกเบฑเบ™เบ–เบทเบเบšเบตเบšเบญเบฑเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡ byte เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบ.

Sergey. เบ‚เป‰เบญเบโ€‹เบกเบตโ€‹เบ„เปเบฒโ€‹เบ–เบฒเบก. quantum เบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบšเบฑเบ™เบ—เบถเบเบ•เปเบฒเปˆเบชเบธเบ”เปเบกเปˆเบ™เบซเบเบฑเบ‡?

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

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

เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡ millisecond เปƒเบ™ VictoriaMetrics เบเบฑเบ‡เป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบต DevOps, เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบเปเบฅเบฐเบ™เบตเบชเปˆเบงเบ™เปƒเบซเบเปˆเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™. เบชเบดเปˆเบ‡เบ”เบฝเบงเบ—เบตเปˆเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบกเปˆเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบŠเบทเป‰เบ‚เบฒเบเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบ–เบตเปˆเบชเบนเบ‡.

เบ‚เบญเบšโ€‹เปƒเบˆ! เปเบฅเบฐเบ„เปเบฒเบ–เบฒเบกเบญเบทเปˆเบ™. เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เปƒเบ™ PromQL เปเบกเปˆเบ™เบซเบเบฑเบ‡?

เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบซเบผเบฑเบ‡เป€เบ•เบฑเบก. VictoriaMetrics เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ PromQL เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบžเบตเปˆเบกเบซเบ™เป‰เบฒเบ—เบตเปˆเบเป‰เบฒเบงเบซเบ™เป‰เบฒเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™ PromQL, เป€เบŠเบดเปˆเบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒ MetricsQL. เบกเบตเบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเปƒเบ™ YouTube เบเปˆเบฝเบงเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฐเบซเบเบฒเบเบ™เบตเป‰. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบขเบนเปˆเปƒเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบก Monitoring Meetup เปƒเบ™เบžเบฒเบเบฎเบฝเบ™ spring เปƒเบ™ St.

เบŠเปˆเบญเบ‡เบ—เบฒเบ‡ Telegram VictoriaMetrics.

เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”. เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบšเบเบฐเบฅเบธเบ™เบฒ.

เปเบกเปˆเบ™เบซเบเบฑเบ‡เบ—เบตเปˆเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบ—เปˆเบฒเบ™เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เป„เบ›เปƒเบŠเป‰ VictoriaMetrics เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบฅเบเบฐเบเบฒเบงเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบš Prometheus? (เบ‚เบฝเบ™เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™, เบ‚เป‰เบญเบเบˆเบฐเป€เบžเบตเปˆเบกเบกเบฑเบ™เปƒเบชเปˆเปเบšเบšเบชเปเบฒเบซเบผเบงเบ”))

  • 71,4%เบ‚เป‰เบญเบเบšเปเปˆเปƒเบŠเป‰ Prometheus5

  • 28,6%เบšเปเปˆเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบš VictoriaMetrics2

7 เบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡. 12 เบœเบนเป‰เปƒเบŠเป‰เบ‡เบปเบ”.

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

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