Dela via


Kopiera data till eller från Azure Cosmos DB för MongoDB med hjälp av Azure Data Factory eller Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Den här artikeln beskriver hur du använder kopieringsaktivitet i Azure Data Factory- och Synapse Analytics-pipelines för att kopiera data från och till Azure Cosmos DB för MongoDB. Artikeln bygger på kopieringsaktivitet, som visar en allmän översikt över kopieringsaktivitet.

Kommentar

Den här anslutningsappen stöder endast kopiering av data till/från Azure Cosmos DB för MongoDB. För Azure Cosmos DB för NoSQL, se Azure Cosmos DB för NoSQL-anslutningsappen. Andra API-typer stöds inte för närvarande.

Funktioner som stöds

Den här Azure Cosmos DB for MongoDB-anslutningsappen stöds för följande funktioner:

Funktioner som stöds IR Hanterad privat slutpunkt
Kopieringsaktivitet (källa/mottagare) (1) (2)

(1) Azure Integration Runtime (2) Lokalt installerad integrationskörning

Du kan kopiera data från Azure Cosmos DB för MongoDB till valfritt mottagardatalager som stöds eller kopiera data från alla källdatalager som stöds till Azure Cosmos DB för MongoDB. En lista över datalager som kopieringsaktivitet stöder som källor och mottagare finns i Datalager och format som stöds.

Du kan använda Azure Cosmos DB för MongoDB-anslutningsappen för att:

  • Kopiera data från och till Azure Cosmos DB för MongoDB.
  • Skriv till Azure Cosmos DB som insert eller upsert.
  • Importera och exportera JSON-dokument som de är, eller kopiera data från eller till en tabelldatauppsättning. Exempel är en SQL-databas och en CSV-fil. Information om hur du kopierar dokument som de är till eller från JSON-filer eller till eller från en annan Azure Cosmos DB-samling finns i Importera eller exportera JSON-dokument.

Kom igång

Om du vill utföra kopieringsaktiviteten med en pipeline kan du använda något av följande verktyg eller SDK:er:

Skapa en länkad tjänst till Azure Cosmos DB för MongoDB med hjälp av användargränssnittet

Använd följande steg för att skapa en länkad tjänst till Azure Cosmos DB för MongoDB i Användargränssnittet för Azure-portalen.

  1. Bläddra till fliken Hantera i Din Azure Data Factory- eller Synapse-arbetsyta och välj Länkade tjänster och klicka sedan på Ny:

  2. Sök efter Azure Cosmos DB efter MongoDB och välj anslutningsappen.

    Välj Azure Cosmos DB för MongoDB-anslutningsappen.

  3. Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.

    Konfigurera en länkad tjänst till Azure Cosmos DB för MongoDB.

Konfigurationsinformation för anslutningsprogram

Följande avsnitt innehåller information om egenskaper som du kan använda för att definiera Data Factory-entiteter som är specifika för Azure Cosmos DB för MongoDB.

Länkade tjänstegenskaper

Följande egenskaper stöds för den länkade tjänsten Azure Cosmos DB for MongoDB:

Property Beskrivning Obligatoriskt
type Typegenskapen måste vara inställd på CosmosDbMongoDbApi. Ja
connectionString Ange niska veze för Azure Cosmos DB för MongoDB. Du hittar den i Azure-portalen –> ditt Azure Cosmos DB-blad –> primära eller sekundära niska veze.
För 3.2-serverversionen är mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldbsträngmönstret .
För 3,6+ serverversioner är mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<cosmosdb-name>@strängmönstret .

Du kan också placera ett lösenord i Azure Key Vault och hämta konfigurationen password från niska veze. Mer information finns i Lagra autentiseringsuppgifter i Azure Key Vault.
Ja
database Namnet på den databas som du vill komma åt. Ja
isServerVersionAbove32 Ange om serverversionen är över 3.2. Tillåtna värden är true och false (standard). Detta avgör vilken drivrutin som ska användas i tjänsten. Ja
connectVia Integration Runtime som ska användas för att ansluta till datalagret. Du kan använda Azure Integration Runtime eller en lokalt installerad integrationskörning (om ditt datalager finns i ett privat nätverk). Om den här egenskapen inte har angetts används standardkörningen för Azure Integration Runtime. Nej

Exempel

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

Egenskaper för datauppsättning

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera datauppsättningar finns i Datauppsättningar och länkade tjänster. Följande egenskaper stöds för Azure Cosmos DB för MongoDB-datauppsättning:

Property Beskrivning Obligatoriskt
type Datamängdens typegenskap måste anges till CosmosDbMongoDbApiCollection. Ja
collectionName Namnet på Azure Cosmos DB-samlingen. Ja

Exempel

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

Egenskaper för kopieringsaktivitet

Det här avsnittet innehåller en lista över egenskaper som stöd för Azure Cosmos DB for MongoDB-källa och mottagare.

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera aktiviteter finns i Pipelines.

