Поделиться через


Руководство по использованию Базы данных Azure для PostgreSQL в мультитенантном решении

Многие мультитенантные решения в Azure используют систему управления реляционными базами данных с открытым исходным кодом База данных Azure для PostgreSQL. В этой статье мы рассмотрим функции База данных Azure для PostgreSQL, которые полезны при работе с мультитенантными системами. В статье также приводятся ссылки на рекомендации и примеры использования База данных Azure для PostgreSQL в мультитенантном решении.

Режимы развертывания

Существует два режима развертывания для База данных Azure для PostgreSQL, которые подходят для использования с мультитенантными приложениями:

  • База данных Azure для PostgreSQL — гибкий сервер. Это хороший выбор для большинства мультитенантных развертываний, которые не требуют высокой масштабируемости, предоставляемой Azure Cosmos DB для PostgreSQL.
  • Azure Cosmos DB для PostgreSQL — управляемая служба баз данных Azure, предназначенная для решений, требующих высокого уровня масштабирования, которая часто включает мультитенантные приложения. Эта служба входит в семейство продуктов Azure Cosmos DB.

Примечание.

База данных Azure для PostgreSQL — отдельный сервер находится на пути выхода на пенсию и планируется выйти на пенсию 28 марта 2025 года. Не рекомендуется для новых мультитенантных рабочих нагрузок.

Функции База данных Azure для PostgreSQL, поддерживающие мультитенантность

При создании мультитенантного приложения с помощью База данных Azure для PostgreSQL существует ряд функций, которые можно использовать для улучшения решения.

Примечание.

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

Безопасность на уровне строк

Безопасность на уровне строк полезна для обеспечения изоляции на уровне клиента при использовании общих таблиц. В PostgreSQL безопасность на уровне строк реализуется путем применения политик безопасности строк к таблицам, чтобы ограничить доступ к строкам по клиенту.

При реализации безопасности данных на уровне строк в таблице может быть незначительное влияние на производительность. Таким образом, может потребоваться создание дополнительных индексов в таблицах, где включена безопасность на уровне строк, чтобы гарантировать, что производительность не снижена. Рекомендуется использовать методы тестирования производительности для проверки соответствия рабочей нагрузки требованиям к базовой производительности при включении безопасности на уровне строк.

Подробнее:

Горизонтальное масштабирование с сегментированием

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

Решения, которым требуется очень высокий уровень масштабирования, могут использовать Azure Cosmos DB для PostgreSQL. Этот режим развертывания обеспечивает горизонтальное сегментирование клиентов на нескольких серверах (узлах). Используя распределенные таблицы в мультитенантных базах данных, все данные клиента хранятся на одном узле, что повышает производительность запросов.

Примечание.

С октября 2022 года Azure Database for PostgreSQL Hyperscale (Citus) была переименована в Azure Cosmos DB для PostgreSQL и перемещена в линейку продуктов Cosmos DB.

Подробнее:

Пулинг соединений

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

Пул подключений через PgBouncer устанавливается по умолчанию в База данных Azure для PostgreSQL — гибкий сервер.

Подробнее:

Проверка подлинности Microsoft Entra

База данных Azure для PostgreSQL — гибкий сервер поддерживает проверку подлинности подключений с помощью идентификатора Microsoft Entra. Эта функция позволяет рабочим нагрузкам приложений в мультитенантной среде проходить проверку подлинности в базе данных с помощью субъекта-службы или управляемого удостоверения клиента, что означает, что доступ к базе данных может быть ограничен отдельным клиентом. Объединяя проверку подлинности Идентификатора Microsoft Entra с политиками безопасности строк клиента, вы можете снизить риск доступа приложения к данным другого клиента из мультитенантной базы данных. Подробнее:

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

Основной автор:

Другие участники:

  • Джон Даунс | Главный инженер программного обеспечения
  • Арсен Владимирский | Главный инженер клиента, FastTrack для Azure
  • Пол Берпо | Ведущий инженер по работе с клиентами, FastTrack для независимых поставщиков программного обеспечения Azure
  • Assaf Fraenkel | Старший инженер и архитектор данных, Azure FastTrack для поставщиков программного обеспечения и стартапов

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

Следующие шаги

Рассмотрите подходы к системам хранения и управления данными в архитектурах с несколькими арендаторами.