Análisis de datos operativos en MongoDB Atlas mediante Azure Synapse Analytics

Azure App Service
Azure Data Lake Storage
Azure Event Grid
Azure Synapse Analytics
Power BI

En este artículo se presenta una solución para derivar información de los datos operativos de MongoDB Atlas. La solución conecta MongoDB Atlas a Azure Synapse Analytics. La conexión permite transferir datos en lotes y en tiempo real. El enfoque en tiempo real mantiene los grupos de SQL dedicados de Azure Synapse Analytics sincronizados con los cambios en el origen de datos de MongoDB Atlas.

Apache®, Apache Spark y el logotipo de la llama son marcas registradas o marcas comerciales de Apache Software Foundation en Estados Unidos y otros países. El uso de estas marcas no implica la aprobación de Apache Software Foundation.

El logotipo de MongoDB Atlas es una marca comercial de MongoDB. El uso de esta marca no implica ninguna aprobación.

Architecture

En el diagrama siguiente se muestra cómo sincronizar datos de MongoDB Atlas con Azure Synapse Analytics en tiempo real.

Diagrama de arquitectura que muestra el flujo de datos de MongoDB Atlas a las aplicaciones de análisis. Las fases provisionales incluyen una API de flujo de cambios y Azure Synapse Analytics.

Descargue un archivo de PowerPoint de todos los diagramas de este artículo.

Flujo de datos

La solución presenta dos opciones para desencadenar las canalizaciones que capturan los cambios en tiempo real en el almacén de datos operativos (ODS) de MongoDB Atlas y sincronizan los datos. En los pasos siguientes se describen ambas opciones.

  1. Los cambios se producen en los datos operativos y transaccionales que se almacenan en MongoDB Atlas. Las API de flujo de cambios de Mongo Atlas notifican a las aplicaciones suscritas los cambios en tiempo real.

  2. Una aplicación web de Azure App Service personalizada se suscribe al flujo de cambios de MongoDB. Existen dos versiones de la aplicación web, Event Grid y almacenamiento, una para cada versión de la solución. Ambas versiones de la aplicación escuchan los cambios que causa una operación de inserción, actualización o eliminación en Atlas. Cuando las aplicaciones detectan un cambio, escriben el documento que ha cambiado como un blob en Azure Data Lake Storage, que se integra con Azure Synapse Analytics. La versión de Event Grid de la aplicación también crea un nuevo evento en Azure Event Grid cuando detecta un cambio en Atlas.

  3. Ambas versiones de la solución desencadenan la canalización de Azure Synapse Analytics:

    1. En la versión de Event Grid, se configura un desencadenador personalizado basado en eventos en Azure Synapse Analytics. Ese desencadenador se suscribe al tema de Event Grid en el que se publica la aplicación web. El nuevo evento de ese tema activa el desencadenador de Azure Synapse Analytics, lo que hace que se ejecute la canalización de datos de Azure Synapse Analytics.
    2. En la versión de almacenamiento, se configura un desencadenador basado en almacenamiento en Azure Synapse Analytics. Cuando se detecta el nuevo blob en la carpeta integrada de Data Lake Storage, ese desencadenador se activa, lo que hace que se ejecute la canalización de datos de Azure Synapse Analytics.
  4. En una actividad de copia, la canalización de Azure Synapse Analytics copia el documento completo que se ha cambiado del blob de Data Lake Storage al grupo de SQL dedicado. Esta operación está configurada para realizar una operación upsert en una columna que se haya seleccionado. Si la columna existe en el grupo de SQL dedicado, la operación upsert actualiza la columna. Si la columna no existe, la operación upsert inserta la columna.

  5. El grupo de SQL dedicado es la característica de almacenamiento de datos empresariales que hospeda la tabla que actualiza la canalización de datos. La actividad de copia de datos de la canalización mantiene esa tabla sincronizada con su correspondiente colección Atlas.

  6. Los informes y visualizaciones de Power BI muestran análisis actuales y casi en tiempo real. Los datos también se alimentan de aplicaciones de bajada. MongoDB Atlas funciona como receptor mediante un conector receptor de canalización de datos de Azure Synapse Analytics. A continuación, Atlas proporciona aplicaciones personalizadas con los datos en tiempo real.

