Mengelola skema row key
Row key terstruktur memungkinkan Anda mengakses data Bigtable menggunakan kunci multi-bagian, mirip dengan kunci gabungan dalam database relasional. Menentukan row key terstruktur untuk tabel memungkinkan Anda mengakses bagian tertentu dari row key menggunakan kueri GoogleSQL untuk Bigtable.
Dengan membuat skema row key, Anda dapat menentukan jenis data setiap segmen row key dan cara encoding-nya. Bigtable menyimpan row key sebagai byte yang diurutkan secara leksikografis, dan skema row key memberi tahu GoogleSQL untuk Bigtable cara mendekode dan menafsirkan byte tersebut.
Praktik terbaik untuk mendesain row key berlaku baik Anda menggunakan row key terstruktur atau tidak. Untuk mengetahui informasi selengkapnya, lihat Row keys.
Pertimbangkan contoh row key berikut, yang memiliki pembatas antara nilai untuk jenis perangkat, negara, ID produsen, dan nomor seri:
`phone#india#pke5preri2eru#8923695`
Dalam skema row key, Anda dapat mengidentifikasi # sebagai pembatas dan menentukan segmen row key sebagai berikut:
| Segmen row key | Jenis | Encoding |
|---|---|---|
| Jenis perangkat (ponsel) | STRING | UTF-8 |
| Negara (India) | STRING | UTF-8 |
| ID produsen (pke5preri2eru) | STRING | UTF-8 |
| Nomor seri (8923695) | BYTES | Mentah |
Izin yang diperlukan
Izin yang Anda perlukan bergantung pada tindakan yang ingin Anda lakukan.
Untuk mendapatkan izin ini, minta administrator untuk memberi Anda peran di tabel yang menyertakan izin tersebut:
- Melihat skema row key:
bigtable.tables.get - Membuat skema row key:
bigtable.tables.update - Menghapus skema row key:
bigtable.tables.update
Untuk mengetahui informasi selengkapnya tentang pemberian akses, lihat Mengelola akses ke project, folder, dan organisasi.
Membuat skema row key
Saat Anda membuat tampilan terwujud berkelanjutan, Bigtable akan otomatis membuat skema row key untuk tampilan tersebut. Untuk mengetahui informasi selengkapnya, lihat Tampilan terwujud berkelanjutan.
Untuk menentukan skema row key untuk tabel yang bukan tampilan terwujud berkelanjutan, Anda memperbarui tabel dengan menambahkan kolom RowKeySchema yang disimpan sebagai bagian dari tabel.
gcloud
Untuk menentukan skema row key menggunakan gcloud CLI, gunakan
gcloud beta bigtable tables
update
perintah dengan file YAML atau JSON yang menentukan skema.
gcloud beta bigtable tables update TABLE_ID \
--instance=INSTANCE_ID \
--row-key-schema-definition-file=ROW_KEY_SCHEMA_DEFINITION_FILE \
--row-key-schema-pre-encoded-bytes
Ganti kode berikut:
- TABLE_ID: ID unik tabel yang ingin Anda perbarui
- INSTANCE_ID: ID instance tempat tabel berada
- ROW_KEY_SCHEMA_DEFINITION_FILE: jalur ke file YAML atau JSON yang menentukan skema row key Anda. Untuk contoh tampilan file tersebut, lihat Contoh-file-skema.
Secara default, encoding Base64 diterapkan ke semua kolom biner dalam file YAML atau JSON, seperti encoding.delimitedBytes.delimiter untuk pembatas row key. Flag --row-key-schema-pre-encoded-bytes memberi tahu Bigtable bahwa kolom biner dienkode dalam file dan tidak boleh dienkode lagi.
Go
Gunakan fungsi UpdateTableWithRowKeySchema untuk membuat skema row key untuk tabel.
func (ac *AdminClient) UpdateTableWithRowKeySchema(ctx context.Context, tableID
string, rowKeySchema StructType) error
Contoh berikut membuat skema bernama rks dan menambahkannya ke tabel.
rks := StructType{
Fields: []StructField{
{FieldName: "key1", FieldType: Int64Type{Encoding: Int64OrderedCodeBytesEncoding{}}},
{FieldName: "key2", FieldType: StringType{Encoding: StringUtf8BytesEncoding{}}},
},
Encoding: StructDelimitedBytesEncoding{Delimiter: []byte{'#'}}}
err := c.UpdateTableWithRowKeySchema(context.Background(), "my-table", rks)
Menghapus skema row key
gcloud
Untuk menghapus skema row key tabel, gunakan
gcloud beta bigtable tables
update
perintah dengan --clear-row-key-schema flag.
gcloud beta bigtable tables update TABLE_NAME \
--instance=INSTANCE_ID \
--clear-row-key-schema
Ganti kode berikut:
- TABLE_NAME: nama unik tabel tempat Anda ingin menghapus skema row key
- INSTANCE_ID: ID instance tempat tabel berada
Go
Gunakan fungsi UpdateTableRemoveRowKeySchema untuk menghapus skema row key untuk tabel:
func (ac *AdminClient) UpdateTableRemoveRowKeySchema(ctx context.Context,
tableID string) error
Mengubah skema row key
Anda tidak dapat mengubah skema row key secara langsung. Untuk mengubah skema row key, Anda harus menghapus skema dan membuat skema baru yang menyertakan perubahan Anda.
Melihat skema row key
gcloud
Untuk melihat skema row key, gunakan perintah gcloud beta bigtable tables
describe:
gcloud bigtable tables describe TABLE_NAME \
--instance=INSTANCE_ID
Ganti kode berikut:
- TABLE_NAME: nama unik tabel yang skema row key-nya ingin Anda lihat
- INSTANCE_ID: ID instance tempat tabel berada
Respons di terminal mirip dengan berikut ini. Jika tabel tidak memiliki skema row key, respons tidak akan menyertakan bagian rowKeySchema.
columnFamilies:
cf: {}
createTime: '2025-05-28T17:25:39.433058Z'
granularity: MILLIS
name: projects/<project>/instances/<instance>/tables/<table>
rowKeySchema:
encoding:
delimitedBytes:
delimiter: Iw==
fields:
- fieldName: <field_name_1>
type:
stringType:
encoding:
utf8Bytes: {}
- fieldName: <field_name_2>
type:
intType:
encoding:
bigEndianBytes: {}
- fieldName: <field_name_3>
type:
timestampType:
encoding:
unixMicrosInt64: {
encoding: {
orderedCodeBytes: {}
}
}
updateTime: '2025-05-28T17:25:39.433058Z'
Go
Kolom RowKeySchema tersedia sebagai bagian dari objek TableInfo, dan
Anda mengambilnya menggunakan metode .TableInfo().
type TableInfo struct {
...
RowKeySchema *StructType
}
func (ac *AdminClient) TableInfo(ctx context.Context, table string) (*TableInfo, error)
Mengkueri row key terstruktur
Untuk mengkueri kolom dalam row key terstruktur, Anda harus menggunakan SQL. Metode ReadRows Bigtable Data API mengabaikan skema row key saat membaca dari tabel.
Untuk contoh kueri yang memilih row key terstruktur, lihat Kueri row key terstruktur.
Untuk mengetahui daftar library klien Bigtable yang mendukung kueri SQL, termasuk contoh kode, lihat Menggunakan SQL dengan library klien Bigtable.
Contoh file skema
Saat membuat skema row key menggunakan gcloud CLI, Anda dapat menentukan row key terstruktur menggunakan file YAML atau file JSON.
YAML
fields:
- fieldName: "user_id"
type:
stringType:
encoding:
utf8Bytes: {}
- fieldName: "purchase_date"
type:
stringType:
encoding:
utf8Bytes: {}
- fieldName: "order_number"
type:
stringType:
encoding:
utf8Bytes: {}
encoding:
delimitedBytes:
delimiter: "Iw=="
JSON
{
"fields": [
{
"fieldName": "user_id",
"type": {
"stringType": {
"encoding": {
"utf8Bytes": {}
}
}
}
},
{
"fieldName": "purchase_date",
"type": {
"stringType": {
"encoding": {
"utf8Bytes": {}
}
}
}
},
{
"fieldName": "order_number",
"type": {
"stringType": {
"encoding": {
"utf8Bytes": {}
}
}
}
}
],
"encoding": {
"delimitedBytes": {
"delimiter": "Iw=="
}
}
}