Использование Cosmos DB в Интернете вещей

Cosmos DB
Databricks
Функции
Центр Интернета вещей
Power BI

Масштабируйте мгновенно и эластично, чтобы приспособиться к разнообразным и непредсказуемым рабочим нагрузкам Интернета вещей при сохранении продуктивности во время приема данных или выполнения запросов.Scale instantly and elastically to accommodate diverse and unpredictable IoT workloads without sacrificing ingestion or query performance.

Azure Cosmos DB — это глобально распределенная многомодельная база данных Майкрософт.Azure Cosmos DB is Microsoft’s globally distributed, multi-model database. Решение Azure Cosmos DB с самого начала разрабатывалось для глобального распределения и горизонтального масштабирования.Azure Cosmos DB was built from the ground up with global distribution and horizontal scale at its core. Эта база данных предлагает готовое глобальное распределение в любом количестве в регионах Azure путем прозрачного масштабирования и репликации данных, независимо от местонахождения пользователей.It offers turnkey global distribution across any number of Azure regions by transparently scaling and replicating your data wherever your users are. Вы можете использовать возможности гибкого масштабирования пропускной способности и хранения по всему миру, а также платить только за необходимую пропускную способность и ресурсы хранения.You can elastically scale throughput and storage worldwide, and pay only for the throughput and storage you need.

Cosmos DB идеально подходит для решений IoT.Cosmos DB is ideally suited for IoT solutions. Cosmos DB может получать данные телеметрии устройств с высокой скоростью и может обслуживать индексированные запросы с низкой задержкой и высокой доступностью.Cosmos DB can ingest device telemetry data at high rates and can serve indexed queries back with low latency and high availability.

Cosmos DB — это многомодельная база данных с конечными точками API, совместимыми с протоколом Cassandra, MongoDB, SQL, Gremlin, Etcd и таблицей вместе со встроенной поддержкой Jupyter Notebook файлов.Cosmos DB is a multi-model database with wire protocol–compatible API endpoints for Cassandra, MongoDB, SQL, Gremlin, Etcd, and Table along with built-in support for Jupyter Notebook files.

ArchitectureArchitecture

Architecture

Поток данныхData Flow

  1. События, созданные на устройствах Интернета вещей, отправляются на уровень анализа и преобразования через центр Интернета вещей Azure в виде потока сообщений.Events generated from IoT devices are sent to the analyze and transform layer through Azure IoT Hub as a stream of messages. Центр Интернета вещей Azure хранит потоки данных в секциях в течение настраиваемого периода времени.Azure IoT Hub stores streams of data in partitions for a configurable amount of time.
  2. Azure Databricks, выполнение потоковой передачи Apache Spark, получение сообщений в режиме реального времени из центра Интернета вещей, обработка данных на основе бизнес-логики и отправка данных для обслуживания уровня хранилища.Azure Databricks, running Apache Spark Streaming, picks up the messages in real time from IoT Hub, processes the data based on the business logic and sends the data to Serving layer for storage. Потоковая передача Spark может обеспечивать анализ в реальном времени, например вычисление скользящего среднего, минимального и максимального значений по периодам времени.Spark Streaming can provide real time analytics such as calculating moving averages, min and max values over time periods.
  3. Сообщения устройства хранятся в Cosmos DB как документы JSON.Device messages are stored in Cosmos DB as JSON documents. Это значение считается горячим хранилищем данных.This is considered the hot data store. Различные схемы JSON, представляющие разных поставщиков устройств, можно хранить в Cosmos DB или преобразовать в каноническую схему JSON.Different JSON schemas representing different device vendors can be stored in Cosmos DB or converted to a canonical JSON schema.
  4. Уровень хранилища состоит из следующих компонентов:The storage layer consists of:
    • Хранилище BLOB-объектов Azure. Маршрутизация сообщений в центре Интернета вещей может сохранять необработанные сообщения устройств IOT в хранилище BLOB-объектов Azure, что позволяет использовать хранилище BLOB-объектов в качестве недорогого долговременного хранилища данных.Azure Blob Storage - IoT Hub message routing can save the raw IoT device messages to Azure Blob storage, allowing blob storage to act as an inexpensive, long-term cold data store.
    • База данных SQL Azure. Используйте SQL Azure для хранения транзакционных и реляционных данных (например, данные о выставлении счетов, роли пользователей).Azure SQL Database - Utilize Azure SQL for storing your transactional and relational data (for example, billing data, user roles).
    • Azure синапсе Analytics (ранее хранилище данных SQL Azure) — для хранилища данных решения.Azure Synapse Analytics (Previously Azure SQL Data Warehouse) - For your solution data warehouse. Его заполнение с помощью фабрики данных Azure с использованием агрегированных данных из Cosmos DB и Azure SQL.Populated it using Azure Data Factory using aggregated data from Cosmos DB and Azure SQL.
  5. Microsoft Power BI может использоваться пользователями для анализа данных в хранилище.Microsoft Power BI can be used by your users to analyze warehoused data.
  6. Приложения для мобильных и веб-приложений можно создавать на уровне хранилища.Web, mobile and other applications can be built on the storage layer. Например, можно предоставить интерфейсы API на основе данных уровня хранилища для использования сторонними производителями.For example, you can expose APIs based on the storage layer data for third-party uses.
  7. Используйте Cosmos DB веб-канал изменений для выполнения функции Azure при каждом добавлении или обновлении сообщения устройства в Cosmos DB.Use Cosmos DB Change Feed to execute an Azure Function each time a device message is added or updated in Cosmos DB.
  8. Для некоторых сообщений устройства (например, кода ошибки) может потребоваться выполнить действие на устройстве.Some device messages (for example, a fault code) may require an action to be performed on the device. С помощью API службы центра Интернета вещей Azure функция Azure может подключиться к центру Интернета вещей Azure и выполнить действие на устройстве (например, перезагрузку), используя один из следующих способов.Using the Azure IoT Hub Service API, the Azure Function can connect to Azure IoT Hub and perform an action on the device (for example, reboot) using either:
    • Двойники устройствDevice Twins
    • Сообщения из облака на устройствоCloud to Device messages
    • Прямые методыDirect Methods