Componentes

  • MongoDB Atlas es una oferta de base de datos como servicio de MongoDB. Esta plataforma de datos de aplicaciones multinube ofrece procesamiento de transacciones, búsqueda basada en relevancia, análisis en tiempo real y sincronización de datos móviles a la nube. MongoDB también ofrece una solución local, MongoDB Enterprise Advanced.

  • Los flujos de cambios de MongoDB Atlas proporcionan a las aplicaciones acceso a cambios de datos en tiempo real para que las aplicaciones puedan reaccionar inmediatamente a dichos cambios. Los flujos de cambio proporcionan una manera para que las aplicaciones reciban notificaciones sobre los cambios en una colección, base de datos o clúster de implementación determinados.

  • App Service y sus características de Web Apps, Mobile Apps y API Apps proporcionan un marco para compilar, implementar y escalar aplicaciones web, aplicaciones móviles y API de REST. En esta solución se usan aplicaciones web que se programan en ASP.NET. El código está disponible en GitHub:

  • Azure Synapse Analytics es el servicio principal que se usa en esta solución para la ingesta, procesamiento y análisis de datos.

  • Data Lake Storage proporciona funcionalidades para el almacenamiento y procesamiento de datos. Como lago de datos que se basa en Blob Storage, Data Lake Storage proporciona una solución escalable para administrar grandes volúmenes de datos de varios orígenes heterogéneos.

  • Las canalizaciones de Azure Synapse Analytics se usan para realizar operaciones de extracción, transformación y carga (ETL) en los datos. Azure Data Factory proporciona un servicio similar, pero puede crear canalizaciones de Azure Synapse Analytics en Synapse Studio. Puede usar varias actividades en la misma canalización. También puede crear puntos de conexión de dependencia para conectar una actividad con otra en la canalización.

  • Los flujos de datos de asignación son transformaciones de datos que se diseñan visualmente en Azure Synapse Analytics. Los flujos de datos proporcionan una manera para que los ingenieros de datos desarrollen una lógica de transformación de datos sin necesidad de escribir código. Puede ejecutar los flujos de datos resultantes como actividades en las canalizaciones de Azure Synapse Analytics que usan clústeres de Apache Spark con escalabilidad horizontal. Puede poner en funcionamiento las actividades de flujo de datos mediante las funcionalidades existentes de programación, control, flujo y supervisión de Azure Synapse Analytics.

  • El grupo de SQL dedicado proporciona funcionalidades de almacenamiento de datos para los datos después de procesarlos y normalizarlos. Esta característica de Azure Synapse Analytics anteriormente se conocía como SQL Data Warehouse. Los grupos de SQL dedicados hacen que los datos refinados estén disponibles para los usuarios finales y las aplicaciones.

  • Los desencadenadores de Azure Synapse Analytics proporcionan una manera automatizada de ejecutar canalizaciones. Puede programar estos desencadenadores. También puede configurar desencadenadores basados en eventos, como desencadenadores de eventos de almacenamiento y desencadenadores de eventos personalizados. La solución usa ambos tipos de desencadenadores basados en eventos.

  • Event Grid es un agente de eventos sin servidor altamente escalable. Puede usar Event Grid para entregar eventos a destinos de los suscriptores.

  • Power BI es una colección de servicios de software y aplicaciones que muestran información de análisis. En esta solución, Power BI proporciona una manera para usar los datos procesados a fin de realizar análisis avanzados y derivar información.

Detalles del escenario

MongoDB Atlas actúa como capa de datos operativos de varias aplicaciones empresariales. Esta base de datos en la nube almacena datos de aplicaciones internas, servicios orientados al cliente y API de terceros de varios canales. Mediante el uso de canalizaciones de Azure Synapse Analytics, puede combinar los datos de MongoDB Atlas con datos relacionales de otras aplicaciones tradicionales y datos no estructurados de orígenes como los registros.

Integración de Batch

En Azure Synapse Analytics, puede integrar sin problemas instancias locales de MongoDB y MongoDB Atlas como recurso de origen o receptor. MongoDB es la única base de datos NoSQL que tiene conectores de origen y receptor para Azure Synapse Analytics y Data Factory.

