View a markdown version of this page

Pembuatan indeks - Amazon DocumentDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pembuatan indeks

Membangun indeks di Amazon DocumentDB memerlukan sejumlah keputusan yang harus dibuat:

  • Seberapa cepat perlu diselesaikan?

  • Bisakah koleksi tidak dapat diakses saat pembuatan sedang berlangsung?

  • Berapa banyak daya komputasi instance yang dapat dialokasikan ke build?

  • Apa jenis indeks yang harus dibuat?

Bagian ini membantu Anda menjawab pertanyaan-pertanyaan ini dan menyediakan perintah dan contoh pemantauan untuk membuat indeks Amazon DocumentDB pada koleksi cluster berbasis instance Anda.

Pedoman

Pedoman berikut mencakup batasan dasar dan pengorbanan konfigurasi saat membuat indeks baru:

  • Dukungan versi Amazon DocumentDB - Meskipun pengindeksan pekerja tunggal didukung di semua versi Amazon DocumentDB, pengindeksan beberapa pekerja hanya didukung di Amazon DocumentDB versi 4.0 dan 5.0.

  • Pertukaran kinerja - Meningkatkan jumlah pekerja dalam proses pembuatan indeks meningkatkan pemanfaatan CPU dan membaca IO pada instance utama database Amazon DocumentDB Anda. Sumber daya yang diperlukan untuk membuat indeks baru tidak akan tersedia untuk beban kerja Anda yang sedang berjalan.

  • Cluster elastis - Pengindeksan paralel tidak didukung di cluster elastis Amazon DocumentDB.

  • Pekerja maksimum - Jumlah maksimum pekerja yang dapat Anda konfigurasi tergantung pada ukuran instance utama Anda di cluster database Anda. Ini adalah setengah dari jumlah total vCPU pada instance utama cluster database Anda. Misalnya, Anda dapat menjalankan maksimal 32 pekerja pada instans db.r6g.16xlarge yang memiliki 64 vCPU.

catatan

Pembuatan indeks paralel didukung pada instance 2xlarge ke atas.

  • Pekerja minimum - Jumlah minimum pekerja yang dapat Anda konfigurasi adalah satu. Pengaturan default untuk pembuatan indeks pada cluster berbasis instance adalah dua pekerja. Namun, Anda dapat mengurangi jumlah pekerja menjadi satu dengan menggunakan opsi “utas pekerja”. Ini akan menjalankan proses dengan satu pekerja.

  • Kompresi indeks - Amazon DocumentDB tidak mendukung kompresi indeks. Ukuran data untuk indeks mungkin lebih besar daripada saat Anda menggunakan opsi lain.

  • Mengindeks beberapa koleksi - Setengah dari vCPU pada instance utama cluster database Anda dapat digunakan untuk pekerja yang dikonfigurasi yang melakukan pembuatan indeks pada beberapa koleksi.

  • Jenis indeks - Lihat Jenis indeks daftar jenis indeks yang didukung di Amazon DocumentDB.

Jenis pembuatan indeks

Empat jenis build indeks adalah:

  • Latar Depan: Pembuatan indeks latar depan memblokir semua operasi database lainnya pada koleksi tempat indeks dibuat, hingga pembuatan indeks selesai. Pembuatan latar depan Amazon DocumentDB terdiri dari lima tahap.

  • Latar depan (unik): Membangun indeks latar depan dokumen tunggal (unik) memblokir operasi database lain seperti pembuatan latar depan biasa. Berbeda dengan build latar depan dasar, build unik menggunakan tahap tambahan (tombol pengurutan 2) untuk mencari kunci duplikat. Bangunan latar depan (unik) terdiri dari enam tahap.

  • Latar Belakang: Pembuatan indeks latar belakang memungkinkan operasi database lain berjalan di latar depan saat indeks sedang dibuat. Pembuatan latar belakang Amazon DocumentDB terdiri dari delapan tahap.

  • Latar belakang (unik): Pembuatan indeks latar belakang dokumen tunggal (unik) memungkinkan operasi database lain berjalan di latar depan saat indeks sedang dibuat. Berbeda dengan build latar belakang dasar, build unik menggunakan tahap tambahan (menyortir kunci 2) untuk mencari kunci duplikat. Pembuatan latar belakang (unik) terdiri dari sembilan tahap.

Jenis build indeks default adalah latar depan.

Untuk membangun indeks di latar belakang, Anda menambahkan parameter “background”: true saat membuat indeks.

Memulai

Untuk memulai pembuatan indeks pada koleksi, gunakan perintah createIndexes. Secara default, perintah akan menjalankan dua pekerja paralel yang meningkatkan kecepatan proses pembuatan indeks sebanyak dua kali lipat.

Misalnya, proses perintah berikut menunjukkan cara membuat indeks untuk bidang “user_name” dalam dokumen dan meningkatkan kecepatan proses pengindeksan menjadi empat pekerja:

  1. Buat indeks di latar belakang menggunakan dua pekerja paralel di cluster:

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "background":true }]})
  2. Untuk mengoptimalkan kecepatan proses pembuatan indeks, Anda dapat menentukan jumlah pekerja dengan menggunakan opsi “utas pekerja” (“pekerja”:<number>) dalam perintah db.runCommand createIndexes.

    Tingkatkan kecepatan proses menjadi empat pekerja paralel:

    db.runCommand({"createIndexes":"test","indexes":[{"key": {"user_name":1}, "name":"username_idx", "workers":4}]})
