Muchas empresas usan MongoDB como un almacén de datos operativo y desean enriquecer el valor de esos datos a través de análisis complejos. Para ello, los datos de MongoDB deben agregarse y pasarse a un almacén de datos en el que se puedan realizar análisis. En esta arquitectura de referencia, se describe cómo puedes configurar esta canalización de integración en Google Cloud.
En esta arquitectura, usarás plantillas de Dataflow para integrar datos de MongoDB Atlas en BigQuery. Estas plantillas de Dataflow transforman el formato del documento que usa MongoDB en el formato de columnas que usa BigQuery. Estas plantillas se basan en las bibliotecas de Apache Beam para realizar esta transformación. Por lo tanto, en este documento, se da por sentado que conoces MongoDB y tienes algunos conocimientos de Dataflow y Apache Beam.
Arquitectura
En el siguiente diagrama, se muestra la arquitectura de referencia que debes usar cuando implementas esta solución. En este diagrama, se muestra cómo varias plantillas de Dataflow pasan y transforman datos de MongoDB en un almacén de datos de BigQuery.
Como se muestra en el diagrama, esta arquitectura se basa en las siguientes tres plantillas:
- Plantilla de MongoDB a BigQuery. Esta plantilla de Dataflow es una canalización por lotes que lee documentos de MongoDB y los escribe en BigQuery, donde se pueden analizar esos datos. Si quisieras, podrías extender esta plantilla a través de la escritura de una función definida por el usuario (UDF) en JavaScript. Para ver una UDF de muestra, consulta Eficacia operativa.
- Plantilla de BigQuery a MongoDB. Esta plantilla de Dataflow es una plantilla por lotes que se puede usar para leer los datos analizados de BigQuery y escribirlos en MongoDB.
Plantilla de MongoDB a BigQuery (CDC). Esta plantilla de Dataflow es una canalización de transmisión que funciona con flujos de cambios de MongoDB. Debes crear una aplicación de publicador que envíe cambios del flujo de cambios de MongoDB a Pub/Sub. Luego, la canalización lee los registros JSON de Pub/Sub y los escribe en BigQuery. Al igual que la plantilla de MongoDB a BigQuery, puedes extender esta plantilla a través de la escritura de una UDF.
Si usas la plantilla de MongoDB a BigQuery (CDC), puedes asegurarte de que los cambios que se produzcan en la colección de MongoDB se publiquen en Pub/Sub. Para configurar un flujo de cambios de MongoDB, sigue las instrucciones en Flujos de cambios en la documentación de MongoDB.
Casos de uso
El uso de BigQuery para analizar datos de MongoDB Atlas puede ser útil en una variedad de sectores, que incluyen servicios financieros, venta minorista, fabricación y logística, y aplicaciones de videojuegos.
Servicios financieros
Google Cloud y MongoDB Atlas ofrecen soluciones para manejar las necesidades de datos complejas y en constante cambio de las instituciones financieras actuales. Si usas BigQuery para analizar tus datos financieros de MongoDB Atlas, puedes desarrollar soluciones para las siguientes tareas:
- Detección de fraudes en tiempo real: Las instituciones financieras quieren detectar y evitar transacciones fraudulentas en tiempo real. Con el uso del aprendizaje automático (AA) y el análisis de los datos de comportamiento de los clientes en BigQuery, puedes identificar patrones que indican fraudes.
- Experiencias personalizadas para los clientes. Las instituciones financieras también están interesadas en ofrecer experiencias personalizadas para los clientes. Si almacenas y analizas datos de clientes en BigQuery, puedes crear soluciones que generen recomendaciones personalizadas, ofrecer productos y servicios personalizados, y proporcionar una mejor asistencia al cliente.
- Administración de riesgos. Las instituciones financieras siempre desean procesos que ayuden a identificar y mitigar los riesgos. Con el análisis de datos de una variedad de fuentes en BigQuery, puedes ayudar a identificar patrones y tendencias que indiquen posibles riesgos.
Venta minorista
El uso inteligente de los datos de clientes con la capacidad de combinarlos con datos de productos y la ejecución de interacciones personalizadas en tiempo real definen el comercio electrónico futuro. Para satisfacer las necesidades de los clientes, los minoristas deben tomar decisiones basadas en datos a través de la recopilación y el análisis de datos. BigQuery y MongoDB Atlas te permiten usar los datos de clientes para impulsar la innovación en la personalización, como en las siguientes áreas:
- Comercio de varios canales Usa MongoDB para almacenar y administrar datos de una variedad de fuentes, incluidas tiendas en línea y sin conexión, apps para dispositivos móviles y redes sociales. Este almacenamiento y administración de datos en conjunto con los análisis de BigQuery hacen que sea ideal para los minoristas de varios canales que necesitan proporcionar una experiencia sin problemas a sus clientes en todos los canales.
- Estadísticas en tiempo real. Cuando usas BigQuery, puedes obtener estadísticas en tiempo real sobre tus clientes, inventarios y rendimiento de ventas. Estas estadísticas te ayudan a tomar mejores decisiones sobre los precios, la promoción y la colocación de producto.
- Recomendaciones personalizadas. Los motores de recomendaciones personalizadas ayudan a los minoristas a aumentar las ventas y la satisfacción del cliente. Si almacenas y analizas datos de clientes, puedes identificar patrones y tendencias que se pueden usar para recomendar productos que podrían ser de interés para cada cliente individual.
Fabricación y logística
El análisis de datos de MongoDB en BigQuery también ofrece los siguientes beneficios a la industria de fabricación y logística:
- Visibilidad en tiempo. Puedes obtener visibilidad en tiempo real de tus operaciones. Esto te ayudará a tomar mejores decisiones sobre la producción, el inventario y el envío.
- Optimización de la cadena de suministro. Gestionar la incertidumbre de la cadena de suministro y analizar datos de diferentes fuentes te ayuda a reducir costos y mejorar la eficiencia.
Videojuegos
El análisis en BigQuery también permite a los desarrolladores y publicadores de juegos crear juegos de vanguardia y ofrecer experiencias de juego inigualables, como las siguientes:
- Juego en tiempo real: Puedes usar el análisis para crear experiencias de juego en tiempo real para generar tablas de clasificación, sistemas de creación de partidas y funciones multijugador.
- Experiencias personalizadas para los jugadores. Puedes usar la inteligencia artificial (IA) y el AA para ofrecer recomendaciones orientadas y personalizar la experiencia del juego para los jugadores.
- Estadísticas de juegos. Puedes analizar datos de juegos para identificar tendencias y patrones que te ayudarán a mejorar el diseño del juego, el juego y tus decisiones empresariales.
Alternativas de diseño
Tienes dos alternativas al uso de plantillas de Dataflow como una canalización de integración de MongoDB a BigQuery: Pub/Sub con una suscripción a BigQuery o Confluent Cloud.
Pub/Sub con una suscripción a BigQuery
Como alternativa al uso de plantillas de Dataflow, puedes usar Pub/Sub para configurar una canalización de integración entre tu clúster de MongoDB y BigQuery. Para usar Pub/Sub en lugar de Dataflow, sigue estos pasos:
- Configurar un esquema y un tema de Pub/Sub para transferir los mensajes de tu flujo de cambios de MongoDB
Crea una suscripción a BigQuery en Pub/Sub que escriba mensajes en una tabla de BigQuery existente a medida que se reciben. Si no usas una suscripción a BigQuery, necesitarás una suscripción de extracción o de envío y un suscriptor (como Dataflow) que lea mensajes y los escriba en BigQuery.
Configura un flujo de cambios que escuche los documentos nuevos insertados en MongoDB y coincida con el esquema que se usa para Pub/Sub.
Si deseas obtener detalles sobre esta alternativa, consulta Crea una canalización de datos para el flujo de cambios de MongoDB con la suscripción a BigQuery de Pub/Sub.
Confluent Cloud
Si no deseas crear tu propia aplicación de publicador para supervisar el flujo de cambios de MongoDB, puedes usar Confluent Cloud en su lugar. En este enfoque, usas Confluent para configurar un conector de origen de MongoDB Atlas para leer el flujo de datos de MongoDB. Luego, configura un conector de receptor de BigQuery para que envíe los datos del clúster de Confluent a BigQuery.
Para obtener detalles sobre esta alternativa, consulta Transmite datos de MongoDB a BigQuery mediante conectores de Confluent.
Consideraciones del diseño
Cuando crees una solución de MongoDB Atlas a BigQuery, debes tener en cuenta las siguientes áreas.
Seguridad, privacidad y cumplimiento
Cuando ejecutas la canalización de integración, Dataflow usa las siguientes dos cuentas de servicio para administrar la seguridad y los permisos:
- La cuenta de servicio de Dataflow. El servicio de Dataflow usa su cuenta de servicio como parte de la solicitud de creación de trabajo, por ejemplo, para verificar la cuota del proyecto y crear instancias de trabajadores en tu nombre. El servicio de Dataflow también usa esta cuenta para administrar el trabajo durante la ejecución del trabajo. Esta cuenta también se conoce como agente de servicio de Dataflow.
- La cuenta de servicio de trabajador.
Las instancias de trabajadores usan la cuenta de servicio de trabajador para acceder a los recursos de
entrada y salida después de que envías el trabajo. De forma predeterminada, los trabajadores usan la
cuenta de servicio predeterminada de Compute Engine del proyecto
como la cuenta de servicio de trabajador. La cuenta de servicio de trabajador debe tener
roles/dataflow.worker
.
Además, las canalizaciones de Dataflow deben poder acceder a los
recursos de Google Cloud. Para permitir este acceso, debes otorgar los
roles necesarios a la cuenta de servicio de trabajador de tu proyecto
de Dataflow para que el proyecto pueda acceder a los recursos mientras ejecuta el
trabajo de Dataflow. Por ejemplo, si un trabajo escribe en
BigQuery, la cuenta de servicio también debe tener al menos el rol
roles/bigquery.dataEditor
en la tabla o en otro recurso
que se va a actualizar.
Optimización de costos
El costo de ejecutar las plantillas de Dataflow depende de los nodos trabajadores que están programados y del tipo de canalización. Para conocer los costos, consulta Precios de Dataflow.
Cada plantilla de Dataflow puede encargarse de pasar datos entre una colección de MongoDB a una tabla de BigQuery. Por lo tanto, a medida que aumenta la cantidad de colecciones, el costo de usar plantillas de Dataflow también puede aumentar.
Eficiencia operativa
Para usar y analizar tus datos de MongoDB de manera eficiente, es posible que debas realizar una transformación personalizada de esos datos. Por ejemplo, es posible que debas cambiar el formato de tus datos de MongoDB para que coincidan con un esquema de destino, ocultar datos sensibles o filtrar algunos elementos del resultado. Si necesitas realizar una transformación de este tipo, puedes usar una UDF para extender la funcionalidad de la plantilla de MongoDB a BigQuery sin tener que modificar el código de la plantilla.
Una UDF es una función de JavaScript. La UDF debe esperar recibir y mostrar una cadena JSON. En el siguiente código, se muestra una transformación de ejemplo:
/**
* A simple transform function.
* @param {string} inJson
* @return {string} outJson
*/
function transform(inJson) {
var outJson = JSON.parse(inJson);
outJson.key = "value";
return JSON.stringify(outJson);
}
Para obtener más información sobre cómo crear una UDF, consulta Crea funciones definidas por el usuario para plantillas de Dataflow.
Después de crear tu UDF, debes realizar los siguientes pasos para extender la plantilla de MongoDB a BigQuery para usar esta UDF:
- Primero, debes cargar el archivo JavaScript que contiene la UDF en Google Cloud Storage.
- Luego, cuando crees el trabajo de Dataflow a partir de la plantilla,
debes establecer los siguientes parámetros de plantilla:
- Establece el parámetro
javascriptDocumentTransformGcsPath
en la ubicación de Cloud Storage del archivo JavaScript. - Establece el parámetro
javascriptDocumentTransformFunctionName
en el nombre de la UDF.
- Establece el parámetro
Para obtener más información sobre cómo extender la plantilla con una UDF, consulta Plantilla de MongoDB a BigQuery.
Optimización del rendimiento
El rendimiento de la transformación de MongoDB a BigQuery depende de los siguientes factores:
- El tamaño del documento de MongoDB.
- La cantidad de colecciones de MongoDB.
- Si la transformación se basa en un esquema fijo o un esquema variable.
- El conocimiento del equipo de implementación de las transformaciones de esquema que usan UDF basadas en JavaScript.
Implementación
Para implementar esta arquitectura de referencia, consulta Implementa una transformación de datos entre MongoDB y Google Cloud.
¿Qué sigue?
- Para personalizar las plantillas de Google Dataflow, consulta las plantillas en GitHub.
- Obtén más información sobre las soluciones de MongoDB Atlas y Google Cloud en Cloud skill boost.
- Obtén más información sobre los productos de Google Cloud que se usan en esta arquitectura de referencia:
- Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.
Colaboradores
Autores:
- Saurabh Kumar | Ingeniero socio de ISV
- Venkatesh Shanbhag | Arquitecto sénior de Soluciones (MongoDB)
Otros colaboradores:
- Jun Liu | Líder de Tecnología de Asistencia
- Maridi (Raju) Makaraju | Líder de Tecnología de Asistencia
- Sergei Lilicherko | Arquitecto de Soluciones
- Shan Kulandaivel | Gerente de Grupo de Productos