Membuat indeks sekunder global

Anda dapat menggunakan tampilan terwujud berkelanjutan sebagai indeks sekunder global 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 global. Hal ini memungkinkan Anda mengambil data yang sama menggunakan pola penelusuran kueri yang berbeda dengan membuat kueri tampilan terwujud.

Indeks sekunder global 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 global dengan tabel sumber secara otomatis dengan cara yang konsisten pada akhirnya.

Kapan harus menggunakan indeks sekunder global

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, 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 global. 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 global 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 global, berikan klausa WHERE dalam kueri SQL yang menentukan tampilan.
  • Kunci atribut: Jika Anda perlu membuat kueri data berdasarkan atribut non-kunci, seperti penentu atau nilai kolom, Anda dapat menyertakannya dalam klausa ORDER BY.

Tentang indeks sekunder global

Untuk menggunakan tampilan terwujud berkelanjutan di Bigtable sebagai indeks sekunder global, pertimbangkan persyaratan berikut:

  • Kunci baris untuk indeks sekunder global baru harus menyertakan kunci baris tabel sumber untuk membantu memastikan pemetaan satu-ke-satu antara baris dalam tabel sumber dan baris dalam indeks sekunder global tampilan terwujud berkelanjutan.
  • Indeks sekunder global 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 global 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 global, pertimbangkan persyaratan berikut:

  • Setiap kolom dalam klausa ORDER BY juga harus disertakan dalam klausa SELECT.
  • Setelah Anda menentukan indeks sekunder global, aplikasi Anda harus dapat memilih antara membuat kueri tabel sumber atau tampilan terwujud yang merepresentasikan indeks sekunder global.
  • Aplikasi tidak menulis langsung ke indeks, yang terus disinkronkan dengan tabel sumber. Selalu tulis ke tabel sumber.
  • Indeks sekunder global pada akhirnya konsisten; data ditulis ke tabel sumber terlebih dahulu, lalu diubah ke format indeks sekunder global.
  • 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 dari indeks sekunder global. Semua kolom lain yang dipilih menjadi nilai kolom non-kunci dalam indeks sekunder global. Jika Anda mengonversi nilai dalam klausa ORDER BY ke jenis data GoogleSQL for Bigtable tertentu, nilai tersebut akan mempertahankan jenis datanya di kunci baris terstruktur indeks sekunder global.

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 global

Anda membuat indeks sekunder global dengan membuat tampilan terwujud berkelanjutan dengan kueri SQL yang menentukan indeks sekunder global.

Dalam contoh berikut, kueri SQL membuat indeks sekunder global yang memungkinkan Anda membuat kueri data interaksi pengguna. Klausul ORDER BY menentukan kunci baris terstruktur dari indeks sekunder global, 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 global yang sesuai:

Baris tabel sumber Baris indeks sekunder global
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 global, Anda hanya dapat menggunakan kueri SQL.

Langkah berikutnya