Sdílet prostřednictvím


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:

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.

  1. 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ý:

  2. Vyhledejte MongoDB a vyberte konektor MongoDB.

    Vyberte konektor MongoDB.

  3. Nakonfigurujte podrobnosti o službě, otestujte připojení a vytvořte novou propojenou službu.

    Nakonfigurujte propojenou službu s MongoDB.

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:

  1. Vytvořte novou propojenou službu MongoDB a nakonfigurujte ji pomocí odkazů na vlastnosti propojené služby.

  2. 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" } } ])

Seznam úložišť dat podporovaných jako zdroje a jímky aktivitou kopírování najdete v podporovaných úložištích dat.