เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เบงเบดเบ”เบตเป‚เบญ:

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบชเบฐเบšเบฒเบเบ”เบตเบ—เบธเบเบ„เบปเบ™! เบ‚เป‰เบญเบเบŠเบทเปˆ Andrew.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เบซเบปเบงเบ‚เปเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเบšเบชเบปเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™เบซเบผเบฒเบเป†เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบกเปˆเบ™เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เปเบฅเบฐเบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™. เปเบ™เปˆเบ™เบญเบ™, เบกเบตเบšเบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡, เปเบ•เปˆเปƒเบ™ Postgres เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ™เบฑเป‰เบ™. เปเบฅเบฐเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™ (เบ—เบตเปˆ HighLoad ++ 2019) เบกเบตเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เป‚เบ”เบ Nikolai Samokhvalov เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปƒเบ™ Postgres. เปเบฅเบฐเบ•เบฒเบกเบ—เบตเปˆเบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆเบกเบฑเบ™, เบ›เบฐเบŠเบฒเบŠเบปเบ™เบกเบฒเบ—เบตเปˆเบ™เบตเป‰เบ—เบตเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เปเบฅเบฐเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบœเบนเป‰เบ—เบตเปˆเบ›เบฐเป€เบŠเบตเบ™เบซเบ™เป‰เบฒเบเบฑเบšเบšเบฑเบ™เบซเบฒเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบซเบฒเบเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบเปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. เปเบฅเบฐเปƒเบ™เบšเบฒเบ‡เบšเปˆเบญเบ™, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบเบฒเบเบซเบผเบฒเบเปƒเบ™เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบงเปˆเบฒเบšเบฑเบ™เบซเบฒเบšเปเปˆเบˆเบฐเปเบˆเป‰เบ‡.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

Yandex เบกเบต Postgres. เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ Yandex เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™ Yandex.Cloud. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบ petabytes เบ—เบตเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบฅเป‰เบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเปƒเบ™ Postgres.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบซเบ™เบญเบ‡เบเบธเปˆเบกเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” - เบ™เบตเป‰เปเบกเปˆเบ™ node เบ•เบปเป‰เบ™เบ•เปเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ node, เบ›เบปเบเบเบฐเบ•เบดเบชเบญเบ‡ replicas (synchronous เปเบฅเบฐ asynchronous), เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบญเปˆเบฒเบ™เบขเบนเปˆเปƒเบ™ replica เป„เบ”เป‰.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปเบ•เปˆเบฅเบฐ node cluster เปเบกเปˆเบ™ Postgres, เปƒเบ™เบ™เบฑเป‰เบ™, เบ™เบญเบเบˆเบฒเบ Postgres เปเบฅเบฐเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก, เบกเบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ pooler เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. pooler เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฎเบปเป‰เบงเปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบ•เบปเบ™.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ pooler เปเบกเปˆเบ™เบซเบเบฑเบ‡?

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบกเบต 3 เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰:

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

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš proxy poolers, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบตเบชเบญเบ‡ poolers เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบซเบผเบฒเบเบขเปˆเบฒเบ‡. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆ poolers. เบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™ poolers + เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบขเบฑเบ™เบซเบผเบฒเบ. เบ™เบตเป‰ Pgpool ะธ Crunchy-Proxy.

เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบšเปเปˆเปเบกเปˆเบ™เบ—เบธเบเบ„เบปเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ™เบตเป‰. เปเบฅเบฐเบกเบฑเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ poolers เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆ Session pooling, i.e. เบซเบ™เบถเปˆเบ‡เบฅเบนเบเบ„เป‰เบฒเบ‚เบฒเป€เบ‚เบปเป‰เบฒ, เบซเบ™เบถเปˆเบ‡เบฅเบนเบเบ„เป‰เบฒเบ‚เบฒเบญเบญเบเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปเบฅเบฐเปƒเบ™เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡. เปเบ•เปˆเบกเบตเบšเบฑเบ™เบซเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ.เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปเบ™เปˆเบ™เบญเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ application_name_add_host. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบฒเบ‡เบ‚เป‰เบฒเบ‡ Bouncer เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ—เบตเปˆเบขเบนเปˆ IP เปƒเบซเป‰เบเบฑเบš application_name. เปเบ•เปˆ application_name เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบ™ Bouncer เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบˆเปเบฒเบเบฑเบ”เบซเบ™เบถเปˆเบ‡เบชเบฐเบ™เบธเบเป€เบเบต, i.e. เบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เปเปˆเบœเบนเป‰เปƒเบŠเป‰เบชเบฐเป€เบžเบฒเบฐ, เบ•เปเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบชเบฐเป€เบžเบฒเบฐ.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบžเบงเบเป€เบฎเบปเบฒ, เปเบ™เปˆเบ™เบญเบ™, เบ‚เบฝเบ™ patch เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบชเปเบฒเบฅเบฑเบš Bouncer เบ—เบตเปˆเป€เบžเบตเปˆเบกเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰, i.e. เบเบฒเบ™เบˆเปเบฒเบเบฑเบ”เบฅเบนเบเบ„เป‰เบฒเปƒเบ™เบชเบฐเบ™เบธเบเป€เบเบต.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เปƒเบ™เบ”เป‰เบฒเบ™ Postgres, i.e., เบˆเปเบฒเบเบฑเบ”เบšเบปเบ”เบšเบฒเบ”เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบˆเปเบฒเบ™เบงเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปƒเบ™เบˆเบธเบ”เปƒเบ”เบซเบ™เบถเปˆเบ‡, เบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบเบฒเบŸเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบฅเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบฐเบซเบผเบธเบšเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ PgBouncers เบซเบผเบฒเบ.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

https://lwn.net/Articles/542629/

Bouncer เป„เบ”เป‰เบ–เบทเบ patched เป€เบฅเบฑเบเบ™เป‰เบญเบ.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบกเบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰ Bouncers เบซเบผเบฒเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเบปเบเบ‚เบถเป‰เบ™เบกเบฒเป‚เบ”เบเบเบฒเบ™เปƒเบŠเป‰เบžเบญเบ” TCP เบ„เบทเบ™เปƒเปเปˆ. เปเบฅเบฐเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฐเป‚เบญเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰ round-robin.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒ 3 Bouncers เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบเบดเบ™เป€เบ–เบดเบ‡เบซเบผเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบ 100%. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ Bouncers เบšเปเปˆเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡?

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ 16 PgBouncers เบ—เบตเปˆเป‚เบซเบฅเบ” 16 cores เบขเบนเปˆเบ—เบตเปˆ 100%.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบ™เบตเป‰, restart เบเป‰เบฝเบ‡โ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฃเบตเบชเบฐเบ•เบฒเบ” 18 Bouncers เบ—เบฑเบ‡เปเบปเบ”เบ™เบตเป‰เป€เบ—เบทเปˆเบญเบฅเบฐเบญเบฑเบ™. เปเบ•เปˆเบเบฒเบ™เบฎเบฑเบเบชเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบ. Sysadmins, DevOps, เปเบฅเบฐเบœเบนเป‰เบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เบปเบงเบˆเบดเบ‡เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ™เบตเป‰เบˆเบฐเบšเปเปˆเบžเปเปƒเบˆเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ™เบตเป‰.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

https://www.postgresql.org/docs/current/libpq-cancel.html

https://github.com/pgbouncer/pgbouncer/pull/79

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

เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบ patched เปเบฅเบฐเบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบš Bouncer เบ‚เบญเบ‡ upstream.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเป‰เบ‡ multithreading เป€เบ›เบฑเบ™เบงเบฝเบเบ‡เบฒเบ™เบ•เบปเป‰เบ™เบ•เป. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบ„เบทเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TLS เบ‚เบฒเป€เบ‚เบปเป‰เบฒเป„เบ”เป‰เบ”เบต.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ Machinarium, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบชเบฐเบ–เบฒเบ™เบฐเป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เบฅเปเบฒเบ”เบฑเบš. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ libpq, เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบšเบฒเบ‡เบเบฒเบ™เป‚เบ—เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบซเป‰เบ—เปˆเบฒเบ™เปเบฅเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒ, "เป‚เบ—เบซเบฒเบ‚เป‰เบญเบเปƒเบ™เบžเบฒเบเบซเบฅเบฑเบ‡. เบ”เบฝเบงเบ™เบตเป‰เบ‚เป‰เบญเบเบกเบต IO เบ”เบฝเบงเบ™เบตเป‰, เปเบ•เปˆเป€เบกเบทเปˆเบญ IO เบญเบญเบเป„เบ›เบ‚เป‰เบญเบเบˆเบฐเบกเบตเบเบฒเบ™เป‚เบซเบผเบ”เบขเบนเปˆเปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต." เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เบซเบผเบฒเบเบฅเบฐเบ”เบฑเบš. เบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปเบกเปˆเบ™เบญเบฐเบ—เบดเบšเบฒเบเป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบฅเบฑเบ”. เบเบปเบ”เบฅเบฐเบšเบฝเบšเบซเบผเบฒเบเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: "เบ–เป‰เบฒเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเบŠเบธเบ”เบซเบปเบงเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” N, เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบฅเปเบ–เป‰เบฒ N bytes," "เบ–เป‰เบฒเบ‚เป‰เบญเบเบชเบปเปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ” SYNC, เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบเปเบฒเบฅเบฑเบ‡เบฅเปเบ–เป‰เบฒเปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบกเบต metadata เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš." เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบ, เบฅเบฐเบซเบฑเบ” counterintuitive, เบ„เบทเบเบฑเบšเบงเปˆเบฒ maze เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบชเบฐเปเบเบ™เป€เบชเบฑเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ‚เบญเบ‡เบฅเบฑเบ”, เบœเบนเป‰เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบญเบฐเบ—เบดเบšเบฒเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” imperative เบ—เปเบฒเบกเบฐเบ”เบฒ. เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบงเปˆเบฒเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบชเปˆเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบšเปˆเบญเบ™เบ—เบตเปˆเบฅเปเบฒเบ”เบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป‚เบ”เบเบเบฒเบ™เบฅเปเบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบ–เปˆเบฒเบเบ—เบญเบ”เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ›เบซเบฒ coroutine เบญเบทเปˆเบ™ (เบซเบปเบงเบ‚เปเป‰เบชเบตเบ‚เบฝเบง). เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เปƒเบ™ maze เบ•เบดเบ”เบ•เปเปˆเบเบฑเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบžเบตเปˆเบกเบชเบฒเบ‚เบฒเปƒเบชเปˆเบกเบฑเบ™.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฐเบ—เบนเป‰เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆ TCP เบเบญเบกเบฎเบฑเบšเปเบฅเบฐ round-robin เบœเปˆเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TPC เบเบฑเบšเบ„เบปเบ™เบ‡เบฒเบ™เบซเบผเบฒเบเบ„เบปเบ™.

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

เปเบฅเบฐเบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฅเบงเบšเบฅเบงเบกเปเบžเบฑเบเป€เบเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเบธเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบ™เบถเปˆเบ‡เป€เบžเบทเปˆเบญเบšเบฑเบ™เป€เบ—เบปเบฒเบฅเบฐเบšเบปเบš TCP stack.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ replication เบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เบ–เบทเบเบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰ 100% เบเบฑเบš PgBouncer. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เปเบšเบšโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบš Bouncerโ€‹, เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบˆเบฐโ€‹เบขเบนเปˆโ€‹เบ‚เป‰เบฒเบ‡โ€‹เบ—เบตเปˆโ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹.

เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ

เบชเบญเบ‡เบชเบฒเบกเบ„เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ Odyssey.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/66

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡ "Pause / Resume". เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ” Postgres, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบขเบธเบ”เบกเบฑเบ™เป„เบงเป‰เบŠเบปเปˆเบงเบ„เบฒเบงเปƒเบ™เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เป€เบฎเบฑเบ” pg_upgrade, เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบทเบšเบ•เปเปˆ. เปเบฅเบฐเบˆเบฒเบเบเปˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเบกเบฑเบ™เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบŠเป‰เบฒเบฅเบปเบ‡. เบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบกเบฒเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเบ›เบฐเบŠเบฒเบŠเบปเบ™เบˆเบฒเบเบŠเบธเบกเบŠเบปเบ™. เบ™เบฒเบ‡เบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰ frozen เป€เบ—เบทเปˆเบญ, เปเบ•เปˆเปƒเบ™เป„เบงเป†เบ™เบตเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเป€เบ›เบฑเบ™. (เปเบŠเปˆเปเบ‚เบ‡เปเบฅเป‰เบง)

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/73 - เปเบŠเปˆเปเบ‚เบ‡เปเบฅเป‰เบง

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบซเบ™เบถเปˆเบ‡เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเปƒเบซเบกเปˆเปƒเบ™ PgBouncer เปเบกเปˆเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ SCRAM Authentication, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบกเบฒเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ Yandex.Cloud. เบ—เบฑเบ‡เบชเบญเบ‡เปเบกเปˆเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เปเบฅเบฐเบชเปเบฒเบ„เบฑเบ™.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

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

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐ Odyssey. เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ•เบปเป‰เบ™เบ•เปเบ—เบตเปˆ coroutines เบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™. เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ™เบตเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบญเบกเบฎเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ‚เบฒเป€เบ‚เบปเป‰เบฒเปเบฅเบฐเปเบˆเบเบขเบฒเบเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบšเบฑเบ™เบ”เบฒเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™.

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ cascade เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบ—เบปเบ”เบชเบญเบš bundles เบ•เปˆเบฒเบ‡เป†: Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ–เป‰เบฒ Odyssey เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เปƒเบ™เบชเปˆเบงเบ™เปƒเบ”เปƒเบ™ cascade, เบกเบฑเบ™เบเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆ. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡.

เบซเบงเบฒเบ

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

Pluggable Authentication Method เปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบท Lunux เบ—เบตเปˆเบกเบตเปƒเบ™เบ•เบปเบง. เปƒเบ™ PgBouncer เบกเบฑเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบกเบตเบเบฐเบ—เบนเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเป€เบžเบทเปˆเบญเบฅเปเบ–เป‰เบฒเบ„เปเบฒเบ•เบญเบšเบˆเบฒเบ PAM เปเบฅเบฐเบกเบตเบเบฐเบ—เบนเป‰ PgBouncer เบ•เบปเป‰เบ™เบ•เปเบ—เบตเปˆเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ‚เปเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบญเบฒเป„เบชเบขเบนเปˆเปƒเบ™เบเบฐเบ—เบนเป‰ PAM.

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

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

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

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

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

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

เปเบœเบ™เบเบฒเบ™

เป€เบˆเบปเป‰เบฒเบขเบฒเบเป€เบซเบฑเบ™เบซเบเบฑเบ‡เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เปƒเบ™ Odyssey? เบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡เบˆเบฒเบเบŠเบธเบกเบŠเบปเบ™?

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