Con los datos históricos, puede recuperar todos los datos a la vez. También puede recuperar los datos de manera incremental durante períodos específicos mediante el uso de un filtro en el modo por lotes. A continuación, puede usar grupos de SQL y grupos de Apache Spark en Azure Synapse Analytics para transformar y analizar los datos. Si necesita almacenar los resultados de análisis o consulta en un almacén de datos de análisis, puede usar el recurso receptor en Azure Synapse Analytics.

Diagrama de arquitectura que muestra los conectores de origen y receptores que conectan los datos de los consumidores a Azure Synapse Analytics y el almacenamiento de datos de MongoDB.

Para obtener más información sobre cómo configurar los conectores, consulte estos recursos:

El conector de origen proporciona una manera práctica para ejecutar Azure Synapse Analytics sobre los datos operativos que se almacenan en MongoDB o Atlas. Después de usar el conector de origen para recuperar datos de Atlas, puede cargarlos en el almacenamiento de blobs de Data Lake Storage como un archivo Parquet, Avro, JSON, de texto o CSV. A continuación, puede transformar estos archivos o combinarlos con otros de otros orígenes de datos en entornos de nube híbrida, multinube o varias bases de datos.

Puede usar los datos que recupera de MongoDB Enterprise Advanced o MongoDB Atlas en los escenarios siguientes:

  • Para recuperar todos los datos de una fecha determinada de MongoDB en un lote. A continuación, cargue los datos en Data Lake Storage. A partir de ahí, se usa un grupo de SQL sin servidor o un grupo de Spark para el análisis, o bien se copian los datos en un grupo de SQL dedicado. Después de recuperar este lote, puede aplicar cambios a los datos a medida que se produzcan, tal y como se describe en el flujo de datos. Como parte de esta solución, está disponible una canalización de ejemplo de storage-CopyPipeline_mdb_synapse_ded_pool_RTS. Puede exportar la canalización desde GitHub para la carga única.

  • Para generar información con una frecuencia determinada, por ejemplo, para un informe diario o por hora. En este escenario, programa una canalización para recuperar datos de manera periódica antes de ejecutar las canalizaciones de análisis. Puede usar una consulta de MongoDB para aplicar criterios de filtro y recuperar solo un determinado subconjunto de datos.

Sincronización en tiempo real

Las empresas necesitan información que se base en datos en tiempo real, no en datos obsoletos. Un retraso de unas horas en la entrega de información puede retrasar el proceso de toma de decisiones y suponer una pérdida de ventaja competitiva. Esta solución impulsa la toma de decisiones críticas mediante la propagación de cambios que se producen en la base de datos transaccional de MongoDB al grupo de SQL dedicado en tiempo real.

Esta solución consta de tres partes, que se describen en las siguientes secciones.

Captura de los cambios de MongoDB Atlas

El flujo de cambios de MongoDB captura los cambios que se producen en la base de datos. Las API de flujo de cambios hacen que la información sobre los cambios esté disponible para las aplicaciones web de App Service que se suscriben al flujo de cambios. Estas aplicaciones escriben los cambios en el almacenamiento de blobs de Data Lake Storage.

Desencadenar una canalización para propagar los cambios a Azure Synapse Analytics

La solución presenta dos opciones para desencadenar una canalización de Azure Synapse Analytics después de escribir el blob en Data Lake Storage:

  • Un desencadenador basado en almacenamiento. Pude optar por esta opción si necesita análisis en tiempo real, ya que la canalización se desencadena en cuanto se escribe el blob con el cambio. Pero es posible que esta opción no sea el enfoque preferible cuando se tiene un gran volumen de cambios de datos. Azure Synapse Analytics limita el número de canalizaciones que se pueden ejecutar simultáneamente. Cuando tiene una gran cantidad de cambios de datos, puede alcanzar ese límite.

  • Desencadenador personalizado basado en eventos. Este tipo de desencadenador tiene la ventaja de que está fuera de Azure Synapse Analytics, por lo que resulta más fácil controlarlo. La versión de Event Grid de la aplicación web escribe el documento de datos que se ha modificado en el almacenamiento de blobs. Al mismo tiempo, la aplicación crea un nuevo evento de Event Grid. Los datos del evento contienen el nombre de archivo del blob. La canalización que desencadena el evento recibe el nombre de archivo como parámetro y, a continuación, usa el archivo para actualizar el grupo de SQL dedicado.