ComponentsComponents

В этой архитектуре используются следующие компоненты Azure:This architecture uses the following Azure components:

  • Центр Интернета вещей Azure выступает в качестве облачного шлюза и принимает данные телеметрии устройства в масштабе.Azure IoT Hub acts as the cloud gateway, ingesting device telemetry at-scale. Центр Интернета вещей также поддерживает двунаправленную связь с устройствами, что позволяет отправлять действия из облака или Azure IOT Edge на устройство.IoT Hub also supports bi-directional communication back to devices, allowing actions to be sent from the cloud or Azure IoT Edge to the device. Azure IoT Edge можно использовать для запуска приложений на границе, например моделей машинного обучения.Azure IoT Edge can be used to run applications at the edge, such as machine learning models.
  • Azure Databricks с потоковой передачей Apache Spark находится на уровне преобразования и аналитики.Azure Databricks with Apache Spark Streaming is located in the transformation and analytics layer. Для подключения к конечной точке, совместимой с концентратором событий центра Интернета вещей, в модулях eventhubs используется библиотека Azure--spark_2 .11:2.3.6 Maven.Databricks uses the azure-eventhubs-spark_2.11:2.3.6 Maven library to connect to IoT Hub's Event Hub compatible endpoint. Потоковая передача Apache Spark — это масштабируемая отказоустойчивая система обработки потоковой передачи, которая изначально поддерживает как пакетные, так и потоковые рабочие нагрузки.Apache Spark Streaming is a scalable fault-tolerant streaming processing system that natively supports both batch and streaming workloads.
  • Azure Cosmos DB является глобально распределенной базой данных с несколькими моделями.Azure Cosmos DB is a globally distributed, multi-model database.
    • Уровни согласованности — Cosmos DB поддерживает 5 уровней согласованности (строгий, ограниченный устаревания, сеанс, согласованный префикс, в конечном итоге), что позволяет обеспечить компромисс между согласованностью чтения и доступностью, задержкой и пропускной способностью.Consistency Levels - Cosmos DB supports 5 consistency levels (Strong, Bounded Staleness, Session, Consistent Prefix, Eventual) allowing you to make the tradeoff between the read consistency vs. availability, latency, and throughput.
    • TTL-Azure Cosmos DB предоставляет возможность автоматического удаления элементов из контейнера по истечении определенного периода времени.TTL - Azure Cosmos DB provides the ability to delete items automatically from a container after a certain time period. Это позволяет Cosmos DB работать в качестве горячего хранилища данных для последних данных с долгосрочными данными, хранящимися в холодном хранилище BLOB-объектов Azure.This allows Cosmos DB to act as a hot data store for recent data, with long-term data stored in Azure Blob cold storage.
    • Веб-канал изменений — выводит отсортированный список документов, которые были изменены в том порядке, в котором они были изменены.Change Feed - Outputs a sorted list of documents that were changed in the order in which they were modified. Вы можете создать небольшие функции повторной подготовки Azure, которые будут автоматически запускаться для каждого нового события в веб-канале изменений контейнера Azure Cosmos.You can create small reactive Azure Functions that will be automatically triggered on each new event in your Azure Cosmos container's change feed. В зависимости от содержимого документа JSON функция Azure может подключиться к API службы центра Интернета вещей Azure и выполнить действие на устройстве с помощью Двойникаа устройства, обмена сообщениями между облаком и устройством или прямыми методами.Depending on the contents of the JSON document, the Azure Function can connect to Azure IoT Hub Service API and execute an action on the device using Device Twin, Cloud to Device messaging, or Direct Methods.
    • Единица запроса (RU) — мера пропускной способности в Azure Cosmos DB.Request Unit (RU) - Is the measure of throughput in Azure Cosmos DB. RUs — это единицы вычислений для производительности и стоимости.RUs are compute units for both performance and cost. С помощью RUs можно динамически увеличивать и уменьшать масштаб, обеспечивая доступность, оптимизацию для затрат, производительности и доступности одновременно.With RUs, you can dynamically scale up and down while maintaining availability, optimizing for cost, performance and availability at the same time.
    • Секционирование. ключ секции определяет, как данные маршрутизируются в различных секциях, Cosmos DB и должны иметь смысл в контексте конкретного сценария.Partitioning - The partition key is what will determine how data is routed in the various partitions by Cosmos DB and needs to make sense in the context of your specific scenario. Идентификатор устройства IoT обычно является "естественным" ключом раздела для приложений IoT.The IoT Device Id is generally the “natural” partition key for IoT applications.
  • База данных SQL Azure — это реляционная база данных для транзакций и других данных, отличных от Интернета вещей.Azure SQL Database is the relational database for transactional and other non-IoT data.
  • Azure синапсе Analytics — это платформа хранилища данных и создания отчетов, содержащая агрегированные данные из Azure SQL и Cosmos DB.Azure Synapse Analytics is the data warehouse and reporting platform, containing aggregated data from Azure SQL and Cosmos DB. Для хранения корпоративных данных и анализа больших данных.For enterprise data warehousing and big data analytics.
  • Power BI — это набор средств бизнес-аналитики для анализа данных и обмена ценными сведениями.Power BI is a suite of business analytics tools to analyze data and share insights. Power BI может запрашивать семантическую модель, хранящуюся в Azure Analysis Services, или напрямую запрашивать Azure синапсе.Power BI can query a semantic model stored in Azure Analysis Services, or it can query Azure Synapse directly.
  • Службы приложений Azure можно использовать для создания мобильных и веб-приложений.Azure App Services can be used to build web and mobile applications. Приложение API Azure можно использовать для предоставления данных третьим сторонам на основе данных, хранящихся на уровне обслуживания.Azure API App can be used to expose data to third parties, based on the data stored in the Serving Layer.
  • Функции Azure можно использовать для преобразования полезных данных сообщений Интернета вещей (например, из двоичного в JSON) или запуска действий при подключении к веб-каналу Cosmos DB изменений.Azure Functions can be used to translate IoT message payloads (for example, from binary to JSON) or trigger actions when connected to Cosmos DB Change Feed. Функции Azure — это основанная на событиях бессерверная платформа вычислений.Azure Functions is an event-driven serverless compute platform. Выполняйте локальную разработку и отладку без дополнительной настройки, развертывайте решения и работайте с ними в облаке в большом масштабе, а также интегрируйте службы с помощью триггеров и привязок.Build and debug locally without additional setup, deploy and operate at scale in the cloud, and integrate services using triggers and bindings.