เปƒเบ™เป€เบ”เบทเบญเบ™เบชเบดเบ‡เบซเบฒ 2019.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเปƒเบ™เป€เบ”เบทเบญเบ™เบชเบดเบ‡เบซเบฒ:

  • เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡ SCRAM เปเบฅเบฐ PAM.
  • เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบญเปˆเบฒเบ™เป€เบžเบทเปˆเบญเบชเบฐเปเบ•เบ™เบšเบฒเบ.
  • เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบฃเบตเบชเบฐเบ•เบฒเบ”เบญเบญเบ™เป„เบฅเบ™เปŒ.
  • เปเบฅเบฐเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบขเบธเบ”เบŠเบปเปˆเบงเบ„เบฒเบงเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ.

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

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

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

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

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

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เป€เบงเบตเบŠเบฑเปˆเบ™ 1.0 เบกเบตเบ„เบงเบฒเบกเปเบฒเบเปเบ™เบงเปƒเบ”เบชเบณเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ? เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฅเบทเปˆเบญเบ™เบญเบญเบ Odyssey เบเบฑเบšเบ–เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบกเบฑเบ™เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเป‰เบง, เปเบ•เปˆเป€เบกเบทเปˆเบญเบกเบฑเบ™เบกเบฒเบฎเบญเบ”เบˆเบธเบ” 1 เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบฎเบธเปˆเบ™เบ—เบตเปˆเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบฎเบธเปˆเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เบงเปˆเบฒ 000.

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

เปเบœเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ Odyssey: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบซเบเบฑเบ‡เบญเบตเบเบˆเบฒเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. Andrey Borodin (2019)

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

เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ•เบญเบ™โ€‹เบ—เป‰เบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹, เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบขเบฒเบโ€‹เบˆเบฐโ€‹เบฎเบฑเบšโ€‹เบŸเบฑเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹. เบ‚เบญเบšโ€‹เปƒเบˆ!

เบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™

เบ–เป‰เบฒเบ‚เป‰เบญเบเบ•เบฑเป‰เบ‡ application_name เบ‚เบญเบ‡เบ‚เป‰เบญเบเป€เบญเบ‡, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ•เปเปˆเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปƒเบ™ Odyssey เบšเป?

Odyssey เบซเบผเบท Bouncer?

เปƒเบ™ Odyssey. เปƒเบ™ Bouncer เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ–เบดเป‰เบก.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบŠเบธเบ”.

เปเบฅเบฐเบ–เป‰เบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเป‚เบ”เบ”เบฅเบปเบ‡เปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบญเบทเปˆเบ™เป†, เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ•เปเปˆเบšเป?

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

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

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

เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ™เบ—เบปเปˆเบง replicas เบเบฑเบ‡เป€เบ›เบฑเบ™เบ—เบตเปˆเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒเบเบธเปˆเบก replicated เป€เบ›เบฑเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เปเบ•เปˆเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบกเบตเบ„เปเบฒเป€เบซเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, i.e. เปเบ—เป‰เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบกเบฑเบ™, เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบกเบฑเบ™เบ”เบต.

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

เปเบกเปˆเบ™โ€‹เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเบดเบ‡. pcache เบˆเบฐเบšเปเปˆเบกเบตเบšเบฅเบฑเบญเบเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, cache เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบˆเบฐเบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบœเบ™เบเบฒเบ™เบˆเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบญเบšเบ–เบฒเบก parsed, เบˆเบฐเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เป€เบฅเบตเบ.

เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบกเบตเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบธเปˆเบก, เปเบฅเบฐเบ—เปˆเบฒเบ™เป€เบžเบตเปˆเบก replica เปƒเบซเบกเปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบกเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบ”เบตเบขเบนเปˆเปƒเบ™เบกเบฑเบ™, i.e. เบกเบฑเบ™เป€เบžเบตเปˆเบก cache เบ‚เบญเบ‡เบกเบฑเบ™.

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

เปเบกเปˆเบ™เปเบฅเป‰เบง, เป€เบžเบตเปˆเบกเบ™เป‰เปเบฒเบซเบ™เบฑเบ.

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

Nginx เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰ slowly start เปƒเบ™เบเบธเปˆเบกเบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เปเบฅเบฐเบฅเบฒเบงเบ„เปˆเบญเบเป†เป€เบžเบตเปˆเบกเบเบฒเบ™เป‚เบซเบผเบ”.

เปเบกเปˆเบ™เปเบฅเป‰เบง, เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบกเบฑเบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเบซเบฒเบกเบฑเบ™.

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

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