Filter
Saat membaca data dari Bigtable, Anda dapat membaca baris atau rentang baris tertentu. Namun, Anda tidak selalu memerlukan semua data di semua baris. Anda mungkin hanya memerlukan baris yang berisi nilai tertentu dalam kunci barisnya, atau sel dalam grup kolom tertentu.
Untuk membatasi hasil permintaan baca, sertakan filter dalam permintaan. Filter diterapkan ke data sebelum respons dikirim, sehingga mengurangi jumlah data yang ditampilkan. Akibatnya, penggunaan filter dapat berarti biaya jaringan yang lebih rendah dan throughput yang lebih cepat. Halaman ini memberikan ringkasan cara kerja filter Bigtable dan daftar filter yang tersedia.
Untuk mengetahui detail dan contoh kode untuk setiap filter, lihat Contoh filter.
Cara kerja filter
Jika permintaan baca Anda menyertakan filter, Bigtable akan mengambil baris atau rentang baris dari tabel Anda. Untuk setiap baris input yang diambil, Bigtable mengevaluasi baris menggunakan filter Anda, lalu membuat baris output berdasarkan hasil filter.
Bigtable menyediakan beberapa jenis filter, seperti yang dijelaskan di bagian berikut. Filter dasar terbagi menjadi dua kategori: membatasi dan mengubah. Anda dapat menggabungkan filter dasar ke dalam filter komposisi.
Pada umumnya, filter diterapkan ke semua baris kecuali jika Anda menentukan kunci baris, rentang baris, atau jumlah baris yang akan diterapkan filter. Satu pengecualian adalah filter regex kunci baris, yang dapat membatasi rentang baris dalam kasus tertentu jika regex adalah awalan tetap. Secara umum, untuk menghindari kelambatan pemindaian tabel lengkap, selalu tentukan baris untuk filter.
Membatasi filter
Filter pembatas mengontrol baris atau sel yang disertakan dalam respons, berdasarkan apakah baris atau sel tersebut cocok dengan kriteria tertentu. Misalnya, Anda dapat menyatakan bahwa respons hanya boleh menyertakan baris yang kunci barisnya cocok dengan ekspresi reguler, atau bahwa Anda hanya menginginkan sel dari keluarga kolom tertentu.
Banyak filter pembatas yang dapat mengecualikan sel dari baris output. Jika semua sel dikecualikan dari baris output, baris tersebut tidak akan disertakan dalam respons.
Lihat Ringkasan filter untuk mengetahui daftar lengkap filter pembatas.
Mengubah filter
Filter pengubah memengaruhi data atau metadata untuk setiap sel.
Bigtable menyediakan filter pengubah berikut:
Filter nilai strip, yang mengganti nilai setiap sel dengan string kosong. Filter ini berguna jika Anda hanya memerlukan jumlah baris atau daftar kunci baris yang memenuhi kriteria Anda, bukan data dari baris tersebut.
Terapkan filter label, yang menerapkan label ke setiap sel untuk mengidentifikasi filter mana yang menghasilkan setiap sel dalam respons. Aplikasi Anda dapat menggunakan label ini untuk melakukan pemfilteran tambahan di sisi klien.
Membuat filter
Filter komposisi memungkinkan Anda menggabungkan beberapa filter dasar menjadi satu,
yang memungkinkan penerapan lebih dari satu filter ke satu permintaan baca.
Misalnya, untuk mendapatkan data penggunaan CPU untuk server, Anda dapat menggunakan satu filter untuk
hanya menyertakan baris dengan kunci baris yang dimulai dengan SERVER
, diikuti dengan filter kedua
untuk hanya menyertakan sel dalam keluarga kolom CPU
.
Bigtable menyediakan filter komposisi berikut:
- Rantai, yang menerapkan urutan filter ke setiap baris input dan menampilkan baris output. Filter rantai seperti menggunakan AND logis.
- Interleave, yang mengirimkan setiap baris input melalui beberapa filter, lalu menggabungkan semua hasil filter untuk baris input menjadi satu baris output. Filter interleave seperti menggunakan OR logis.
- Kondisi, yang menghasilkan baris output dengan menerapkan salah satu dari dua kemungkinan filter ke baris input. Filter dipilih dengan menerapkan filter predikat ke baris input, lalu memeriksa apakah baris output filter predikat berisi sel.
Filter dan performa
Filter memungkinkan Anda mengambil hanya data yang benar-benar Anda butuhkan. Oleh karena itu, filter dapat meningkatkan performa dengan mengurangi jumlah data yang dikirim ke aplikasi Anda.
Namun, filter bukanlah solusi serbaguna untuk setiap masalah performa. Secara umum, filter harus digunakan untuk mengontrol efisiensi throughput, bukan untuk mengurangi latensi antara pengiriman permintaan dan penerimaan respons. Jika digunakan dengan benar, filter dapat menjadi bagian yang efektif dari strategi untuk meningkatkan performa pembacaan.
Filter conditions, khususnya, dapat meningkatkan latensi, karena kondisi jauh lebih lambat daripada filter lainnya. Jika permintaan baca Anda sangat sensitif terhadap performa, jangan gunakan kondisi dalam permintaan.
Ringkasan filter
Tabel berikut mencantumkan filter yang disediakan Bigtable, termasuk link ke detail dan contoh kode untuk setiap filter.
Membatasi filter | |
---|---|
Blokir semua | Jangan memunculkan sel apa pun. Sangat berguna untuk proses debug. |
Batas sel per kolom | Hanya sertakan N versi terbaru kolom dalam baris. |
Batas sel per baris | Hanya sertakan sel N pertama dari baris. |
Sel per offset baris | Hapus sel N pertama dari baris. |
Regex grup kolom | Hanya sertakan sel yang grup kolomnya cocok dengan ekspresi reguler RE2. |
Ekspresi reguler penentu kolom | Hanya sertakan sel yang penentu kolomnya cocok dengan ekspresi reguler. |
Rentang kolom | Hanya sertakan sel dalam grup kolom tertentu yang penentu kolomnya berada dalam rentang tertentu. |
Teruskan semua | Memunculkan semua sel input. Sangat berguna untuk proses debug. |
Regex kunci baris | Hanya sertakan sel yang kunci barisnya cocok dengan ekspresi reguler. |
Contoh baris | Mengambil sampel baris acak. |
Wastafel | Menyertakan sel dalam baris output akhir, dan mencegahnya diubah atau dihapus oleh filter berikutnya. |
Rentang stempel waktu | Hanya sertakan sel yang stempel waktunya berada dalam rentang tertentu. |
Rentang nilai | Hanya sertakan sel yang nilainya berada dalam rentang tertentu. |
Ekspresi reguler nilai | Hanya sertakan sel yang nilainya cocok dengan ekspresi reguler. |
Mengubah filter | |
---|---|
Menerapkan label | Tambahkan label ke semua sel. |
Nilai strip | Menampilkan string kosong untuk setiap nilai sel. |
Membuat komposisi filter | |
---|---|
Chain | Menerapkan beberapa filter secara berurutan. |
Kondisi | Terapkan salah satu dari dua filter yang mungkin ke baris. |
Interleave | Menggabungkan baris output dari beberapa filter menjadi satu baris output. |