เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบก Hydra - เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ

เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบชเบญเบ‡เบชเบฒเบกเบกเบทเป‰เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰ เบเบญเบ‡เบ›เบฐเบŠเบธเบก Hydra. เบœเบนเป‰เบŠเบฒเบเบˆเบฒเบเบเบธเปˆเบก JUG.ru เป„เบ”เป‰เป€เบŠเบตเบ™เบœเบนเป‰เป€เบงเบปเป‰เบฒเปƒเบ™เบเบฑเบ™ (Leslie Lamport! Cliff Click! Martin Kleppmann!) เปเบฅเบฐเป„เบ”เป‰เบญเบธเบ—เบดเบ”เบชเบญเบ‡เบกเบทเป‰เปƒเบซเป‰เบเบฑเบšเบฅเบฐเบšเบปเบšเปเบˆเบเบขเบฒเบเปเบฅเบฐเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰. Kontur เปเบกเปˆเบ™ เปœเบถเปˆเบ‡ เปƒเบ™เบชเบฒเบกเบ„เบนเปˆเบฎเปˆเบงเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบญเบ‡เบ›เบฐเบŠเบธเบก. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฅเบปเบกเบเบฑเบ™เบขเบนเปˆเบšเปˆเบญเบ™เบ•เบฑเป‰เบ‡, เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบตเปˆเปเบˆเบเบขเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบซเบผเบดเป‰เบ™ bingo, เปเบฅเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ•เปˆเบฒเบ‡เป†.

เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบงเบฝเบโ€‹เบ‡เบฒเบ™โ€‹เบ—เบตเปˆ Kontur เบขเบทเบ™โ€‹เบˆเบฒเบโ€‹เบœเบนเป‰โ€‹เบ‚เบฝเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹. เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเป€เบ„เบตเบเป„เบ› Hydra, เบ™เบตเป‰เปเบกเปˆเบ™เป‚เบญเบเบฒเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ—เบตเปˆเบˆเบฐเบˆเบทเปˆเบˆเปเบฒเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบžเปเปƒเบˆ; เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเบกเบต, เบ™เบตเป‰เปเบกเปˆเบ™เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเบเบทเบ”เบชเบฐเบซเบกเบญเบ‡เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ. เปƒเบซเบเปˆ O- เบซเบกเบฒเบเป€เบซเบ”.

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

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบก Hydra - เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ

เบกเบตเบชเบฒเบกเปœเป‰เบฒเบงเบฝเบเบ—เบฑเบ‡เปเบปเบ”:

  • เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฅเบทเบญเบ replicas เป‚เบ”เบเบ™เป‰เปเบฒเบซเบ™เบฑเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”
  • เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบฅเบฝเบ‡โ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบชเบญเบšโ€‹เบ–เบฒเบกโ€‹เบเบฑเบšโ€‹เบ–เบฒเบ™โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เปƒเบ™โ€‹เบซเบ™เปˆเบงเบโ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹
  • เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป‚เบญเบ™เบฅเบฑเบ”เปƒเบ™เบฅเบฐเบšเบปเบšเปเบˆเบเบขเบฒเบเบ—เบตเปˆเบกเบต topology เบงเบปเบ‡

เบงเบฝเบเบ‡เบฒเบ™ 1. ClusterClient

เบกเบฑเบ™ เบˆเบณ เป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเบฐ เป€เปœเบต เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ เบชเบณ เบฅเบฑเบšเบเบฒเบ™เป€เบฅเบทเบญเบ K เบญเบญเบเบˆเบฒเบ N เบ™เป‰ เบณ เปœเบฑเบ replicas เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš:

เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบฅเบนเบเบ„เป‰เบฒเบชเปเบฒเบฅเบฑเบšเบเบธเปˆเบก N nodes เบ—เบตเปˆเปเบˆเบเบขเบฒเบเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ. เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบˆเบฐเบ•เบดเบ”เบ•เบฒเบก metadata เบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš nodes (เป€เบŠเบฑเปˆเบ™: latencies เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบญเบฑเบ”เบ•เบฒเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ 4xx/5xx, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบˆเบธเบ”เบฅเบญเบ W1..WN เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒ. เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเป‰เบญเบกเป†เบเบฑเบ™, เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ„เบงเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบ K เบ‚เบญเบ‡ N nodes เปเบšเบšเบชเบธเปˆเบก - เป‚เบญเบเบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบเบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบเบฑเบšเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡ node.

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

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”?

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

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบก Hydra - เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ

เป€เบญเบปเบฒเป€เบˆเป‰เบเปเบฅเบฐเบชเป, เบ„เบดเบ”, เบขเปˆเบฒเบŸเป‰เบฒเบงเป€เบ›เบตเบ” spoiler เบ—เบฑเบ™เบ—เบต :)

เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚ (เบงเบดโ€‹เบ”เบตโ€‹เป‚เบญโ€‹)

เป€เบฅเบตเปˆเบกเป€เบงเบฅเบฒ 5:53 เป€เบงเบฅเบฒ 4 เบ™เบฒเบ—เบตเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™:

เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ„เบปเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš flipchart เป„เบ”เป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ:


เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚ (เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹)

เบเบฒเบ™เปเบเป‰เป„เบ‚เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™เบขเบนเปˆเป€เบ—เบดเบ‡เบžเบทเป‰เบ™เบœเบดเบง: เบชเบฐเบซเบผเบธเบšเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡ replicas เบ—เบฑเบ‡เบซเบกเบปเบ”, เบชเป‰เบฒเบ‡เบ•เบปเบงเป€เบฅเบ Random เบˆเบฒเบ 0 เบซเบฒเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฅเบทเบญเบ i-replica เป€เบŠเบฑเปˆเบ™เบงเปˆเบฒเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡ replicas เบˆเบฒเบ 0 เป„เบ›เบซเบฒ (. i-1)th เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบ•เบปเบงเป€เบฅเบเบชเบธเปˆเบก, เปเบฅเบฐเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡ replicas เบˆเบฒเบ 0 เบซเบฒ i-th - เบซเบผเบฒเบเบเปˆเบงเบฒเบกเบฑเบ™. เบงเบดเบ—เบตเบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเป€เบญเบปเบฒเบซเบ™เบถเปˆเบ‡ replica, เปเบฅเบฐเป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเป€เบญเบปเบฒเบซเบ™เบถเปˆเบ‡เบ•เปเปˆเป„เบ›, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒ replica เบ—เบตเปˆเป€เบฅเบทเบญเบ. เบ”เป‰เบงเบเบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เปƒเบ™เบเบฒเบ™เป€เบฅเบทเบญเบเปเบšเบšเบˆเบณเบฅเบญเบ‡เบญเบฑเบ™เปœเบถเปˆเบ‡เปเบกเปˆเบ™ O(N), เบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฅเบทเบญเบเบ•เบปเบงเปเบšเบš K เปเบกเปˆเบ™ O(NยทK) ~ O(N2).

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบก Hydra - เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ

เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡เบชเบตเปˆเบซเบฅเปˆเบฝเบกเปเบกเปˆเบ™เบšเปเปˆเบ”เบต, เปเบ•เปˆเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เป„เบ”เป‰. เบชเปเบฒเบฅเบฑเบšเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡ เบ•เบปเป‰เบ™เป„เบกเป‰เบชเปˆเบงเบ™ เบชเปเบฒเบฅเบฑเบšเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบ. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเป€เบฅเบดเบ lg N, เปƒเบšเบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเบšเบฑเบ™เบˆเบธเบ™เป‰เปเบฒเบซเบ™เบฑเบเบ‚เบญเบ‡ replicas, เปเบฅเบฐเบ‚เปเป‰เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบˆเบฐเบกเบตเบœเบปเบ™เบฅเบงเบกเบšเบฒเบ‡เบชเปˆเบงเบ™, เป€เบ–เบดเบ‡เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบขเบนเปˆเบ—เบตเปˆเบฎเบฒเบเบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰. เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบกเบˆเบฒเบ 0 เบซเบฒเบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบ™เป‰เปเบฒเบซเบ™เบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”, เบŠเบญเบเบซเบฒ replica i-th, เป€เบญเบปเบฒเบกเบฑเบ™เบญเบญเบเบˆเบฒเบเบ•เบปเป‰เบ™เป„เบกเป‰เปเบฅเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ. เบ”เป‰เบงเบเบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เปเบกเปˆเบ™ O(N), เบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ replica i-th เปเบฅเบฐเป€เบญเบปเบฒเบกเบฑเบ™เบญเบญเบเบˆเบฒเบเบ•เบปเป‰เบ™เป„เบกเป‰เปเบกเปˆเบ™ O(lg N), เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฅเบทเบญเบ K replicas เปเบกเปˆเบ™ O(N + K lg N) ~ O(N lg N).

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบก Hydra - เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ

เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เป€เบชเบฑเป‰เบ™-เป‚เบฅเบเบฒเบฃเบดเบ—เบถเบกเปเบกเปˆเบ™เบ‡เบฒเบกเบเบงเปˆเบฒเบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบก, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเบณเบฅเบฑเบš K เบ‚เบฐเปœเบฒเบ”เปƒเบซเบเปˆ.

