Kopieren von Daten in oder aus Azure Cosmos DB for MongoDB mithilfe von Azure Data Factory oder Synapse Analytics

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

In diesem Artikel wird beschrieben, wie Sie mithilfe der Kopieraktivität in Azure Data Factory- und Synapse Analytics-Pipelines Daten aus und in Azure Cosmos DB for MongoDB kopieren. Dieser Artikel baut auf dem Artikel zur Kopieraktivität auf, der eine allgemeine Übersicht über die Kopieraktivität enthält.

Hinweis

Dieser Connector unterstützt nur das Kopieren von Daten aus und in Azure Cosmos DB for MongoDB. Informationen zu Azure Cosmos DB for NoSQL finden Sie unter Azure Cosmos DB for NoSQL-Connector. Andere API-Typen werden derzeit nicht unterstützt.

Unterstützte Funktionen

Dieser Azure Cosmos DB for MongoDB-Connector wird für die folgenden Funktionen unterstützt:

Unterstützte Funktionen IR Verwalteter privater Endpunkt
Kopieraktivität (Quelle/Senke) 1.6

① Azure Integration Runtime ② Selbstgehostete Integration Runtime

Sie können Daten aus Azure Cosmos DB for MongoDB in einen beliebigen unterstützten Senkendatenspeicher oder Daten aus einem beliebigen unterstützten Quelldatenspeicher in Azure Cosmos DB for MongoDB kopieren. Eine Liste der Datenspeicher, die die Kopieraktivität als Quellen und Senken unterstützt, finden Sie unter Unterstützte Datenspeicher und Formate.

Sie können den Azure Cosmos DB for MongoDB-Connector für die folgenden Aufgaben verwenden:

  • Kopieren von Daten in oder aus Azure Cosmos DB for MongoDB.
  • Schreiben in Azure Cosmos DB als insert oder upsert.
  • Importieren und Exportieren von JSON-Dokumenten in ihrem jeweiligen Zustand oder Kopieren von Daten aus einem tabellarischen Dataset oder in ein tabellarisches Dataset. Die Beispiele zeigen eine SQL-Datenbank und eine CSV-Datei. Informationen zum Kopieren von Dokumenten in ihrem jeweiligen Zustand in bzw. aus JSON-Dateien oder in eine andere bzw. aus einer anderen Azure Cosmos DB-Sammlung finden Sie unter „Importieren oder Exportieren von JSON-Dokumenten“.

Erste Schritte

Sie können eines der folgenden Tools oder SDKs verwenden, um die Kopieraktivität mit einer Pipeline zu verwenden:

Erstellen eines verknüpften Diensts für Azure Cosmos DB for MongoDB über die Benutzeroberfläche

Erstellen Sie mithilfe der folgenden Schritte einen verknüpften Dienst für Azure Cosmos DB for MongoDB auf der Benutzeroberfläche des Azure-Portals.

  1. Navigieren Sie in Ihrem Azure Data Factory- oder Synapse-Arbeitsbereich zu der Registerkarte „Verwalten“, wählen Sie „Verknüpfte Dienste“ aus und klicken Sie dann auf „Neu“:

  2. Suchen Sie nach Azure Cosmos DB for MongoDB, und wählen Sie diesen Connector aus.

    Select the Azure Cosmos DB for MongoDB connector.

  3. Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.

    Configure a linked service to Azure Cosmos DB for MongoDB.

Details zur Connector-Konfiguration

Die folgenden Abschnitte enthalten Details zu Eigenschaften, die Sie zum Definieren von Data Factory-Entitäten verwenden können, die spezifisch für Azure Cosmos DB for MongoDB sind.

Eigenschaften des verknüpften Diensts

Folgende Eigenschaften werden für den mit Azure Cosmos DB for MongoDB verknüpften Dienst unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft muss auf CosmosDbMongoDbApi festgelegt werden. Ja
connectionString Geben Sie die Verbindungszeichenfolge für Ihre Azure Cosmos DB for MongoDB-Instanz an. Diese finden Sie im Azure-Portal -> Ihre Azure Cosmos DB-Instanz ->primäre oder sekundäre Verbindungszeichenfolge.
Für die Serverversion 3.2 lautet das Zeichenfolgenmuster mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb.
Für die Serverversionen 3.6 und höher lautet das Zeichenfolgenmuster mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<cosmosdb-name>@.

