Membuat indeks sekunder asinkron
Anda dapat menggunakan tampilan terwujud berkelanjutan sebagai indeks sekunder asinkron untuk tabel.
Sebelum membaca halaman ini, pahami Tampilan terwujud berkelanjutan.
Data dalam tabel Bigtable biasanya diindeks berdasarkan kunci baris. Namun, Anda dapat membuat tampilan terwujud berkelanjutan dari tabel sumber dan menggunakannya sebagai indeks sekunder asinkron. Dengan begitu, Anda dapat mengambil data yang sama menggunakan pola penelusuran kueri yang berbeda dengan membuat kueri tampilan terwujud.
Indeks sekunder asinkron adalah tampilan terwujud berkelanjutan yang berisi subset kolom dari tabel sumber, beserta kunci baris yang berbeda dari kunci baris di tabel sumber. Kunci baris ini mungkin didasarkan pada transformasi berikut yang memungkinkan aplikasi Anda mengambil data yang sama berdasarkan pola penelusuran kueri yang berbeda:
- Atribut dalam tabel sumber, seperti kualifikasi kolom, nilai kolom, atau bagian dari kunci baris sumber.
- Memformat ulang kunci baris.
- Transformasi yang menggabungkan kunci baris dengan atribut.
Bigtable menyinkronkan indeks sekunder asinkron dengan tabel sumber secara otomatis dengan cara yang konsisten pada akhirnya.
Kapan harus menggunakan indeks sekunder asinkron
Aplikasi sering kali perlu membuat kueri data yang sama menggunakan pola atau atribut penelusuran yang berbeda. Misalnya, pertimbangkan aplikasi yang mengambil informasi pengguna berdasarkan alamat email atau nomor telepon. Anda mungkin menginginkan tingkat performa yang sama di kedua pola kueri. Jika Anda menjadikan alamat email sebagai kunci baris Bigtable dan menyimpan nomor telepon dalam kolom, maka performa pencarian nomor telepon akan lebih lambat karena memerlukan pemindaian seluruh tabel.
Untuk meningkatkan performa kueri saat mencari berdasarkan nomor telepon, Anda dapat membuat tampilan terwujud berkelanjutan dengan pernyataan SQL. Pernyataan SQL menginstruksikan Bigtable cara menyusun ulang data Anda dengan kunci baris yang berbeda. Tampilan terwujud berkelanjutan berfungsi seperti tabel yang dapat Anda kueri. Kemudian, Anda menggunakan tampilan sebagai indeks sekunder asinkron. Hal ini memberi aplikasi Anda jalur akses lain ke data yang sama. Setiap jalur menggunakan kunci baris yang berbeda sehingga Anda dapat memilih jalur alternatif untuk setiap kueri. Untuk memilih jalur terbaik untuk kueri Anda, pahami struktur kunci baris untuk setiap tabel dan data yang disimpan setiap tabel.
Menggunakan tampilan terwujud berkelanjutan sebagai indeks sekunder asinkron dapat meningkatkan performa kueri dalam kasus penggunaan berikut:
- Mengubah kunci data Anda: Jika Anda perlu membuat kueri data menggunakan kunci yang berbeda dengan kunci baris tabel sumber, Anda dapat membuat tampilan terwujud berkelanjutan dengan kunci alternatif dan membuat kueri terhadap tampilan tersebut.
- Memfilter data: Jika Anda ingin memfilter tabel sumber dan mengisi hanya
baris data tertentu dalam indeks sekunder asinkron, berikan klausa
WHERE
dalam kueri SQL yang menentukan tampilan. - Kunci atribut: Jika Anda perlu membuat kueri data berdasarkan atribut non-kunci, seperti kualifikasi atau nilai kolom, Anda dapat menyertakannya dalam klausa
ORDER BY
.
Tentang indeks sekunder asinkron
Untuk menggunakan tampilan terwujud berkelanjutan di Bigtable sebagai indeks sekunder asinkron, pertimbangkan persyaratan berikut:
- Kunci baris untuk indeks sekunder asinkron baru harus menyertakan kunci baris tabel sumber untuk membantu memastikan pemetaan satu-ke-satu antara baris dalam tabel sumber dan baris dalam indeks sekunder asinkron dari tampilan terwujud berkelanjutan.
- Indeks sekunder asinkron tidak harus memiliki skema atau atribut yang sama dengan tabel sumber. Di bagian
SELECT
kueri SQL, Anda harus menentukan kolom mana dari tabel yang diperlukan dan transformasi SQL apa pun pada data yang ingin Anda terapkan. - Indeks sekunder asinkron hanya perlu menyalin data yang Anda butuhkan untuk pola kueri. Anda tidak perlu memberikan semua data sumber di tabel sumber.
- Di Bigtable, kunci baris yang Anda pilih memberikan urutan pengurutan default.
Untuk membuat kueri indeks sekunder asinkron, pertimbangkan persyaratan berikut:
- Setiap kolom dalam klausa
ORDER BY
juga harus disertakan dalam klausaSELECT
. - Setelah Anda menentukan indeks sekunder asinkron, aplikasi Anda harus dapat memilih antara membuat kueri tabel sumber atau tampilan terwujud yang merepresentasikan indeks sekunder asinkron.
- Aplikasi tidak menulis langsung ke indeks, yang terus disinkronkan dengan tabel sumber. Selalu tulis ke tabel sumber.
- Indeks sekunder asinkron pada akhirnya konsisten; data ditulis ke tabel sumber terlebih dahulu, lalu diubah ke format indeks sekunder asinkron.
- Sebaiknya buat indeks cakupan. Untuk mengetahui informasi selengkapnya, lihat bagian Indeks cakupan dalam dokumen ini.
- Klausa
ORDER BY
harus berisi kunci baris yang tidak diubah dari tabel sumber, dan semua data harus diurutkan dalam urutan menaik. Kunci baris dalam tabel sumber selalu diproyeksikan ke tampilan terwujud; namun, kunci baris dapat digabungkan dengan atribut lain. - Kolom dalam klausa
ORDER BY
menjadi bagian dari kunci baris terstruktur indeks sekunder asinkron. Semua kolom lain yang dipilih menjadi nilai kolom non-kunci dalam indeks sekunder asinkron. Jika Anda mengonversi nilai dalam klausaORDER BY
ke jenis data GoogleSQL for Bigtable tertentu, nilai tersebut akan mempertahankan jenis datanya di kunci baris terstruktur indeks sekunder asinkron.
Mencakup indeks
Indeks cakupan mencakup semua kolom yang dibutuhkan kueri Anda. Saat Anda
mengirim kueri ke indeks yang mencakup, Bigtable dapat mengambil semua
data yang diperlukan langsung dari indeks, tanpa harus mengakses tabel sumber. Kami
merekomendasikan pendekatan ini untuk performa yang optimal karena meminimalkan jumlah
operasi baca disk. Untuk membuat indeks cakupan, pastikan pernyataan SELECT
Anda menentukan semua kolom yang Anda butuhkan dalam kueri.
Jika ingin membuat indeks yang tidak mencakup, kueri indeks, lalu gunakan hasilnya untuk mencari kolom tambahan yang Anda butuhkan dari tabel sumber.
Menentukan indeks sekunder asinkron
Anda membuat indeks sekunder asinkron dengan membuat tampilan terwujud berkelanjutan dengan kueri SQL yang menentukan indeks sekunder asinkron.
Dalam contoh berikut, kueri SQL membuat indeks sekunder asinkron yang memungkinkan Anda membuat kueri data interaksi pengguna. Klausul ORDER BY
menentukan
kunci baris terstruktur indeks sekunder asinkron, menggunakan kombinasi nomor telepon
pengguna, ID pengguna, dan alamat email. Tindakan ini juga menetapkan nama interactions
ke
grup kolom activity
:
SELECT
user['phone'] AS phone,
CAST(user['id'] AS INT64) AS user_id,
_key AS email,
activity AS interactions
FROM CLICKS_TABLE
ORDER BY 1, 2, 3;
Tabel berikut menjelaskan cara indeks dibuat dengan membandingkan tampilan baris yang sama dalam tabel sumber dengan indeks sekunder asinkron yang sesuai:
Baris tabel sumber | Baris indeks sekunder asinkron |
---|---|
Kunci baris: _key : user1@example.com Atribut: user : {id: "123", phone: "555-123-4567"} activity : {action: "CLICKED_PRODUCT_A"} |
Kunci baris terstruktur: phone : 555-123-4567 user_id : 123 email : user1@example.com Atribut: interactions : {action: "CLICKED_PRODUCT_A"} |
Kunci baris: _key : user2@example.com Atribut: user : {id: "456", phone: "555-987-6543"} activity : {action: "VIEWED_PRODUCT_B"} |
Kunci baris terstruktur: phone : 555-987-6543 user_id : 456 email : user2@example.com Atribut: interactions : {action: "VIEWED_PRODUCT_B"} |
Kunci baris: _key : user3@example.com Atribut: user : {id: "1000", phone: "555-111-2222"} activity : {action: "ADDED_TO_CART_PRODUCT_C"} |
Kunci baris terstruktur: phone : 555-111-2222 user_id : 1000 email : user3@example.com Atribut: interactions : {action: "ADDED_TO_CART_PRODUCT_C"} |
Batasan
- Untuk membaca kunci output, yang merupakan kunci indeks sekunder asinkron, Anda hanya dapat menggunakan kueri SQL.
Langkah berikutnya
- Kueri tabel virtual terwujud berkelanjutan
- Membuat dan mengelola tampilan terwujud berkelanjutan
- Praktik terbaik desain skema
- Mengelola skema kunci baris
- Penghitungan terdistribusi di Bigtable