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