Gerenciar esquemas de chave de linha
As chaves de linha estruturadas permitem acessar os dados do Bigtable usando chaves de várias partes, semelhantes às chaves compostas em bancos de dados relacionais. A definição de chaves de linha estruturadas para uma tabela permite acessar partes específicas das chaves de linha usando o GoogleSQL para consultas do Bigtable.
Ao criar um esquema de chave de linha, é possível definir o tipo de dados de cada segmento de uma chave de linha e como ele é codificado. O Bigtable armazena as chaves de linha como bytes classificados lexicograficamente, e o esquema de chave de linha informa ao GoogleSQL para Bigtable como decodificar e interpretar esses bytes.
As práticas recomendadas para projetar chaves de linha se aplicam se você estiver usando chaves de linha estruturadas ou não. Para mais informações, consulte Chaves de linha.
Considere o exemplo de chave de linha a seguir, que tem delimitadores entre valores para tipo de dispositivo, país, ID do fabricante e número de série:
`phone#india#pke5preri2eru#8923695`
No esquema de chave de linha, é possível identificar # como o delimitador e definir os segmentos de chave de linha da seguinte maneira:
| Segmento de chave de linha | Tipo | Codificação |
|---|---|---|
| Tipo de dispositivo (telefone) | STRING | UTF-8 |
| País (Índia) | STRING | UTF-8 |
| ID do fabricante (pke5preri2eru) | STRING | UTF-8 |
| Número de série (8923695) | BYTES | Dados |
Permissões necessárias
As permissões necessárias dependem da ação que você quer realizar.
Para receber essas permissões, peça ao administrador para conceder a você um papel na tabela que inclua as permissões:
- Ver um esquema de chave de linha:
bigtable.tables.get - Criar um esquema de chave de linha:
bigtable.tables.update - Excluir um esquema de chave de linha:
bigtable.tables.update
Para mais informações sobre como conceder acesso, consulte Gerenciar o acesso a projetos, pastas e organizações.
Criar um esquema de chave de linha
Ao criar uma visualização materializada contínua, o Bigtable cria automaticamente um esquema de chave de linha para a visualização. Para mais informações, consulte Visualizações materializadas contínuas.
Para definir um esquema de chave de linha para uma tabela que não seja uma visualização materializada contínua, atualize a tabela adicionando um campo RowKeySchema armazenado como parte da tabela.
Console
Para definir um esquema de chave de linha usando o Google Cloud console, siga estas etapas:
No Google Cloud console, abra a página Instâncias do Bigtable.
Selecione uma instância na lista.
No menu de navegação, clique em Bigtable Studio.
O painel Explorer mostra uma lista de tabelas, visualizações e consultas na instância.
Na lista Tabelas, para a tabela em que você quer criar um esquema de chave de linha , clique no menu Ver ações e, em seguida, clique em Criar esquema de chave de linha.
A guia Esquema de chave de linha será aberta.
Na lista Codificação, selecione um tipo de codificação para o esquema de chave de linha.
Se você selecionou DelimitedBytes, no campo Delimitador, insira um delimitador que separe os segmentos nas chaves de linha atuais. O valor padrão é um símbolo de hash (
#).No campo Segmento, insira um nome para o segmento, como
device_type.Na lista Tipo, selecione o tipo de dados do segmento de chave de linha.
Dependendo do tipo de dados selecionado, na lista Codificação de bytes, deixe o tipo de codificação padrão do segmento de chave de linha ou mude-o.
Opcional: se o segmento de chave de linha tiver mais de uma parte, clique em Adicionar segmento de chave de linha para adicionar outros campos.
Clique em Salvar.
gcloud
Para definir um esquema de chave de linha usando a CLI gcloud, use o
gcloud beta bigtable tables
update
comando com um arquivo YAML ou JSON que defina o esquema.
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
Substitua:
- TABLE_ID: o ID exclusivo da tabela que você quer atualizar
- INSTANCE_ID: o ID da instância em que a tabela está localizada
- ROW_KEY_SCHEMA_DEFINITION_FILE: o caminho para o arquivo YAML ou JSON que define o esquema de chave de linha. Para exemplos de como esses arquivos devem ser, consulte Arquivos de esquema de exemplo.
Por padrão, a codificação Base64 é aplicada a todos os campos binários em um arquivo YAML ou JSON, como encoding.delimitedBytes.delimiter para o delimitador de chave de linha. A flag --row-key-schema-pre-encoded-bytes informa ao Bigtable que os campos binários estão codificados no arquivo e não precisam ser codificados novamente.
Go
Use a função UpdateTableWithRowKeySchema para criar um esquema de chave de linha para uma tabela.
func (ac *AdminClient) UpdateTableWithRowKeySchema(ctx context.Context, tableID
string, rowKeySchema StructType) error
O exemplo a seguir cria um esquema chamado rks e o adiciona à tabela.
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)
Excluir um esquema de chave de linha
Console
Para excluir o esquema de chave de linha de uma tabela usando o Google Cloud console, siga estas etapas:
No Google Cloud console, abra a página Instâncias do Bigtable.
Selecione uma instância na lista.
No menu de navegação, clique em Bigtable Studio.
O painel Explorer mostra uma lista de tabelas, visualizações e consultas na instância.
Na lista de tabelas, clique na tabela com o esquema de chave de linha que você quer excluir.
Clique no menu Ver ações do esquema de chave de linha que você quer excluir.
Clique em Excluir.
gcloud
Para excluir o esquema de chave de linha de uma tabela, use o
gcloud beta bigtable tables
update
comando com a --clear-row-key-schema flag.
gcloud beta bigtable tables update TABLE_NAME \
--instance=INSTANCE_ID \
--clear-row-key-schema
Substitua:
- TABLE_NAME: o nome exclusivo da tabela da qual você quer excluir o esquema de chave de linha
- INSTANCE_ID: o ID da instância em que a tabela está localizada
Go
Use a função UpdateTableRemoveRowKeySchema para limpar o esquema de chave de linha de uma tabela:
func (ac *AdminClient) UpdateTableRemoveRowKeySchema(ctx context.Context,
tableID string) error
Modificar um esquema de chave de linha
Não é possível modificar um esquema de chave de linha diretamente. Para mudar um esquema de chave de linha, é necessário excluir o esquema e criar um novo que inclua as mudanças.
Ver um esquema de chave de linha
Console
Para ver o esquema de chave de linha de uma tabela usando o Google Cloud console, siga estas etapas:
No Google Cloud console, abra a página Instâncias do Bigtable.
Clique na instância em que está o esquema de chave de linha da tabela que você quer ver.
No menu de navegação, clique em Bigtable Studio.
O painel Explorer mostra uma lista de tabelas, visualizações e consultas na instância.
Na lista de tabelas, clique na tabela com o esquema de chave de linha que você quer ver.
Clique no esquema de chave de linha.
A guia de detalhes será aberta.
gcloud
Para ver um esquema de chave de linha, use o gcloud beta bigtable tables
describe comando:
gcloud bigtable tables describe TABLE_NAME \
--instance=INSTANCE_ID
Substitua:
- TABLE_NAME: o nome exclusivo da tabela cujo esquema de chave de linha você quer ver
- INSTANCE_ID: o ID da instância em que a tabela está localizada
A resposta no terminal é semelhante à seguinte. Se a tabela não tiver um esquema de chave de linha, a resposta não incluirá uma seção 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
O campo RowKeySchema está disponível como parte do objeto TableInfo, e
você o recupera usando o método .TableInfo().
type TableInfo struct {
...
RowKeySchema *StructType
}
func (ac *AdminClient) TableInfo(ctx context.Context, table string) (*TableInfo, error)
Consultar chaves de linha estruturadas
Para consultar as colunas em chaves de linha estruturadas, é necessário usar o SQL. O método ReadRows da API Data do Bigtable ignora um esquema de chave de linha ao ler de uma tabela.
Para exemplos de consultas que selecionam chaves de linha estruturadas, consulte Consultas de chave de linha estruturadas.
Para uma lista de bibliotecas de cliente do Bigtable que oferecem suporte a consultas SQL, incluindo exemplos de código, consulte Usar o SQL com uma biblioteca de cliente do Bigtable.
Exemplos de arquivos de esquema
Ao criar um esquema de chave de linha usando a CLI gcloud, é possível definir as chaves de linha estruturadas usando um arquivo YAML ou 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=="
}
}
}