เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ Messenger (เบชเปˆเบงเบ™ 2): เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ โ€œเป€เบžเบทเปˆเบญเบœเบปเบ™เบเปเบฒเป„เบฅโ€

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

เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ Messenger (เบชเปˆเบงเบ™ 2): เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ โ€œเป€เบžเบทเปˆเบญเบœเบปเบ™เบเปเบฒเป„เบฅโ€
เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ เป€เบกเบทเปˆเบญเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, "เบ„เบงเบฒเบกเป€เบฅเบดเบ" เบ‚เบญเบ‡เบ”เบฑเบ”เบŠเบฐเบ™เบต. - เปเบกเป‰โ€‹เบเบฐโ€‹เบ—เบฑเป‰เบ‡ logarithmโ€‹. เปเบ•เปˆเป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›, เบ™เบตเป‰เบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบญเปˆเบฒเบ™ / เบ‚เบฝเบ™เบ”เบฝเบงเบเบฑเบ™ เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเป€เบ—เบทเปˆเบญเบซเบผเบฒเบเปœเป‰เบฒเบเปˆเบงเบฒเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบกเบฒเบเบฑเบšเบเบนเป‰เป„เบž เบžเบฒเบเบชเปˆเบงเบ™.

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

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

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”

เบ‚เปเปƒเบซเป‰เบเปเบฒเบ™เบปเบ”เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบกเบทเป‰เบ™เบตเป‰, เบกเบทเป‰เบญเบทเปˆเบ™, เปเบฅเบฐเปƒเบ™เบ›เบตเบซเบ™เบถเปˆเบ‡, เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบญเปˆเบฒเบ™เป‚เบ”เบ PostgreSQL เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบญเปˆเบฒเบ™ / เบ‚เบฝเบ™เปƒเบ”เป†เบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆเบ›เบฐเบกเบฒเบ™เบ”เบฝเบงเบเบฑเบ™.

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปƒเบ”เป† เบ‚เปเป‰เบกเบนเบ™เบชเบฐเบชเบปเบกเบ•เบฒเบกเบฅเบณเบ”เบฑเบš (เบ‚เปเป‰โ€‹เบ„เบงเบฒเบก, เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™, เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบšเบฑเบ™โ€‹เบ—เบถเบ, เบฎเบงเบšโ€‹เบฎเบงเบก, ... ) เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เปเบฒโ€‹เบกเบฐโ€‹เบŠเบฒเบ”โ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เปเบกเปˆเบ™โ€‹ เบงเบฑเบ™เบ—เบต/เป€เบงเบฅเบฒเป€เบซเบ”เบเบฒเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบซเบ”เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™ เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบชเบปเปˆเบ‡โ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹.

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

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

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

เบšเบฒเบ”เบเป‰เบฒเบงเป‚เบ”เบเบ‚เบฑเป‰เบ™เบ•เบญเบ™

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

เบ‚เปเป‰เบ„เบงเบฒเบก, เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เบ‚เบญเบ‡เบกเบฑเบ™

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

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เบงเบฝเบเบ‡เบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™ (เบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบญเปˆเบฒเบ™, เบ‚เบฒเป€เบ‚เบปเป‰เบฒ, เบ—เบฑเบ‡เบซเบกเบปเบ”), เบกเบฑเบ™เบเบฑเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบˆเบฐ "เปเบ•เป‰เบกเบžเบงเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒ" เป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เป‚เบ”เบเบงเบฑเบ™เบ—เบตเบ‚เปเป‰เบ„เบงเบฒเบก.

เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ Messenger (เบชเปˆเบงเบ™ 2): เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ โ€œเป€เบžเบทเปˆเบญเบœเบปเบ™เบเปเบฒเป„เบฅโ€

เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ (เบงเบฑเบ™เบ—เบตเบ‚เปเป‰เบ„เบงเบฒเบก) เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”: เบœเบนเป‰เบฎเบฑเบš, เป„เบŸเบฅเปŒ, เบ—เบฐเบšเบฝเบ™. เบ—เปˆเบฒเบ™เบšเปเปˆ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบกเบฑเบ™เปƒเบชเปˆเบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เปเบ•เปˆเปƒเบŠเป‰ DateTime เบ—เบตเปˆเบกเบตเบขเบนเปˆ.

เบเบฐเบ—เบนเป‰

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

เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ Messenger (เบชเปˆเบงเบ™ 2): เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ โ€œเป€เบžเบทเปˆเบญเบœเบปเบ™เบเปเบฒเป„เบฅโ€

เป€เบžเบตเปˆเบกเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™ (เบงเบฑเบ™เบ—เบตเบซเบปเบงเบ‚เปเป‰) เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”: เบซเบปเบงเบ‚เปเป‰, เบœเบนเป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก.

เปเบ•เปˆเบ”เบฝเบงเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบšเบฑเบ™เบซเบฒเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™:

  • เบ‚เป‰เบญเบเบ„เบงเบ™เบŠเบญเบเบซเบฒเบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ™เบซเบปเบงเบ‚เปเป‰เปƒเบ”?
  • เบ‚เป‰เบญเบเบ„เบงเบ™เบŠเบญเบเบซเบฒเบซเบปเบงเบ‚เปเป‰เปƒเบ”เบˆเบฒเบเบ‚เปเป‰เบ„เบงเบฒเบก?

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

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

เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ Messenger (เบชเปˆเบงเบ™ 2): เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ โ€œเป€เบžเบทเปˆเบญเบœเบปเบ™เบเปเบฒเป„เบฅโ€

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

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

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡: RU, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบเบฝเบ”เบŠเบฑเบ‡เบเบฑเบšเบ•เบปเบงเบญเบฑเบเบชเบญเบ™ Cyrillic เปƒเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ / เบŠเปˆเบญเบ‡, เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบšเปเปˆเป€เบšเบดเปˆเบ‡.

-- ัะตะบั†ะธะธ ะฟะพ ะดะฐั‚ะต ัะพะพะฑั‰ะตะฝะธั
CREATE TABLE "ะกะพะพะฑั‰ะตะฝะธะต_YYYYMMDD"(
  "ะกะพะพะฑั‰ะตะฝะธะต"
    uuid
      PRIMARY KEY
, "ะขะตะผะฐ"
    uuid
, "ะ”ะฐั‚ะฐะขะตะผั‹"
    date
, "ะะฒั‚ะพั€"
    uuid
, "ะ”ะฐั‚ะฐะ’ั€ะตะผั" -- ะธัะฟะพะปัŒะทัƒะตะผ ะบะฐะบ ะดะฐั‚ัƒ
    timestamp
, "ะขะตะบัั‚"
    text
);

CREATE TABLE "ะะดั€ะตัะฐั‚_YYYYMMDD"(
  "ะ”ะฐั‚ะฐะกะพะพะฑั‰ะตะฝะธั"
    date
, "ะกะพะพะฑั‰ะตะฝะธะต"
    uuid
, "ะŸะตั€ัะพะฝะฐ"
    uuid
, PRIMARY KEY("ะกะพะพะฑั‰ะตะฝะธะต", "ะŸะตั€ัะพะฝะฐ")
);

CREATE TABLE "ะคะฐะนะป_YYYYMMDD"(
  "ะ”ะฐั‚ะฐะกะพะพะฑั‰ะตะฝะธั"
    date
, "ะคะฐะนะป"
    uuid
      PRIMARY KEY
, "ะกะพะพะฑั‰ะตะฝะธะต"
    uuid
, "BLOB"
    uuid
, "ะ˜ะผั"
    text
);

CREATE TABLE "ะ ะตะตัั‚ั€ะกะพะพะฑั‰ะตะฝะธะน_YYYYMMDD"(
  "ะ”ะฐั‚ะฐะกะพะพะฑั‰ะตะฝะธั"
    date
, "ะ’ะปะฐะดะตะปะตั†"
    uuid
, "ะขะธะฟะ ะตะตัั‚ั€ะฐ"
    smallint
, "ะ”ะฐั‚ะฐะ’ั€ะตะผั"
    timestamp
, "ะกะพะพะฑั‰ะตะฝะธะต"
    uuid
, PRIMARY KEY("ะ’ะปะฐะดะตะปะตั†", "ะขะธะฟะ ะตะตัั‚ั€ะฐ", "ะกะพะพะฑั‰ะตะฝะธะต")
);
CREATE INDEX ON "ะ ะตะตัั‚ั€ะกะพะพะฑั‰ะตะฝะธะน_YYYYMMDD"("ะ’ะปะฐะดะตะปะตั†", "ะขะธะฟะ ะตะตัั‚ั€ะฐ", "ะ”ะฐั‚ะฐะ’ั€ะตะผั" DESC);

-- ัะตะบั†ะธะธ ะฟะพ ะดะฐั‚ะต ั‚ะตะผั‹
CREATE TABLE "ะขะตะผะฐ_YYYYMMDD"(
  "ะ”ะฐั‚ะฐะขะตะผั‹"
    date
, "ะขะตะผะฐ"
    uuid
      PRIMARY KEY
, "ะ”ะพะบัƒะผะตะฝั‚"
    uuid
, "ะะฐะทะฒะฐะฝะธะต"
    text
);

CREATE TABLE "ะฃั‡ะฐัั‚ะฝะธะบะขะตะผั‹_YYYYMMDD"(
  "ะ”ะฐั‚ะฐะขะตะผั‹"
    date
, "ะขะตะผะฐ"
    uuid
, "ะŸะตั€ัะพะฝะฐ"
    uuid
, PRIMARY KEY("ะขะตะผะฐ", "ะŸะตั€ัะพะฝะฐ")
);

CREATE TABLE "ะ”ะฐั‚ั‹ะกะพะพะฑั‰ะตะฝะธะนะขะตะผั‹_YYYYMMDD"(
  "ะ”ะฐั‚ะฐะขะตะผั‹"
    date
, "ะขะตะผะฐ"
    uuid
      PRIMARY KEY
, "ะ”ะฐั‚ะฐ"
    date
);

เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เบซเบผเบฒเบ

เปเบฅเป‰เบง, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเปƒเบŠเป‰ เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบ„เบฅเบฒโ€‹เบชโ€‹เบชเบดเบโ€‹ เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เปเบˆเบเบขเบฒเบเบ„เปˆเบฒเบžเบฒเบเบชเบฐเบซเบ™เบฒเบก (เบœเปˆเบฒเบ™ triggers เปเบฅเบฐ inheritance เบซเบผเบท PARTITION BY), เปเบฅเบฐ "เบ„เบนเปˆเบกเบท" เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡ partitioning key เป„เบ”เป‰เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡.

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

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

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