Mengelola skema row key

Row key terstruktur memungkinkan Anda mengakses data Bigtable menggunakan kunci multi-bagian, mirip dengan kunci komposit dalam database relasional. Menentukan kunci baris terstruktur untuk tabel memungkinkan Anda mengakses bagian tertentu dari kunci baris menggunakan kueri GoogleSQL untuk Bigtable.

Dengan membuat skema row key, Anda dapat menentukan jenis data setiap segmen row key dan cara penyandiannya. Bigtable menyimpan row key sebagai byte yang diurutkan secara leksikografis, dan skema row key memberi tahu GoogleSQL for Bigtable cara mendekode dan menafsirkan byte tersebut.

Praktik terbaik untuk mendesain row key berlaku baik saat Anda menggunakan row key terstruktur maupun tidak. Untuk mengetahui informasi selengkapnya, lihat Kunci baris.

Pertimbangkan row key contoh 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 pada tabel yang menyertakan izin tersebut:

  • Melihat skema row key: bigtable.tables.get
  • Buat 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.

Konsol

Untuk menentukan skema row key menggunakan konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Bigtable instances.

    Buka daftar instance

  2. Pilih instance dari daftar.

  3. Di menu navigasi, klik Bigtable Studio.

    Panel Explorer menampilkan daftar tabel, tampilan, dan kueri di instance.

  4. Di daftar Tables, untuk tabel tempat Anda ingin membuat skema kunci baris, klik menu View actions, lalu klik Create row key schema.

    Tab Skema row key akan terbuka.

  5. Di daftar Encoding, pilih jenis encoding untuk skema row key Anda.

  6. Jika Anda memilih DelimitedBytes, di kolom Delimiter, masukkan pemisah yang memisahkan segmen dalam kunci baris yang ada. Nilai defaultnya adalah simbol hash (#).

  7. Di kolom Segmen, masukkan nama untuk segmen, seperti device_type.

  8. Di daftar Jenis, pilih jenis data segmen row key.

  9. Bergantung pada jenis data yang dipilih, di daftar Byte encoding, biarkan jenis encoding default segmen row key atau ubah.

  10. Opsional: jika row key Anda memiliki lebih dari satu bagian, klik Tambahkan segmen kunci baris untuk menambahkan kolom lainnya.

  11. Klik Simpan.

gcloud

Untuk menentukan skema row key menggunakan gcloud CLI, gunakan perintah gcloud beta bigtable tables update 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 update
  • INSTANCE_ID: ID instance tempat tabel berada
  • ROW_KEY_SCHEMA_DEFINITION_FILE: jalur ke file YAML atau JSON yang menentukan skema row key. Untuk contoh tampilan file tersebut, lihat Example-schema-files.

Secara default, encoding Base64 diterapkan ke semua kolom biner dalam file YAML atau JSON, seperti encoding.delimitedBytes.delimiter untuk pembatas kunci baris. 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

Konsol

Untuk menghapus skema row key tabel menggunakan konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Bigtable instances.

    Buka daftar instance

  2. Pilih instance dari daftar.

  3. Di menu navigasi, klik Bigtable Studio.

    Panel Explorer menampilkan daftar tabel, tampilan, dan kueri di instance.

  4. Dalam daftar tabel, klik tabel dengan skema row key yang ingin Anda hapus.

  5. Klik menu Lihat tindakan untuk skema row key yang ingin Anda hapus.

  6. Klik Hapus.

gcloud

Untuk menghapus skema row key tabel, gunakan perintah gcloud beta bigtable tables update dengan flag --clear-row-key-schema.

  gcloud beta bigtable tables update TABLE_NAME \
    --instance=INSTANCE_ID \
    --clear-row-key-schema

Ganti kode berikut:

  • TABLE_NAME: nama unik tabel yang ingin Anda hapus skema row key-nya
  • 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

Konsol

Untuk melihat skema row key tabel menggunakan konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Bigtable instances.

    Buka daftar instance

  2. Klik instance yang skema row key tabelnya ingin Anda lihat.

  3. Di menu navigasi, klik Bigtable Studio.

    Panel Explorer menampilkan daftar tabel, tampilan, dan kueri di instance.

  4. Dalam daftar tabel, klik tabel dengan skema kunci baris yang ingin Anda lihat.

  5. Klik skema row key.

    Tab detail akan terbuka.

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 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 membuat kueri kolom di kunci baris terstruktur, Anda harus menggunakan SQL. Metode Bigtable Data API ReadRows mengabaikan skema row key saat membaca dari tabel.

Untuk contoh kueri yang memilih kunci baris terstruktur, lihat Kueri kunci baris 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=="
    }
  }
}

Langkah berikutnya