Menyalin data ke atau dari Azure Cosmos DB untuk MongoDB menggunakan Azure Data Factory atau Synapse Analytics

BERLAKU UNTUK:Azure Data Factory Azure Synapse Analytics

Tip

Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!

Artikel ini menguraikan cara menggunakan Aktivitas Salin di alur Azure Data Factory dan Synapse Analytics untuk menyalin data dari dan ke Azure Cosmos DB untuk MongoDB. Artikel ini dibuat berdasarkan Aktivitas Salin, yang menyajikan ikhtisar umum tentang Aktivitas Salin.

Catatan

Konektor ini hanya mendukung penyalinan data ke/dari Azure Cosmos DB untuk MongoDB. Untuk Azure Cosmos DB for NoSQL, lihat konektor Azure Cosmos DB for NoSQL. Jenis API lainnya saat ini tidak didukung.

Kemampuan yang didukung

Konektor Azure Cosmos DB for MongoDB ini didukung untuk kemampuan berikut:

Kemampuan yang didukung IR Titik akhir privat terkelola
Salin aktivitas (sumber/sink) ① ②

① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri

Anda dapat menyalin data dari Azure Cosmos DB untuk MongoDB ke penyimpanan data sink yang didukung, atau menyalin data dari penyimpanan data sumber yang didukung ke Azure Cosmos DB for MongoDB. Untuk daftar penyimpanan data yang didukung Aktivitas Salin sebagai sumber dan sink, lihat Penyimpanan dan format data yang didukung.

Anda dapat menggunakan konektor Azure Cosmos DB for MongoDB untuk:

  • Salin data dari dan ke Azure Cosmos DB untuk MongoDB.
  • Menulis ke Azure Cosmos DB sebagai sisipkan atau upsert.
  • Mengimpor dan mengekspor dokumen JSON sebagaimana adanya, atau menyalin data dari atau ke himpunan data tabular. Contohnya termasuk database SQL dan file CSV. Untuk menyalin dokumen sebagaimana adanya ke atau dari file JSON atau ke atau dari koleksi Azure Cosmos DB lainnya, lihat Mengimpor atau mengekspor dokumen JSON.

Mulai

Untuk melakukan aktivitas Salin dengan alur, Anda dapat menggunakan salah satu alat atau SDK berikut:

Membuat layanan tertaut ke Azure Cosmos DB untuk MongoDB menggunakan UI

Gunakan langkah-langkah berikut untuk membuat layanan tertaut ke Azure Cosmos DB for MongoDB di UI portal Azure.

  1. Telusuri ke tab Kelola di ruang kerja Azure Data Factory atau Synapse Anda dan pilih Layanan Tertaut, lalu klik Baru:

  2. Cari Azure Cosmos DB untuk MongoDB dan pilih konektor tersebut.

    Select the Azure Cosmos DB for MongoDB connector.

  3. Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.

    Configure a linked service to Azure Cosmos DB for MongoDB.

Detail konfigurasi konektor

Bagian berikut ini menyediakan detail tentang properti yang dapat Anda gunakan untuk menentukan entitas Data Factory yang khusus untuk Azure Cosmos DB untuk MongoDB.

Properti layanan tertaut

Properti berikut ini didukung untuk layanan tertaut Azure Cosmos DB for MongoDB:

Properti Deskripsi Wajib
jenis Properti jenis harus diatur ke CosmosDbMongoDbApi. Ya
connectionString Tentukan string koneksi untuk Azure Cosmos DB untuk MongoDB Anda. Anda dapat menemukannya di portal Azure -> bilah Azure Cosmos DB Anda -> string koneksi primer atau sekunder.
Untuk versi server 3.2, pola string adalah mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb.
Untuk versi server 3.6+, pola string adalah mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<cosmosdb-name>@.

Anda juga dapat meletakkan kata sandi di Azure Key Vault dan menarik konfigurasi password dari string koneksi. Lihat Menyimpan informasi masuk di Azure Key Vault dengan detail selengkapnya.
Ya
database Nama database yang ingin Anda akses. Ya
isServerVersionAbove32 Tentukan apakah versi server di atas 3.2. Nilai yang diperbolehkan adalah true dan false(default). Ini akan menentukan pengemudi untuk digunakan dalam layanan. Ya
connectVia Integration Runtime digunakan untuk menyambungkan ke penyimpanan data. Anda dapat menggunakan Integration Runtime Azure atau runtime integrasi yang dihost sendiri (jika penyimpanan data Anda berada di jaringan privat). Jika properti ini tidak ditentukan, Integration Runtime Azure default akan digunakan. Tidak

Contoh

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

Properti himpunan data

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat Himpunan data dan layanan tertaut. Properti berikut ini didukung untuk himpunan data Azure Cosmos DB untuk MongoDB:

Properti Deskripsi Wajib
jenis Properti jenis himpunan data harus diatur ke CosmosDbMongoDbApiCollection. Ya
collectionName Nama koleksi Azure Cosmos DB. Ya

Contoh

