Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
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 поддерживает изначально.
Следующие шаги
Мы закончили изучение моделирования данных для масштабируемых приложений. Следующим шагом является подключение и запрос базы данных с использованием выбранного языка программирования.