Membuat dan mengelola skema protobuf
Dokumen ini menjelaskan cara membuat dan melakukan operasi pada paket skema.
Di Bigtable, Anda dapat menggunakan skema buffer protokol (protobuf) untuk membuat kueri setiap kolom dalam pesan protobuf yang disimpan sebagai byte di kolom Anda. Anda melakukannya dengan mengupload skema dalam paket skema, resource tingkat tabel yang berisi satu atau beberapa skema protobuf Anda.
Menggunakan paket skema memberikan manfaat berikut:
- Menghemat waktu dan tenaga: dengan buffer protokol, Anda cukup menentukan struktur data sekali dalam file proto, lalu menggunakan kode sumber yang dihasilkan untuk menulis dan membaca data Anda.
- Meningkatkan konsistensi data: dengan menggunakan file proto sebagai satu sumber kebenaran, Anda dapat memastikan bahwa semua aplikasi dan layanan menggunakan model data yang sama.
- Menghilangkan duplikasi data: Anda dapat menggunakan buffer protokol di seluruh project dengan menentukan jenis pesan dalam file proto yang berada di luar codebase project tertentu.
Proses penggunaan skema di Bigtable dimulai dengan file proto Anda. File proto adalah file teks tempat Anda menentukan struktur data. Anda menggunakan alat compiler protobuf, yang juga disebut sebagai protoc, untuk membuat set deskriptor file protobuf, yang merupakan skema file proto yang dapat dibaca mesin. Kemudian, Anda menggunakan set deskriptor ini untuk membuat paket skema.
Untuk contoh file proto dan set deskriptor yang sesuai, lihat Contoh data.
Diagram berikut menunjukkan proses penggunaan skema di Bigtable:
Anda dapat membuat paket skema menggunakan konsol Google Cloud atau Google Cloud CLI. Setelah mengupload paket skema ke Bigtable, Anda dapat membuat kueri data menggunakan pembuat kueri Bigtable Studio, GoogleSQL untuk Bigtable, atau tabel eksternal Bigtable di BigQuery.
Sebelum memulai
Lakukan langkah-langkah berikut jika Anda berencana menggunakan gcloud CLI:
- Instal Google Cloud CLI.
Lakukan inisialisasi gcloud CLI:
gcloud init
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna membuat dan mengelola paket skema, minta administrator untuk memberi Anda peran Identity and Access Management (IAM) Bigtable Admin (roles/bigtable.admin) pada tabel.
Peran bawaan ini berisi izin yang diperlukan Bigtable untuk bekerja dengan paket skema. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
bigtable.schemaBundles.createbigtable.schemaBundles.updatebigtable.schemaBundles.deletebigtable.schemaBundles.getbigtable.schemaBundles.list
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Untuk mengetahui informasi selengkapnya tentang peran dan izin Bigtable, lihat Kontrol akses dengan IAM.
Membuat set deskriptor file protobuf
Sebelum dapat membuat paket skema, Anda harus membuat set deskriptor dari file proto dengan alat compiler protobuf.
- Untuk menginstal compiler, download paketnya dan ikuti petunjuk dalam file README.
Jalankan compiler:
protoc --proto_path=IMPORT_PATH --include_imports \ --descriptor_set_out=DESCRIPTOR_OUTPUT_LOCATION PATH_TO_PROTOGanti kode berikut:
IMPORT_PATH: direktori tempat compiler protoc mencari file proto.DESCRIPTOR_OUTPUT_LOCATION: direktori tempat compiler protoc menyimpan set deskriptor yang dihasilkan.PATH_TO_PROTO: jalur ke file proto Anda.
Misalnya, untuk membuat set deskriptor bernama library.pb untuk file
library.proto di direktori saat ini, Anda dapat menggunakan perintah berikut:
protoc --include_imports --descriptor_set_out=library.pb
library.proto
Membuat paket skema
Konsol
Di konsol Google Cloud , buka daftar instance Bigtable.
Pilih instance dari daftar.
Di panel navigasi, klik Bigtable Studio.
Di panel Explorer, di samping tabel tempat Anda ingin membuat paket skema, klik menu tindakan more_vert, lalu klik Create schema bundle.
Di dialog Create schema bundle, di kolom Schema Bundle ID, masukkan ID paket skema yang unik.
ID harus memiliki panjang 1 hingga 50 karakter, hanya boleh berisi huruf, angka, garis bawah, dan tanda hubung, tidak boleh diawali dengan tanda hubung, dan tidak boleh berisi karakter titik (
.).Di kolom File Descriptor Set (.pb file), klik Browse untuk memilih set deskriptor file protobuf yang Anda buat di bagian Membuat set deskriptor file protobuf dalam dokumen ini. Ukuran file tidak boleh lebih dari 4 MB.
Klik Create.
Paket skema akan terbuka di tab baru.
gcloud
Untuk membuat paket skema, gunakan perintah
gcloud bigtable schema-bundles create:
gcloud bigtable schema-bundles create SCHEMA_BUNDLE_ID \
--instance=INSTANCE_ID \
--table=TABLE_ID \
--proto-descriptors-file=PROTO_DESCRIPTORS_FILE
Ganti kode berikut:
SCHEMA_BUNDLE_ID: ID unik untuk paket skema baru yang tidak boleh berisi karakter titik ('.').INSTANCE_ID: ID instance tempat Anda membuat paket skema.TABLE_ID: ID tabel tempat Anda membuat paket skema.PROTO_DESCRIPTORS_FILE: jalur ke set deskriptor yang Anda buat di bagian Buat set deskriptor file protobuf dalam dokumen ini.
Java
Untuk membuat paket skema, gunakan metode createSchemaBundle:
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Melihat informasi tentang paket skema
Sebelum dapat melihat informasi tentang paket skema, Anda harus memiliki tabel Bigtable dengan setidaknya satu paket skema. Anda bisa mendapatkan informasi tentang paket skema dalam tabel dengan mengambil definisi satu paket skema atau dengan mencantumkan semua paket skema dalam tabel.
Mendapatkan definisi paket skema
Konsol
Di konsol Google Cloud , buka daftar instance Bigtable.
Pilih instance dari daftar.
Di panel navigasi, klik Bigtable Studio.
Di panel Explorer, luaskan tabel yang berisi paket skema, lalu luaskan Schema Bundles.
Klik paket skema yang ingin Anda lihat, atau klik menu tindakan more_vert di samping paket skema, lalu klik Lihat detail.
Tab yang terbuka akan menampilkan definisi paket skema.
Opsional: Untuk membuka tab editor kueri SQL dengan kueri contoh yang menggunakan paket skema, klik menu tindakan more_vert di samping paket skema, lalu klik Contoh kueri.
gcloud
Untuk mendapatkan detail tentang paket skema, gunakan perintah
gcloud bigtable schema-bundles describe:
gcloud bigtable schema-bundles describe SCHEMA_BUNDLE_ID \
--instance=INSTANCE_ID \
--table=TABLE_ID
Ganti kode berikut:
SCHEMA_BUNDLE_ID: ID paket skema.INSTANCE_ID: ID instance.TABLE_ID: ID tabel.
Java
Untuk mendapatkan definisi paket skema, gunakan metode getSchemaBundle.
Metode ini menampilkan objek SchemaBundle yang berisi definisi skema.
Contoh berikut menunjukkan cara mendapatkan paket skema dan mendeserialisasi set deskriptor untuk mencetak konten skema:
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Outputnya mirip dengan hal berikut ini:
--------- Deserialized FileDescriptorSet ---------
File: my_schema.proto
Package: my_package
Message: MyMessage
--------------------------------------------------
Mencantumkan paket skema dalam tabel
Konsol
Di konsol Google Cloud , buka daftar instance Bigtable.
Pilih instance dari daftar.
Di panel navigasi, klik Bigtable Studio.
Di panel Explorer, luaskan tabel yang berisi paket skema yang ingin Anda lihat.
Luaskan Schema Bundles.
Daftar paket skema dalam tabel akan muncul. Jika tabel tidak memiliki paket skema, daftar Paket Skema tidak ditampilkan.
gcloud
Untuk melihat daftar paket skema untuk tabel, gunakan perintah
gcloud bigtable schema-bundles list:
gcloud bigtable schema-bundles list \
--instance=INSTANCE_ID \
--table=TABLE_ID
Ganti kode berikut:
INSTANCE_ID: ID instance.TABLE_ID: ID tabel.
Java
Untuk melihat daftar semua paket skema dalam tabel, gunakan metode listSchemaBundles. Metode ini menampilkan daftar ID paket skema.
Contoh berikut menunjukkan cara mencantumkan paket skema dalam tabel:
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Outputnya mirip dengan hal berikut ini:
my-schema-bundle-1
my-schema-bundle-2
Memperbarui paket skema
Saat Anda memperbarui paket skema, Bigtable akan memeriksa apakah set deskriptor baru kompatibel dengan versi lama. Jika Bigtable mendeteksi ketidakcocokan, update akan gagal dengan error FailedPrecondition. Sebaiknya Anda mencadangkan nomor kolom yang dihapus untuk mencegah penggunaannya kembali. Untuk
mengetahui informasi selengkapnya, lihat Praktik Terbaik Proto dalam dokumentasi protobuf.
Jika Anda yakin bahwa perubahan yang tidak kompatibel aman dan ingin memaksakan
update, Anda dapat menggunakan flag --ignore-warnings dengan gcloud CLI.
Namun, Anda tidak dapat memaksakan perubahan yang tidak kompatibel jika paket skema sedang digunakan oleh
tampilan terwujud berkelanjutan
atau tampilan logis. Tampilan bergantung pada
definisi pesan paket skema untuk mengurai dan membuat kueri data, sehingga perubahan
yang tidak kompatibel akan merusak kueri terhadap tampilan logis dan menyebabkan
tampilan terwujud berkelanjutan gagal selama pemrosesan data. Untuk membuat perubahan yang tidak kompatibel dengan versi sebelumnya pada paket skema yang dirujuk oleh tampilan, Anda harus memperbarui atau menghapus tampilan yang merujuk terlebih dahulu.
Konsol
Di konsol Google Cloud , buka daftar instance Bigtable.
Pilih instance dari daftar.
Di panel navigasi, klik Bigtable Studio.
Di panel Explorer, luaskan tabel yang berisi paket skema, lalu luaskan Schema Bundles.
Di samping paket skema yang ingin Anda perbarui, klik menu tindakan more_vert, lalu klik Perbarui.
Di dialog Update schema bundle, di kolom File Descriptor Set (.pb file), pilih set deskriptor file protobuf baru. Ukuran file tidak boleh melebihi 4 MB.
Klik Simpan.
gcloud
Untuk memperbarui paket skema agar menggunakan set deskriptor yang berbeda, gunakan perintah
gcloud bigtable schema-bundles update:
gcloud bigtable schema-bundles update SCHEMA_BUNDLE_ID \
--instance=INSTANCE_ID \
--table=TABLE_ID \
--proto-descriptors-file=PROTO_DESCRIPTORS_FILE
Ganti kode berikut:
SCHEMA_BUNDLE_ID: ID paket skema yang akan diperbarui.INSTANCE_ID: ID instance yang berisi paket skema.TABLE_ID: ID tabel yang berisi paket skema.PROTO_DESCRIPTORS_FILE: jalur ke file set deskriptor baru.
Opsional: Untuk memaksa update meskipun ada perubahan yang tidak kompatibel, tambahkan
perintah dengan flag --ignore-warnings. Anda tidak dapat memaksakan perubahan yang tidak kompatibel jika paket skema sedang digunakan oleh tampilan terwujud berkelanjutan atau tampilan logis.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Menghapus paket skema
Anda tidak dapat menghapus paket skema jika sedang digunakan oleh tampilan terwujud berkelanjutan atau tampilan logis. Menghapus paket akan menyebabkan kueri terhadap tampilan logis gagal dan mencegah tampilan terwujud berkelanjutan memproses data masuk. Untuk menghapus paket skema, Anda harus menghapus tampilan yang mereferensikannya terlebih dahulu, atau memperbaruinya untuk menghapus referensi.
Konsol
Di konsol Google Cloud , buka daftar instance Bigtable.
Pilih instance dari daftar.
Di panel navigasi, klik Bigtable Studio.
Di panel Explorer, luaskan tabel yang berisi paket skema, lalu luaskan Schema Bundles.
Di samping paket skema yang ingin Anda hapus, klik menu tindakan more_vert, lalu klik Hapus.
Pada dialog konfirmasi, klik Delete.
gcloud
Untuk menghapus paket skema, gunakan perintah
gcloud bigtable schema-bundles delete:
gcloud bigtable schema-bundles delete SCHEMA_BUNDLE_ID \
--instance=INSTANCE_ID \
--table=TABLE_ID
Ganti kode berikut:
SCHEMA_BUNDLE_ID: ID paket skema yang akan dihapus.INSTANCE_ID: ID instance yang berisi paket skema.TABLE_ID: ID tabel yang berisi paket skema.
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Bigtable, lihat library klien Bigtable.
Untuk melakukan autentikasi ke Bigtable, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Batasan
Paket skema memiliki batasan berikut:
- Anda dapat membuat maksimal 10 paket skema per tabel.
- Ukuran total deskriptor buffer protokol yang diserialkan dalam paket skema tidak boleh melebihi 4 MB. Tidak ada batasan langsung pada jumlah skema individual yang dapat Anda sertakan dalam paket, selama ukuran total paket tidak melebihi batas ini.
Langkah berikutnya
- Pelajari cara membuat kueri data protobuf.
- Baca tentang kueri yang berubah atau tidak pasti.
- Lihat Ringkasan GoogleSQL untuk Bigtable.