Adatok másolása a MongoDB-ből vagy a MongoDB-be az Azure Data Factory vagy a Synapse Analytics használatával

A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics

Tipp.

Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!

Ez a cikk azt ismerteti, hogyan használhatja a Másolási tevékenységet az Azure Data Factory Synapse Analytics-folyamatokban az adatok MongoDB-adatbázisból és -adatbázisba való másolásához. A másolási tevékenység áttekintési cikkére épül, amely a másolási tevékenység általános áttekintését mutatja be.

Fontos

Az új MongoDB-összekötő továbbfejlesztett natív MongoDB-támogatást biztosít. Ha a régi MongoDB-összekötőt használja a megoldásban, a támogatott verzió csak a visszamenőleges kompatibilitást szolgálja, tekintse meg a MongoDB-összekötő (örökölt) cikkét.

Támogatott képességek

Ez a MongoDB-összekötő a következő képességeket támogatja:

Támogatott képességek IR
Copy tevékenység (forrás/fogadó) ① ②

(1) Azure-integrációs modul (2) Saját üzemeltetésű integrációs modul

A forrásként/fogadóként támogatott adattárak listáját a Támogatott adattárak táblában találja.

Ez a MongoDB-összekötő egészen a 4.2-ig tartó verziókat támogatja.

Előfeltételek

Ha az adattár helyszíni hálózaton, Azure-beli virtuális hálózaton vagy Amazon Virtual Private Cloudon belül található, konfigurálnia kell egy saját üzemeltetésű integrációs modult a csatlakozáshoz.

Ha az adattár felügyelt felhőalapú adatszolgáltatás, használhatja az Azure Integration Runtime-ot. Ha a hozzáférés a tűzfalszabályokban jóváhagyott IP-címekre korlátozódik, hozzáadhat azure integration runtime IP-eket az engedélyezési listához.

Az Azure Data Factory felügyelt virtuális hálózati integrációs moduljával is elérheti a helyszíni hálózatot anélkül, hogy saját üzemeltetésű integrációs modult telepítene és konfigurálna.

A Data Factory által támogatott hálózati biztonsági mechanizmusokkal és lehetőségekkel kapcsolatos további információkért lásd az adathozzáférési stratégiákat.

Első lépések

A Copy tevékenység folyamattal való végrehajtásához használja az alábbi eszközök vagy SDK-k egyikét:

Társított szolgáltatás létrehozása a MongoDB-hez felhasználói felületen

Az alábbi lépésekkel hozzon létre egy társított szolgáltatást a MongoDB-hez az Azure Portal felhasználói felületén.

  1. Keresse meg az Azure Data Factory vagy a Synapse-munkaterület Kezelés lapját, és válassza a Társított szolgáltatások lehetőséget, majd kattintson az Új gombra:

  2. Keresse meg a MongoDB-t, és válassza ki a MongoDB-összekötőt.

    Select the MongoDB connector.

  3. Konfigurálja a szolgáltatás részleteit, tesztelje a kapcsolatot, és hozza létre az új társított szolgáltatást.

    Configure a linked service to MongoDB.

Csatlakozás or konfigurációjának részletei

Az alábbi szakaszok a MongoDB-összekötőre jellemző Data Factory-entitások meghatározásához használt tulajdonságok részleteit ismertetik.

Társított szolgáltatás tulajdonságai

A MongoDB társított szolgáltatás esetében a következő tulajdonságok támogatottak:

Property Leírás Required
típus A típustulajdonságnak a következőre kell beállítania: MongoDbV2 Igen
connectionString Adja meg a MongoDB kapcsolati sztring például. mongodb://[username:password@]host[:port][/[database][?options]] További részletekért tekintse meg a MongoDB kapcsolati sztring kézikönyvét.

Kapcsolati sztring is elhelyezhet az Azure Key Vaultban. További részletekért tekintse meg az Azure Key Vaultban tárolt hitelesítő adatokat.
Igen
adatbázis A elérni kívánt adatbázis neve. Igen
connectVia Az adattárhoz való csatlakozáshoz használandó integrációs modul . További információ az Előfeltételek szakaszból. Ha nincs megadva, az alapértelmezett Azure Integration Runtime-t használja. Nem

