Модель высокопроизводительных транзакционных приложений в Azure Cosmos DB для PostgreSQL
Область применения: Azure Cosmos DB для PostgreSQL (на базе расширения базы данных Citus до PostgreSQL)
Общий фильтр в качестве ключа сегмента
Чтобы выбрать ключ сегмента для транзакционного приложения с высокой пропускной способностью, выполните следующие инструкции:
- Выберите столбец, который используется для точечного поиска и присутствует в большинстве операций создания, чтения, обновления и удаления.
- Выберите столбец, который является естественным измерением в данных или центральным элементом приложения. Например:
- В рабочей нагрузке Интернета вещей
device_id
хорошо подходит на роль столбца распределения.
- В рабочей нагрузке Интернета вещей
Выбор подходящего ключа сегмента помогает оптимизировать сетевые прыжки и использовать преимущества памяти и вычислений для достижения миллисекундной задержки.
Оптимальная модель данных для приложений с высокой пропускной способностью
Ниже приведен пример модели данных для приложения Интернета вещей, который собирает данные телеметрии (данные временных рядов) с устройств. Существует две таблицы для записи данных телеметрии: devices
и events
. Могут существовать и другие таблицы, но они не рассматриваются в этом примере.
При создании приложения с высокой пропускной способностью учитывайте необходимость оптимизации.
- Распределите большие таблицы по столбцу, который является центральным элементом приложения, и столбцу, к которому приложение чаще всего делает запросы. В приведенном выше примере приложения Интернета вещей
device_id
является таким столбцом, общим для таблиц событий и устройств. - Остальные небольшие таблицы могут быть ссылочными.
- Так как в приложениях Интернета вещей есть измерение времени, секционируйте распределенные таблицы на основе времени. Вы можете использовать собственные возможности Azure Cosmos DB для временных рядов PostgreSQL для создания и обслуживания секций.
- Секционирование помогает эффективно фильтровать данные для запросов с помощью фильтров времени.
- Срок действия старых данных быстр истекает, и лучше удалять их с помощью команды DROP, а не DELETE.
- Таблица событий в нашем примере секционируется по месяцам.
- Используйте тип данных JSONB для хранения частично структурированных данных. Данные телеметрии устройства обычно не структурированы, у каждого устройства есть собственные метрики.
- В нашем примере таблица событий содержит столбец
detail
, который является JSONB.
- В нашем примере таблица событий содержит столбец
- Если приложению Интернета вещей требуются геопространственные функции, можно использовать расширение PostGIS, которое Azure Cosmos DB для PostgreSQL поддерживает изначально.
Следующие шаги
Мы закончили изучение моделирования данных для масштабируемых приложений. Следующим шагом является подключение и запрос базы данных с использованием выбранного языка программирования.