34.3. Рекомендации по развёртыванию #
Расширение pgpro_duckdb может функционировать в рамках любого экземпляра Postgres Pro Enterprise и выполнять аналитические запросы, используя различные источники данных, включая таблицы Postgres Pro, а также локальные, сетевые и S3-хранилища. В этом разделе приведены общие рекомендации по развёртыванию встроенной аналитической платформы и объясняется, как распределить OLAP-нагрузку между серверами Postgres Pro.
Во всех сценариях развёртывания большую часть OLAP-данных необходимо хранить как Parquet-файлы в локальном, сетевом или S3-хранилище. Запросы к таблицам куч Postgres Pro используются только для изначального экспортирования OLAP-данных в Parquet-файлы. Таблицы куч также можно использовать, чтобы перенести изменения из таблиц, которые ещё не были экспортированы, и после этого объединить их с OLAP-данными из Parquet-файлов. Это позволяет выполнять вычисления на основании последнего состояния таблицы.
При выборе сценария развёртывания учитывайте следующие факторы:
Влияние аналитических запросов на OLTP-нагрузку:
Аналитические запросы выполняются на ведущем сервере.
Аналитические запросы выполняются на синхронном резервном сервере.
Аналитические запросы выполняются на асинхронном резервном сервере.
Аналитические запросы выполняются на автономном сервере Postgres Pro.
За более подробной информацией обратитесь к разделу Влияние аналитических запросов на OLTP-нагрузку.
Требования к безопасности данных и распределению OLAP-нагрузки:
Несколько групп аналитиков используют один сервер Postgres Pro.
Каждая группа аналитиков использует выделенный сервер Postgres Pro.
За более подробной информацией обратитесь к разделу Требования к безопасности данных и распределению OLAP-нагрузки.
Доступные сетевые и вычислительные ресурсы, а также ресурсы хранения:
OLAP-данные хранятся локально и доступны одному экземпляру Postgres Pro Enterprise.
OLAP-данные хранятся в сетевом хранилище и доступны нескольким экземплярам Postgres Pro Enterprise.
OLAP-данные хранятся в S3-хранилище и доступны нескольким экземплярам Postgres Pro Enterprise.
За более подробной информацией обратитесь к разделу Доступные сетевые и вычислительные ресурсы, а также ресурсы хранения.
34.3.1. Влияние аналитических запросов на OLTP-нагрузку #
В этом разделе описан сценарий развёртывания с ведущим сервером, синхронным резервным сервером и асинхронным резервным сервером. OLTP-нагрузка обрабатывается ведущим сервером. В сценарии не учитывается разница между физической и логической репликацией.
Риск влияния аналитических запросов на OLTP-нагрузку зависит от того, где они выполняются:
Ведущий сервер: высокий риск, так как нагрузки OLTP и OLAP конкурируют за вычислительные ресурсы в одном кластере Postgres Pro. В этом случае неправильный аналитический запрос может помешать обработке OLTP-нагрузки.
Синхронный резервный сервер: риск снижен, но не отсутствует, так как неправильный аналитический запрос всё ещё может привести к сбою синхронного резервного сервера и при определённой серверной конфигурации оказать влияние на ведущий сервер.
Асинхронный резервный сервер: риск минимален. В этом случае даже если неправильный аналитический запрос приводит к сбою асинхронного резервного сервера, ведущий сервер продолжает обрабатывать OLTP-нагрузку.
Рекомендации по обработке OLAP-нагрузки:
Используйте ведущий сервер и синхронные резервные серверы для обработки стабильной и проверенной OLAP-нагрузки в соответствии с доступными вычислительными ресурсами. При этом избегайте предоставления прямого доступа группам аналитиков, а также выполнения незапланированных (ad-hoc) аналитических запросов, непроверенных аналитических запросов, а также аналитических запросов с непредсказуемым использованием ресурсов.
Используйте асинхронные резервные серверы для обработки и тестирования большей части OLAP-нагрузки перед обработкой на ведущем сервере или синхронном резервном сервере. Для интерактивного анализа и выполнения незапланированных аналитических запросов можно использовать каскадные резервные серверы, которые не оказывают влияния на ведущий сервер.
Используйте автономные серверы Postgres Pro, работающие с общим сетевым или S3-хранилищем, для создания, тестирования и выполнения незапланированных аналитических запросов с непредсказуемым временем выполнения.
34.3.2. Требования к безопасности данных и распределению OLAP-нагрузки #
В настоящее время расширение pgpro_duckdb использует базовую модель доступа, которая управляется ролью, указанной в параметре конфигурации duckdb.postgres_role. Члены этой роли имеют полный доступ к функциям pgpro_duckdb. Чтобы разграничить доступ к данным между несколькими группами аналитиков, используйте внешние инструменты. Например, вы можете настроить доступ на уровне приложения, которое проверяет права доступа конкретного пользователя, после чего создаёт и отправляет аналитический запрос расширению pgpro_duckdb.
Чтобы позволить всем аналитикам выполнять аналитические запросы и при этом назначить им разные права доступа, используйте выделенные серверы Postgres Pro для каждой группы аналитиков. В этом случае права доступа к необходимым данным, например данным S3-хранилища, можно настроить на каждом сервере с необходимой степенью детализации.
34.3.3. Доступные сетевые и вычислительные ресурсы, а также ресурсы хранения #
При развёртывании встроенной аналитической платформы распределяйте OLAP-нагрузку между узлами сети таким образом, чтобы получившаяся в результате топология соответствовала требованиям к производительности.
Рекомендации по построению топологии:
Определите основные OLAP-процессы и приложения, а также ограничения по времени выполнения стандартных операций.
Подготовьте диаграмму перемещения данных между хранилищами.
Убедитесь, что сеть и хранилища обеспечивают достаточную пропускную способность для выполнения стандартных операций с рекомендуемым запасом в 30%.
Выберите узлы сети, которые будут использоваться для обработки большей части OLAP-нагрузки. Убедитесь, что эти узлы имеют достаточно вычислительных ресурсов для выполнения стандартных операций в рамках требуемых ограничений по времени с рекомендуемым запасом в 30%.
Убедитесь в отсутствии узких мест. При их наличии рассмотрите выделение дополнительных вычислительных ресурсов или изменение топологии.