Példa

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDbV2",
        "typeProperties": {
            "connectionString": "mongodb://[username:password@]host[:port][/[database][?options]]",
            "database": "myDatabase"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Adathalmaz tulajdonságai

Az adathalmazok meghatározásához elérhető szakaszok és tulajdonságok teljes listáját az Adathalmazok és a csatolt szolgáltatások című témakörben találja. A MongoDB-adathalmaz esetében a következő tulajdonságok támogatottak:

Property Leírás Required
típus Az adathalmaz típustulajdonságának a következőnek kell lennie: MongoDbV2Collection Igen
Lekérdezés_neve A MongoDB-adatbázisban található gyűjtemény neve. Igen

Példa

{
    "name": "MongoDbDataset",
    "properties": {
        "type": "MongoDbV2Collection",
        "typeProperties": {
            "collectionName": "<Collection name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<MongoDB linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Másolási tevékenység tulajdonságai

A tevékenységek meghatározásához elérhető szakaszok és tulajdonságok teljes listáját a Folyamatok című cikkben találja. Ez a szakasz a MongoDB-forrás és fogadó által támogatott tulajdonságok listáját tartalmazza.

MongoDB mint forrás

A másolási tevékenység forrás szakaszában a következő tulajdonságok támogatottak:

Property Leírás Required
típus A másolási tevékenység forrásának típustulajdonságának a következőnek kell lennie: MongoDbV2Source Igen
szűrő Választószűrőt ad meg lekérdezési operátorokkal. Ha egy gyűjtemény összes dokumentumát vissza szeretné adni, hagyja ki ezt a paramétert, vagy adjon át egy üres dokumentumot ({}). Nem
cursorMethods.project Megadja azokat a mezőket, amelyeket vissza szeretne adni a dokumentumokban a vetítéshez. Ha az egyező dokumentumok összes mezőjét vissza szeretné adni, hagyja ki ezt a paramétert. Nem
cursorMethods.sort Azt a sorrendet adja meg, amelyben a lekérdezés egyező dokumentumokat ad vissza. Lásd: cursor.sort(). Nem
cursorMethods.limit A kiszolgáló által visszaadott dokumentumok maximális számát adja meg. Lásd: cursor.limit(). Nem
cursorMethods.skip Megadja azoknak a dokumentumoknak a számát, amelyeket kihagyhat, és ahonnan a MongoDB megkezdi az eredmények visszaadását. Lásd: cursor.skip(). Nem
batchSize A MongoDB-példány válaszainak minden egyes kötegében visszaadandó dokumentumok számát adja meg. A legtöbb esetben a köteg méretének módosítása nem befolyásolja a felhasználót vagy az alkalmazást. Az Azure Cosmos DB korlátozza, hogy az egyes kötegek mérete nem haladhatja meg a 40 MB-ot, ami a batchSize számú dokumentumméret összege, ezért csökkentse ezt az értéket, ha a dokumentum mérete nagy. Nem
(az alapértelmezett érték 100)

Tipp.

A szolgáltatás támogatja a BSON-dokumentumok szigorú módban való használatát. Győződjön meg arról, hogy a szűrő lekérdezése Szigorú módban van a Shell mód helyett. További leírást a MongoDB kézikönyvében talál.

Példa

"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 mint fogadó

A Másolási tevékenység fogadó szakasz a következő tulajdonságokat támogatja:

Property Leírás Required
típus A Másolási tevékenység fogadó típustulajdonságának MongoDbV2Sink értékre kell állítania. Igen
writeBehavior Ismerteti, hogyan írhat adatokat a MongoDB-be. Engedélyezett értékek: beszúrás és beillesztés.

Az upsert viselkedése az, hogy lecseréli a dokumentumot, ha már létezik ilyen _id dokumentum; ellenkező esetben szúrja be a dokumentumot.

Megjegyzés: A szolgáltatás automatikusan létrehoz egy _id dokumentumot, ha _id nincs megadva sem az eredeti dokumentumban, sem az oszlopleképezésben. Ez azt jelenti, hogy gondoskodnia kell arról, hogy a upsert a várt módon működjön, a dokumentum azonosítóval rendelkezik.
Nem
(az alapértelmezett beállítás a beszúrás)
writeBatchSize A writeBatchSize tulajdonság szabályozza az egyes kötegekben írandó dokumentumok méretét. A writeBatchSize értékének növelésével javíthatja a teljesítményt, és csökkentheti az értéket, ha a dokumentum mérete nagy. Nem
(az alapértelmezett érték 10 000)
writeBatchTimeout A köteg beszúrási műveletének várakozási ideje, mielőtt túllépi az időkorlátot. Az engedélyezett érték az időbélyeg. Nem
(az alapértelmezett érték 00:30:00 – 30 perc)

Tipp.

JSON-dokumentumok importálásához tekintse meg a JSON-dokumentumok importálását vagy exportálását ismertető szakaszt. A táblázatos formátumú adatok másolásához tekintse meg a sémaleképezést.

Példa

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

JSON-dokumentumok importálása és exportálása

Ezt a MongoDB-összekötőt egyszerűen használhatja:

  • Dokumentumok másolása két MongoDB-gyűjtemény között.
  • JSON-dokumentumokat importálhat különböző forrásokból a MongoDB-be, például az Azure Cosmos DB-ből, az Azure Blob Storage-ból, az Azure Data Lake Store-ból és más támogatott fájlalapú tárolókból.
  • JSON-dokumentumok exportálása MongoDB-gyűjteményből különböző fájlalapú tárolókba.

Az ilyen séma-agnosztikus másolás eléréséhez hagyja ki a "struktúra" (más néven séma) szakaszt az adathalmazban és a sémaleképezést a másolási tevékenységben.

Séma-hozzárendelés

Ha adatokat szeretne átmásolni a MongoDB-ből táblázatos fogadóba vagy fordítottba, tekintse meg a sémaleképezést.

A MongoDB társított szolgáltatás frissítése

Az alábbi lépések segítenek a csatolt szolgáltatás és a kapcsolódó lekérdezések frissítésében:

  1. Hozzon létre egy új MongoDB társított szolgáltatást, és konfigurálja a csatolt szolgáltatás tulajdonságaira hivatkozva.

  2. Ha olyan SQL-lekérdezéseket használ a folyamatokban, amelyek a régi MongoDB társított szolgáltatásra hivatkoznak, cserélje le őket az egyenértékű MongoDB-lekérdezésekre. A helyettesítő példákért tekintse meg a következő táblázatot:

    SQL-lekérdezés Egyenértékű MongoDB-lekérdezés
    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" } } ])

A másolási tevékenység által forrásként és fogadóként támogatott adattárak listáját a támogatott adattárakban találja.