Перейти к основному содержимому

Надежная эксплуатация высоконагруженных систем

Контекст

Современные информационные системы часто функционируют в условиях высоких нагрузок: миллионы транзакций в день, тысячи одновременных подключений, интенсивная работа с большими объемами данных, интеграция с внешними сервисами и приложениями (в том числе с 1С). Отказоустойчивость, производительность и масштабируемость становятся критически важными характеристиками инфраструктуры.

Для СУБД это означает необходимость быстрой обработки запросов, эффективной работы с пулами соединений, гибкой архитектуры хранения данных и минимального времени отклика, даже в условиях пиковых нагрузок.

Проблема

При эксплуатации СУБД в высоконагруженной среде возникают типовые сложности:

  • деградация производительности из-за роста числа подключений;
  • неэффективные планы выполнения запросов, приводящие к замедлению операций;
  • блокировки и узкие места при работе с большим объемом данных в партиционированных таблицах;
  • невозможность быстрой масштабируемости;
  • ограниченная поддержка платформ, таких как 1С;
  • сложность развертывания высокодоступных и управляемых кластеров, особенно в контейнеризованных средах.

Эти проблемы ведут к нарушению SLA, затрудняют сопровождение, увеличивают нагрузку на администраторов и разработчиков.

Решение

Для обеспечения надежной эксплуатации высоконагруженных систем в СУБД Pangolin доступны следующие функциональности, которые расширят возможности разработчика:

  • Поддержка работы с 1С;
  • **Улучшенный пулер соединений - Pangolin Pooler;
  • Корректировка, фиксация и подмена планов запросов;
  • Неблокирующее нативное интервальное партиционирование;
  • Глобальные индексы и глобальные ограничения на партиционированные таблицы;
  • Поставка Docker-образа СУБД Pangolin.

Совокупность этих решений позволяет добиться стабильной, управляемой и масштабируемой работы СУБД Pangolin в условиях высоких нагрузок, снизить издержки на администрирование и сопровождение, а также обеспечить гибкость в развертывании.

В подразделах ниже представлено более детальное описание данных функциональностей.

Поддержка работы с 1С

Данная функциональность позволяет использовать СУБД Pangolin в качестве СУБД для «Платформы 1С: Предприятие».

Включение поддержки 1С активирует:

  • оптимизации планировщика запросов;
  • изменения в работе внутренних алгоритмов СУБД;
  • дополнительные расширения.

Возможность является отключаемой, так как полная совместимость поведения продукта Pangolin с выключенной поддержкой 1С и с включенной поддержкой 1С отличается. Оптимизации и изменения могут приводить к построению планов с деградацией производительности при использовании без 1С. Рекомендуется включать поддержку при использовании продукта совместно с 1С.

Более подробное описание данной функциональности представлено в разделе «Поддержка 1С» документа «Администрирование функциональностей».

Пулер соединений Pangolin Pooler

Компонент Pangolin Pooler – это менеджер пулов соединений СУБД Pangolin. Данный компонент является доработанной версией утилиты PgBouncer.

Предназначением компонента является минимизация издержек, связанных с установлением новых подключений к СУБД Pangolin. Pangolin Pooler позволяет уменьшить накладные расходы на базу данных в случае, когда огромное количество физических соединений ведет к падению производительности СУБД Pangolin.

К ключевым доработкам программы PgBouncer в рамках создания компонента Pangolin Pooler относятся:

  • Режим сквозной аутентификации пользователей, который дополнительно осуществляет поддержку аутентификации пользователей методом LDAP и аудирование действий пользователя в лог компонента Pangolin Pooler;
  • Поддержка подготовленных запросов для транзакционного режима кластера высокой доступности Pangolin;
  • Поддержка использования сертификатов PKCS#12 и управление сертификатами для Pangolin с Secret Management System (SecMan);
  • Поддержка топологии «N-ЦОД» в Pangolin Pooler;
  • Реализация вывода команды SHOW POOLS в лог компонента;
  • Создание команды RESET_AUTH, которая сбрасывает в исходное состояние сквозную аутентификацию пользователей.

Более подробное описание и управление компонентом и его доработками представлено в разделе «Администрирование Pangolin Pooler» документа «Руководство администратора».

Корректировка, фиксация и подмена планов запросов

В теории порядок выполнения запроса определяет оптимизатор запросов – программа, определяющая оптимальный «маршрут» на основании информации о количестве записей, распределения данных и индексах.

План выполнения запроса на практике может быть неоптимальным по ряду причин:

  • некорректная/неполная статистика;
  • недостаточные/избыточные индексы;
  • некорректные настройки стоимостей операций;
  • ошибки работы оптимизатора.

Неоптимальный маршрут выполнения может приводить к увеличенному времени выполнения запросов, деградации сервиса в целом (вплоть до отказа) или несоблюдению SLA.

Реализованная возможность фиксации и подмены планов запросов позволяет оперативно и без влияния на существующую структуру объектов:

  • принудительно определять план выполнения SQL-запроса, выполняемого как самостоятельный запрос, подготовленный запрос или запрос в составе PL/pgSQL-блока;
  • корректировать в процессе план выполнения запроса на стороне сервера при его обработке без необходимости вносить изменения в его текст на стороне отправляющего его приложения.

Подробнее о расширениях, которые предоставляют данную функциональность представлено в разделе «Управление планами запросов» документа «Руководство администратора».

Неблокирующее нативное интервальное партиционирование

Неблокирующее нативное интервальное партиционирование - это возможность создать партиционированную таблицу, указав лишь правило разбиения на партиции и сразу наполнять данными. В этом случае при добавлении данных отсутствующая партиция будет создана автоматически, вместо генерации сообщения об ошибке о необходимости создать партицию вручную. В остальном поведение автопартиционированных таблиц не отличается от стандартного партиционирования.

Более подробное описание и настройка функциональности представлено в разделе «Нативное интервальное партиционирование» документа «Администрирование функциональностей».

Глобальные индексы и глобальные ограничения на партиционированные таблицы

СУБД Pangolin предоставляет возможность создавать и использовать глобальные ограничения уникальности по полям партиционированных таблиц, отличных от полей ключа партиционирования. Тем самым повышая эффективность поиска записей в партиционированных таблицах для предикатов, не включающих ключ партиционирования.

Более подробное описание и настройка данной функциональности представлено в одноименном разделе документа «Администрирование функциональностей».

Поставка Docker-образа СУБД Pangolin

В СУБД Pangolin возможно запускать Docker-образы компонентов продукта в кластерных конфигурациях с одним главным узлом и произвольным числом узлов реплицирования. Решение позволяет создавать многоконтейнерные приложения, где роль кластера базы данных берет на себя Pangolin DB, а управление пулом соединений обеспечивает Pangolin Pooler.

В Docker-образе включены определенные функциональности, не требующие конфигурирования. Пользователю доступны преднастроенные функциональные возможности, которые активируются специальным ключом при старте контейнера.

Дополнительно можно самостоятельно активировать и настроить также ряд функциональных возможностей.

Список данных функциональностей (включенных и дополнительно настраиваемых), а также процесс запуска образа представлен в разделе «Docker-образы СУБД Pangolin» документа «Руководство по установке».