catatan

Semakin tinggi jumlah pekerja, semakin cepat pembuatan indeks berlangsung. Namun, semakin tinggi jumlah pekerja meningkat, semakin tinggi peningkatan beban pada vCPU dan baca IO instans utama Anda. Pastikan cluster Anda cukup disediakan untuk menangani beban yang meningkat tanpa menurunkan beban kerja lainnya.

Status kemajuan pengindeksan

Proses pembuatan indeks bekerja dengan menginisialisasi, memindai koleksi, menyortir kunci, dan, akhirnya, memasukkan kunci melalui pembuat indeks. Prosesnya memiliki hingga enam tahap ketika Anda menjalankannya di latar depan, dan hingga sembilan tahap ketika Anda menjalankannya di latar belakang. Anda dapat melihat metrik status seperti persentase penyelesaian, jumlah total blok penyimpanan yang dipindai, kunci yang diurutkan, dan kunci yang disisipkan berdasarkan tahap demi tahap.

Pantau kemajuan pada proses pengindeksan dengan menggunakan perintah db.currentop () di shell mongo. Penyelesaian 100% dari tahap terakhir menunjukkan bahwa semua indeks telah berhasil dibuat:

db.currentOp({"command.createIndexes": { $exists : true } })
catatan

Melihat status kemajuan pengindeksan hanya didukung di Amazon DocumentDB 5.0.

Tahap pembuatan indeks

Stage Latar depan Latar depan (unik) Latar Belakang Latar belakang (unik)
Inisialisasi 1 1 1 1
indeks bangunan: menginisialisasi 2 2 2 2
indeks bangunan: memindai koleksi 3 3 3 3
indeks bangunan: kunci penyortiran 1 4 4 4 4
indeks bangunan: kunci penyortiran 2 5 5
indeks bangunan: memasukkan kunci 5 6 5 6
memvalidasi: indeks pemindaian 6 7
memvalidasi: menyortir tupel 7 8
memvalidasi: memindai koleksi 8 9
  • menginisialisasi - CreateIndex sedang mempersiapkan pembuat indeks. Fase ini harus sangat singkat.

  • indeks bangunan: inisialisasi - Pembuat indeks sedang bersiap untuk membuat indeks. Fase ini harus sangat singkat.

  • indeks bangunan: pemindaian koleksi - Pembuat indeks melakukan pemindaian koleksi untuk mengumpulkan kunci indeks. Satuan ukurannya adalah “blok”.

catatan

Jika lebih dari satu pekerja dikonfigurasi untuk build indeks, itu ditampilkan dalam tahap ini. Tahap “pemindaian koleksi” adalah satu-satunya tahap yang menggunakan banyak pekerja selama proses pembuatan indeks. Semua tahapan lainnya akan menampilkan satu pekerja.

  • indeks bangunan: kunci penyortiran 1 - Pembuat indeks menyortir kunci indeks yang dikumpulkan. Satuan ukurannya adalah “kunci”.

  • indeks bangunan: kunci pengurutan 2 - Pembuat indeks menyortir kunci indeks yang dikumpulkan yang sesuai dengan tupel mati. Fase ini hanya ada untuk pembangunan indeks unik. Satuan ukurannya adalah “kunci”.

  • membangun indeks: memasukkan kunci - Pembuat indeks memasukkan kunci indeks ke dalam indeks baru. Satuan ukurannya adalah “kunci”.

  • memvalidasi: indeks pemindaian - CreateIndex memindai indeks untuk menemukan kunci yang perlu divalidasi. Satuan ukurannya adalah “blok”.

  • memvalidasi: menyortir tupel - createIndex mengurutkan output dari fase pemindaian indeks.

  • memvalidasi: memindai koleksi - CreateIndex memindai koleksi untuk memvalidasi kunci indeks yang ditemukan dalam dua fase sebelumnya. Satuan ukurannya adalah “blok”.

Contoh keluaran build indeks

Dalam contoh output berikut (build indeks latar depan), status pembuatan indeks ditampilkan. Bidang “msg” merangkum kemajuan pembangunan dengan menunjukkan tahap dan persentase penyelesaian build. Bidang “pekerja” menunjukkan jumlah pekerja yang digunakan selama tahap pembuatan indeks tersebut. Bidang “kemajuan” menunjukkan angka aktual yang digunakan untuk menghitung persentase penyelesaian.

catatan

Bidang IndexBuildName “current”, “msg”, dan “progress” tidak didukung di Amazon DocumentDB versi 4.0.

{ "inprog" : [{ … "command": { "createIndexes": "test", "indexes": [{ "v": 2, "key": { "user_name": 1 }, "name": "user_name_1" }], "lsid": { "id": UUID("094d0fba-8f41-4373-82c3-7c4c7b5ff13b") }, "$db": "test" }, "currentIndexBuildName": user_name_1, "msg": "Index Build: building index number_1, stage 6/6 building index: 656860/1003520 (keys) 65%", "workers": 1, "progress": { "done": 656861, "total": 1003520 }, … ], "ok" : 1 }

Sumber daya pemecahan masalah

Lihat sumber daya berikut tentang pemecahan masalah pembuatan indeks: