Untuk mengakses versi alat yang diarsipkan, navigasikan ke cabang Arsip .
Alat Migrasi Data Desktop Azure Cosmos DB adalah proyek sumber terbuka yang berisi aplikasi baris perintah yang menyediakan fungsionalitas impor dan ekspor untuk Azure Cosmos DB.
Untuk menggunakan alat ini, unduh file zip terbaru untuk platform Anda (win-x64, mac-x64, atau linux-x64) dari Rilis dan ekstrak semua file ke lokasi instalasi yang Anda inginkan. Untuk memulai operasi transfer data, pertama-tama isi file migrationsettings.json
dengan pengaturan yang sesuai untuk sumber data dan sink Anda (lihat petunjuk detail di bawah atau tinjau contoh), lalu jalankan aplikasi dari baris perintah: dmt.exe
di Windows atau dmt
di platform lain.
Beberapa ekstensi disediakan di repositori ini. Temukan dokumentasi penggunaan dan konfigurasi masing-masing menggunakan tautan yang disediakan:
Azure Cosmos DB
API Tabel Azure
JSON
MongoDB
SQLServer
Parket
CSV
Penyimpanan Berkas
Penyimpanan Blob Azure
AWS S3
Pencarian Kognitif Azure
Alat Migrasi Data Desktop Azure Cosmos DB adalah executable ringan yang memanfaatkan Managed Extensibility Framework (MEF). MEF memungkinkan implementasi proyek inti dan perluasannya secara terpisah. Aplikasi inti adalah baris perintah yang dapat dieksekusi yang bertanggung jawab untuk menyusun ekstensi yang diperlukan saat runtime dengan memuatnya secara otomatis dari folder Ekstensi aplikasi. Ekstensi adalah perpustakaan kelas yang mencakup implementasi Sistem sebagai Sumber dan (opsional) Sink untuk transfer data. Proyek aplikasi inti tidak berisi referensi langsung ke implementasi ekstensi apa pun. Sebaliknya, proyek-proyek ini berbagi antarmuka yang sama.
Proyek inti Alat Migrasi Data Cosmos DB adalah baris perintah C# yang dapat dieksekusi. Aplikasi inti berfungsi sebagai wadah komposisi untuk ekstensi Sumber dan Sink yang diperlukan. Oleh karena itu, pengguna aplikasi hanya perlu memasukkan rakitan perpustakaan kelas Extension yang diinginkan ke dalam folder Extensions sebelum menjalankan aplikasi. Selain itu, proyek inti memiliki proyek pengujian unit untuk melatih perilaku aplikasi, sedangkan proyek perluasan berisi pengujian integrasi konkrit yang bergantung pada sistem eksternal.
Proyek ini telah mengadopsi Kode Etik Sumber Terbuka Microsoft. Untuk informasi lebih lanjut lihat FAQ Pedoman Perilaku atau hubungi [email protected] jika ada pertanyaan atau komentar tambahan.
git clone https://github.com/AzureCosmosDB/data-migration-desktop-tool.git
Menggunakan Visual Studio 2022, buka CosmosDbDataMigrationTool.sln
.
Bangun proyek menggunakan pintasan keyboard Ctrl + Shift + B ( Cmd + Shift + B di Mac). Ini akan membangun semua proyek ekstensi saat ini serta aplikasi Inti baris perintah. Rakitan pembangunan proyek ekstensi ditulis ke folder Ekstensi dari pembangunan aplikasi Inti . Dengan cara ini semua opsi ekstensi tersedia saat aplikasi dijalankan.
Tutorial ini menguraikan cara menggunakan Alat Migrasi Data Desktop Azure Cosmos DB untuk memindahkan data JSON ke Azure Cosmos DB. Tutorial ini menggunakan Emulator Azure Cosmos DB.
Luncurkan aplikasi emulator Azure Cosmos DB dan buka https://localhost:8081/_explorer/index.html di browser.
Pilih opsi Explorer dari menu sebelah kiri. Kemudian pilih tautan Database Baru yang ada di bawah judul Tugas Umum .
Pada bilah Database Baru , masukkan datamigration
di bidang Id database , lalu pilih OK .
Jika database migrasi data tidak muncul dalam daftar database, pilih ikon Refresh .
Perluas menu elipsis di samping database migrasi data dan pilih Kontainer Baru .
Pada bilah Kontainer Baru , masukkan btcdata
di bidang Id Kontainer , dan /id
di bidang Kunci partisi . Pilih tombol OK .
Catatan : Saat menggunakan alat Migrasi Data Cosmos DB, kontainer tidak harus ada sebelumnya, kontainer akan dibuat secara otomatis menggunakan kunci partisi yang ditentukan dalam konfigurasi sink.
Setiap ekstensi berisi dokumen README yang menguraikan konfigurasi untuk migrasi data. Dalam hal ini, temukan konfigurasi untuk JSON (Sumber) dan Cosmos DB (Sink).
Di Visual Studio Solution Explorer, perluas proyek Microsoft.Data.Transfer.Core , dan buka migrasisettings.json . File ini memberikan contoh garis besar struktur file pengaturan. Dengan menggunakan dokumentasi yang ditautkan di atas, konfigurasikan bagian SourceSettings dan SinkSettings . Pastikan pengaturan FilePath adalah lokasi di mana data sampel diekstraksi. Pengaturan ConnectionString dapat ditemukan di layar Mulai Cepat Cosmos DB Emulator sebagai Primary Connection String . Simpan berkasnya.
Catatan : Istilah alternatif Target dan Tujuan dapat digunakan sebagai pengganti Sink dalam file konfigurasi dan parameter baris perintah. Misalnya
"Target"
dan"TargetSettings"
juga akan valid dalam contoh di bawah ini.
{
"Source" : " JSON " ,
"Sink" : " Cosmos-nosql " ,
"SourceSettings" : {
"FilePath" : " C: \ btcdata \ simple_json.json "
},
"SinkSettings" : {
"ConnectionString" : " AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDj... " ,
"Database" : " datamigration " ,
"Container" : " btcdata " ,
"PartitionKeyPath" : " /id " ,
"RecreateContainer" : false ,
"IncludeMetadataFields" : false
}
}
Pastikan proyek Cosmos.DataTransfer.Core ditetapkan sebagai proyek startup lalu tekan F5 untuk menjalankan aplikasi.
Aplikasi kemudian melakukan migrasi data. Setelah beberapa saat proses akan menunjukkan transfer data selesai. atau Transfer data gagal .
Catatan : Properti
Source
danSink
harus cocok dengan Nama Tampilan yang ditetapkan dalam kode untuk ekstensi.
Unduh rilis terbaru, atau pastikan proyek telah dibuat.
Folder Extensions berisi plug-in yang tersedia untuk digunakan dalam migrasi. Setiap ekstensi terletak di folder dengan nama sumber data. Misalnya, ekstensi Cosmos DB terletak di folder Cosmos . Sebelum menjalankan aplikasi, Anda dapat membuka folder Ekstensi dan menghapus folder apa pun untuk ekstensi yang tidak diperlukan untuk migrasi.
Di root folder build, temukan migrasisettings.json dan perbarui pengaturan seperti yang didokumentasikan dalam dokumentasi Ekstensi. Contoh file (mirip dengan tutorial di atas):
{
"Source" : " JSON " ,
"Sink" : " Cosmos-nosql " ,
"SourceSettings" : {
"FilePath" : " C: \ btcdata \ simple_json.json "
},
"SinkSettings" : {
"ConnectionString" : " AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDj... " ,
"Database" : " datamigration " ,
"Container" : " btcdata " ,
"PartitionKeyPath" : " /id " ,
"RecreateContainer" : false ,
"IncludeMetadataFields" : false
}
}
Catatan : migrasisettings.json juga dapat dikonfigurasi untuk menjalankan beberapa operasi transfer data dengan satu perintah jalankan. Untuk melakukan hal ini, sertakan properti
Operations
yang terdiri dari array objek yang mencakup propertiSourceSettings
danSinkSettings
menggunakan format yang sama seperti yang ditunjukkan di atas untuk operasi tunggal. Detail dan contoh tambahan dapat ditemukan di postingan blog ini.
Jalankan program menggunakan perintah berikut:
Menggunakan Windows
dmt.exe
Catatan : Gunakan opsi
--settings
dengan jalur file untuk menentukan file pengaturan yang berbeda (mengganti file migrasisettings.json default). Hal ini memfasilitasi otomatisasi jalannya tugas migrasi yang berbeda dalam satu putaran terprogram.
Menggunakan macOS
./dmt
Catatan : Sebelum menjalankan alat ini di macOS, Anda harus mengikuti instruksi Apple tentang cara Membuka aplikasi Mac dari pengembang yang tidak dikenal.
Putuskan jenis ekstensi apa yang ingin Anda buat. Ada 3 jenis ekstensi berbeda dan masing-masing dapat diterapkan untuk membaca data, menulis data, atau keduanya.
Tambahkan folder baru di folder Extensions dengan nama ekstensi Anda.
Buat proyek ekstensi dan proyek pengujian yang menyertainya.
Cosmos.DataTransfer.<Name>Extension
.Ekstensi Penyimpanan File Biner hanya digunakan dalam kombinasi dengan ekstensi lain sehingga harus ditempatkan di Perpustakaan Kelas .NET 6 tanpa memerlukan konfigurasi debugging tambahan di bawah.
Tambahkan proyek baru ke solusi CosmosDbDataMigrationTool
.
Untuk memfasilitasi proses debug lokal, keluaran pembuatan ekstensi beserta dependensi apa pun perlu disalin ke folder CoreCosmos.DataTransfer.CorebinDebugnet6.0Extensions
. Untuk menyiapkan proyek agar disalin secara otomatis, tambahkan perubahan berikut.
LocalDebugFolder
dengan Lokasi Target ......CoreCosmos.DataTransfer.CorebinDebugnet6.0Extensions
< Target Name = " PublishDebug " AfterTargets = " Build " Condition = " '$(Configuration)' == 'Debug' " >
< Exec Command = " dotnet publish --no-build -p:PublishProfile=LocalDebugFolder " />
</ Target >
Tambahkan referensi ke paket NuGet System.ComponentModel.Composition
dan proyek Cosmos.DataTransfer.Interfaces
.
Ekstensi dapat mengimplementasikan IDataSourceExtension
untuk membaca data atau IDataSinkExtension
untuk menulis data. Kelas yang mengimplementasikan antarmuka ini harus menyertakan System.ComponentModel.Composition.ExportAttribute
tingkat kelas dengan tipe antarmuka yang diimplementasikan sebagai parameter. Ini akan memungkinkan plugin diambil oleh aplikasi utama.
IComposableDataSource
atau IComposableDataSink
. Untuk digunakan dengan format file yang berbeda, proyek yang berisi pemformat harus mereferensikan proyek ekstensi dan menambahkan CompositeSourceExtension
atau CompositeSinkExtension
baru yang merujuk pada penyimpanan dan ekstensi pemformat.IFormattedDataReader
atau IFormattedDataWriter
. Agar dapat digunakan, masing-masing juga harus mendeklarasikan satu atau lebih CompositeSourceExtension
atau CompositeSinkExtension
untuk menentukan lokasi penyimpanan yang tersedia untuk format tersebut. Ini memerlukan penambahan referensi ke proyek ekstensi Penyimpanan dan penambahan deklarasi untuk setiap kombinasi format/penyimpanan file. Contoh: [ Export ( typeof ( IDataSinkExtension ) ) ]
public class JsonAzureBlobSink : CompositeSinkExtension < AzureBlobDataSink , JsonFormatWriter >
{
public override string DisplayName => " JSON-AzureBlob " ;
}
IConfiguration
yang diteruskan ke metode ReadAsync
dan WriteAsync
. Pengaturan di bawah SourceSettings
/ SinkSettings
akan disertakan serta pengaturan apa pun yang disertakan dalam file JSON yang ditentukan oleh SourceSettingsPath
/ SinkSettingsPath
. Terapkan ekstensi Anda untuk membaca dan/atau menulis menggunakan antarmuka IDataItem
generik yang memperlihatkan properti objek sebagai daftar pasangan nilai kunci. Bergantung pada struktur spesifik tipe penyimpanan data yang diterapkan, Anda dapat memilih untuk mendukung objek dan array bertumpuk atau hanya properti tingkat atas datar.
Ekstensi Penyimpanan File Biner hanya berkaitan dengan penyimpanan umum sehingga hanya berfungsi dengan instance
Stream
yang mewakili seluruh file, bukanIDataItem
individual.