Artikel ini memberikan analisis mendalam mengenai kueri berdasarkan kunci utama tabel data, kueri menggunakan indeks sekunder, serta kueri menggunakan indeks pencarian. Artikel ini juga memberikan panduan untuk memilih antara indeks sekunder dan indeks pencarian.
Informasi latar belakang
Untuk menanyakan data dalam tabel data Tablestore, Anda harus menentukan kunci utama atau rentang nilai kunci utama. Anda dapat memanggil operasi GetRow untuk menanyakan baris berdasarkan kunci utama yang ditentukan atau memanggil operasi GetRange untuk menanyakan baris-baris dengan nilai kunci utama dalam rentang tertentu. Fitur filter digunakan untuk menanyakan data di kolom atribut. Jika kolom atribut berisi sejumlah besar data, efisiensi kueri fitur filter rendah dan bahkan mungkin diperlukan pemindaian seluruh tabel. Untuk informasi lebih lanjut, lihat Baca Data.
Selain efisiensi kueri fitur filter yang tidak memadai untuk sejumlah besar data, kueri berdasarkan kunci utama tabel data mungkin tidak memenuhi kebutuhan bisnis Anda dalam skenario nyata. Untuk membantu Anda menanyakan data, Tablestore menyediakan indeks sekunder dan indeks pencarian.
Ikhtisar
Tablestore menyediakan indeks sekunder dan indeks pencarian untuk mempercepat kueri data.
Kueri berdasarkan indeks sekunder
Setelah membuat indeks sekunder untuk tabel data, tabel indeks dibuat untuk tabel tersebut. Model tabel indeks sama dengan model tabel data. Tabel indeks menyediakan skema kustom yang dapat meningkatkan efisiensi kueri sesuai dengan skenario bisnis Anda. Untuk informasi lebih lanjut, lihat Ikhtisar.
Anda dapat menggunakan tabel indeks untuk menanyakan data berdasarkan kunci utama yang ditentukan, rentang nilai kunci utama, atau rentang awalan kolom kunci utama. Tablestore secara otomatis menambahkan kolom kunci utama tabel data yang tidak ditentukan sebagai kolom kunci indeks ke tabel indeks sebagai kolom kunci utama tabel indeks. Ini memastikan bahwa nilai kunci utama setiap baris dalam tabel indeks unik.
Di Tablestore, indeks sekunder diklasifikasikan menjadi indeks sekunder global dan indeks sekunder lokal. Jika Anda menggunakan fitur indeks sekunder global, Tablestore secara otomatis menyinkronkan data dari kolom terindeks dan kolom kunci utama tabel data tempat tabel indeks dibuat ke tabel indeks dalam mode asinkron. Latensi sinkronisasi berada dalam beberapa milidetik.
Untuk memenuhi persyaratan pengguna pada konsistensi kuat selama kueri data, Tablestore menyediakan fitur indeks sekunder lokal. Jika Anda menggunakan fitur indeks sekunder lokal, Tablestore secara otomatis menyinkronkan data dari kolom terindeks dan kolom kunci utama tabel data tempat tabel indeks dibuat ke tabel indeks dalam mode sinkron. Setelah data ditulis ke tabel data, Anda dapat segera menanyakan data dari tabel indeks.
Tabel berikut menjelaskan perbedaan antara indeks sekunder global dan indeks sekunder lokal dalam hal mode sinkronisasi, persyaratan pada kolom kunci utama pertama, latensi sinkronisasi, dan konsistensi baca.
Item | Indeks sekunder global | Indeks sekunder lokal |
Mode sinkronisasi | Mode asinkron | Mode sinkron |
Persyaratan pada kolom kunci utama pertama | Kolom kunci utama pertama dari indeks sekunder global dapat berupa kolom kunci utama apa pun atau kolom yang telah ditentukan sebelumnya dari tabel data tempat indeks sekunder dibuat. | Kolom kunci utama pertama dari indeks sekunder lokal harus sama dengan kolom kunci utama pertama dari tabel data tempat indeks sekunder dibuat. |
Latensi sinkronisasi | Dalam beberapa milidetik | Real-time |
Konsistensi baca | Konsistensi akhir | Konsistensi kuat |
Kueri berdasarkan indeks pencarian
Indeks pencarian mendukung berbagai skema indeks, seperti indeks terbalik dan indeks spatio-temporal. Oleh karena itu, berbeda dengan kueri berdasarkan kunci utama tabel data dan kueri berdasarkan indeks sekunder, kueri berdasarkan indeks pencarian mendukung berbagai metode kueri, seperti kueri Boolean, kueri fuzzy, kueri geo, dan pencarian teks lengkap. Untuk informasi lebih lanjut, lihat Ikhtisar.
Indeks pencarian menyediakan lebih banyak fitur daripada indeks sekunder. Anda dapat menentukan berbagai kondisi untuk menanyakan data dari berbagai dimensi menggunakan indeks pencarian.
Pilih indeks
Periksa apakah Anda perlu menggunakan indeks berdasarkan kondisi kueri.
Dalam banyak kasus, Anda tidak perlu menggunakan indeks dalam skenario kueri berikut:
Jika kueri berdasarkan kunci utama yang ditentukan atau rentang nilai kunci utama dapat memenuhi kebutuhan bisnis Anda, Anda tidak perlu membuat indeks. Untuk informasi lebih lanjut, lihat Baca Data.
Jika Anda ingin menyaring data dalam rentang yang jumlah datanya kecil atau jika Anda tidak sering melakukan kueri, Anda dapat menggunakan fitur filter. Anda tidak perlu membuat indeks. Untuk informasi lebih lanjut, lihat Konfigurasikan Filter.
Jika Anda tidak sering melakukan kueri kompleks dan tidak sensitif terhadap latensi, Anda dapat mengeksekusi pernyataan SQL untuk menanyakan data di Tablestore. Untuk informasi lebih lanjut, lihat Kueri Data.
Jika Anda perlu menggunakan indeks, pilih indeks sekunder atau indeks pencarian berdasarkan kebutuhan bisnis Anda.
Indeks sekunder adalah tabel indeks yang mirip dengan tabel data. Indeks sekunder menyediakan mode distribusi data yang menggunakan metode tertentu untuk mengatur kolom kunci utama tabel indeks. Satu indeks mendukung satu kondisi kueri. Indeks sekunder mengatur data berdasarkan kondisi kueri yang ditentukan untuk meningkatkan kinerja kueri. Tabel indeks mendukung jumlah data yang sama dengan tabel data. Anda harus mempertimbangkan penghashan saat menentukan kunci utama untuk indeks sekunder.
Indeks pencarian berisi kombinasi skema. Setiap kolom mendukung skema seperti indeks terbalik. Anda dapat mengurutkan hasil kueri berdasarkan kolom. Satu indeks pencarian dapat mendukung beberapa kondisi kueri. Anda tidak perlu membuat beberapa indeks pencarian untuk kondisi kueri yang berbeda.
Dibandingkan dengan indeks sekunder, indeks pencarian mendukung berbagai metode kueri, seperti kueri Boolean, kueri fuzzy, pencarian teks lengkap, dan kueri geo. Indeks pencarian juga mendukung berbagai skema untuk mempercepat penyaringan data tetapi kurang efisien daripada indeks sekunder ketika data dibaca dalam urutan tetap. Kinerja kueri indeks pencarian bervariasi berdasarkan ukuran tabel data. Jika tabel data berisi puluhan miliar baris, kami sarankan Anda menggunakan kunci routing untuk membagi data. Anda juga dapat menggunakan kunci routing untuk mengurangi jumlah data dalam kueri.