Copiare dati da o verso Azure Cosmos DB for MongoDB usando Azure Data Factory o Synapse Analytics
SI APPLICA A: Azure Data Factory Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!
Questo articolo illustra come usare l'attività di copia nelle pipeline di Azure Data Factory e Synapse Analytics per copiare dati da e verso Azure Cosmos DB for MongoDB. L'articolo è basato su Attività Copy, dove viene presentata una panoramica generale dell'attività Copy.
Nota
Questo connettore supporta solo la copia di dati da o verso Azure Cosmos DB for MongoDB. Per Azure Cosmos DB for NoSQL, vedere il Connettore Azure Cosmos DB for NoSQL. Al momento non sono supportati altri tipi di API.
Funzionalità supportate
Questo connettore Azure Cosmos DB for MongoDB è supportato per le funzionalità seguenti:
Funzionalità supportate | IR | Endpoint privato gestito |
---|---|---|
Attività di copia (origine/sink) | 7.3 | ✓ |
① Runtime di integrazione di Azure ② Runtime di integrazione self-hosted
È possibile copiare dati da Azure Cosmos DB for MongoDB in qualsiasi archivio dati sink supportato o da qualsiasi archivio dati di origine supportato in Azure Cosmos DB for MongoDB. Per un elenco degli archivi dati supportati dall'attività di copia come origini e sink, vedere Archivi dati e formati supportati.
È possibile usare il connettore Azure Cosmos DB for MongoDB per:
- Copiare dati da e verso Azure Cosmos DB for MongoDB.
- Scrivere in Azure Cosmos DB tramite insert o upsert.
- Importare ed esportare documenti JSON come sono o copiare dati da o in un set di dati tabulari, ad esempio un database SQL e un file CSV. Per copiare documenti come sono da o in file JSON oppure da o in un'altra raccolta di Azure Cosmos DB, vedere Importare o esportare documenti JSON.
Operazioni preliminari
Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:
- Strumento Copia dati
- Il portale di Azure
- .NET SDK
- SDK di Python
- Azure PowerShell
- API REST
- Modello di Azure Resource Manager
Creare un servizio collegato per Azure Cosmos DB for MongoDB usando l'interfaccia utente
Usare la procedura seguente per creare un servizio collegato per Azure Cosmos DB for MongoDB nell'interfaccia utente del portale di Azure.
Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:
Cercare Azure Cosmos DB for MongoDB e selezionare tale connettore.
Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.
Dettagli di configurazione del connettore
Le sezioni seguenti presentano informazioni dettagliate sulle proprietà che è possibile usare per definire entità di Data Factory specifiche per Azure Cosmos DB for MongoDB.
Proprietà del servizio collegato
Per il servizio collegato di Azure Cosmos DB for MongoDB sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type deve essere impostata su CosmosDbMongoDbApi. | Sì |
connectionString | Specificare la stringa di connessione per Azure Cosmos DB for MongoDB. È possibile trovarla nel portale di Azure -> pannello Azure Cosmos DB -> stringa di connessione primaria o secondaria. Per la versione del server 3.2, il modello di stringa è mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb . Per le versioni del server 3.6+, il modello di stringa è mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<cosmosdb-name>@ .È anche possibile inserire una password in Azure Key Vault ed eseguire lo spostamento forzato dei dati della configurazione password all'esterno della stringa di connessione. Per altri dettagli, vedere Archiviare le credenziali in Azure Key Vault. |
Sì |
database | Nome del database a cui si vuole accedere. | Sì |
isServerVersionAbove32 | Specificare se la versione del server è superiore alla 3.2. I valori consentiti sono true e false (predefinito). Ciò determinerà il driver da usare nel servizio. | Sì |
connectVia | Runtime di integrazione da usare per la connessione all'archivio dati. È possibile usare Azure Integration Runtime o un runtime di integrazione self-hosted (se l'archivio dati si trova in una rete privata). Se questa proprietà non è specificata, come valore predefinito viene usato Azure Integration Runtime. | No |
Esempio
{
"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"
}
}
}
Proprietà del set di dati
Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere Set di dati e servizi collegati. Per il set di dati di Azure Cosmos DB for MongoDB sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type del set di dati deve essere impostata su CosmosDbMongoDbApiCollection. | Sì |
collectionName | Nome della raccolta di Azure Cosmos DB. | Sì |
Esempio
{
"name": "CosmosDbMongoDBAPIDataset",
"properties": {
"type": "CosmosDbMongoDbApiCollection",
"typeProperties": {
"collectionName": "<collection name>"
},
"schema": [],
"linkedServiceName":{
"referenceName": "<Azure Cosmos DB for MongoDB linked service name>",
"type": "LinkedServiceReference"
}
}
}
Proprietà dell'attività di copia
Questa sezione fornisce un elenco delle proprietà supportate dall'origine e dal sink di Azure Cosmos DB for MongoDB.
Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere Pipeline.
Azure Cosmos DB for MongoDB come origine
Nella sezione source dell'attività di copia sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type dell'origine dell'attività di copia deve essere impostata su CosmosDbMongoDbApiSource. | Sì |
filter | Specifica il filtro di selezione usando gli operatori di query. Per restituire tutti i documenti in una raccolta, omettere questo parametro o passare un documento vuoto ({}). | No |
cursorMethods.project | Specifica i campi da restituire nei documenti per la proiezione. Per restituire tutti i campi nei documenti corrispondenti, omettere questo parametro. | No |
cursorMethods.sort | Specifica l'ordine in cui la query restituisce i documenti corrispondenti. Fare riferimento a cursor.sort(). | No |
cursorMethods.limit | Specifica il numero massimo di documenti restituiti dal server. Fare riferimento a cursor.limit(). | No |
cursorMethods.skip | Specifica il numero di documenti da ignorare e la posizione da cui MongoDB inizia a restituire i risultati. Fare riferimento a cursor.skip(). | No |
batchSize | Specifica il numero di documenti da restituire in ogni batch di risposta dall'istanza di MongoDB. Nella maggior parte dei casi, la modifica della dimensione del batch non influisce sull'utente o sull'applicazione. Il limite massimo di Azure Cosmos DB per ogni batch è di 40 MB, che corrisponde alla somma delle dimensioni del numero di documenti definiti in batchSize. Diminuire questo valore se si hanno documenti di grandi dimensioni. | No (il valore predefinito è 100) |
Suggerimento
Azure Data Factory supporta l'utilizzo di documenti BSON in modalità strict. Assicurarsi che la query di filtro sia in modalità strict anziché in modalità shell. Per altre informazioni, vedere il manuale di MongoDB.
Esempio
"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 come sink
Nella sezione sink dell'attività di copia sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type del sink dell'attività di copia deve essere impostata su CosmosDbMongoDbApiSink. | Sì |
writeBehavior | Descrive come scrivere i dati in Azure Cosmos DB. Valori consentiti: insert e upsert. Il comportamento di upsert consiste nella sostituzione del documento se esiste già un documento con lo stesso _id . In caso contrario, il documento viene inserito.Nota: il servizio genera automaticamente un _id per un documento se non è specificato un _id nel documento originale o tramite il mapping di colonna. È quindi necessario assicurarsi che il documento contenga un ID in modo che upsert funzioni come previsto. |
No (il valore predefinito è insert) |
writeBatchSize | La proprietà writeBatchSize controlla le dimensioni dei documenti da scrivere in ogni batch. È possibile provare ad aumentare il valore di writeBatchSize per migliorare le prestazioni e a ridurre il valore se le dimensioni dei documenti sono troppo grandi. | No (il valore predefinito è 10.000) |
writeBatchTimeout | Tempo di attesa per il completamento dell'operazione di inserimento batch prima del timeout. Il valore consentito è timespan. | No (il valore predefinito è 00:30:00 - 30 minuti) |
Suggerimento
Per importare documenti JSON come sono, fare riferimento alla sezione Importare o esportare documenti JSON. Per copiare da dati in forma tabulare, fare riferimento a Mapping dello schema.
Esempio
"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"
}
}
}
]
Importare ed esportare documenti JSON
È possibile usare questo connettore di Azure Cosmos DB per eseguire facilmente le operazioni seguenti:
- Copiare documenti come sono da una raccolta di Azure Cosmos DB a un'altra.
- Importare in Azure Cosmos DB documenti JSON da varie origini, tra cui MongoDB, Archiviazione BLOB di Azure, Azure Data Lake Store e altri archivi basati su file supportati dal servizio.
- Esportare documenti JSON da una raccolta di Azure Cosmos DB in diversi archivi basati su file.
Per ottenere la copia senza schema:
- Quando si usa lo strumento Copia dati, selezionare l'opzione Esporta così com'è in file JSON o in una raccolta di Azure Cosmos DB.
- Quando si usa la creazione di attività, scegliere il formato JSON con l'archivio file corrispondente per l'origine o il sink.
Mapping dello schema
Per copiare dati da Azure Cosmos DB for MongoDB in un sink tabulare o viceversa, fare riferimento al mapping dello schema.
In modo specifico per la scrittura in Azure Cosmos DB, per inserire in Azure Cosmos DB l'ID dell'oggetto corretto dai dati di origine (ad esempio, nella tabella del database SQL è presente una colonna "id" e si vuole usare il relativo valore come ID del documento in MongoDB per insert/upsert) è necessario impostare il mapping dello schema appropriato in base alla definizione della modalità strict di MongoDB (_id.$oid
) come illustrato di seguito:
Dopo l'esecuzione dell'attività di copia, nel sink viene generato il valore ObjectId BSON indicato di seguito:
{
"_id": ObjectId("592e07800000000000000000")
}
Contenuto correlato
Per un elenco degli archivi dati supportati dall'attività Copy come origini e sink, vedere Archivi dati supportati.