Mengelola indeks - Amazon Quantum Ledger Database (Amazon QLDB)

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

Mengelola indeks

Bagian ini menjelaskan cara membuat, dan menjatuhkan indeks di Amazon QLDB. Kuota untuk jumlah indeks per tabel yang dapat Anda buat didefinisikan dalamKuota dan batasan di Amazon QLDB.

Membuat indeks

Seperti juga dijelaskan dalamMembuat tabel dan indeks, Anda dapat menggunakan pernyataan CREATE INDEX untuk membuat indeks di atas meja untuk bidang tingkat atas tertentu, sebagai berikut. Nama tabel dan nama field yang diindeks keduanya peka huruf besar.

CREATE INDEX ON VehicleRegistration (VIN)
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)

Setiap indeks yang Anda buat di atas meja memiliki ID unik yang ditetapkan sistem. Untuk menemukan ID indeks ini, lihat bagian berikutMenggambarkan indeks.

penting

QLDB membutuhkan indeks untuk secara efisien mencari dokumen. Tanpa indeks, QLDB perlu melakukan pemindaian meja penuh saat membaca dokumen. Hal ini dapat menyebabkan masalah kinerja pada tabel besar, termasuk konflik konkurensi dan batas waktu transaksi.

Untuk menghindari pemindaian tabel, Anda harus menjalankan pernyataan dengan klausaWHERE predikat menggunakan operator kesetaraan (=orIN) pada bidang yang diindeks atau ID dokumen. Untuk informasi selengkapnya, lihat Mengoptimalkan kinerja kueri.

Perhatikan kendala berikut saat membuat indeks:

  • Indeks hanya dapat dibuat pada satu bidang tingkat atas. Indeks komposit, bersarang, unik, dan berbasis fungsi tidak didukung.

  • Anda dapat membuat indeks pada jenis data Ion apa pun, termasuklist danstruct. Namun, Anda hanya dapat melakukan pencarian terindeks dengan kesetaraan seluruh nilai Ion terlepas dari jenis Ion. Misalnya, saat menggunakanlist tipe sebagai indeks, Anda tidak dapat melakukan pencarian terindeks oleh satu item di dalam daftar.

  • Kinerja kueri ditingkatkan hanya jika Anda menggunakan predikat kesetaraan; misalnya,WHERE indexedField = 123 atauWHERE indexedField IN (456, 789).

    QLDB tidak menghormati ketidaksetaraan dalam predikat query. Akibatnya, pemindaian rentang yang difilter tidak diimplementasikan.

  • Nama bidang yang diindeks adalah huruf kapital dan dapat memiliki maksimal 128 karakter.

  • Pembuatan indeks di QLDB bersifat asinkron. Jumlah waktu yang dibutuhkan untuk menyelesaikan membangun indeks pada tabel yang tidak kosong bervariasi tergantung pada ukuran tabel. Untuk informasi selengkapnya, lihat Mengelola indeks.

Menggambarkan indeks

Pembuatan indeks di QLDB bersifat asinkron. Jumlah waktu yang dibutuhkan untuk menyelesaikan membangun indeks pada tabel yang tidak kosong bervariasi tergantung pada ukuran tabel. Untuk memeriksa status build indeks, Anda dapat menanyakan tabel katalog sistem information_schema.user_tables.

Misalnya, pernyataan berikut query katalog sistem untuk semua indeks di atasVehicleRegistration meja.

SELECT VALUE indexes FROM information_schema.user_tables info, info.indexes indexes WHERE info.name = 'VehicleRegistration'
{
    indexId: "Djg2nt0yIs2GY0T29Kud1z",
    expr: "[VIN]",
    status: "ONLINE"
},
{
    indexId: "4tPW3fUhaVhDinRgKRLhGU",
    expr: "[LicensePlateNumber]",
    status: "FAILED",
    message: "aws.ledger.errors.InvalidEntityError: Document contains multiple values for indexed field: LicensePlateNumber"
}
Bidang indeks
  • indexId- ID unik indeks.

  • expr- Jalur dokumen yang diindeks. Bidang ini adalah string dalam bentuk:[fieldName].

  • status- Status indeks saat ini. Status indeks dapat berupa salah satu nilai berikut:

    • BUILDING— Secara aktif membangun indeks untuk tabel.

    • FINALIZING— Telah selesai membangun indeks dan mulai mengaktifkannya untuk digunakan.

    • ONLINE- Aktif dan siap digunakan dalam kueri. QLDB tidak menggunakan indeks dalam kueri sampai statusnya online.

    • FAILED- Tidak dapat membangun indeks karena kesalahan yang tidak dapat dipulihkan. Indeks dalam keadaan ini masih dihitung terhadap kuota indeks per tabel. Untuk informasi selengkapnya, lihat Kesalahan umum.

    • DELETING- Secara aktif menghapus indeks setelah pengguna menjatuhkannya.

  • message- Pesan kesalahan yang menjelaskan alasan bahwa indeks memilikiFAILED status. Bidang ini hanya disertakan untuk indeks gagal.

Anda juga dapat menggunakanAWS Management Console untuk memeriksa status indeks.

Untuk memeriksa status indeks (konsol)
  1. Masuk keAWS Management Console, dan buka konsol Amazon QLDB di https://console.aws.amazon.com/qldb.

  2. Di panel navigasi, pilih Ledger.

  3. Dalam daftar Buku Besar, pilih nama buku besar yang indeksnya ingin Anda kelola.

  4. Pada halaman detail buku besar, di bawah tab Tabel, pilih nama tabel yang indeksnya ingin Anda periksa.

  5. Pada halaman detail tabel, cari kartu bidang yang diindeks. Kolom status Indeks menampilkan status saat ini dari setiap indeks di atas meja.

Menjatuhkan indeks

GunakanDROP INDEX pernyataan untuk menjatuhkan indeks. Ketika Anda menjatuhkan indeks, itu dihapus secara permanen dari tabel.

Pertama, temukan ID indeks dariinformation_schema.user_tables. Misalnya, query berikut mengembalikanindexId dariLicensePlateNumber bidang diindeks di atasVehicleRegistration meja.

SELECT indexes.indexId FROM information_schema.user_tables info, info.indexes indexes WHERE info.name = 'VehicleRegistration' and indexes.expr = '[LicensePlateNumber]'

Kemudian, gunakan ID ini untuk menjatuhkan indeks. Berikut adalah contoh yang menjatuhkan ID indeks4tPW3fUhaVhDinRgKRLhGU. ID Indeks adalah pengenal unik yang harus tertutup dalam tanda kutip ganda.

DROP INDEX "4tPW3fUhaVhDinRgKRLhGU" ON VehicleRegistration WITH (purge = true)
catatan

KlausaWITH (purge = true) ini diperlukan untuk semuaDROP INDEX pernyataan, dan saattrue ini satu-satunya nilai yang didukung.

Kata kuncipurge adalah peka huruf besar/kecil dan harus berupa huruf kecil.

Anda juga dapat menggunakanAWS Management Console untuk menjatuhkan indeks.

Untuk menjatuhkan indeks (konsol)
  1. Masuk keAWS Management Console, dan buka konsol Amazon QLDB di https://console.aws.amazon.com/qldb.

  2. Di panel navigasi, pilih Ledger.

  3. Dalam daftar Buku Besar, pilih nama buku besar yang indeksnya ingin Anda kelola.

  4. Pada halaman detail buku besar, di bawah tab Tabel, pilih nama tabel yang indeksnya ingin Anda jatuhkan.

  5. Pada halaman detail tabel, cari kartu bidang yang diindeks. Pilih indeks yang ingin Anda jatuhkan, lalu pilih Drop index.

Kesalahan umum

Bagian ini menjelaskan kesalahan umum yang mungkin Anda temui saat membuat indeks, dan menyarankan solusi yang mungkin.

catatan

Indeks yang memiliki statusFAILED masih dihitung terhadap kuota indeks per tabel. Indeks yang gagal juga mencegah Anda memodifikasi atau menghapus dokumen apa pun yang menyebabkan pembuatan indeks gagal di atas meja.

Anda harus secara eksplisit menjatuhkan indeks untuk menghapusnya dari kuota.

Dokumen berisi beberapa nilai untuk bidang diindeks: fieldName.

QLDB tidak dapat membangun indeks untuk nama field yang ditentukan karena tabel berisi dokumen dengan beberapa nilai untuk bidang yang sama (yaitu, nama field duplikat).

Anda harus terlebih dahulu menjatuhkan indeks gagal. Kemudian, pastikan bahwa semua dokumen dalam tabel hanya memiliki satu nilai untuk setiap nama bidang sebelum mencoba ulang pembuatan indeks. Anda juga dapat membuat indeks untuk bidang lain yang tidak memiliki duplikat.

QLDB juga mengembalikan kesalahan ini jika Anda mencoba untuk menyisipkan dokumen yang berisi beberapa nilai untuk bidang yang sudah diindeks di atas meja.

Melebihi batas indeks: Tabel tableName sudah memiliki n indeks, dan tidak dapat membuat lebih.

QLDB memberlakukan batas lima indeks per tabel, termasuk indeks gagal. Anda harus menjatuhkan indeks yang ada sebelum membuat yang baru.

Tidak ada indeks didefinisikan dengan identifier: indexID.

Anda mencoba untuk menjatuhkan indeks yang tidak ada untuk tabel tertentu dan indeks ID kombinasi. Untuk mempelajari cara memeriksa indeks yang ada, lihatMenggambarkan indeks.