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


Определение типа приложения для Azure Cosmos DB для PostgreSQL

Область применения: Azure Cosmos DB для PostgreSQL (на базе расширения базы данных Citus до PostgreSQL)

Выполнение эффективных запросов в кластере требует правильного распределения таблиц между серверами. Рекомендуемое распределение зависит от типа приложения и применяемых в нем шаблонов запросов.

Существует широко два типа приложений, которые хорошо работают в Azure Cosmos DB для PostgreSQL. На первом этапе моделирования данных следует определить, к какому из указанных типов ближе ваше приложение.

Краткий обзор

Приложения с несколькими клиентами Приложения реального времени
Иногда десятки или сотни таблиц в схеме Небольшое число таблиц
Запросы, касающиеся одного арендатора (компании/магазина) за раз Относительно простые аналитические запросы с агрегатами
Рабочие нагрузки OLTP для обслуживания веб-клиентов Высокий объем принимаемых в основном неизменяемых данных
Рабочие нагрузки OLAP, которые обслуживают аналитические запросы для каждого арендатора Часто работают с одной большой таблицей событий

Примеры и характеристики

Многопользовательское приложение

Обычно это приложения SaaS, которые обслуживают другие компании, учетные записи или организации. Большинство приложений SaaS по своей сути реляционные. У них есть естественное измерение для распределения данных по узлам: просто сегментирование по tenant_id.

Azure Cosmos DB для PostgreSQL позволяет масштабировать базу данных до миллионов клиентов, не перепроектировав приложение. Вы можете сохранить необходимую реляционную семантику, такую как соединения, ограничения внешнего ключа, транзакции, ACID и согласованность.

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

Масштабирование мультитенантного приложения с помощью Azure Cosmos DB для PostgreSQL также требует минимальных изменений в коде приложения. У нас есть поддержка популярных фреймворков, таких как Ruby on Rails и Django.

Анализ в реальном времени

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

Таблицы в моделях данных аналитики в реальном времени обычно распределяются по столбцам, таким как user_id, host_id или device_id.

  • Примеры: панели аналитики, ориентированные на клиентов, для которых требуется время отклика менее секунды.
  • Характеристики: несколько таблиц, часто сосредоточенных вокруг большой таблицы событий устройства, сайта или пользователя и требующих большого объема приема в основном неизменяемых данных. Относительно простые (но требовательные к вычислениям) аналитические запросы, включающие несколько агрегатов и GROUP BY.

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

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