Mengelola indeks Amazon DocumentDB - Amazon DocumentDB

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

Mengelola indeks Amazon DocumentDB

Pembuatan indeks Amazon DocumentDB

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

  • Seberapa cepat itu harus diselesaikan?

  • Bisakah koleksi tidak dapat diakses saat build sedang berlangsung?

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

  • Jenis indeks apa yang harus dibuat?

Bagian ini membantu Anda menjawab pertanyaan-pertanyaan ini dan memberikan perintah dan contoh pemantauan untuk membuat dan indeks Amazon DocumentDB pada koleksi cluster berbasis instans 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, beberapa pengindeksan pekerja hanya didukung di Amazon DocumentDB versi 4.0 dan 5.0.

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

  • Cluster elastis - Pengindeksan paralel tidak didukung pada 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 vCPUs pada contoh utama cluster database Anda. Misalnya, Anda dapat menjalankan maksimal 32 pekerja pada instance db.r6g.16xlarge yang memiliki 64. vCPUs

    catatan

    Pekerja paralel tidak didukung pada kelas instance 2xlarge dan lebih rendah.

  • 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 vCPUs instance utama cluster database Anda dapat digunakan untuk pekerja yang dikonfigurasi yang melakukan pembuatan indeks pada beberapa koleksi.

  • Jenis indeks - Lihat posting blog ini untuk penjelasan lengkap tentang jenis indeks yang didukung di Amazon DocumentDB.

Memulai

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

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 menggunakan dua pekerja paralel di cluster:

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

    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 beban meningkat pada vCPUs dan membaca IO dari instance utama Anda. Pastikan klaster 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 saat Anda menjalankannya di latar depan, dan hingga sembilan tahap saat Anda menjalankannya di latar belakang. Anda dapat melihat metrik status seperti penyelesaian persentase, jumlah total blok penyimpanan yang dipindai, kunci yang diurutkan, dan kunci yang disisipkan berdasarkan tahap demi tahap.

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

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

Jenis build indeks

Empat jenis build indeks adalah:

  • Foreground - Build indeks latar depan memblokir semua operasi database lainnya sampai indeks dibuat. Build latar depan Amazon DocumentDB terdiri dari lima tahap.

  • Foreground (unique) - Build indeks latar depan dokumen tunggal (unik) memblokir operasi database lain seperti build latar depan biasa. Berbeda dengan build latar depan dasar, build unik menggunakan tahap tambahan (kunci pengurutan 2) untuk mencari kunci duplikat. Build latar depan (unik) terdiri dari enam tahap.

  • Latar Belakang - Build indeks latar belakang memungkinkan operasi database lainnya berjalan di latar depan saat indeks sedang dibuat. Build latar belakang Amazon DocumentDB terdiri dari delapan tahap.

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

Tahapan 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: koleksi pemindaian

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: koleksi pemindaian

8

9

  • inisialisasi - createIndex sedang mempersiapkan pembangun indeks. Fase ini harus sangat singkat.

  • indeks bangunan: menginisialisasi - Pembangun indeks sedang mempersiapkan untuk membuat indeks. Fase ini harus sangat singkat.

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

    catatan

    Jika lebih dari satu pekerja dikonfigurasi untuk build indeks, itu akan ditampilkan di tahap ini. Tahap “pengumpulan pemindaian” 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 ukuran adalah “kunci”.

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

  • indeks bangunan: memasukkan kunci - Pembuat indeks memasukkan kunci indeks ke dalam indeks baru. Satuan ukuran adalah “kunci”.

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

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

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

Contoh keluaran pembuatan indeks

Pada contoh keluaran di bawah ini (pembuatan indeks latar depan), status pembuatan indeks ditampilkan. Bidang “msg” merangkum kemajuan build dengan menunjukkan tahapan 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 “currentIndexBuildNama”, “msg”, dan “kemajuan” 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 }