Realice un escalado instantáneo y elástico para dar cabida a cargas de trabajo de IoT diversas e impredecibles sin sacrificar el rendimiento de la ingesta o de las consultas.
Azure Cosmos DB es la base de datos multimodelo de distribución global de Microsoft. Azure Cosmos DB se creó desde el principio con la distribución global y el escalado horizontal como características fundamentales. Ofrece distribución global llave en mano en cualquier número de regiones de Azure, con un proceso transparente de escalado y replicación de los datos dondequiera que estén los usuarios. Puede escalar el rendimiento y el almacenamiento de forma elástica en todo el mundo y pagar solo por la cantidad que necesite.
Cosmos DB es idóneo para las soluciones IoT. Cosmos DB puede ingerir datos de telemetría de dispositivos a alta velocidad y atender consultas indexadas con una baja latencia y una alta disponibilidad.
Cosmos DB es una base de datos multimodelo con puntos de conexión de API compatibles con el protocolo de conexión para Cassandra, MongoDB, SQL, Gremlin, Etcd y Table, además de compatibilidad integrada con archivos de Jupyter Notebook.
Architecture
Flujo de datos
- Los eventos generados en los dispositivos IoT se envían a la capa de análisis y transformación mediante Azure IoT Hub como una secuencia de mensajes. Azure IoT Hub almacena los flujos de datos en particiones durante un período de tiempo configurable.
- Azure Databricks, que ejecuta Apache Spark Streaming, recoge los mensajes en tiempo real desde IoT Hub, procesa los datos según la lógica de negocios y los envía a la capa de servicios para su almacenamiento. Spark Streaming puede permitir el análisis en tiempo real, por ejemplo, el cálculo de medias móviles y valores mínimos y máximos en períodos de tiempo.
- Los mensajes de dispositivo se almacenan en Cosmos DB en forma de documentos JSON. Esto se considera el almacén de datos de acceso frecuente. Los distintos esquemas JSON que representan a diferentes proveedores de dispositivos pueden almacenarse en Cosmos DB o convertirse en un esquema JSON canónico.
- La capa de almacenamiento consta de:
- Azure Blob Storage: el enrutamiento de mensajes de IoT Hub puede guardar los mensajes de los dispositivos IoT sin procesar en Azure Blob Storage, lo que permite que el almacenamiento de blobs actúe como un almacén de datos de acceso poco frecuente económico a largo plazo.
- Azure SQL Database: use Azure SQL para almacenar los datos transaccionales y relacionales (por ejemplo, datos de facturación o roles de usuario).
- Azure Synapse Analytics (anteriormente, Azure SQL Data Warehouse): para el almacenamiento de datos de la solución. Se rellena mediante Azure Data Factory con datos agregados de Cosmos DB y Azure SQL.
- Los usuarios pueden usar Microsoft Power BI para analizar los datos almacenados.
- También las aplicaciones web, móviles y de otros tipos se pueden integrar en la capa de servicios. Por ejemplo, puede exponer API basadas en los datos de la capa de servicios para que terceros las usen.
- Use la fuente de cambios de Cosmos DB para ejecutar una función de Azure cada vez que se agregue o se actualice un mensaje de dispositivo en Cosmos DB.
- Algunos mensajes de dispositivo (por ejemplo, un código de error) pueden requerir que se realice una acción en el dispositivo. Con la API de servicio de Azure IoT Hub, la función de Azure puede conectarse a Azure IoT Hub y realizar una acción en el dispositivo (por ejemplo, reiniciar) mediante:
- Dispositivos gemelos
- Mensajes de la nube al dispositivo
- Métodos directos
Componentes
Esta arquitectura utiliza los siguientes componentes de Azure:
- Azure IoT Hub actúa como puerta de enlace en la nube e ingiere los datos de telemetría del dispositivo a escala. IoT Hub también admite la comunicación bidireccional con los dispositivos, lo que permite que las acciones se envíen desde la nube o Azure IoT Edge al dispositivo. Azure IoT Edge puede usarse para ejecutar aplicaciones en el perímetro, como los modelos de Machine Learning.
- Azure Databricks con Apache Spark Streaming se encuentra en la capa de transformación y análisis. Databricks usa la biblioteca azure-eventhubs-spark_2.11:2.3.6 de Maven para conectarse al punto de conexión compatible con el centro de eventos de IoT Hub. Apache Spark Streaming es un sistema de procesamiento de transmisión por secuencias escalable y tolerante a errores que admite de forma nativa tanto las cargas de trabajo de streaming como por lotes.
- Azure Cosmos DB es una base de datos de varios modelos distribuida globalmente.
- Niveles de coherencia: Cosmos DB admite cinco niveles de coherencia (fuerte, obsolescencia limitada, sesión, prefijo coherente, eventual), lo que permite encontrar un equilibrio entre la coherencia de lectura frente a la disponibilidad, la latencia y el rendimiento.
- TTL: Azure Cosmos DB permite eliminar automáticamente elementos de un contenedor después de un determinado período de tiempo. Esto permite que Cosmos DB actúe como un almacén de datos de acceso frecuente para los datos recientes, y los datos que se almacenan a largo plazo lo hacen en el almacenamiento de datos de acceso poco frecuente de Azure Blob Storage.
- Fuente de cambios: muestra la lista ordenada de los documentos que han cambiado en el orden en el que se modificaron. Puede crear pequeñas funciones reactivas de Azure Functions que se desencadenarán automáticamente en cada nuevo evento en la fuente de cambios de su contenedor de Azure Cosmos. En función del contenido del documento JSON, la función de Azure puede conectarse a Service API de Azure IoT Hub y ejecutar una acción en el dispositivo mediante dispositivos gemelos, mensajería de nube a dispositivo o métodos directos.
- Unidad de solicitud (RU): es la medida del rendimiento de Azure Cosmos DB. Las RU son unidades de proceso que se usan para rendimiento y costo. Con las RU, puede escalar y reducir verticalmente de forma dinámica al tiempo que mantiene la disponibilidad y optimiza el costo, el rendimiento y la disponibilidad.
- Creación de particiones: la clave de partición es la que determinará cómo se enrutan los datos en las distintas particiones mediante Cosmos DB y debe tener sentido en el contexto de su escenario específico. El identificador de dispositivo IoT suele ser la clave de partición "natural" de las aplicaciones IoT.
- Azure SQL Database es la base de datos relacional para datos transaccionales y otros datos que no son de IoT.
- Azure Synapse Analytics es el almacenamiento de datos y la plataforma de generación de informes, que contiene datos agregados de Azure SQL y Cosmos DB. Para el almacenamiento de datos empresariales y el análisis de macrodatos.
- Azure Synapse Link para Azure Cosmos DB permite ejecutar análisis casi en tiempo real de datos operativos en Azure Cosmos DB, sin que ello afecte al rendimiento o al costo en la carga de trabajo transaccional, mediante los dos motores de análisis disponibles en el área de trabajo de Azure Synapse: SQL sin servidor y grupos de Spark.
- Power BI es un conjunto de herramientas de análisis de negocios que sirve para analizar datos y compartir conocimientos. Power BI puede consultar un modelo semántico almacenado en Azure Analysis Services o bien consultar Azure Synapse directamente.
- Azure App Service se puede usar para compilar aplicaciones web y móviles. La aplicación de API de Azure se puede usar para exponer los datos a terceros, en función de los datos almacenados en la capa de servicios.
- Azure Functions se puede usar para traducir cargas de mensajes de IoT (por ejemplo, de binario a JSON) o acciones desencadenadoras cuando se conectan a la fuente de cambios de Cosmos DB. Azure Functions es una plataforma de proceso sin servidor basada en eventos. Compile y depure localmente sin configuración adicional, implemente y opere a escala en la nube e integre servicios mediante desencadenadores y enlaces.
Alternativas
- En la capa de transformación y análisis, podríamos usar HDInsight Storm, HDInsight Spark o Azure Stream Analytics para realizar el análisis de streaming, y Azure Functions para realizar las transformaciones de las cargas de mensajes.
- En la capa de almacenamiento del servicio, Azure Data Explorer y Time Series Insights podrían usarse para almacenar mensajes de IoT. Ambos servicios también proporcionan funcionalidades de análisis enriquecidas.
- Synapse Link es la solución de Microsoft preferida para el análisis de datos de Cosmos DB.
Consideraciones
- Cosmos DB tiene un límite de 20 GB (en el pasado era de 10 GB) para una única partición lógica. Para la mayoría de las soluciones IoT, este tamaño es suficiente. Si no lo es, se recomienda lo siguiente:
- Establecer la clave de partición en un campo artificial y asignar un valor compuesto (por ejemplo, el identificador del dispositivo además del mes y el año actuales). Así se garantiza una cardinalidad extremadamente alta de los valores.
- Apilar los datos de Cosmos DB antiguos fuera del almacenamiento de datos de acceso poco frecuente (por ejemplo, Azure Blob Storage) mediante una combinación de TTL para eliminar automáticamente los datos de Cosmos DB y la fuente de cambios, y replicar los datos en el almacenamiento de acceso poco frecuente.
Pasos siguientes
Revise los artículos siguientes sobre IoT y Cosmos DB.