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:
- Az Adatok másolása eszköz
- The Azure portal
- A .NET SDK
- A Python SDK
- Azure PowerShell
- A REST API
- Az Azure Resource Manager-sablon
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.
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:
Keresse meg a MongoDB-t, és válassza ki a MongoDB-összekötőt.
Konfigurálja a szolgáltatás részleteit, tesztelje a kapcsolatot, és hozza létre az új társított szolgáltatást.
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:
Hozzon létre egy új MongoDB társított szolgáltatást, és konfigurálja a csatolt szolgáltatás tulajdonságaira hivatkozva.
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" } } ])
Kapcsolódó tartalom
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.