ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° распрСдСлённая Π‘Π£Π‘Π” Citus 13.0

Компания Citus Data, принадлСТащая Microsoft, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Π‘Π£Π‘Π” Citus 13.0, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΊ PostgreSQL 17. Citus обСспСчиваСт Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ PostgreSQL Π² кластСрС Π½Π° Π±Π°Π·Π΅ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ³ΠΎ оборудования ΠΈ позволяСт Ρ€Π°Π·Π½ΠΎΡΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΡƒΠ·Π»Π°ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Π° (sharding) с настройкой раздСлСния Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ столбцов ΠΈ схСмы хранСния. Для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ кластСр Citus выглядит ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ большой сСрвСр PostgreSQL, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΠΉ рСсурсы ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… Π΅Π³ΠΎ ΡƒΠ·Π»ΠΎΠ². Код написан Π½Π° языкС Π‘ΠΈ ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ AGPLv3.

Π¨Π°Ρ€Π΄ΠΈΠ½Π³ позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ большого ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…, суммарный Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сущСствСнно ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² кластСра. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° всС ΡƒΠ·Π»Ρ‹ для ускорСния выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ слияния ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с внСшними ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ. Для экономии дискового пространства распрСдСлённыС ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΡƒΠ·Π»Π°ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ хранится Π² сТатом Π²ΠΈΠ΄Π΅.

РаспрСдСлённыС запросы ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½Π° любой ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² кластСра, Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ схСмы Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠ·Π΅Π», ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ кластСра. ΠŸΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² запросы Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ ΡƒΠ·Π»Π°ΠΌ ΠΈ, Ссли ΠΎΠ½ΠΈ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ нСсколько ΡƒΠ·Π»ΠΎΠ², Ρ‚ΠΎ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° распараллСливаСтся. ΠšΠ»Π°ΡΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, добавляя Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ ΠΈ инициируя рСбалансировку.

Π’ качСствС Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования Citus отмСчаСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ аналитичСских запросов ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ряда (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΎΠ³ΠΈ ΠΈΠ»ΠΈ опрос состояния Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ²). Citus Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉΡΡ инфраструктуры Π½Π° Π±Π°Π·Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ сСрвСра PostgreSQL, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ пСрСстало Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° увСличСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструмСнтария Patroni ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ отказоустойчивыС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ запасными ΡƒΠ·Π»Π°ΠΌΠΈ, способными Π² случаС сбоя Π·Π°Π½ΡΡ‚ΡŒ мСсто основных ΡƒΠ·Π»ΠΎΠ².

ИзмСнСния Π² выпускС Citus 13.0:

  • ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° использованиС Π²Π΅Ρ‚ΠΊΠΈ PostgreSQL 17.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π² распрСдСлённых запросах Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JSON_TABLE() для прСобразования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° JSON Π² рСляционноС прСдставлСниС, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ PostgreSQL.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° синтаксиса Β«MERGE … WHEN NOT MATCHED BY SOURCEΒ».
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° доступа для распрСдСлённых сСкционированных Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ выраТСния Β«CREATE TABLE … USINGΒ», Π° Ρ‚Π°ΠΊΠΆΠ΅ измСнСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° доступа Ρ‡Π΅Ρ€Π΅Π· Β«ALTER TABLE … SET ACCESS METHODΒ».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° указания Π² распрСдСлённых сСкционированных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… столбцов ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ-ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² распрСдСлённых сСкционированных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ….
  • Π Π΅ΡˆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с синхронизациСй Ρ€ΠΎΠ»Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ.
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ распрСдСлСниС Π΄Π°Π½Π½Ρ‹Ρ… для ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Π° ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² Π² кластСр.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«EXPLAINΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ Β«MEMORYΒ» ΠΈ Β«SERIALIZEΒ», ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ использованной памяти ΠΈ врСмя, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎ сСти.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

author avatar
ProHoster ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚, ВСхничСский спСциалист
A technical specialist at ProHoster with over six years of experience in server administration, VPN solutions, and network security. I manage infrastructure setup and support, monitor service stability, and implement solutions to protect client data. I also contribute to performance optimization and compliance with modern security and privacy requirements.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