Propagación de los cambios en un grupo de SQL dedicado

Una canalización de Azure Synapse Analytics propaga los cambios a un grupo de SQL dedicado. La solución proporciona una canalización de CopyPipeline_mdb_synapse_ded_pool_RTS en GitHub, que copia el cambio en el blob de Data Lake Storage al grupo de SQL dedicado. Esta canalización se desencadena mediante el desencadenador de almacenamiento o de Event Grid.

Posibles casos de uso

Los casos de uso de esta solución abarcan muchos sectores y áreas:

  • Minoristas

    • Creación de inteligencia en la agrupación y promoción de productos
    • Optimización del almacenamiento en frío que usa el streaming de IoT
    • Optimización de la reposición del inventario
    • Adición de valor a la distribución omnicanal
  • Banca y finanzas

    • Personalización de servicios financieros de clientes
    • Detección de transacciones potencialmente fraudulentas
  • Telecomunicaciones

    • Optimización de redes de próxima generación
    • Maximización del valor de las redes perimetrales
  • Automoción

    • Optimización de la parametrización de vehículos conectados
    • Detección de anomalías en la comunicación de IoT en vehículos conectados
  • Fabricación

    • Proporcionar mantenimiento predictivo para maquinaria
    • Optimización de la administración de almacenamiento e inventario

Estos son dos ejemplos específicos:

  • Tal y come se ha descrito anteriormente en este artículo en la integración de Batch, puede recuperar datos de MongoDB en un lote y, a continuación, actualizarlos a medida que se produzcan cambios. Esta funcionalidad hace posible la información en tiempo real para la toma de decisiones y conclusiones just-in-time. Esta funcionalidad resulta útil para el análisis de información confidencial y crítica, como transacciones financieras y datos de detección de fraudes.
  • Como también se describe en la integración de Batch , puede programar una canalización para recuperar datos de MongoDB de manera periódica. Esta funcionalidad resulta útil en escenarios minoristas, como la actualización de niveles de inventario con datos de ventas diarias. En estos casos, los informes de análisis y los paneles no tienen importancia crítica, y el análisis en tiempo real no es conveniente.

En las secciones siguientes se examinan con más detalle dos casos de uso del sector minorista.

Agrupación de productos

Para promover la venta de un producto, puede venderlo como parte de una agrupación junto con otros que estén relacionados. El objetivo consiste en usar los datos del patrón de ventas a fin de desarrollar estrategias para agrupar un producto en paquetes.

Existen dos orígenes de datos:

  • Los datos del catálogo de productos de MongoDB
  • Datos de ventas de Azure SQL

Ambos conjuntos de datos se migran a un grupo de SQL dedicado de Azure Synapse Analytics mediante una canalización de Azure Synapse Analytics. Los desencadenadores y las capturas de datos modificados se usan para lograr una sincronización de datos casi en tiempo real sobre los datos migrados de una sola vez.

Los siguientes gráficos de Power BI muestran la afinidad entre los productos y los patrones de ventas. La afinidad de la pluma y el relleno basado en pluma es alta. Los datos de ventas muestran que la pluma tiene un gran volumen de ventas en el área especificada.

Diagrama que muestra las fases de canalización y los gráficos que muestran las ventas de plumas por producto, año, región y afinidad. En 2022 las ventas de plumas son más altas en el sur.

El análisis hace dos sugerencias para mejorar las ventas:

  • Empaquetar la pluma y el relleno basado en pluma
  • Promoción de la agrupación en determinadas áreas

Promoción de productos

Para promover la venta de un producto, puede recomendárselo a los clientes que estén interesados en los productos relacionados. El objetivo consiste en usar datos de ventas y patrones de compra de clientes a fin de desarrollar estrategias para recomendar un producto a los clientes.

Mediante Azure Synapse Analytics, puede desarrollar modelos de IA y aprendizaje automático para determinar qué productos se recomiendan a los clientes.

En los diagramas siguientes se muestra el uso de varios tipos de datos a fin de crear un modelo para determinar recomendaciones de productos alternativas. Los datos incluyen patrones de compra de clientes, ganancias, afinidades de productos, volumen de ventas de los productos y parámetros del catálogo de productos.

Diagramas que muestran las fases de canalización y un flujo de trabajo para un modelo de IA. Los campos de datos incluyen el id. de cliente, el precio, las ventas y las ganancias.

Si el modelo logra una alta precisión, proporciona una lista de productos que puede recomendar al cliente.

Consideraciones

Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.

Seguridad

La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.

Para obtener información detallada sobre los requisitos de seguridad y los controles de los componentes de Azure de la solución, consulte la sección de seguridad de la documentación de cada producto.

Optimización de costos

La optimización de costos trata de buscar formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.

  • Para calcular el costo de los productos y las configuraciones de Azure, use la calculadora de precios de Azure.
  • Azure ayuda a evitar costos innecesarios mediante la identificación de la cantidad de recursos correcta para sus necesidades, el análisis de los gastos a lo largo del tiempo y el escalado para satisfacer las necesidades empresariales sin gastos excesivos. Por ejemplo, puede pausar los grupos de SQL dedicados cuando no se espera ninguna carga. Puede reanudarlos más adelante.
  • Puede reemplazar App Service por Azure Functions. Al orquestar las funciones en una canalización de Azure Synapse Analytics, puede reducir los costos.
  • Para reducir el costo del clúster de Spark, seleccione el tipo de proceso de flujo de datos adecuado. Existen opciones generales y optimizadas para memoria disponibles. Seleccione también los valores adecuados de recuento de núcleos y período de vida (TTL).
  • Para obtener más información sobre la administración de los costes de los componentes clave de la solución, consulte estos recursos:

Eficiencia del rendimiento

La eficiencia del rendimiento es la capacidad que tiene la carga de trabajo para escalar con el fin de satisfacer las demandas que le hacen los usuarios de manera eficiente. Para obtener más información, vea Resumen del pilar de eficiencia del rendimiento.

Cuando existe un gran volumen de cambios, la ejecución de miles de canalizaciones en Azure Synapse Analytics para cada cambio de la colección puede dar lugar a un trabajo pendiente de canalizaciones en cola. Para mejorar el rendimiento en este escenario, tenga en cuenta los siguientes enfoques:

  • Puede usar el código de App Service basado en almacenamiento, que escribe los documentos JSON con los cambios en Data Lake Storage. No vincule el desencadenador basado en almacenamiento con la canalización. En lugar de ello, puede usar un desencadenador programado en un intervalo corto, como cada dos o cinco minutos. Cuando se ejecuta el desencadenador programado, toma todos los archivos del directorio de Data Lake Storage especificado y actualiza el grupo de SQL dedicado para cada uno de ellos.
  • Modifique el código de App Service de Event Grid. Prográmelo para agregar un microlote de alrededor de 100 cambios al almacenamiento de blobs antes de agregar el nuevo tema al evento con los metadatos que incluyen el nombre de archivo. Con esta modificación, solo se desencadena una canalización para un blob con los 100 cambios. Puede ajustar el tamaño del microlote para que se adapte a su escenario. Puede usar microlotes pequeños con una alta frecuencia para proporcionar actualizaciones casi en tiempo real. O bien, puede usar microlotes más grandes con una frecuencia menor para las actualizaciones que se retrasen y una sobrecargas reducidas.

Para obtener más información sobre la mejora del rendimiento y la escalabilidad de la actividad de copia de la canalización de Azure Synapse Analytics, consulte Guía de rendimiento y escalabilidad de la actividad de copia.

Implementación de este escenario

Para obtener información sobre cómo implementar esta solución, consulte Solución de sincronización en tiempo real para la integración de Atlas de MongoDB con Synapse.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Creadores de entidad de seguridad:

Otros colaboradores:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes

Para obtener más información sobre la solución, póngase en contacto con partners@mongodb.com.

Para obtener información sobre MongoDB, consulte estos recursos:

Para obtener información sobre los componentes de la solución de Azure, consulte estos recursos: