Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Многие мультитенантные решения в Azure используют систему управления реляционными базами данных с открытым исходным кодом База данных Azure для PostgreSQL. В этой статье описываются функции Базы данных Azure для PostgreSQL, которые полезны при работе с мультитенантными системами. В этой статье также содержатся ссылки на рекомендации и примеры использования Базы данных Azure для PostgreSQL в мультитенантном решении.
Режимы развертывания
Для Базы данных Azure для PostgreSQL доступны следующие режимы развертывания и подходят для использования с мультитенантными приложениями:
Гибкий сервер Базы данных Azure для PostgreSQL — это хороший выбор для большинства мультитенантных развертываний, которые не требуют высокой масштабируемости, которую предоставляет Azure Cosmos DB для PostgreSQL.
Гибкий сервер Базы данных Azure для PostgreSQL с эластичными кластерами (предварительная версия) обеспечивает горизонтальное масштабирование в управляемой службе. Он подходит для мультитенантных приложений, которые должны масштабироваться от нескольких тенантов до большого количества тенантов. Эта функция доступна в предварительной версии и не рекомендуется для использования в рабочей среде. Однако вы можете начать оценивать его для будущей реализации.
Azure Cosmos DB для PostgreSQL — это управляемая Azure служба баз данных, предназначенная для решений, требующих высокого уровня масштабирования, таких как мультитенантные приложения. Эта служба входит в семейство продуктов Azure Cosmos DB.
Функции Базы данных Azure для PostgreSQL, поддерживающие мультитенантность
При использовании Базы данных Azure для PostgreSQL для создания мультитенантного приложения следующие функции могут улучшить решение.
Примечание.
Некоторые функции доступны только в определенных режимах развертывания. В следующем руководстве описаны доступные функции.
Безопасность на уровне строк
Безопасность на уровне строк полезна для обеспечения изоляции на уровне клиента при использовании общих таблиц. В PostgreSQL вы реализуете безопасность на уровне строк, применяя политики безопасности строк к таблицам, чтобы ограничить доступ к строкам по клиенту.
Реализация безопасности на уровне строк в таблице может повлиять на производительность. Возможно, потребуется создать другие индексы в таблицах с включенной безопасностью на уровне строк, чтобы производительность не страдала. При использовании безопасности на уровне строк важно использовать методы тестирования производительности для проверки соответствия рабочей нагрузки требованиям к базовой производительности.
Дополнительные сведения о безопасности на уровне строк см. в статье "Управление доступом" для Базы данных Azure для PostgreSQL.
Контекст клиента для безопасности на уровне строк
Политики безопасности на уровне строк требуют доступа к текущему идентификатору клиента. Гибкий сервер Базы данных Azure для PostgreSQL предоставляет два расширения, которые помогают управлять контекстом клиента:
- session_variable. Предоставляет переменные с областью сеанса, которые можно использовать для хранения и получения идентификатора клиента в сеансе. Используйте эти переменные в политиках безопасности на уровне строк.
- login_hook. Выполняет функцию во время входа. Используйте это расширение для автоматического задания контекста клиента при установке подключения.
Дополнительные сведения см. в разделе "Расширения и версии расширений" для гибкого сервера Базы данных Azure для PostgreSQL.
Горизонтальное масштабирование с сегментированием
Шаблон сегментирования позволяет масштабировать рабочую нагрузку на нескольких базах данных или серверах баз данных.
Решения, требующие высокого уровня масштабирования, могут использовать Azure Cosmos DB для PostgreSQL. Этот режим развертывания обеспечивает горизонтальное сегментирование клиентов на нескольких серверах или узлах. Используйте распределенные таблицы в мультитенантных базах данных, чтобы убедиться, что все данные клиента хранятся на одном узле. Такой подход повышает производительность запросов.
Примечание.
В октябре 2022 года база данных Azure Database для PostgreSQL Гипермасштаб (Citus) была переименована в Azure Cosmos DB для PostgreSQL и переведена в семейство продуктов Azure Cosmos DB.
Дополнительные сведения см. в следующих статьях:
- Проектирование мультитенантной базы данных с помощью Azure Cosmos DB для PostgreSQL
- Распределенные таблицы
- Выбор столбцов рассылки
- Использование Citus для мультитенантных приложений
Эластичные кластеры
Эластичные кластеры — это функция гибкого сервера Базы данных Azure для PostgreSQL. Они предоставляют возможности горизонтального масштабирования в одной управляемой службе. Этот вариант развертывания использует функции распределенной таблицы для мультитенантных рабочих нагрузок, требующих возможностей горизонтального масштабирования.
В мультитенантных решениях эластичные кластеры позволяют сегментировать данные клиента по нескольким узлам. Эластичные кластеры поддерживают две модели сегментирования:
- Сегментирование на основе строк: Вы можете распределить таблицы по идентификатору арендатора, чтобы обеспечить размещение данных арендатора на определенных узлах. Этот подход может повысить производительность запросов для запросов, относящихся к клиенту, но требует, чтобы запросы включали столбец распространения.
- Сегментирование на основе схемы: вы можете изолировать клиентов с помощью отдельной схемы для каждого клиента. Этот подход идеально подходит для независимых поставщиков программного обеспечения (ISV), развертывающих приложения, которые не могут быть изменены для поддержки шардинга, основанного на строках. Сегментирование на основе схемы хорошо подходит для нагрузок, рассчитанных на от 1 до 10 000 арендаторов.
Примечание.
Эластичные кластеры доступны в предварительной версии и доступны только на гибком сервере Базы данных Azure для PostgreSQL.
Дополнительные сведения см. в следующих статьях:
- Эластичные кластеры в гибком сервере Базы данных Azure для PostgreSQL
- Модели сегментирования для эластичных кластеров
Пулинг соединений
Postgres использует модель на основе процессов для подключений. Эта модель делает неэффективным управление большим количеством бездействующих подключений. Для некоторых мультитенантных архитектур требуется множество активных подключений, которые негативно влияют на производительность сервера Postgres.
Пул подключений через PgBouncer устанавливается по умолчанию в гибком сервере Базы данных Azure для PostgreSQL.
Дополнительные сведения см. в следующих статьях:
- PgBouncer в гибкой серверной версии Azure Database для PostgreSQL
- Пул подключений в Azure Cosmos DB для PostgreSQL
- Этапы установки и настройки прокси-сервера подключения для пула соединений PgBouncer с базой данных Azure для PostgreSQL
Проверка подлинности Microsoft Entra
Гибкий сервер Базы данных Azure для PostgreSQL поддерживает проверку подлинности подключения с помощью идентификатора Microsoft Entra. Эта функция позволяет рабочим нагрузкам приложений в мультитенантной среде проходить аутентификацию в базе данных с использованием сервисного принципала или управляемого удостоверения, специфичного для арендатора. Доступ к базе данных может быть ограничен отдельным клиентом. Объединяя проверку подлинности Идентификатора Microsoft Entra с политиками безопасности строк клиента, вы можете снизить риск доступа приложения к данным другого клиента из мультитенантной базы данных.
Дополнительные сведения см. в следующих статьях:
- Аутентификация Microsoft Entra в Azure Database для PostgreSQL
- Подключение с помощью управляемой идентификации к гибкому серверу базы данных Azure для PostgreSQL
Конфиденциальные вычисления Azure (предварительная версия)
Гибкий сервер Базы данных Azure для PostgreSQL поддерживает конфиденциальные вычисления Azure с помощью доверенных сред выполнения (TEEs), которые обеспечивают защиту на основе оборудования для используемых данных. Эта функция защищает данные клиента от несанкционированного доступа операционной системы, гипервизора или других приложений.
Для мультитенантных решений, обрабатывающих конфиденциальные данные, конфиденциальные вычисления обеспечивают защиту данных на уровне оборудования во время обработки. Используйте конфиденциальные вычисления, если у клиентов есть строгие требования к защите данных или требования соответствия нормативным требованиям или если необходимо убедиться, что поставщик приложений не может получить доступ к данным клиента.
Примечание.
Конфиденциальные вычисления в настоящее время находятся в предварительной версии и требуют определенных номеров SKU виртуальных машин.
Дополнительные сведения см. в статье о конфиденциальных вычислениях Azure для Базы данных Azure для PostgreSQL (предварительная версия).
Шифрование
Данные, хранящиеся в гибком сервере Базы данных Azure для PostgreSQL, шифруются по умолчанию с помощью ключей, управляемых Корпорацией Майкрософт, но вы также можете использовать управляемые клиентом ключи (CMKs), чтобы разрешить клиентам указывать собственные ключи шифрования.
При использовании ключей CMK вы можете предоставить собственные ключи шифрования, хранящиеся в Azure Key Vault. В мультитенантных средах этот подход позволяет использовать разные ключи шифрования для разных клиентов, даже если их данные хранятся на одном сервере базы данных. Эта возможность также обеспечивает клиентам контроль над собственными ключами шифрования. Если клиент решит отключить свою учетную запись, удалите связанный ключ, убедитесь, что их данные больше не доступны.
Гибкий сервер Базы данных Azure для PostgreSQL поддерживает автоматическое обновление версий ключей для CMK. Эта функция автоматически обновляет версии ключей на новые после ротации в Key Vault и не требует ручного управления версиями ключей. В мультитенантных средах, где соответствие нормативным требованиям требует регулярного смены ключей, эта автоматизация сокращает рабочие задачи вручную и обеспечивает защиту данных без прерывания работы службы.
Дополнительные сведения см. в следующих статьях:
Соавторы
Корпорация Майкрософт поддерживает эту статью. Следующие авторы написали эту статью.
Основной автор:
- Даниэль Скотт-Райнсфорд | Архитектор решений партнеров, данные и ИИ
Другие участники:
- Джон Даунс | Главный инженер по программному обеспечению, шаблоны и практики Azure
- Арсен Владимирский | Главный инженер клиента, FastTrack для Azure
- Пол Берпо | Ведущий инженер по работе с клиентами, FastTrack для независимых поставщиков программного обеспечения Azure
- Assaf Fraenkel | Старший инженер и архитектор данных, Azure FastTrack для поставщиков программного обеспечения и стартапов
Чтобы просмотреть неопубликованные профили LinkedIn, войдите в LinkedIn.