Membuat dan mengelola tampilan yang diberi parameter
Anda dapat membuat tampilan yang diberi parameter dari tampilan logis di Bigtable, lalu melakukan operasi pada tampilan yang diberi parameter.
Sebelum membaca halaman ini, pahami Ringkasan tampilan yang diberi parameter.
Sebelum memulai
Jika Anda berencana menggunakan Google Cloud CLI, ikuti langkah-langkah berikut:
-
Instal Google Cloud CLI.
-
Konfigurasi gcloud CLI agar menggunakan identitas gabungan Anda.
Untuk mengetahui informasi selengkapnya, lihat Login ke gcloud CLI dengan identitas gabungan Anda.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk membuat dan mengelola tampilan yang diberi parameter, minta administrator untuk memberi Anda peran Admin Bigtable (roles/bigtable.admin) pada instance.
Atau, Anda dapat meminta izin berikut di tingkat instance:
- Buat:
bigtable.logicalViews.create - Perbarui:
bigtable.logicalViews.update - Hapus:
bigtable.logicalViews.delete - Daftar:
bigtable.logicalViews.list
Untuk membuat tampilan yang diberi parameter, Anda juga harus memiliki setidaknya izin bigtable.tables.readRows pada tabel sumber.
Membuat tampilan yang diberi parameter
Tampilan yang diberi parameter adalah tabel virtual yang ditentukan oleh pernyataan SQL SELECT yang dapat menyertakan fungsi VIEW_PARAMETERS().
Untuk membuat tampilan yang diberi parameter, gunakan
gcloud bigtable logical-views create
perintah.
gcloud bigtable logical-views create VIEW \
--instance=INSTANCE \
--query="SELECT * FROM TABLE_ID WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('VIEW_PARAMETERS') AS BYTES))"
Ganti kode berikut:
VIEW: ID hingga 128 karakter untuk tampilan yang diberi parameter baru. ID harus unik di antara ID tabel dan ID tampilan dalam instance.INSTANCE: ID instance untuk membuat tampilan yang diberi parameter.TABLE_ID: ID tabel sumber.VIEW_PARAMETERS: nama parameter tampilan dalam tanda kutip tunggal untuk diteruskan sebagai argumen ke fungsiVIEW_PARAMETERS().
Opsional:
- Untuk melindungi tampilan yang diberi parameter agar tidak dihapus, tambahkan perintah dengan flag
--deletion-protection. Jika Anda tidak menerapkan setelan ini, tampilan dapat dihapus. Anda juga dapat secara eksplisit mengizinkan penghapusan tampilan dengan menambahkan--no-deletion-protection. Untuk mengetahui informasi selengkapnya, lihat bagian Memperbarui tampilan yang diberi parameter dalam dokumen ini.
Membuat tampilan yang diberi parameter dengan kunci baris terstruktur
Jika tabel Anda menggunakan kunci baris terstruktur, Anda dapat memfilter segmen tertentu dari kunci baris.
Misalnya, jika row key dalam tabel histori pembelian menyimpan pengguna, stempel waktu tanggal pembelian, dan ID pesanan, yang dibatasi oleh simbol #, Anda dapat menentukan skema baris sebagai berikut:
field {
field_name: "user_id"
type: { bytesType { encoding { raw {} } } }
}
field {
field_name: "reversed_timestamp"
type: { timestampType { encoding { unixMicrosInt64 { encoding: { orderedCodeBytes: {} } } } } }
}
field {
field_name: "order_id"
type: { stringType { encoding { utf8Bytes {} } } }
}
encoding {
delimitedBytes { delimiter "#" }
}
Kemudian, Anda dapat membuat tampilan yang memfilter kolom ID pengguna:
gcloud bigtable logical-views create VIEW \
--instance=INSTANCE \
--query="SELECT * FROM TABLE_ID WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)"
Ganti kode berikut:
VIEW: ID hingga 128 karakter untuk tampilan yang diberi parameter baru. ID harus unik di antara ID tabel dan ID tampilan dalam instance.INSTANCE: ID instance untuk membuat tampilan yang diberi parameter.TABLE_ID: ID tabel sumber.
Memperbarui tampilan yang diberi parameter
Anda memperbarui tampilan yang diberi parameter dengan cara yang sama seperti Anda memperbarui tampilan logis.
Menghapus tampilan yang diberi parameter
Anda menghapus tampilan yang diberi parameter dengan cara yang sama seperti Anda menghapus tampilan logis.
Melihat informasi tentang tampilan yang diberi parameter
Anda melihat daftar tampilan yang diberi parameter dengan cara yang sama seperti Anda melihat daftar tampilan logis untuk instance.
Membuat kueri tampilan yang diberi parameter
Anda membuat kueri tampilan yang diberi parameter dengan cara yang sama seperti tabel reguler, tetapi Anda memberikan peta view_parameters dalam permintaan.
Contoh berikut menunjukkan cara membuat kueri tampilan yang diberi parameter bernama purchase_history_pv, yang memfilter data berdasarkan ID pengguna.
// Assumes 'purchase_history_pv' was created with the definition:
// SELECT * FROM purchases WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)
String query = "SELECT customer_info[email], order_details[status], order_info[items] from purchase_history_pv";
PreparedStatement preparedStatement = dataClient.prepareStatement(query);
BoundStatement boundStatement = preparedStatement.bind().build();
// The user ID is now passed out-of-band in a view parameters map.
Map<String, Value> viewParameters = new HashMap<>();
viewParameters.put("user_id", Value.newBuilder().setType(stringType()).setStringValue(userId).build());
// Execute the query, passing the view parameters using a proto field in the request.
ResultSet rs = dataClient.executeQuery(
boundStatement,
viewParameters
);
Hal ini mencegah pengguna dapat melihat atau memanipulasi parameter user_id dalam kueri itu sendiri, sehingga memberikan pemisahan logis yang jelas.