{
    "name": "CosmosDbMongoDBAPIDataset",
    "properties": {
        "type": "CosmosDbMongoDbApiCollection",
        "typeProperties": {
            "collectionName": "<collection name>"
        },
        "schema": [],
        "linkedServiceName":{
            "referenceName": "<Azure Cosmos DB for MongoDB linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Properti Aktivitas Salin

Bagian ini menyediakan daftar properti yang didukung sumber dan sink Azure Cosmos DB untuk MongoDB.

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan aktivitas, lihat Alur.

Azure Cosmos DB untuk MongoDB sebagai sumber

Properti berikut ini didukung di bagian sumber Aktivitas Penyalinan:

Properti Deskripsi Wajib
jenis Properti jenis sumber aktivitas salin harus diatur ke CosmosDbMongoDbApiSource. Ya
filter Menentukan filter pilihan menggunakan operator kueri. Untuk mengembalikan semua dokumen dalam koleksi, hilangkan parameter ini atau teruskan dokumen kosong ({}). Tidak
cursorMethods.project Menentukan bidang yang akan dikembalikan dalam dokumen untuk proyeksi. Untuk mengembalikan semua bidang dalam dokumen yang cocok, hilangkan parameter ini. Tidak
cursorMethods.sort Menentukan urutan kueri mengembalikan dokumen yang cocok. Lihat cursor.sort(). Tidak
cursorMethods.limit Menentukan jumlah maksimum dokumen yang dikembalikan server. Lihat cursor.limit(). Tidak
cursorMethods.skip Menentukan jumlah dokumen yang akan dilompati dan dari mana MongoDB mulai mengembalikan hasil. Lihat cursor.skip(). Tidak
batchSize Menentukan jumlah dokumen yang akan dikembalikan di setiap batch respons dari instans MongoDB. Dalam kebanyakan kasus, memodifikasi ukuran batch tidak akan mempengaruhi pengguna atau aplikasi. Azure Cosmos DB membatasi setiap batch tidak boleh melebihi ukuran 40MB, yang merupakan jumlah ukuran dokumen batchSize, jadi kurangi nilai ini jika ukuran dokumen Anda besar. Tidak
(defaultnya adalah 100)

Tip

Dukungan ADF menggunakan dokumen BSON dalam mode Ketat. Pastikan kueri filter Anda dalam mode Ketat, bukan mode Shell. Deskripsi lebih lanjut dapat ditemukan di manual MongoDB.

Contoh

"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 untuk MongoDB sebagai sink

Properti berikut ini didukung di Salin Aktivitas bagian sink:

Properti Deskripsi Wajib
jenis Properti jenis sink Aktivitas Salin harus diatur menjadi CosmosDbMongoDbApiSink. Ya
writeBehavior Menjelaskan cara menulis data ke Azure Cosmos DB. Nilai yang diperbolehkan sisipkan dan upsert.

Perilaku upsert bertujuan mengganti dokumen jika dokumen dengan _id yang sama sudah ada; jika tidak, sisipkan dokumen.

Catatan: Layanan secara otomatis membuat _id untuk dokumen jika _id tidak ditentukan baik dalam dokumen asli atau dengan pemetaan kolom. Artinya Anda harus memastikan bahwa, agar upsert berfungsi seperti yang diharapkan, dokumen Anda harus memiliki ID.
Tidak
(defaultnya adalah sisipkan)
writeBatchSize Properti writeBatchSize mengontrol ukuran dokumen yang ditulis di setiap batch. Anda dapat mencoba meningkatkan nilai untuk writeBatchSize untuk meningkatkan performa dan mengurangi nilai jika ukuran dokumen Anda besar. Tidak
(Nilai defaultnya adalah 10,000)
writeBatchTimeout Waktu tunggu untuk operasi insert batch selesai sebelum waktu habis. Nilai yang diperbolehkan adalah rentang waktu. Tidak
(defaultnya adalah 00:30:00 - 30 menit)

Tip

Untuk mengimpor dokumen JSON sebagaimana adanya, lihat bagian Mengimpor atau mengekspor dokumen JSON; untuk menyalin dari data berbentuk tabular, lihat pemetaan Skema.

Contoh

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

Mengimpor dan mengekspor dokumen JSON

Anda dapat menggunakan konektor Azure Cosmos DB ini untuk dengan mudah:

  • Menyalin dokumen antara dua koleksi Azure Cosmos DB sebagaimana adanya.
  • Impor dokumen JSON dari berbagai sumber ke Azure Cosmos DB, termasuk dari penyimpanan Azure Blob, Azure Data Lake Store, dan penyimpanan berbasis file lainnya yang didukung layanan.
  • Mengekspor dokumen JSON dari koleksi Azure Cosmos DB ke berbagai penyimpanan berbasis file.

Untuk mencapai salinan skema-agnostik:

  • Saat Anda menggunakan alat Salin Data, pilih opsi Ekspor apa adanya ke file JSON atau koleksi Azure Cosmos DB.
  • Saat Anda menggunakan penulisan aktivitas, pilih format JSON dengan penyimpanan file yang sesuai untuk sumber atau sink.

Pemetaan skema

Untuk menyalin data dari Azure Cosmos DB untuk MongoDB ke sink tabular atau terbalik, lihat pemetaan skema.

Khusus untuk menulis ke Azure Cosmos DB, untuk memastikan Anda mengisi Azure Cosmos DB dengan ID objek yang tepat dari data sumber Anda, misalnya, Anda memiliki kolom "id" dalam tabel database SQL dan ingin menggunakan nilainya sebagai ID dokumen di MongoDB untuk insert/upsert, Anda perlu mengatur pemetaan skema yang tepat sesuai dengan definisi mode ketat MongoDB (_id.$oid) sebagai berikut:

Map ID in MongoDB sink

Setelah eksekusi aktivitas salin, di bawah BSON ObjectId dihasilkan dalam sink:

{
    "_id": ObjectId("592e07800000000000000000")
}

Untuk daftar penyimpanan data yang didukung oleh Copy Activity sebagai sumber dan sink, lihat penyimpanan data yang didukung.