Многотенантность и База данных 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 для PostgreSQL Гипермасштабирование (Citus) было перебрано в качестве Azure Cosmos DB для PostgreSQL и перемещено в семейство продуктов Cosmos DB.
Подробнее:
- Проектирование мультитенантной базы данных с помощью Azure Cosmos DB для PostgreSQL
- Распределенные таблицы
- Выбор столбца распространения в распределенной таблице.
- Руководство по использованию Citus для мультитенантных приложений.
Организация пулов соединений
Postgres использует модель на основе процессов для подключений. Эта модель делает ее неэффективной для поддержания большого количества бездействующего подключения. Для некоторых мультитенантных архитектур требуется большое количество активных подключений, что негативно влияет на производительность сервера Postgres.
Пул подключений через PgBouncer устанавливается по умолчанию в База данных Azure для PostgreSQL — гибкий сервер.
Подробнее:
- PgBouncer в База данных Azure для PostgreSQL — гибкий сервер
- Пул подключений в Azure Cosmos DB для PostgreSQL
- Инструкции по установке и настройке прокси-сервера для включения соединений в пул PgBouncer с Базой данных Azure для PostgreSQL
Проверка подлинности Microsoft Entra
База данных Azure для PostgreSQL — гибкий сервер поддерживает проверку подлинности подключений с помощью идентификатора Microsoft Entra. Эта функция позволяет рабочим нагрузкам приложений в мультитенантной среде проходить проверку подлинности в базе данных с помощью субъекта-службы или управляемого удостоверения клиента, что означает, что доступ к базе данных может быть ограничен отдельным клиентом. Объединяя проверку подлинности Идентификатора Microsoft Entra с политиками безопасности строк клиента, вы можете снизить риск доступа приложения к данным другого клиента из мультитенантной базы данных. Подробнее:
- Проверка подлинности Microsoft Entra с помощью База данных Azure для PostgreSQL — гибкий сервер
- Подключение с помощью управляемого удостоверения к базе данных Azure для PostgreSQL - гибкий сервер
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Автор субъекта:
- Даниэль Скотт-Райнсфорд | Стратег технологий партнеров
Другие участники:
- Джон Даунс | Главный инженер программного обеспечения
- Арсен Владимирский | Главный инженер клиента, FastTrack для Azure
- Пол Берпо | Главный инженер клиентов, FastTrack для поставщиков программного обеспечения Azure
- Assaf Fraenkel | Старший инженер и архитектор данных, Azure FastTrack для поставщиков программного обеспечения и стартапов
Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.
Следующие шаги
Просмотрите подходы к хранилищу и данным для мультитенантности.