Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan Amazon DocumentDB sebagai target AWS untuk Database Migration Service
Untuk informasi tentang versi Amazon DocumentDB (dengan kompatibilitas MongoDB) yang mendukung, lihat. AWS DMS Target untuk AWS DMS Anda dapat menggunakan AWS DMS untuk memigrasikan data ke Amazon DocumentDB (dengan kompatibilitas MongoDB) dari salah satu mesin data sumber yang didukung AWS DMS . Mesin sumber dapat berada di layanan AWS terkelola seperti Amazon RDS, Aurora, atau Amazon S3. Atau mesin dapat berada di database yang dikelola sendiri, seperti MongoDB yang berjalan di EC2 Amazon atau lokal.
Anda dapat menggunakan AWS DMS untuk mereplikasi data sumber ke database, koleksi, atau dokumen Amazon DocumentDB.
catatan
Jika titik akhir sumber adalah MongoDB atau Amazon DocumentDB, jalankan migrasi dalam Mode dokumen.
MongoDB menyimpan data dalam format JSON biner (BSON). AWS DMS mendukung semua tipe data BSON yang didukung oleh Amazon DocumentDB. Untuk daftar tipe data ini, lihat APIsMongoDB, operasi, dan tipe data yang didukung di Panduan Pengembang Amazon DocumentDB.
Jika titik akhir sumber adalah database relasional, AWS DMS memetakan objek database ke Amazon DocumentDB sebagai berikut:
-
Sebuah basis data relasional, atau skema basis data, dipetakan ke Amazon DocumentDB basis data.
-
Tabel di dalam peta basis data relasional dipetakan ke Koleksi di Amazon DocumentDB.
-
Catatan dalam peta tabel relasional dipetakan ke Dokumen di Amazon DocumentDB. Setiap dokumen disusun dari data dalam catatan sumber.
Jika titik akhir sumber adalah Amazon S3, maka objek Amazon DocumentDB yang dihasilkan sesuai dengan AWS DMS aturan pemetaan untuk Amazon S3. Contohnya, perhatikan URI berikut ini.
s3://mybucket/hr/employee
Dalam hal ini, AWS DMS memetakan objek mybucket
ke Amazon DocumentDB sebagai berikut:
-
Bagian URI tingkat atas (
hr
) dipetakan ke basis data Amazon DocumentDB. -
Bagian URI berikutnya (
employee
) dipetakan ke koleksi Amazon DocumentDB. -
Setiap objek dalam
employee
dipetakan ke dokumen di Amazon DocumentDB.
Untuk informasi lebih lanjut tentang aturan pemetaan untuk Amazon S3, lihat Menggunakan Amazon S3 sebagai sumber untuk AWS DMS.
Pengaturan titik akhir Amazon DocumentDB
Di AWS DMS versi 3.5.0 dan yang lebih tinggi, Anda dapat meningkatkan kinerja change data capture (CDC) untuk endpoint Amazon DocumentDB dengan menyetel pengaturan tugas untuk thread paralel dan operasi massal. Untuk melakukan ini, Anda dapat menentukan jumlah thread yang terjadi bersamaan, antrean per thread, dan jumlah catatan yang disimpan dalam buffer menggunakan pengaturan tugas ParallelApply*
. Misalnya, Anda ingin melakukan beban CDC dan menerapkan 128 thread secara paralel. Anda juga ingin mengakses 64 antrean per thread, dengan 50 catatan disimpan per buffer.
Untuk mempromosikan kinerja CDC, AWS DMS mendukung pengaturan tugas ini:
-
ParallelApplyThreads
— Menentukan jumlah thread bersamaan yang AWS DMS digunakan selama pemuatan CDC untuk mendorong catatan data ke titik akhir target Amazon DocumentDB. Nilai default adalah nol (0) dan nilai maksimum adalah 32. -
ParallelApplyBufferSize
— Menentukan jumlah maksimum catatan yang akan disimpan di setiap antrian buffer untuk thread bersamaan untuk mendorong ke titik akhir target Amazon DocumentDB selama pemuatan CDC. Nilai default adalah 100 dan nilai maksimum adalah 1.000. Gunakan pilihan ini saatParallelApplyThreads
menentukan lebih dari satu thread. -
ParallelApplyQueuesPerThread
— Menentukan jumlah antrian yang diakses setiap thread untuk mengeluarkan catatan data dari antrian dan menghasilkan pemuatan batch untuk titik akhir Amazon DocumentDB selama CDC. Default-nya adalah 1. Maksimum adalah 512.
Untuk detail tambahan tentang bekerja dengan Amazon DocumentDB sebagai target, lihat AWS DMS bagian berikut:
Topik
catatan
Untuk step-by-step panduan proses migrasi, lihat Memigrasi dari MongoDB ke Amazon DocumentDB di Panduan Migrasi. AWS Database Migration Service Step-by-Step
Pemetaan data dari sumber ke target Amazon DocumentDB
AWS DMS membaca catatan dari titik akhir sumber, dan membangun dokumen JSON berdasarkan data yang dibacanya. Untuk setiap dokumen JSON, AWS DMS harus menentukan _id
bidang untuk bertindak sebagai pengidentifikasi unik. Kemudian menulis dokumen JSON ke koleksi Amazon DocumentDB, menggunakan _id
sebagai kunci primer.
Sumber data yang berupa kolom tunggal
Jika sumber data terdiri dari satu kolom, data harus bertipe string. (Tergantung pada mesin sumber, tipe data sebenarnya mungkin VARCHAR, NVARCHAR, TEXT, LOB, CLOB, atau serupa.) AWS DMS mengasumsikan bahwa data tersebut adalah dokumen JSON yang valid, dan mereplikasi data ke Amazon DocumentDB apa adanya.
Jika dokumen JSON yang dihasilkan berisi field bernama _id
, maka field tersebut digunakan sebagai unik _id
di Amazon DocumentDB.
Jika JSON tidak berisi field _id
, maka Amazon DocumentDB menghasilkan nilai _id
secara otomatis.
Sumber data yang terdiri dari beberapa kolom
Jika data sumber terdiri dari beberapa kolom, kemudian AWS DMS membangun dokumen JSON dari semua kolom ini. Untuk menentukan _id
bidang dokumen, AWS DMS lanjutkan sebagai berikut:
-
Jika salah satu kolom bernama
_id
, maka data dalam kolom tersebut yang digunakan sebagai target_id
. -
Jika tidak ada
_id
kolom, tetapi data sumber memiliki kunci primer atau indeks unik, maka AWS DMS gunakan kunci atau nilai indeks itu sebagai_id
nilainya. Data dari kunci primer atau indeks unik juga muncul sebagai field eksplisit dalam dokumen JSON. -
Jika tidak ada kolom
_id
, dan tidak ada kunci primer atau indeks unik, maka Amazon DocumentDB menghasilkan nilai_id
secara otomatis.
Memaksakan tipe data pada titik akhir target
AWS DMS dapat memodifikasi struktur data saat menulis ke titik akhir target Amazon DocumentDB. Anda dapat meminta perubahan ini dengan mengubah nama kolom dan tabel di titik akhir sumber, atau dengan menyediakan aturan transformasi yang diterapkan ketika tugas berjalan.
Menggunakan dokumen JSON nested (json_prefix)
Untuk memaksakan tipe data, Anda dapat mengawali nama kolom sumber dengan json_
(yaitu, json_
) baik secara manual atau menggunakan transformasi. Dalam kasus ini, kolom dibuat sebagai dokumen JSON nested dalam dokumen target, bukan sebagai field string.columnName
Misalnya, anggaplah Anda ingin memigrasikan dokumen berikut dari titik akhir sumber MongoDB.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{"Home": {"Address": "Boston","Phone": "1111111"},"Work": { "Address": "Boston", "Phone": "2222222222"}}" }
Jika Anda tidak memaksa salah satu tipe sumber data, dokumen ContactDetails
yang tertanam akan dimigrasi sebagai string.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": "{\"Home\": {\"Address\": \"Boston\",\"Phone\": \"1111111\"},\"Work\": { \"Address\": \"Boston\", \"Phone\": \"2222222222\"}}" }
Namun, Anda dapat menambahkan aturan transformasi untuk memaksa ContactDetails
menjadi objek JSON. Misalnya, anggaplah bahwa nama kolom sumber asli adalah ContactDetails
. Untuk memaksa tipe data sebagai Nested JSON, kolom di titik akhir sumber perlu diganti namanya menjadi json_ContactDetails” baik dengan menambahkan awalan “*json_*” pada sumber secara manual atau melalui aturan transformasi. Misalnya, Anda dapat menggunakan aturan transformasi di bawah ini:
{ "rules": [ { "rule-type": "transformation", "rule-id": "1", "rule-name": "1", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%", "column-name": "ContactDetails" }, "rule-action": "rename", "value": "json_ContactDetails", "old-value": null } ] }
AWS DMS mereplikasi ContactDetails bidang sebagai JSON bersarang, sebagai berikut.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactDetails": { "Home": { "Address": "Boston", "Phone": "1111111111" }, "Work": { "Address": "Boston", "Phone": "2222222222" } } }
Menggunakan array JSON (array_prefix)
Untuk memaksakan tipe data, Anda dapat mengawali nama kolom dengan array_
(yaitu, array_
), baik secara manual maupun menggunakan transformasi. Dalam hal ini, AWS DMS pertimbangkan kolom sebagai array JSON, dan membuatnya seperti itu dalam dokumen target.columnName
Misalnya Anda ingin memigrasikan dokumen berikut dari titik akhir sumber MongoDB.
{ "_id" : "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": ["Boston", "New York"], "ContactPhoneNumbers": ["1111111111", "2222222222"] }
Jika Anda tidak memaksakan salah satu tipe sumber data, dokumen ContactDetails
yang tertanam akan dimigrasi sebagai string.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": "[\"Boston\", \"New York\"]", "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]" }
Namun, Anda dapat menambahkan aturan transformasi untuk memaksa ContactAddress
dan ContactPhoneNumbers
ke array JSON, seperti yang ditunjukkan pada tabel berikut.
Nama kolom sumber asli | Kolom sumber berganti nama |
---|---|
ContactAddress |
array_ContactAddress |
ContactPhoneNumbers |
array_ContactPhoneNumbers |
AWS DMS mereplikasi ContactAddress
dan ContactPhoneNumbers
sebagai berikut.
{ "_id": "1", "FirstName": "John", "LastName": "Doe", "ContactAddresses": [ "Boston", "New York" ], "ContactPhoneNumbers": [ "1111111111", "2222222222" ] }
Menghubungkan ke Amazon DocumentDB menggunakan TLS
Secara default, klaster Amazon DocumentDB yang baru dibuat hanya menerima sambungan aman menggunakan Keamanan Lapisan Pengangkutan (TLS). Ketika TLS diaktifkan, setiap sambungan ke Amazon DocumentDB memerlukan kunci publik.
Anda dapat mengambil kunci publik untuk Amazon DocumentDB dengan mengunduh rds-combined-ca-bundle.pem
file,, dari bucket Amazon S3 yang AWS dihosting. Untuk informasi lebih lanjut tentang mengunduh file ini, lihat Mengenkripsi sambungan menggunakan TLS dalam Panduan Developer Amazon DocumentDB
Setelah mengunduh file.pem ini, Anda dapat mengimpor kunci publik yang dikandungnya AWS DMS seperti yang dijelaskan berikut.
AWS Management Console
Untuk mengimpor file kunci publik (.pem)
-
Buka AWS DMS konsol di https://console.aws.amazon.com/dms
. -
Pilih Sertifikat di panel navigasi.
-
Pilih Impor Sertifikat dan lakukan hal berikut:
Untuk Pengenal sertifikat, masukkan nama unik untuk sertifikat tersebut, contohnya
docdb-cert
.-
Untuk Impor file, arahkan ke lokasi tempat Anda menyimpan file .pem.
Jika pengaturan sudah sesuai keinginan Anda, pilih Tambahkan Sertifikat CA baru.
AWS CLI
Gunakan perintah aws dms import-certificate
seperti pada contoh berikut.
aws dms import-certificate \ --certificate-identifier docdb-cert \ --certificate-pem file://./rds-combined-ca-bundle.pem
Saat Anda membuat titik akhir AWS DMS target, berikan pengenal sertifikat (misalnya,docdb-cert
). Juga, tetapkan parameter mode SSL ke verify-full
.
Menghubungkan ke Amazon DocumentDB Elastic Clusters sebagai target
Di AWS DMS versi 3.4.7 dan yang lebih tinggi, Anda dapat membuat titik akhir target Amazon DocumentDB sebagai Elastic Cluster. Jika Anda membuat titik akhir target sebagai Elastic Cluster, Anda harus melampirkan sertifikat SSL baru ke titik akhir Amazon DocumentDB Elastic Cluster karena sertifikat SSL yang ada tidak akan berfungsi.
Untuk melampirkan sertifikat SSL baru ke titik akhir Amazon DocumentDB Elastic Cluster
-
Di browser, buka https://www.amazontrust.com/repository/SFSRootCAG2.pem
dan simpan konten ke .pem
file dengan nama file unik, misalnya.SFSRootCAG2.pem
Ini adalah file sertifikat yang perlu Anda impor pada langkah selanjutnya. -
Buat titik akhir Elastic Cluster dan atur opsi berikut:
-
Di bawah Konfigurasi Titik Akhir, pilih Tambahkan sertifikat CA baru.
-
Untuk pengenal Sertifikat, masukkan
SFSRootCAG2.pem
. -
Untuk Impor file sertifikat, pilih Pilih file, lalu arahkan ke
SFSRootCAG2.pem
file yang sebelumnya Anda unduh. -
Pilih dan buka
SFSRootCAG2.pem
file yang diunduh. -
Pilih Impor sertifikat.
-
Dari drop-down Pilih sertifikat, pilih SFSRootCAG2.pem.
-
Sertifikat SSL baru dari SFSRootCAG2.pem
file yang diunduh sekarang dilampirkan ke titik akhir Amazon DocumentDB Elastic Cluster Anda.
Replikasi berkelanjutan dengan Amazon DocumentDB sebagai target
Jika replikasi yang sedang berlangsung (ubah pengambilan data, CDC) diaktifkan untuk Amazon DocumentDB sebagai target AWS DMS , versi 3.5.0 dan yang lebih tinggi memberikan peningkatan kinerja yang dua puluh kali lebih besar daripada rilis sebelumnya. Dalam rilis sebelumnya di mana AWS DMS menangani hingga 250 catatan per detik, AWS DMS sekarang efisien memproses lebih dari 5000 catatan per detik. AWS DMS juga memastikan bahwa dokumen di Amazon DocumentDB tetap sinkron dengan sumbernya. Ketika rekaman sumber dibuat atau diperbarui, pertama-tama AWS DMS harus menentukan data Amazon DocumentDB mana yang terpengaruh dengan melakukan hal berikut:
-
Jika catatan sumber memiliki kolom bernama
_id
, nilai kolom tersebut menentukan_id
yang sesuai dalam koleksi Amazon DocumentDB. -
Jika tidak ada
_id
kolom, tetapi data sumber memiliki kunci primer atau indeks unik, maka AWS DMS gunakan kunci atau nilai indeks tersebut_id
sebagai koleksi Amazon DocumentDB. -
Jika rekaman sumber tidak memiliki
_id
kolom, kunci utama, atau indeks unik, maka AWS DMS cocokkan semua kolom sumber dengan bidang terkait dalam koleksi Amazon DocumentDB.
Saat catatan sumber baru dibuat, AWS DMS tulis dokumen yang sesuai ke Amazon DocumentDB. Jika catatan sumber yang ada diperbarui, AWS DMS perbarui bidang terkait dalam dokumen target di Amazon DocumentDB. Setiap field yang ada di dokumen target tetapi tidak ada di catatan sumber tetap tak tersentuh.
Ketika catatan sumber dihapus, AWS DMS menghapus dokumen yang sesuai dari Amazon DocumentDB.
Perubahan struktural (DDL) pada sumbernya
Dengan replikasi berkelanjutan, setiap perubahan pad struktur data sumber (seperti tabel, kolom, dan sebagainya) disebarkan ke rekan-rekan mereka di Amazon DocumentDB. Dalam basis data relasional, perubahan ini dimulai dengan menggunakan pernyataan bahasa definisi data (DDL). Anda dapat melihat bagaimana AWS DMS menyebarkan perubahan ini ke Amazon DocumentDB di tabel berikut.
DDL di sumber | Efek pada target Amazon DocumentDB |
---|---|
CREATE TABLE |
Membuat koleksi kosong. |
Pernyataan yang mengganti nama tabel (RENAME TABLE , ALTER TABLE...RENAME , dan sejenisnya) |
Mengganti nama koleksi. |
TRUNCATE TABLE |
Menghapus semua dokumen dari koleksi, tetapi hanya jika HandleSourceTableTruncated adalah true . Untuk informasi lebih lanjut, lihat Pengaturan tugas untuk perubahan pengolahan DDL penanganan. |
DROP TABLE |
Menghapus koleksi, tetapi hanya jika HandleSourceTableDropped adalah true . Untuk informasi lebih lanjut, lihat Pengaturan tugas untuk perubahan pengolahan DDL penanganan. |
Pernyataan yang menambahkan kolom ke tabel (ALTER
TABLE...ADD dan sejenisnya) |
Pernyataan DDL diabaikan, dan peringatan dikeluarkan. Ketika INSERT pertama kali dilakukan pada sumber, field baru ditambahkan ke dokumen target. |
ALTER TABLE...RENAME COLUMN |
Pernyataan DDL diabaikan, dan peringatan dikeluarkan. Ketika INSERT pertama kali dilakukan pada sumber, field baru ditambahkan ke dokumen target. |
ALTER TABLE...DROP COLUMN |
Pernyataan DDL diabaikan, dan peringatan dikeluarkan. |
Pernyataan yang mengubah tipe data kolom (ALTER
COLUMN...MODIFY dan sejenisnya) |
Pernyataan DDL diabaikan, dan peringatan dikeluarkan. Ketika INSERT pertama kali dilakukan pada sumber dengan tipe data baru, dokumen target dibuat dengan field tipe data baru tersebut. |
Keterbatasan penggunaan Amazon DocumentDB sebagai target
Batasan berikut berlaku saat menggunakan Amazon DocumentDB sebagai target untuk: AWS DMS
-
Di Amazon DocumentDB, nama koleksi tidak dapat berisi simbol dolar ($). Selain itu, nama basis data tidak dapat berisi karakter Unicode.
-
AWS DMS tidak mendukung penggabungan beberapa tabel sumber ke dalam satu koleksi Amazon DocumentDB.
-
Ketika AWS DMS proses berubah dari tabel sumber yang tidak memiliki kunci primer, kolom LOB apa pun dalam tabel tersebut akan diabaikan.
-
Jika piliha Ubah tabel diaktifkan dan AWS DMS menemukan kolom sumber bernama ”_id“, maka kolom tersebut muncul sebagai ”__id“ (dua garis bawah) di tabel perubahan.
-
Jika Anda memilih Oracle sebagai titik akhir sumber, maka sumber Oracle harus memiliki pencatatan tambahan penuh diaktifkan. Jika tidak, ketika ada kolom pada sumber yang tidak berubah, maka data dimuat ke Amazon DocumentDB sebagai nilai null.
-
Pengaturan tugas replikasi,
TargetTablePrepMode:TRUNCATE_BEFORE_LOAD
tidak didukung untuk digunakan dengan titik akhir target DocumentDB.
Menggunakan pengaturan titik akhir dengan Amazon DocumentDB sebagai target
Anda dapat menggunakan pengaturan titik akhir untuk mengonfigurasi basis data target Amazon DocumentDB mirip dengan menggunakan atribut koneksi tambahan. Anda menentukan pengaturan saat Anda membuat titik akhir target menggunakan AWS DMS konsol, atau dengan menggunakan create-endpoint
perintah di AWS CLI, dengan sintaks --doc-db-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
Tabel berikut menunjukkan pengaturan titik akhir yang dapat Anda gunakan dengan Amazon DocumentDB sebagai target.
Nama atribut | Nilai valid | Nilai dan deskripsi default |
---|---|---|
|
boolean
|
Kapan
|
Target tipe data untuk Amazon DocumentDB
Dalam tabel berikut, Anda dapat menemukan tipe data target Amazon DocumentDB yang didukung saat AWS menggunakan DMS, dan pemetaan AWS default dari tipe data DMS. Untuk informasi selengkapnya tentang tipe data AWS DMS, lihatTipe data untuk AWS Database Migration Service.
AWS Tipe data DMS |
Tipe data Amazon DocumentDB |
---|---|
BOOLEAN |
Boolean |
BYTES |
Binary data |
DATE |
Date |
TIME |
Tali (UTF8) |
DATETIME |
Tanggal |
INT1 |
32-bit integer |
INT2 |
32-bit integer |
INT4 |
32-bit integer |
INT8 |
64-bit integer |
NUMERIC |
Tali (UTF8) |
REAL4 |
Ganda |
REAL8 |
Dua Kali |
STRING |
Jika data dikenali sebagai JSON, maka AWS DMS memigrasikannya ke Amazon DocumentDB sebagai dokumen. Jika tidak, data dipetakan ke String (UTF8). |
UINT1 |
32-bit integer |
UINT2 |
32-bit integer |
UINT4 |
64-bit integer |
UINT8 |
Tali (UTF8) |
WSTRING |
Jika data dikenali sebagai JSON, maka AWS DMS memigrasikannya ke Amazon DocumentDB sebagai dokumen. Jika tidak, data dipetakan ke String (UTF8). |
BLOB |
Binary |
CLOB |
Jika data dikenali sebagai JSON, maka AWS DMS memigrasikannya ke Amazon DocumentDB sebagai dokumen. Jika tidak, data dipetakan ke String (UTF8). |
NCLOB |
Jika data dikenali sebagai JSON, maka AWS DMS memigrasikannya ke Amazon DocumentDB sebagai dokumen. Jika tidak, data dipetakan ke String (UTF8). |