Meningkatkan akses data dengan indeks sekunder di DynamoDB - Amazon DynamoDB

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

Meningkatkan akses data dengan indeks sekunder di DynamoDB

Amazon DynamoDB menyediakan akses cepat ke item-item dalam sebuah tabel dengan menentukan nilai-nilai kunci primer. Namun, banyak aplikasi mungkin mendapat manfaat dari tersedianya satu atau lebih kunci sekunder (atau alternatif), untuk memungkinkan akses efisien ke data dengan atribut selain kunci primer. Untuk mengatasi hal ini, Anda dapat membuat satu atau lebih indeks sekunder pada tabel dan mengeluarkan permintaan Query atau Scan terhadap indeks ini.

Indeks sekunder adalah struktur data yang berisi subset atribut dari tabel, bersama dengan kunci alternatif untuk mendukung operasi Query. Anda dapat mengambil data dari indeks menggunakan sebuah Query, dengan cara yang sama seperti saat Anda menggunakan Query dengan tabel. Sebuah tabel dapat memiliki beberapa indeks sekunder, yang memberikan aplikasi Anda akses ke banyak pola kueri yang berbeda.

catatan

Anda juga dapat melakukan Scan pada indeks, dengan cara yang sama seperti Anda melakukan Scan pada tabel.

Setiap indeks sekunder dikaitkan dengan tepat satu tabel, dari mana indeks memperoleh datanya. Ini disebut tabel dasar untuk indeks. Saat Anda membuat indeks, Anda menentukan kunci alternatif untuk indeks tersebut (kunci partisi dan kunci urutan). Anda juga menentukan atribut yang ingin Anda proyeksikan, atau salin, dari tabel dasar ke dalam indeks. DynamoDB menyalin atribut ini ke dalam indeks, bersama dengan atribut kunci primer dari tabel dasar. Anda kemudian dapat mengkueri atau memindai indeks sama seperti Anda mengkueri atau memindai tabel.

Setiap indeks sekunder dikelola secara otomatis oleh DynamoDB. Saat Anda menambahkan, mengubah, atau menghapus item di tabel dasar, indeks apa pun di tabel tersebut juga diperbarui untuk mencerminkan perubahan ini.

DynamoDB mendukung dua jenis indeks sekunder:

  • Indeks sekunder globalIndeks dengan kunci partisi dan kunci urutan yang mungkin berbeda dari yang ada di tabel dasar. Indeks sekunder global dianggap "global" karena kueri pada indeks dapat menjangkau semua data di tabel dasar, di semua partisi. Indeks sekunder global disimpan dalam ruang partisinya sendiri jauh dari tabel dasar dan diskalakan secara terpisah dari tabel dasar.

  • Indeks sekunder lokalIndeks yang memiliki kunci partisi yang sama dengan tabel, namun kunci urutan berbeda. Indeks sekunder lokal bersifat "lokal" dalam arti bahwa setiap partisi indeks sekunder lokal dicakup ke partisi tabel dasar yang memiliki nilai kunci partisi yang sama.

Untuk perbandingan indeks sekunder global dan indeks sekunder lokal, lihat video ini.

Anda harus mempertimbangkan persyaratan aplikasi Anda saat menentukan jenis indeks yang akan digunakan. Tabel berikut menunjukkan perbedaan utama antara indeks sekunder global dan indeks sekunder lokal.

Karakteristik Indeks sekunder global Indeks sekunder lokal
Skema Kunci Kunci primer indeks sekunder global dapat berupa sederhana (kunci partisi) atau gabungan (kunci partisi dan kunci urutan). Kunci primer dari indeks sekunder lokal harus gabungan (kunci partisi dan kunci urutan).
Atribut Kunci Kunci partisi indeks dan kunci urutan (jika ada) dapat berupa atribut tabel dasar apa pun berupa jenis string, angka, atau biner. Kunci partisi indeks adalah atribut yang sama dengan kunci partisi dari tabel dasar. Kunci urutan dapat berupa atribut tabel dasar apa pun dari jenis string, angka, atau biner.
Pembatasan Ukuran Per Nilai Kunci Partisi Tidak ada batasan ukuran untuk indeks sekunder global. Untuk setiap nilai kunci partisi, ukuran total semua item yang diindeks harus 10 GB atau kurang.
Operasi Indeks Online Indeks sekunder global dapat dibuat pada saat yang sama saat Anda membuat tabel. Anda juga dapat menambahkan indeks sekunder global baru ke tabel yang ada, atau menghapus indeks sekunder global yang ada. Untuk informasi selengkapnya, lihat Mengelola Indeks Sekunder Global di DynamoDB. Indeks sekunder lokal dibuat pada saat yang sama saat Anda membuat tabel. Anda tidak dapat menambahkan indeks sekunder lokal ke tabel yang sudah ada, Anda juga tidak dapat menghapus indeks sekunder lokal yang saat ini ada.
Kueri dan Partisi Indeks sekunder global memungkinkan Anda melakukan kueri di seluruh tabel, di semua partisi. Indeks sekunder lokal memungkinkan Anda melakukan kueri pada satu partisi, seperti yang ditentukan oleh nilai kunci partisi dalam kueri.
Konsistensi Baca Kueri pada indeks sekunder global hanya mendukung konsistensi akhir. Saat Anda melakukan kueri indeks sekunder lokal, Anda dapat memilih konsistensi akhir atau konsistensi kuat.
Konsumsi Throughput yang Disediakan Setiap indeks sekunder global memiliki pengaturan throughput yang disediakan sendiri untuk aktivitas baca dan tulis. Kueri atau pemindaian pada indeks sekunder global menggunakan unit kapasitas dari indeks, bukan dari tabel dasar. Hal yang sama berlaku untuk pembaruan indeks sekunder global karena penulisan tabel. Indeks sekunder global yang terkait dengan tabel global mengonsumsi unit kapasitas tulis. Kueri atau pemindaian pada indeks sekunder lokal menggunakan unit kapasitas baca dari tabel dasar. Saat Anda menulis ke tabel, indeks sekunder lokalnya juga diperbarui, dan pembaruan ini menggunakan unit kapasitas tulis dari tabel dasar. Indeks sekunder lokal yang terkait dengan tabel global mengonsumsi unit kapasitas tulis.
Atribut yang Diproyeksikan Dengan kueri atau pemindaian indeks sekunder global, Anda hanya dapat meminta atribut yang diproyeksikan ke dalam indeks. DynamoDB tidak mengambil atribut apa pun dari tabel. Jika Anda membuat kueri atau memindai indeks sekunder lokal, Anda dapat meminta atribut yang tidak diproyeksikan ke dalam indeks. DynamoDB secara otomatis mengambil atribut tersebut dari tabel.