เบกเบฑเบ™เปเบกเปˆเบ™ algorithm เบ™เบตเป‰ เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบฅเบฐเบซเบฑเบ” เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” ClusterClient เบˆเบฒเบเป‚เบ„เบ‡เบเบฒเบ™ "เบ•เบฒเป€เบงเบฑเบ™เบญเบญเบ" (เบกเบตเบ•เบปเป‰เบ™เป„เบกเป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™ O(N lg N), เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเบกเบตเบœเบปเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡ algorithm.)

เบšเบฑเบ™เบซเบฒ 2. Zebra

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

เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบญเบเบฐเบชเบฒเบ™เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบ–เบทเบเปเบšเปˆเบ‡เบ›เบฑเบ™. เบงเบฝเบเบ‡เบฒเบ™เบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒเป€เบญเบเบฐเบชเบฒเบ™ N เป€เบ—เบดเบ‡เบชเบธเบ”เบˆเบฑเบ”เบฎเบฝเบ‡เป‚เบ”เบเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบ•เบฑเป‰เบ‡เปƒเบˆ (เบšเปเปˆเบ–เบทเบเบ”เบฑเบ”เบชเบฐเบ™เบต) เบˆเบฒเบเบเบฒเบ™เป€เบเบฑเบšเบเปเบฒเบ‚เบฐเบซเบ™เบฒเบ” M (เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบง N < 100 << M). เบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบžเบปเบšเป€เบฅเบทเป‰เบญเบเป€เบฅเบฑเบเบ™เป‰เบญเบเปเบกเปˆเบ™เบเบฒเบ™เป€เบฅเบทเบญเบ N เป€เบ—เบดเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ‚เป‰เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™ S เป€เบ—เบดเบ‡ (S ~ N).

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

เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚ (เบงเบดโ€‹เบ”เบตโ€‹เป‚เบญโ€‹)

เป€เบฅเบตเปˆเบกเป€เบงเบฅเบฒ 34:50 เป‚เบกเบ‡ 6 เบ™เบฒเบ—เบตเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™:


เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚ (เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹)

เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ”เบดเบ™โ€‹: เบˆเบฑเบ”โ€‹เบฅเบฝเบ‡โ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” (เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹, เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹ เบ”เปˆเบงเบ™), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบญเบปเบฒเป€เบญเบเบฐเบชเบฒเบ™ N+S. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเปเบกเปˆเบ™ O(M lg M), เบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเบชเบธเบ”เบกเบฑเบ™เปเบกเปˆเบ™ O(M2).

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

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบซเบผเบฒเบเบ›เบฐเบชเบดเบ”เบ—เบดเบœเบปเบ™ - เปƒเบŠเป‰เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ binary heap streaming. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เป€เบญเบเบฐเบชเบฒเบ™ N + S เบ—เปเบฒเบญเบดเบ”เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆ min- เบซเบผเบท max-heap (เบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบดเบ”เบ—เบฒเบ‡เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡), เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปเบ•เปˆเบฅเบฐเป€เบญเบเบฐเบชเบฒเบ™เบ•เปเปˆเบกเบฒเป„เบ”เป‰เบ–เบทเบเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบฎเบฒเบเบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเป€เบญเบเบฐเบชเบฒเบ™เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบซเบผเบทเบชเบนเบ‡เบชเบธเบ”เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™. , เปเบฅเบฐ, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบกเปˆเบ™เป€เบžเบตเปˆเบกเปƒเบชเปˆเบ•เบปเป‰เบ™เป„เบกเป‰. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰โ€‹, เบ„เบงเบฒเบกโ€‹เบชเบฑเบšโ€‹เบชเบปเบ™โ€‹เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ—เบตเปˆโ€‹เบฎเป‰เบฒเบโ€‹เปเบฎเบ‡โ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹, เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹เป„เบกเป‰โ€‹เปƒเบซเบกเปˆโ€‹เบขเบนเปˆโ€‹เบชเบฐโ€‹เป€เบซเบกเบตโ€‹, O(M lg Mโ€‹)โ€‹, เบ„เบงเบฒเบกโ€‹เบชเบฑเบšโ€‹เบชเบปเบ™โ€‹เป‚เบ”เบโ€‹เบชเบฐโ€‹เป€เบฅเปˆเบโ€‹เปเบกเปˆเบ™ O(Mโ€‹)โ€‹, เป€เบŠเบฑเปˆเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป€เบฅเบทเบญเบโ€‹เบ”เปˆเบงเบ™โ€‹.

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

