Copia datos desde o hacia MongoDB usando Azure Data Factory o Synapse Analytics

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Data Factory en Microsoft Fabric es la próxima generación de Azure Data Factory, con una arquitectura más sencilla, inteligencia artificial integrada y nuevas características. Si no está familiarizado con la integración de datos, comience con Fabric Data Factory. Las cargas de trabajo de ADF existentes pueden actualizarse a Fabric para acceder a nuevas funcionalidades en ciencia de datos, análisis en tiempo real e informes.

Este artículo explica cómo utilizar la Actividad de Copia en las canalizaciones de Azure Data Factory y Synapse Analytics para copiar datos desde y hacia una base de datos MongoDB. El documento se basa en el artículo de introducción a la actividad de copia que describe información general de la actividad de copia.

Nota:

Este conector también está disponible en Data Factory en Microsoft Fabric. Para obtener información sobre la configuración y las características específicas de Fabric, consulte la documentación del conector de MongoDB para Fabric.

Importante

El nuevo conector de MongoDB proporciona compatibilidad nativa mejorada con MongoDB. Si usas el conector heredado de MongoDB en tu solución, que solo se admite tal cual para mantener la compatibilidad con versiones anteriores, consulta Conector de MongoDB (heredado). Puedes usar este conector para copiar datos desde y hacia un Azure DocumentDB (con compatibilidad con MongoDB).

Funcionalidades admitidas

Este conector MongoDB soporta las siguientes capacidades:

Funcionalidades admitidas IR
Actividad de copia (origen/receptor) 1 2

① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado

Para una lista de almacenes de datos soportados como fuentes y sumideros, consulte la tabla de almacenes de datos soportados .

En concreto, este conector de MongoDB admite hasta la versión 4.2. Si el trabajo requiere versiones posteriores a la 4.2, considere la posibilidad de usar MongoDB Atlas con el conector de Atlas de MongoDB, que proporciona compatibilidad y características más completas.

Requisitos previos

Si el almacén de datos se encuentra dentro de una red local, una red virtual Azure o una nube privada virtual de Amazon, debe configurar un entorno de ejecución de integración autohospedado para conectarse a él.

Si el almacén de datos es un servicio de datos en la nube administrado, puede usar el Azure Integration Runtime. Si el acceso está restringido a direcciones IP aprobadas en las reglas del firewall, puede agregar las direcciones IP de Azure Integration Runtime a la lista de autorizados.

También puede usar la funcionalidad runtime de integración de red virtual administrada en Azure Data Factory para acceder a la red local sin instalar ni configurar un runtime de integración autohospedado.

Consulte Estrategias de acceso a datos para más información sobre los mecanismos de seguridad de red y las opciones que admite Data Factory.

Introducción

Para realizar la actividad de copia con una canalización, puede usar una de las siguientes herramientas o SDK:

Crea un servicio vinculado a MongoDB usando la interfaz de usuario

Siga estos pasos para crear un servicio vinculado a MongoDB en la interfaz de usuario del portal de Azure.

  1. Navega a la pestaña Gestionar en tu espacio de trabajo de Azure Data Factory o Synapse y selecciona Servicios Vinculados. Luego selecciona Nuevo:

  2. Busque MongoDB y seleccione el conector de MongoDB.

    Seleccione el conector de MongoDB.

  3. Configure los detalles del servicio, pruebe la conexión y cree el servicio vinculado.

    Configure un servicio vinculado en MongoDB.

Detalles de configuración del conector

Las secciones siguientes proporcionan detalles sobre las propiedades que se usan para definir entidades de Data Factory específicas del conector MongoDB.

Propiedades del servicio vinculado

La siguiente tabla enumera las propiedades soportadas para un servicio enlazado de MongoDB:

Propiedad Descripción Obligatorio
type Establece la propiedad de tipo en: MongoDbV2
connectionString Especifique la cadena de conexión de MongoDB, como mongodb://[username:password@]host[:port][/[database][?options]]. Para más detalles, consulte el manual de MongoDB sobre cadena de conexión.

También puede colocar una cadena de conexión en Azure Key Vault. Para más detalles, consulta Almacenar credenciales en Azure Key Vault.
database Nombre de la base de datos a la que desea acceder.
connectVia Instancia de Integration Runtime que se usará para conectarse al almacén de datos. Para más información, consulte la sección Requisitos previos. Si no especificas esta propiedad, se usa la Azure Integration Runtime predeterminada. No

