Kopírování dat z nebo do MongoDB pomocí služby Azure Data Factory nebo Synapse Analytics
PLATÍ PRO: Azure Data Factory Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Tento článek popisuje, jak pomocí aktivity kopírování v kanálech Synapse Analytics služby Azure Data Factory kopírovat data z databáze MongoDB a do databáze MongoDB. Vychází z článku s přehledem aktivity kopírování, který představuje obecný přehled aktivity kopírování.
Důležité
Nový konektor MongoDB poskytuje vylepšenou nativní podporu MongoDB. Pokud ve svém řešení používáte starší konektor MongoDB, podporuje se pouze zpětnou kompatibilitu, přečtěte si článek o konektoru MongoDB (starší verze ).
Podporované funkce
Tento konektor MongoDB je podporovaný pro následující funkce:
Podporované funkce | IR |
---|---|
aktivita Copy (zdroj/jímka) | (1) (2) |
(1) Prostředí Azure Integration Runtime (2) Místní prostředí Integration Runtime
Seznam úložišť dat podporovaných jako zdroje nebo jímky najdete v tabulce Podporované úložiště dat.
Konkrétně tento konektor MongoDB podporuje verze až 4.2. Pokud vaše práce vyžaduje novější verze než 4.2, zvažte použití MongoDB Atlas s konektorem MongoDB Atlas, který poskytuje komplexnější podporu a funkce.
Požadavky
Pokud se vaše úložiště dat nachází uvnitř místní sítě, virtuální sítě Azure nebo amazonového privátního cloudu, musíte nakonfigurovat místní prostředí Integration Runtime pro připojení k němu.
Pokud je vaše úložiště dat spravovanou cloudovou datovou službou, můžete použít Azure Integration Runtime. Pokud je přístup omezený na IP adresy schválené v pravidlech brány firewall, můžete do seznamu povolených přidat IP adresy prostředí Azure Integration Runtime.
K přístupu k místní síti bez nutnosti instalace a konfigurace místního prostředí Integration Runtime můžete také použít funkci Runtime integrace spravované virtuální sítě ve službě Azure Data Factory.
Další informace o mechanismech zabezpečení sítě a možnostech podporovaných službou Data Factory najdete v tématu Strategie přístupu k datům.
Začínáme
K provedení aktivita Copy s kanálem můžete použít jeden z následujících nástrojů nebo sad SDK:
- Nástroj pro kopírování dat
- Azure Portal
- Sada .NET SDK
- Sada Python SDK
- Azure PowerShell
- Rozhraní REST API
- Šablona Azure Resource Manageru
Vytvoření propojené služby s MongoDB pomocí uživatelského rozhraní
Pomocí následujícího postupu vytvořte propojenou službu s MongoDB v uživatelském rozhraní webu Azure Portal.
Přejděte na kartu Správa v pracovním prostoru Azure Data Factory nebo Synapse a vyberte Propojené služby a pak klikněte na Nový:
Vyhledejte MongoDB a vyberte konektor MongoDB.
Nakonfigurujte podrobnosti o službě, otestujte připojení a vytvořte novou propojenou službu.
Podrobnosti konfigurace konektoru
Následující části obsahují podrobnosti o vlastnostech, které slouží k definování entit služby Data Factory specifických pro konektor MongoDB.
Vlastnosti propojené služby
Propojené služby MongoDB podporují následující vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
type | Vlastnost typu musí být nastavena na: MongoDbV2. | Ano |
připojovací řetězec | Zadejte připojovací řetězec MongoDB, například mongodb://[username:password@]host[:port][/[database][?options]] . Další podrobnosti najdete v příručce k MongoDB na připojovací řetězec. Do služby Azure Key Vault můžete také umístit připojovací řetězec. Další podrobnosti najdete v tématu Ukládání přihlašovacích údajů ve službě Azure Key Vault . |
Ano |
database | Název databáze, ke které chcete získat přístup. | Ano |
connectVia | Prostředí Integration Runtime , které se má použít pro připojení k úložišti dat. Další informace najdete v části Požadavky . Pokud není zadaný, použije výchozí prostředí Azure Integration Runtime. | No |
Příklad:
{
"name": "MongoDBLinkedService",
"properties": {
"type": "MongoDbV2",
"typeProperties": {
"connectionString": "mongodb://[username:password@]host[:port][/[database][?options]]",
"database": "myDatabase"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Vlastnosti datové sady
Úplný seznam oddílů a vlastností, které jsou k dispozici pro definování datových sad, najdete v tématu Datové sady a propojené služby. Pro datovou sadu MongoDB se podporují následující vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
type | Vlastnost typu datové sady musí být nastavena na: MongoDbV2Collection. | Ano |
collectionName | Název kolekce v databázi MongoDB | Ano |
Příklad:
{
"name": "MongoDbDataset",
"properties": {
"type": "MongoDbV2Collection",
"typeProperties": {
"collectionName": "<Collection name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<MongoDB linked service name>",
"type": "LinkedServiceReference"
}
}
}
Vlastnosti aktivity kopírování
Úplný seznam oddílů a vlastností dostupných pro definování aktivit najdete v článku Pipelines . Tato část obsahuje seznam vlastností podporovaných zdrojem a jímkou MongoDB.
MongoDB jako zdroj
Ve zdrojové části aktivity kopírování jsou podporovány následující vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
type | Vlastnost typu zdroje aktivity kopírování musí být nastavena na: MongoDbV2Source | Ano |
filter | Určuje filtr výběru pomocí operátorů dotazu. Pokud chcete vrátit všechny dokumenty v kolekci, vynecháte tento parametr nebo předejte prázdný dokument ({}). | No |
cursorMethods.project | Určuje pole, která se mají vrátit do dokumentů pro projekci. Pokud chcete vrátit všechna pole v odpovídajících dokumentech, tento parametr vynecháte. | No |
cursorMethods.sort | Určuje pořadí, ve kterém dotaz vrací odpovídající dokumenty. Odkaz na cursor.sort() | No |
cursorMethods.limit | Určuje maximální počet dokumentů, které server vrátí. Odkaz na cursor.limit(). | No |
cursorMethods.skip | Určuje počet dokumentů, které se mají přeskočit a odkud MongoDB začne vracet výsledky. Odkaz na cursor.skip() | No |
batchSize | Určuje počet dokumentů, které se mají vrátit v každé dávce odpovědi z instance MongoDB. Ve většině případů změna velikosti dávky neovlivní uživatele ani aplikaci. Azure Cosmos DB omezuje každou dávku na velikost 40 MB, což je součet velikosti batchSize počtu dokumentů, takže tuto hodnotu snižte, pokud je velikost dokumentu velká. | No (výchozí hodnota je 100) |
Tip
Služba podporuje používání dokumentu BSON v přísném režimu. Ujistěte se, že je váš dotaz filtru v přísném režimu místo v režimu Prostředí. Další popis najdete v příručce k MongoDB.
Příklad:
"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 jako jímka
V části Jímka aktivity kopírování se podporují následující vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
type | Vlastnost typu jímky aktivity kopírování musí být nastavena na MongoDbV2Sink. | Ano |
writeBehavior | Popisuje, jak zapisovat data do MongoDB. Povolené hodnoty: vložení a upsert. Chování funkce upsert je nahradit dokument, pokud už dokument _id existuje, jinak dokument vložte.Poznámka: Služba automaticky vygeneruje _id dokument, pokud _id není zadán buď v původním dokumentu, nebo podle mapování sloupců. To znamená, že musíte zajistit, aby upsert fungoval očekávaným způsobem, má dokument ID. |
No (výchozí hodnota je vložení) |
writeBatchSize | Vlastnost writeBatchSize řídí velikost dokumentů, které se mají zapisovat v každé dávce. Pokud je velikost dokumentu velká, můžete zkusit zvýšit hodnotu writeBatchSize a zvýšit výkon a snížit hodnotu. | No (výchozí hodnota je 10 000) |
writeBatchTimeout | Doba čekání, než se operace dávkového vložení dokončí, než vyprší časový limit. Povolená hodnota je časový rozsah. | No (Výchozí hodnota je 00:30:00 až 30 minut) |
Tip
Pokud chcete importovat dokumenty JSON tak, jak je, přečtěte si část Import nebo export dokumentů JSON. Pokud chcete kopírovat z tabulkových dat ve tvaru, přečtěte si mapování schématu.
Příklad
"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"
}
}
}
]
Import a export dokumentů JSON
Pomocí tohoto konektoru MongoDB můžete snadno:
- Kopírování dokumentů mezi dvěma kolekcemi MongoDB tak, jak je.
- Importujte dokumenty JSON z různých zdrojů do MongoDB, včetně z Azure Cosmos DB, Azure Blob Storage, Azure Data Lake Store a dalších podporovaných úložišť založených na souborech.
- Exportujte dokumenty JSON z kolekce MongoDB do různých souborových úložišť.
Pokud chcete takové kopírování nezávislé na schématu dosáhnout, přeskočte část "struktura" (označovaná také jako schéma) v datové sadě a mapování schématu v aktivitě kopírování.
Schema mapping
Pokud chcete kopírovat data z MongoDB do tabulkové jímky nebo obráceně, přečtěte si mapování schématu.
Upgrade propojené služby MongoDB
Tady jsou kroky, které vám pomůžou upgradovat propojenou službu a související dotazy:
Vytvořte novou propojenou službu MongoDB a nakonfigurujte ji pomocí odkazů na vlastnosti propojené služby.
Pokud ve svých kanálech používáte dotazy SQL, které odkazují na starou propojenou službu MongoDB, nahraďte je ekvivalentními dotazy MongoDB. Příklady nahrazení najdete v následující tabulce:
Dotaz SQL Ekvivalentní dotaz MongoDB SELECT * FROM users
db.users.find({})
SELECT username, age FROM users
db.users.find({}, {username: 1, age: 1})
SELECT username AS User, age AS Age, statusNumber AS Status, CASE WHEN Status = 0 THEN "Pending" CASE WHEN Status = 1 THEN "Finished" ELSE "Unknown" END AS statusEnum LastUpdatedTime + interval '2' hour AS NewLastUpdatedTime FROM users
db.users.aggregate([{ $project: { _id: 0, User: "$username", Age: "$age", Status: "$statusNumber", statusEnum: { $switch: { branches: [ { case: { $eq: ["$Status", 0] }, then: "Pending" }, { case: { $eq: ["$Status", 1] }, then: "Finished" } ], default: "Unknown" } }, NewLastUpdatedTime: { $add: ["$LastUpdatedTime", 2 * 60 * 60 * 1000] } } }])
SELECT employees.name, departments.name AS department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.id;
db.employees.aggregate([ { $lookup: { from: "departments", localField: "department_id", foreignField: "_id", as: "department" } }, { $unwind: "$department" }, { $project: { _id: 0, name: 1, department_name: "$department.name" } } ])
Související obsah
Seznam úložišť dat podporovaných jako zdroje a jímky aktivitou kopírování najdete v podporovaných úložištích dat.