เบšเบฑเบ™เบซเบฒ 3. เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบฅเบฑเบ”

เบกเบฑเบ™ เบˆเบณ เป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเบฐ เป€เปœเบต เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบธเบ” เบชเบณ เบฅเบฑเบšเบฅเบฑเบ”เบชเบฐเบซเบผเบฑเบš:

เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบปเบ™เป„เบเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เบญเบ‡เบฅเบฑเบ”เบ—เบตเปˆเปเบ›เบเบ›เบฐเบซเบผเบฒเบ”เบชเปเบฒเบฅเบฑเบšเบเบธเปˆเบก N nodes เบ—เบตเปˆเปเบˆเบเบขเบฒเบ. เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡ i-th node เบ„เบงเบ™เบ–เบทเบเป‚เบญเบ™เป„เบ›เปƒเบชเปˆ (i+1)-th node, เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡ node N-th เบ„เบงเบ™เบ–เบทเบเป‚เบญเบ™เป„เบ›เปƒเบชเปˆ node เบ—เบณเบญเบดเบ”. เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเปเบกเปˆเบ™ swap เบฅเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบชเบญเบ‡ nodes เปเบฅเบเบ›เปˆเบฝเบ™เบฅเบฑเบ”เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบน. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบเบฑเบ™เบงเปˆเบฒเบชเบฐเบงเบดเบ”เบฅเบฑเบ”เปƒเบŠเป‰เป€เบงเบฅเบฒ M milliseconds. เบ—เบธเบเป† node เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™ swap เบฅเบฑเบ”เบ”เบฝเบงเปƒเบ™เบ—เบธเบเป€เบงเบฅเบฒ.

เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบ›เบฒเบ™เปƒเบ”เป€เบžเบทเปˆเบญเป‚เบญเบ™เบฅเบฑเบ”เบ‚เบญเบ‡เบ—เบธเบ nodes เปƒเบ™ cluster?

เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚ (เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹)

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

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบก Hydra - เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ

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

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบก Hydra - เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™ - เบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™, เปเบ•เปˆเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ„เบปเบ‡เบ—เบตเปˆ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เปเบฅเบเบ›เปˆเบฝเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เปเบฒเบญเบดเบ”เบเบฑเบšเบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เบตเบชเบญเบ‡เบเบฑเบš penultimate, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเบธเบ”เบ—เป‰เบฒเบเบˆเบฐเบขเบนเปˆเปƒเบ™เบ•เปเบฒเปเบซเบ™เปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เปเบฅเบเบ›เปˆเบฝเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเบชเบญเบ‡เบเบฑเบšเบซเบ™เบถเปˆเบ‡เบชเบธเบ”เบ—เป‰เบฒเบ, เบ—เบตเบชเบฒเบกเบเบฑเบšเบซเบ™เบถเปˆเบ‡ penultimate, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบซเบผเบฑเบ‡เบˆเบฒเบเบฎเบญเบšเปเบฅเบเบ›เปˆเบฝเบ™เบ™เบตเป‰, เบฅเบฑเบ”เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบขเบนเปˆเปƒเบ™เบ•เปเบฒเปเบซเบ™เปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, O(2M) ~ O(1) permutations เบˆเบฐเบ–เบทเบเป€เบฎเบฑเบ”.

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบเบเบญเบ‡เบ›เบฐเบŠเบธเบก Hydra - เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ

เบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเบšเปเปˆเปเบ›เบเปƒเบˆเบ™เบฑเบเบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เป€เบฅเบตเบ, เบœเบนเป‰เบ—เบตเปˆเบเบฑเบ‡เบˆเบทเปˆเบงเปˆเบฒเบเบฒเบ™เบซเบกเบธเบ™เปเบกเปˆเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบชเบญเบ‡ symmetries axial. เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เบšเปเปˆเปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡, เปเบ•เปˆเป‚เบ”เบเบ•เปเบฒเปเบซเบ™เปˆเบ‡ K < N. (เบ‚เบฝเบ™โ€‹เปƒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹เป€เบซเบฑเบ™โ€‹เปเบ™เบงโ€‹เปƒเบ”โ€‹.)

เป€เบˆเบปเป‰เบฒเบกเบฑเบเบ›เบดเบ”เบชเบฐเปœเบฒเบšเป? เป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบญเบทเปˆเบ™เป†เบšเป? เปเบšเปˆเบ‡เบ›เบฑเบ™เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™.

เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบฅเบดเป‰เบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเบธเบ”เบ—เป‰เบฒเบ:

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

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