Copiez des données depuis ou vers MongoDB en utilisant Azure Data Factory ou Synapse Analytics

S'APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Data Factory dans Microsoft Fabric est la prochaine génération de Azure Data Factory, avec une architecture plus simple, une IA intégrée et de nouvelles fonctionnalités. Si vous débutez avec l'intégration des données, commencez par Fabric Data Factory. Les charges de travail ADF existantes peuvent être mises à niveau vers Fabric pour accéder à de nouvelles fonctionnalités dans la science des données, l’analytique en temps réel et la création de rapports.

Cet article explique comment utiliser l’activité de copie dans les pipelines Azure Data Factory et Synapse Analytics pour copier des données depuis et vers une base de données MongoDB. Il s’appuie sur l’article Vue d’ensemble de l’activité de copie.

Note

Ce connecteur est également disponible dans Data Factory dans Microsoft Fabric. Pour plus d’informations sur la configuration et les fonctionnalités spécifiques à Fabric, consultez la documentation Fabric connecteur MongoDB.

Important

Le nouveau connecteur MongoDB fournit une prise en charge native améliorée de MongoDB. Si vous utilisez le connecteur MongoDB hérité dans votre solution, pris en charge en l’état uniquement à des fins de compatibilité descendante, consultez Connecteur MongoDB (hérité). Vous pouvez utiliser ce connecteur pour copier des données depuis et vers une DocumentDB Azure (compatible avec MongoDB).

Fonctionnalités prises en charge

Ce connecteur MongoDB prend en charge les capacités suivantes :

Fonctionnalités prises en charge IR
Activité Copy (source/récepteur) (1) (2)

(1) Moteur d'intégration Azure (2) Moteur d'intégration auto-hébergé

Pour obtenir la liste des magasins de données pris en charge comme sources et récepteurs, consultez le tableau Magasins de données pris en charge.

Plus précisément, ce connecteur MongoDB prend en charge les versions jusqu’à 4.2. Si votre travail nécessite des versions plus récentes que 4.2, envisagez d’utiliser MongoDB Atlas avec le connecteur MongoDB Atlas qui fournit des fonctionnalités et une prise en charge plus complètes.

Prérequis

Si votre magasin de données se trouve à l’intérieur d’un réseau local, d’un réseau virtuel Azure ou d’Amazon Virtual Private Cloud, vous devez configurer un runtime d’intégration auto-hébergé /c0<> pour vous y connecter.

Si votre magasin de données est un service de données cloud managé, vous pouvez utiliser le Azure Integration Runtime. Si l’accès est limité aux adresses IP approuvées dans les règles de pare-feu, vous pouvez ajouter adresses IP d'Azure Integration Runtime à la liste autorisée.

Vous pouvez également utiliser la fonctionnalité runtime d’intégration de réseau virtuel managé dans Azure Data Factory pour accéder au réseau local sans installer et configurer un runtime d’intégration auto-hébergé.

Pour plus d’informations sur les mécanismes de sécurité réseau et les options pris en charge par Data Factory, consultez Stratégies d’accès aux données.

Prise en main

Pour effectuer l’activité de copie avec un pipeline, vous pouvez utiliser l’un des outils ou kits sdk suivants :

Créez un service lié à MongoDB en utilisant l’interface utilisateur

Utilisez les étapes suivantes pour créer un service lié à MongoDB dans l’interface utilisateur du portail Azure.

  1. Parcourez l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse et sélectionnez Services liés. Ensuite, sélectionnez Neuf :

  2. Recherchez Mongo et sélectionnez le connecteur MongoDB.

    Sélectionnez le connecteur MongoDB.

  3. Configurez les informations du service, testez la connexion et créez le nouveau service lié.

    Configurez un service lié à MongoDB.

Détails de configuration du connecteur

Les sections suivantes fournissent des informations sur les propriétés utilisées pour définir les entités Data Factory spécifiques du connecteur MongoDB.

Propriétés du service lié

Le tableau suivant liste les propriétés prises en charge pour un service lié à MongoDB :

Propriété Description Obligatoire
type Définir la propriété type à : MongoDbV2 Oui
connectionString Spécifier la chaîne de connexion MongoDB, telle que mongodb://[username:password@]host[:port][/[database][?options]]. Pour plus de détails, consultez le manuel MongoDB sur la chaîne de connexion.

Vous pouvez également placer une chaîne de connexion dans Azure Key Vault. Pour plus de détails, voir Archiver les identifiants dans Azure Key Vault.
Oui
database Nom de la base de données à laquelle vous souhaitez accéder. Oui
connectVia Runtime d’intégration à utiliser pour la connexion au magasin de données. Pour en savoir plus, consultez la section Conditions préalables. Si vous ne spécifiez pas cette propriété, le Azure Integration Runtime par défaut est utilisé. Non

Exemple :

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

Propriétés du jeu de données

Pour une liste complète des sections et propriétés que vous pouvez utiliser pour définir des ensembles de données, voir Ensembles de données et services liés. Le tableau suivant liste les propriétés prises en charge pour un jeu de données MongoDB :

Propriété Description Obligatoire
type Définissez la propriété de type de l’ensemble de données à : MongoDbV2Collection Oui
collectionName Nom de la collection dans la base de données MongoDB. Oui

Exemple :

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

Propriétés de l'activité de copie

Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Pipelines. Cette section fournit la liste des propriétés prises en charge par la source et le récepteur MongoDB.