Jika ingin membuat lebih dari satu tabel dengan indeks sekunder, Anda harus melakukannya secara berurutan. Misalnya, Anda akan membuat tabel pertama dan menunggu agar tabel menjadi ACTIVE, buat tabel berikutnya dan tunggu agar tabel menjadi ACTIVE, dan seterusnya. Jika Anda mencoba membuat lebih dari satu tabel secara bersamaan dengan indeks sekunder, DynamoDB mengembalikan LimitExceededException.

Setiap indeks sekunder menggunakan kelas tabel dan mode kapasitas yang sama dengan tabel dasar yang terkait dengannya. Untuk setiap indeks sekunder, Anda harus menentukan hal berikut:

  • Jenis indeks yang akan dibuat – baik indeks sekunder global atau indeks sekunder lokal.

  • Nama untuk indeks. Aturan penamaan untuk indeks sama dengan aturan untuk tabel, seperti yang tercantum dalam Layanan, akun, dan tabel kuota di Amazon DynamoDB. Nama harus unik untuk tabel dasar yang terkait dengannya, namun Anda dapat menggunakan nama yang sama untuk indeks yang terkait dengan tabel dasar berbeda.

  • Skema kunci indeks. Setiap atribut dalam skema kunci indeks harus merupakan atribut tingkat atas dari jenis String, Number, atau Binary. Jenis data lain, termasuk dokumen dan set, tidak diperbolehkan. Persyaratan lain untuk skema kunci bergantung pada jenis indeks:

    • Untuk indeks sekunder global, kunci partisi dapat berupa atribut skalar apa pun dari tabel dasar. Kunci urutan bersifat opsional, dan dapat berupa atribut skalar apa pun dari tabel dasar.

    • Untuk indeks sekunder lokal, kunci partisi harus sama dengan kunci partisi tabel dasar, dan kunci urutan harus berupa atribut tabel dasar non-kunci.

  • Atribut tambahan, jika ada, untuk diproyeksikan dari tabel dasar ke dalam indeks. Atribut ini merupakan tambahan dari atribut kunci tabel, yang secara otomatis diproyeksikan ke dalam setiap indeks. Anda dapat memproyeksikan atribut dari jenis data apa pun, termasuk skalar, dokumen, dan set.

  • Pengaturan throughput yang disediakan untuk indeks, jika perlu:

    • Untuk indeks sekunder global, Anda harus menentukan pengaturan unit kapasitas baca dan tulis. Pengaturan throughput yang disediakan ini tidak tergantung pada pengaturan tabel dasar.

    • Untuk indeks sekunder lokal, Anda tidak perlu menentukan pengaturan unit kapasitas baca dan tulis. Setiap operasi baca dan tulis pada indeks sekunder lokal diambil dari pengaturan throughput yang disediakan dari tabel dasarnya.

Untuk fleksibilitas kueri maksimum, Anda dapat membuat hingga 20 indeks sekunder global (kuota default) dan hingga 5 indeks sekunder lokal per tabel.

Kuota indeks sekunder global per tabel adalah 20 untuk Wilayah berikut: AWS

  • AWS GovCloud (AS-Timur)

  • AWS GovCloud (AS-Barat)

  • Eropa (Stockholm)

Untuk mendapatkan daftar rinci indeks sekunder pada tabel, gunakan operasi DescribeTable. DescribeTable menampilkan nama, ukuran penyimpanan, dan jumlah item untuk setiap indeks sekunder pada tabel. Nilai-nilai ini tidak diperbarui secara real time, tetapi diperbarui kira-kira setiap enam jam.

Anda dapat mengakses data dalam indeks sekunder menggunakan operasi Query atau Scan. Kueri harus menentukan nama tabel dasar dan nama indeks yang ingin Anda gunakan, atribut yang akan dihasilkan dalam hasil kueri, dan syarat kueri apa pun yang ingin Anda terapkan. DynamoDB dapat menampilkan hasil dalam urutan menaik atau menurun.

Saat Anda menghapus tabel, semua indeks yang terkait dengan tabel tersebut juga akan dihapus.

Untuk praktik terbaik, lihat Praktik terbaik untuk menggunakan indeks sekunder di DynamoDB.