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 kolom individual 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.
Penggunaan paket skema menawarkan manfaat berikut:
- Menghemat waktu dan tenaga: Dengan buffer protokol, Anda menentukan struktur data satu kali dalam file proto, lalu menggunakan kode sumber yang dihasilkan untuk menulis dan membaca data.
- Meningkatkan konsistensi data: Dengan menggunakan file proto sebagai sumber kebenaran tunggal, 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 yang dapat dibaca mesin dari file proto Anda. Kemudian, Anda menggunakan set deskriptor ini untuk membuat paket skema.
Untuk melihat 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 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
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 untuk membuat paket skema.TABLE_ID: ID tabel tempat membuat paket skema.PROTO_DESCRIPTORS_FILE: jalur ke set deskriptor yang dihasilkan pada langkah sebelumnya.
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
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
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 yang ada. Jika tidak kompatibel,
update akan gagal dengan error FailedPrecondition. Sebaiknya Anda mencadangkan nomor kolom yang dihapus untuk mencegah penggunaan ulang. 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.
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.
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
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.