MongoDB en tant que source

La section source de l’activité de copie prend en charge les propriétés suivantes :

Propriété Description Obligatoire
type Définissez la propriété type de la source d’activité de copie à : MongoDbV2Source Oui
Filter Spécifie le filtre de sélection à l’aide d’opérateurs de requête. Pour retourner tous les documents dans une collection, omettez ce paramètre ou passez un document vide ({}). Non
cursorMethods.project Spécifie les champs à retourner dans les documents pour la projection. Pour retourner tous les champs dans les documents correspondants, omettez ce paramètre. Non
cursorMethods.sort Spécifie l’ordre dans lequel la requête retourne les documents correspondants. Voir cursor.sort(). Non
cursorMethods.limit Spécifie le nombre maximal de documents retournés par le serveur. Voir cursor.limit(). Non
cursorMethods.skip Spécifie le nombre de documents à ignorer, et à partir de quel endroit MongoDB commence à retourner des résultats. Voir cursor.skip(). Non
batchSize Spécifie le nombre de documents à retourner dans chaque lot de la réponse renvoyée par l’instance MongoDB. Dans la plupart des cas, modifier la taille du lot n’affecte ni l’utilisateur ni l’application. Azure Cosmos DB limite la taille de chaque lot à 40 Mo maximum, ce qui correspond à la somme des tailles des documents inclus dans batchSize ; réduisez donc cette valeur si vos documents sont volumineux. Non
(la valeur par défaut est 100)

Conseil

Le service prend en charge la consommation de document BSON en mode Strict. Assurez-vous que votre requête de filtre est en mode Strict au lieu du mode Shell. Pour plus d’informations, consultez le manuel MongoDB.

Exemple :

"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 en tant que récepteur

La section récepteur de l’activité de copie prend en charge les propriétés suivantes :

Propriété Description Obligatoire
type Définissez la propriété type du dissipateur d’activité de copie sur MongoDbV2Sink. Oui
writeBehavior Décrit comment écrire des données dans MongoDB. Les valeurs autorisées sont insert et upsert.

Le comportement de la valeur upsert consiste à remplacer le document si un document portant le même _id existe déjà ; sinon, le document est inséré.

Remarque : le service génère automatiquement un _id pour un document si aucun _id n’est spécifié ni dans le document d’origine ni par le mappage de colonnes. Cela signifie que vous devez vérifier que votre document comporte un ID afin qu’upsert fonctionne comme prévu.
Non
(la valeur par défaut est insert)
writeBatchSize La propriété writeBatchSize contrôle le nombre de documents à écrire dans chaque lot. Pour améliorer la performance, essayez d’augmenter la valeur. Si la taille de votre document est grande, essayez de diminuer la valeur. Non
(la valeur par défaut est 10 000)
writeBatchTimeout Temps d’attente pour que l’opération d’insertion par lot soit terminée avant d’expirer. La valeur autorisée est timespan. Non
(la valeur par défaut est 00:30:00 – 30 minutes)

Conseil

Pour importer des documents JSON as-is, voir la section Importer ou exporter des documents JSON . Pour copier à partir de données en forme de tableau, voir Mappage de schéma.

Exemple

"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"
            }
        }
    }
]

Importer et exporter des documents JSON

Utilisez ce connecteur MongoDB pour facilement :

  • Copier des documents entre deux collections MongoDB en l’état.
  • Importez des documents JSON à partir de différentes sources vers MongoDB, notamment depuis Azure Cosmos DB, Azure Blob Storage, Azure Data Lake Store, et d'autres magasins de fichiers pris en charge.
  • Exporter des documents JSON d’une collection MongoDB vers différentes banques basées sur des fichiers.

Pour obtenir une telle copie indépendante du schéma, ignorez la section « structure » (également appelée schéma) dans le mappage de schéma et de jeu de données dans l’activité de copie.

Mappage de type de données pour MongoDB

Lorsque vous copiez des données depuis MongoDB, le service utilise les mappages suivants des types de données MongoDB vers des types de données intermédiaires. Pour plus d’informations sur la façon dont l’activité de copie mappe le schéma source et le type de données au récepteur, consultez Mappages de schéma et de type de données.

Type de données MongoDB Type de données de service intermédiaire
Date Int64
Identifiant d'objet (ObjectId) Chaîne
Decimal128 Chaîne
Horodatage Les 32 bits les plus significatifs -> Int64
Les 32 bits les moins significatifs -> Int64
Chaîne Chaîne
Double Chaîne
Int32 Int64
Int64 Int64
Booléen Booléen
Null Null
JavaScript Chaîne
Expression régulière Chaîne
Touche min Int64
Clé maximale Int64
Binary Chaîne

Cycle de vie et mise à niveau du connecteur MongoDB

Le tableau suivant présente l’étape de mise en production et les journaux des modifications pour différentes versions du connecteur MongoDB :

Version Phase de mise en production Journal des modifications
MongoDB (hérité) Removed Non applicable.
MongoDB Version en disponibilité générale disponible • Prise en charge des requêtes MongoDB équivalentes uniquement.

• Le double est lu en tant que type de données String.

Mettre à niveau le service lié MongoDB

Créez un service lié MongoDB et configurez-le en vous référant aux propriétés du service lié.

Consultez les banques de données prises en charge pour obtenir la liste des banques de données prises en charge en tant que sources et récepteurs par l’activité de copie.