Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs Menu

Tutorial: Copiar datos continuamente de MongoDB a AWS S3

Utiliza Atlas Data Federation y los disparadores programados de Atlas para copiar datos de un clúster de Atlas a un bucket AWS S3 en formato Apache Parquet. Parquet es un formato columnar adecuado para cargas de trabajo analíticas y de aprendizaje automático que esperan datos como archivos en lugar de documentos. Ejecute copias en un cronograma recurrente para delegar consultas analíticas de su clúster operativo.

El tutorial utiliza un enfoque delta, lo que significa que cada ejecución del activador copia documentos de los últimos 60 segundos. Una alternativa es una snapshot completa, que copia toda la colección cada vez. El enfoque correcto depende de su volumen de datos y de los requisitos de los consumidores posteriores.

Los valores maxFileSize y maxRowGroupSize en este tutorial están optimizados para pruebas, no para producción. Para cargas de trabajo de producción, revisa las opciones de la etapa $out y ajusta los tamaños de archivo y la partición en función de tus patrones de consulta.

Antes de comenzar este tutorial, complete las siguientes tareas:

1

Una instancia federada de base de datos consolida múltiples fuentes de datos en una única interfaz que se puede consultar. En este tutorial, conectas tu bucket S3 y tu clúster de Atlas como almacenes de datos en la misma instancia de base de datos federada. Conectar ambos almacenes de datos permite que el activador de copia lea del clúster y escriba en S3.

  1. Implemente una instancia federada de base de datos con un almacenamiento de datos S3. Para aprender cómo, consulte Implementar un repositorio de datos de instancia federada de base de datos. Cuando configures el almacén de datos S3, concede al rol IAM Read and write acceso al bucket para que Atlas Data Federation pueda escribir archivos Parquet.

  2. Agrega tu clúster de Atlas como un segundo almacén de datos en la instancia federada de base de datos.

Después de completar estos pasos, anote el nombre de su servicio de instancia federada de base de datos. Necesitarás este nombre en un paso posterior.

2

Crea un activador programado que inserte un nuevo documento en tu clúster cada minuto. Esto genera datos de prueba para que puedas verificar que el activador de copia funciona.

  1. En Atlas, diríjase a la página Triggers.

    1. Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.

    2. Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.

    3. En la barra lateral, haz clic en Triggers en la sección Streaming Data.

    Se muestra la página de Triggers.

  2. Haga clic en Add Trigger.

  3. Selecciona Scheduled como el Trigger Type.

  4. En Trigger Details, configure lo siguiente:

    Configuración
    Valor
    Trigger Name

    Create_Event_Every_Min_Trigger

    Schedule Type
    Basic
    Interval

    Cada 1 minuto

    Event Type
    Function
  5. En la sección Function, selecciona + New Function e ingresa el siguiente código. Reemplace los valores de los marcadores de posición con los nombres de su servicio Atlas, base de datos y colección.

    exports = function () {
    const mongodb = context.services.get(
    "NAME_OF_YOUR_ATLAS_SERVICE"
    );
    const db = mongodb.db("NAME_OF_YOUR_DATABASE");
    const events = db.collection(
    "NAME_OF_YOUR_COLLECTION"
    );
    const event = events.insertOne({
    time: new Date(),
    aNumber: Math.random() * 100,
    type: "event"
    });
    return JSON.stringify(event);
    };
  6. Haga clic en Save.

    Después de ejecutar el activador, confirma que aparezcan nuevos documentos en tu colección de clústeres cada minuto.

3

Cree un activador programado que ejecute un pipeline de agregación utilizando la etapa $out para copiar documentos recientes desde su clúster a su bucket S3 en formato Parquet cada minuto.

  1. En la página Triggers, haz clic en Add Trigger.

  2. Selecciona Scheduled como el Trigger Type.

  3. En Trigger Details, configure lo siguiente:

    Configuración
    Valor
    Trigger Name

    Copy_Events_To_S3_Trigger

    Schedule Type
    Basic
    Interval

    Cada 1 minuto

    Event Type
    Function
  4. En la sección Function, selecciona + New Function e ingresa el siguiente código. Reemplace los valores de los marcadores de posición con los nombres de su instancia federada de base de datos, base de datos virtual, colección virtual, bucket S3 y la región AWS.

    exports = function () {
    const service = context.services.get(
    "NAME_OF_YOUR_FEDERATED_DATA_SERVICE"
    );
    const db = service.db(
    "NAME_OF_YOUR_VIRTUAL_DATABASE"
    );
    const events = db.collection(
    "NAME_OF_YOUR_VIRTUAL_COLLECTION"
    );
    const pipeline = [
    {
    $match: {
    "time": {
    $gt: new Date(
    Date.now() - 60 * 1000
    ),
    $lt: new Date(Date.now())
    }
    }
    },
    {
    "$out": {
    "s3": {
    "bucket": "YOUR_S3_BUCKET_NAME",
    "region": "YOUR_AWS_REGION",
    "filename": "events",
    "format": {
    "name": "parquet",
    "maxFileSize": "10GB",
    "maxRowGroupSize": "100MB"
    }
    }
    }
    }
    ];
    return events.aggregate(pipeline);
    };
  5. Haga clic en Save.

    Después de que se ejecute el activador, confirma que aparezca un archivo Parquet llamado events en tu bucket S3.