Ejemplo:

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDbV2",
        "typeProperties": {
            "connectionString": "mongodb://[username:password@]host[:port][/[database][?options]]",
            "database": "myDatabase"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Propiedades del conjunto de datos

Para una lista completa de secciones y propiedades que puedes usar para definir conjuntos de datos, consulta Conjuntos de datos y servicios vinculados. La siguiente tabla enumera las propiedades soportadas para un conjunto de datos de MongoDB:

Propiedad Descripción Obligatorio
type Establece la propiedad de tipo del conjunto de datos en: MongoDbV2Collection
collectionName Nombre de la colección en la base de datos de MongoDB.

Ejemplo:

{
    "name": "MongoDbDataset",
    "properties": {
        "type": "MongoDbV2Collection",
        "typeProperties": {
            "collectionName": "<Collection name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<MongoDB linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Las propiedades de la actividad de copia

Si desea ver una lista completa de las secciones y propiedades disponibles para definir actividades, consulte el artículo sobre canalizaciones. En esta sección se proporciona una lista de las propiedades que admite el origen y receptor de MongoDB.

MongoDB como origen

La sección fuente de la actividad de copia soporta las siguientes propiedades:

Propiedad Descripción Obligatorio
type Establece la propiedad de tipo de la fuente de actividad de copia en: MongoDbV2Source
filter Especifica el filtro de selección mediante operadores de consulta. Para que se devuelvan todos los documentos de una colección, omita este parámetro o pase un documento vacío ({}). No
cursorMethods.project Especifica los campos a devolver en los documentos para la proyección. Para devolver todos los campos en los documentos coincidentes, omita este parámetro. No
cursorMethods.sort Especifica el orden en que la consulta devuelve los documentos coincidentes. Consulte cursor.sort(). No
cursorMethods.limit Especifica el número máximo de documentos que devuelve el servidor. Consulte cursor.limit(). No
cursorMethods.skip Especifica el número de documentos que se omitirán y desde donde empieza MongoDB a devolver resultados. Consulte cursor.skip(). No
batchSize Especifica el número de documentos a devolver en cada lote de la respuesta de la instancia de MongoDB. En la mayoría de los casos, modificar el tamaño del lote no afecta al usuario ni a la aplicación. Azure Cosmos DB limita que cada lote no puede superar los 40 MB, que es la suma del tamaño del número de documentos por lote, así que disminuye este valor si el tamaño de tu documento es grande. No
(el valor predeterminado es 100)

Sugerencia

El servicio admite el consumo de documentos BSON en modo strict. Asegúrate de que tu consulta de filtro esté en modo Estricto en lugar de modo Shell. Para más información, consulte el manual de MongoDB.

Ejemplo:

"activities":[
    {
        "name": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbV2Source",
                "filter": "{datetimeData: {$gte: ISODate(\"2018-12-11T00:00:00.000Z\"),$lt: ISODate(\"2018-12-12T00:00:00.000Z\")}, _id: ObjectId(\"5acd7c3d0000000000000000\") }",
                "cursorMethods": {
                    "project": "{ _id : 1, name : 1, age: 1, datetimeData: 1 }",
                    "sort": "{ age : 1 }",
                    "skip": 3,
                    "limit": 3
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

MongoDB como receptor

La sección sink de la actividad de copia admite las siguientes propiedades:

Propiedad Descripción Obligatorio
type Establece la propiedad de tipo del sumidero de actividad de copia en MongoDbV2Sink.
writeBehavior Describe cómo escribir datos en MongoDB. Valores permitidos: insert y upsert.

El comportamiento de upsert consiste en reemplazar el documento si ya existe un documento con el mismo _id; en caso contrario, inserta el documento.

Nota: El servicio genera automáticamente un _id para un documento si no se especifica un _id en el documento original o mediante la asignación de columnas. Esto significa que debe asegurarse de que, para que upsert funcione según lo esperado, el documento tenga un identificador.
No
(el valor predeterminado es insert)
writeBatchSize La propiedad writeBatchSize controla el número de documentos a escribir en cada lote. Para mejorar el rendimiento, prueba a aumentar el valor. Si el tamaño de tu documento es grande, intenta disminuir el valor. No
(el valor predeterminado es 10 000)
writeBatchTimeout Tiempo que se concede a la operación de inserción por lotes para que finalice antes de que se agote el tiempo de espera. El valor permitido es TimeSpan. No
(El valor predeterminado es 00:30:00 [30 minutos]).

Sugerencia

Para importar documentos JSON as-is, consulte la sección Importar o exportar documentos JSON . Para copiar desde datos en formato tabular, consulta Mapeo de esquemas.

Ejemplo

"activities":[
    {
        "name": "CopyToMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Document DB output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "MongoDbV2Sink",
                "writeBehavior": "upsert"
            }
        }
    }
]

Importación y exportación de documentos JSON

Utiliza este conector MongoDB de forma sencilla:

  • Copiar documentos entre dos colecciones de MongoDB tal cual.
  • Importe documentos JSON desde varios orígenes a MongoDB, incluidos desde Azure Cosmos DB, Azure Blob Storage, Azure Data Lake Store y otros almacenes basados en archivos compatibles.
  • Exportar documentos JSON de una colección de MongoDB a varios almacenes basados en archivos.

Para lograr esa copia independiente del esquema, omita la sección “structure” (estructura, también denominada schema) en el conjunto de datos y la asignación de esquemas en la actividad de copia.

Asignación de tipos para MongoDB

Cuando copias datos de MongoDB, el servicio utiliza los siguientes mapeos de los tipos de datos de MongoDB a los tipos de datos intermedios. Para más información sobre cómo la actividad de copia mapea el esquema fuente y el tipo de datos al sumidero, consulta Mapeos de esquema y tipos de datos.

Tipo de datos de MongoDB Tipo de datos de servicio provisional
Fecha Int64
ObjectId (identificador de objeto) String
Decimal128 String
Marca de tiempo Los 32 bits más significativos :> Int64
Los 32 bits menos significativos:> Int64
String String
Double String
Int32 Int64
Int64 Int64
Boolean Boolean
Null Null
JavaScript String
Expresión regular String
Tecla mínima Int64
Tecla máxima Int64
Binary String

Ciclo de vida y actualización del conector de MongoDB

En la tabla siguiente se muestran la fase de lanzamiento y los registros de cambios para diferentes versiones del conector de MongoDB:

Versión Fase de lanzamiento Registro de cambios
MongoDB (heredado) Quitado No aplicable.
MongoDB Versión de disponibilidad general disponible • Admita solo las consultas equivalentes de MongoDB.

• Double se lee como tipo de datos String.

Actualización del servicio vinculado de MongoDB

Cree un nuevo servicio vinculado de MongoDB y configúrelo haciendo referencia a las Propiedades del servicio vinculado.

Para obtener una lista de los almacenes de datos que admite la actividad de copia como orígenes y receptores, consulte Almacenes de datos compatibles.