Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for Sharded PostgreSQL
  • Начало работы
    • Взаимосвязь ресурсов сервиса
    • Шардирование
    • Ключи шардирования
    • Классы хостов
    • Хранилище в Sharded PostgreSQL
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Публичные материалы
  • История изменений
  • Вопросы и ответы

В этой статье:

  • Стратегии шардирования
  • Составные ключи шардирования
  • Рекомендации по использованию составных ключей
  1. Концепции
  2. Ключи шардирования

Ключи шардирования

Статья создана
Yandex Cloud
Обновлена 12 декабря 2025 г.
  • Стратегии шардирования
  • Составные ключи шардирования
    • Рекомендации по использованию составных ключей

Шардирование — это принцип горизонтального масштабирования распределенных баз данных, при котором база данных разбивается на части — шарды. В Managed Service for Sharded PostgreSQL каждый шард является отдельным кластером Managed Service for PostgreSQL, который хранит часть данных всей системы.

Подробнее о шардировании в Managed Service for Sharded PostgreSQL.

Ключ шардирования — это один или несколько столбцов таблицы, по которым система определяет, в какой шард будет помещена строка. Если ключ состоит из нескольких столбцов, он называется составным.

Столбцы ключа могут быть следующих типов данных:

  • целые числа int и bigint;
  • строки varchar;
  • уникальные идентификаторы UUID;
  • хеш-функции CITY и MURMUR (только для целых чисел).

Стратегии шардированияСтратегии шардирования

Строки распределяются по шардам в зависимости от выбранной стратегии:

  • Range-стратегия — для выбора шарда используется диапазон значений. Строка помещается в шард, если значение ее ключа попадает в диапазон значений шарда. При этом строки с близкими значениями ключа будут находиться на одном шарде.

    Например, на одном шарде будут храниться строки со значением ключа от 1 до 1000, на другом — от 1001 до 2000 и т. д.

    Недостаток такой стратегии в том, что данные могут распределяться неравномерно.

    Подробнее о range-стратегии в Sharded PostgreSQL.

  • Hash-стратегия — для выбора шарда используется хеш-функция, которая применяется к значению ключа. Полученное хеш-значение определяет шард, в который будет помещена строка. Эта стратегия обеспечивает более равномерное распределение данных между шардами, чем range-стратегия. Однако выборка по диапазону значений усложняется, так как строки с близкими значениями могут находиться на разных шардах.

    Подробнее о hash-стратегии в Sharded PostgreSQL.

Составные ключи шардированияСоставные ключи шардирования

Для составного ключа используется несколько столбцов. При этом их порядок учитывается при шардировании.

Составные ключи применяются при шардировании данных, уникальность которых определяется сочетанием нескольких столбцов. Например, такими данными могут быть:

  • временные ряды;
  • географические данные, которые представлены несколькими связанными столбцами.

При использовании составного ключа шард, в который будет помещена строка, определяется следующим образом:

  • Для range-стратегии перечисляются все комбинации значений столбцов.

    Пример настройки правил шардирования для range-стратегии:

    CREATE DISTRIBUTION ds1 COLUMN TYPES integer, integer;
    CREATE KEY RANGE FROM 100,100 ROUTE TO sh4 FOR DISTRIBUTION ds1;
    CREATE KEY RANGE FROM 100,0 ROUTE TO sh3 FOR DISTRIBUTION ds1;
    CREATE KEY RANGE FROM 0,100 ROUTE TO sh2 FOR DISTRIBUTION ds1;
    CREATE KEY RANGE FROM 0,0 ROUTE TO sh1 FOR DISTRIBUTION ds1;
    
  • Для hash-стратегии хеш-функция применяется к каждому столбцу ключа отдельно. Полученные числа суммируются и к сумме применяется хеш-функция.

    Пример настройки правил шардирования для hash-стратегии:

    CREATE RELATION tr(MURMUR [id1 INT HASH, id2 VARCHAR HASH]);
     
    CREATE KEY RANGE FROM 3221225472 ROUTE TO sh4;
    CREATE KEY RANGE FROM 2147483648 ROUTE TO sh3;
    CREATE KEY RANGE FROM 1073741824 ROUTE TO sh2;
    CREATE KEY RANGE FROM 0 ROUTE TO sh1;
    

    Использование hash-стратегии упрощает настройку правил шардирования, особенно для составных ключей из трех и более столбцов.

Подробнее о составных ключах шардирования в Sharded PostgreSQL.

Рекомендации по использованию составных ключейРекомендации по использованию составных ключей

  • Первым указывайте столбец, который чаще всего используется в запросах. При этом, если вы используете range-стратегию, первым указывайте столбец, который часто встречается в запросах и имеет как можно меньше уникальных значений.
  • Убедитесь, что условия WHERE включают все столбцы составного ключа. Если в запросе указаны не все столбцы и настройка query_routing.default_route_behaviour установлена в BLOCK, то такие запросы будут отклонены.

Была ли статья полезна?

Предыдущая
Шардирование
Следующая
Классы хостов
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»