Azure Cosmos DB för MongoDB som källa

Följande egenskaper stöds i avsnittet Kopieringsaktivitetskälla:

Property Beskrivning Obligatoriskt
type Typegenskapen för kopieringsaktivitetskällan måste anges till CosmosDbMongoDbApiSource. Ja
filter Anger markeringsfilter med hjälp av frågeoperatorer. Om du vill returnera alla dokument i en samling utelämnar du den här parametern eller skickar ett tomt dokument ({}). Nej
cursorMethods.project Anger fälten som ska returneras i dokumenten för projektion. Om du vill returnera alla fält i matchande dokument utelämnar du den här parametern. Nej
cursorMethods.sort Anger i vilken ordning frågan returnerar matchande dokument. Se cursor.sort(). Nej
cursorMethods.limit Anger det maximala antalet dokument som servern returnerar. Se cursor.limit(). Nej
cursorMethods.skip Anger antalet dokument som ska hoppa över och varifrån MongoDB börjar returnera resultat. Se cursor.skip(). Nej
batchSize Anger hur många dokument som ska returneras i varje batch av svaret från MongoDB-instansen. I de flesta fall påverkar det inte användaren eller programmet att ändra batchstorleken. Azure Cosmos DB begränsar varje batch får inte överstiga 40 MB, vilket är summan av batchStorleken för antalet dokument, så minska det här värdet om dokumentstorleken är stor. Nej
(standardvärdet är 100)

Dricks

ADF stöder användning av BSON-dokument i strikt läge. Kontrollera att filterfrågan är i strikt läge i stället för Shell-läge. Mer beskrivning finns i MongoDB-handboken.

Exempel

"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 för MongoDB som mottagare

Följande egenskaper stöds i avsnittet Kopieringsaktivitetsmottagare:

Property Beskrivning Obligatoriskt
type Typegenskapen för kopieringsaktivitetsmottagaren måste anges till CosmosDbMongoDbApiSink. Ja
writeBehavior Beskriver hur du skriver data till Azure Cosmos DB. Tillåtna värden: infoga och upsert.

Upserts beteende är att ersätta dokumentet om ett dokument med samma _id redan finns. Annars infogar du dokumentet.

Obs! Tjänsten genererar automatiskt ett _id för ett dokument om ett _id inte har angetts i det ursprungliga dokumentet eller efter kolumnmappning. Det innebär att du måste se till att ditt dokument har ett ID för att upsert ska fungera som förväntat.
Nej
(standardvärdet är insert)
writeBatchSize Egenskapen writeBatchSize styr storleken på dokument som ska skrivas i varje batch. Du kan prova att öka värdet för writeBatchSize för att förbättra prestanda och minska värdet om dokumentstorleken är stor. Nej
(standardvärdet är 10 000)
writeBatchTimeout Väntetiden för att batchinfogningsåtgärden ska slutföras innan tidsgränsen uppnås. Det tillåtna värdet är tidsintervall. Nej
(standardvärdet är 00:30:00 –30 minuter)

Dricks

Om du vill importera JSON-dokument som de är läser du avsnittet Importera eller exportera JSON-dokument . Om du vill kopiera från tabellformade data läser du Schemamappning.

Exempel

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

Importera och exportera JSON-dokument

Du kan använda den här Azure Cosmos DB-anslutningsappen för att enkelt:

  • Kopiera dokument mellan två Azure Cosmos DB-samlingar som de är.
  • Importera JSON-dokument från olika källor till Azure Cosmos DB, inklusive från MongoDB, Azure Blob Storage, Azure Data Lake Store och andra filbaserade butiker som tjänsten stöder.
  • Exportera JSON-dokument från en Azure Cosmos DB-samling till olika filbaserade arkiv.

Så här skapar du en schemaagnostisk kopia:

  • När du använder verktyget Kopiera data väljer du alternativet Exportera som är till JSON-filer eller Azure Cosmos DB-samling .
  • När du använder aktivitetsredigering väljer du JSON-format med motsvarande filarkiv för källa eller mottagare.

Schemamappning

Information om hur du kopierar data från Azure Cosmos DB för MongoDB till tabellmottagare eller omvänd finns i schemamappning.

Specifikt för att skriva till Azure Cosmos DB, för att se till att du fyller i Azure Cosmos DB med rätt objekt-ID från dina källdata, till exempel om du har en "id"-kolumn i SQL-databastabellen och vill använda värdet för det som dokument-ID i MongoDB för insert/upsert, måste du ange rätt schemamappning enligt MongoDB strikt lägesdefinition (_id.$oid) som följande:

Kart-ID i MongoDB-mottagare

Efter kopieringsaktiviteten genereras under BSON ObjectId i mottagare:

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

En lista över datalager som kopieringsaktivitet stöder som källor och mottagare finns i datalager som stöds.