Sie können auch ein Kennwort in Azure Key Vault speichern und die password-Konfiguration aus der Verbindungszeichenfolge pullen. Ausführlichere Informationen finden Sie unter Speichern von Anmeldeinformationen in Azure Key Vault.
Ja
database Der Name der Datenbank, auf die Sie zugreifen möchten. Ja
isServerVersionAbove32 Geben Sie an, ob die Serverversion höher als 3.2 ist. Die zulässigen Werte sind true und false (Standard). Dadurch wird der Treiber bestimmt, der im Dienst verwendet werden soll. Ja
connectVia Die Integration Runtime, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden soll. Sie können die Azure Integration Runtime oder eine selbstgehostete Integration Runtime verwenden (sofern sich Ihr Datenspeicher in einem privaten Netzwerk befindet). Wenn diese Eigenschaft nicht angegeben ist, wird die standardmäßige Azure Integration Runtime verwendet. Nein

Beispiel

{
    "name": "CosmosDbMongoDBAPILinkedService",
    "properties": {
        "type": "CosmosDbMongoDbApi",
        "typeProperties": {
            "connectionString": "mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb",
            "database": "myDatabase",
            "isServerVersionAbove32": "false"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Dataset-Eigenschaften

Eine vollständige Liste mit den Abschnitten und Eigenschaften, die zum Definieren von Datasets zur Verfügung stehen, finden Sie unter Datasets und verknüpfte Dienste. Folgende Eigenschaften werden für das Azure Cosmos DB for MongoDB-Dataset unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft des Datasets muss auf CosmosDbMongoDbApiCollection festgelegt werden. Ja
collectionName Der Name der Azure Cosmos DB-Sammlung. Ja

Beispiel

{
    "name": "CosmosDbMongoDBAPIDataset",
    "properties": {
        "type": "CosmosDbMongoDbApiCollection",
        "typeProperties": {
            "collectionName": "<collection name>"
        },
        "schema": [],
        "linkedServiceName":{
            "referenceName": "<Azure Cosmos DB for MongoDB linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Eigenschaften der Kopieraktivität

Dieser Abschnitt enthält eine Liste der Eigenschaften, die von Azure Cosmos DB for MongoDB als Quelle und Senke unterstützt werden.

Eine vollständige Liste mit den verfügbaren Abschnitten und Eigenschaften zum Definieren von Aktivitäten finden Sie unter Pipelines.

Azure Cosmos DB for MongoDB als Quelle

Die folgenden Eigenschaften werden im Abschnitt source der Kopieraktivität unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft der Quelle der Kopieraktivität muss auf CosmosDbMongoDbApiSource festgelegt werden. Ja
filter Gibt den Auswahlfilter mit Abfrageoperatoren an. Um alle Dokumente in einer Sammlung zurückzugeben, lassen Sie diesen Parameter aus oder übergeben Sie ein leeres Dokument ({}). Nein
cursorMethods.project Gibt die Felder an, die in den Dokumenten für die Projektion zurückgegeben werden sollen. Um alle Felder in den entsprechenden Dokumenten zurückzugeben, lassen Sie diesen Parameter aus. Nein
cursorMethods.sort Gibt die Reihenfolge an, in der übereinstimmende Dokumente von der Abfrage zurückgegeben werden. Siehe cursor.sort(). Nein
cursorMethods.limit Gibt die maximale Anzahl von Dokumenten an, die vom Server zurückgegeben werden. Siehe cursor.limit(). Nein
cursorMethods.skip Gibt die Anzahl von Dokumenten an, die übersprungen werden sollen und ab denen MongoDB mit der Rückgabe von Ergebnissen beginnt. Siehe cursor.skip(). Nein
batchSize Gibt die Anzahl von Dokumenten an, die in jedem Batch der Antwort von der MongoDB-Instanz zurückgegeben werden sollen. In den meisten Fällen wirkt sich eine Änderung der Batchgröße nicht auf den Benutzer oder die Anwendung aus. In Azure Cosmos DB ist die maximale Größe der einzelnen Batches auf 40 MB begrenzt. Dies entspricht der Summe des „batchSize“-Werts für die Dokumentengröße. Verringern Sie deshalb diesen Wert, falls Ihre Dokumente groß sind. Nein
(der Standardwert ist 100)

Tipp

ADF unterstützt die Nutzung eines BSON-Dokuments im Strict-Modus. Stellen Sie sicher, dass die Filterabfrage den Strict-Modus und nicht den Shell-Modus aufweist. Eine weitere Beschreibung finden Sie im MongoDB-Handbuch.

Beispiel

"activities":[
    {
        "name": "CopyFromCosmosDBMongoDBAPI",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Cosmos DB for MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "CosmosDbMongoDbApiSource",
                "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>"
            }
        }
    }
]

Azure Cosmos DB for MongoDB als Senke

Die folgenden Eigenschaften werden im Abschnitt sink der Kopieraktivität unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft der Senke der Kopieraktivität muss auf CosmosDbMongoDbApiSink festgelegt werden. Ja
writeBehavior Beschreibt, wie Daten in Azure Cosmos DB geschrieben werden. Zulässige Werte: insert und upsert.

Das Verhalten von upsert besteht darin, das Dokument zu ersetzen, wenn ein Dokument mit dem gleichen _id-Typ bereits vorhanden ist. Andernfalls wird das Dokument eingefügt.

Hinweis: Der Dienst generiert automatisch eine _id für ein Dokument, wenn eine _id weder im Originaldokument noch durch eine Spaltenzuordnung angegeben wird. Dies bedeutet, dass Sie sicherstellen müssen, dass Ihr Dokument eine ID besitzt, damit upsert wie erwartet funktioniert.
Nein
(der Standardwert ist insert)
writeBatchSize Die writeBatchSize-Eigenschaft steuert die Größe der in jeden Batch zu schreibenden Dokumente. Sie können versuchen, den Wert für writeBatchSize zu erhöhen, um die Leistung zu verbessern, oder den Wert verringern, falls Ihre Dokumente groß sind. Nein
(der Standardwert ist 10.000)
writeBatchTimeout Die Wartezeit, bis der Batch-Einfügevorgang beendet ist, bevor er eine Zeitüberschreitung verursacht. Der zulässige Wert ist timespan. Nein
(der Standardwert ist 00:30:00 – 30 Minuten)

Tipp

Informationen zum Importieren von JSON-Dokumenten in unveränderter Form finden Sie im Abschnitt Importieren oder Exportieren von JSON-Dokumenten. Informationen zum Kopieren aus tabellarisch strukturierten Daten finden Sie unter Schemazuordnung.

Beispiel

"activities":[
    {
        "name": "CopyToCosmosDBMongoDBAPI",
        "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": "CosmosDbMongoDbApiSink",
                "writeBehavior": "upsert"
            }
        }
    }
]

Importieren und Exportieren von JSON-Dokumenten

Sie können diesen Azure Cosmos DB-Connector verwenden, um die folgenden Aufgaben auf einfache Weise zu erledigen:

  • Kopieren von Dokumenten in ihrem jeweiligen Zustand zwischen zwei Azure Cosmos DB-Sammlungen.
  • Importieren von JSON-Dokumenten aus verschiedenen Quellen in Azure Cosmos DB, z. B. aus MongoDB, Azure Blob Storage, Azure Data Lake Storage und anderen dateibasierten Speichern, die von dem Dienst unterstützt werden.
  • Exportieren von JSON-Dokumenten aus einer Azure Cosmos DB-Sammlung in verschiedene dateibasierte Speicher.

So erhalten Sie eine vom Schema unabhängige Kopie:

  • Aktivieren Sie bei Verwendung des Tools zum Kopieren von Daten die Option Unverändert in JSON-Dateien oder Azure Cosmos DB-Sammlung exportieren.
  • Wenn Sie die Aktivität „Dokumenterstellung“ verwenden, wählen Sie das JSON-Format mit dem entsprechenden Dateispeicher für Quelle oder Senke aus.

Schemazuordnung

Informationen zum Kopieren von Daten aus Azure Cosmos DB for MongoDB in eine tabellarische Senke oder umgekehrt finden Sie unter Schemazuordnung.

Insbesondere beim Schreiben in Azure Cosmos DB müssen Sie sicherstellen, dass Sie Azure Cosmos DB mit der richtigen Objekt-ID aus den Quelldaten füllen. Wenn Sie beispielsweise eine Spalte „id“ in der SQL-Datenbanktabelle haben und diesen Wert als Dokument-ID in MongoDB für Insert/Upsert-Vorgänge verwenden möchten, müssen Sie die richtige Schemazuordnung gemäß der Definition des Strict-Modus von MongoDB (_id.$oid) wie folgt festlegen:

Map ID in MongoDB sink

Nach Ausführen der Kopieraktivität wird die nachstehende BSON-ObjectId in der Senke generiert:

{
    "_id": ObjectId("592e07800000000000000000")
}

Eine Liste der Datenspeicher, die diese Kopieraktivität als Quellen und Senken unterstützt, finden Sie unter Unterstützte Datenspeicher.