Альтернативные вариантыAlternatives

РекомендацииConsiderations

  • Cosmos DB имеет ограничение в 20 ГБ (в прошлом оно находилось в 10 Гбайт) для одной логической секции.Cosmos DB has a 20-GB limit (in the past it was 10GB) for a single logical partition. Для большинства решений IoT этот размер достаточно велик.For most IoT solutions, this size is sufficient. В противном случае рекомендуется выполнить одно из следующих действий.If not, we recommend either:
    • Присвоение ключу секции искусственного поля и присвоение составного значения (например, идентификатора устройства + текущего месяца и года).Setting the partition key to an artificial field and assign a composite value (for example, Device ID + Current Month and Year). Это обеспечит очень большое количество значений.This will ensure an extremely high cardinality of values.
    • Старый уровень Cosmos DB данных в холодное хранилище (например, хранилище BLOB-объектов Azure) с использованием сочетания TTL для автоматического удаления данных из Cosmos DB и перевода веб-канала для репликации данных в холодное хранилище.Tier old Cosmos DB data out to cold storage (for example, Azure Blob Storage) using a combination of TTL to automatically prune data from Cosmos DB and change feed to replicate data to cold storage.

Дальнейшие действияNext steps

Ознакомьтесь со следующими статьями в IoT и Cosmos DB.Review the following articles on IoT and Cosmos DB.