Criar e atualizar contadores no Bigtable

Aprenda a criar e atualizar contadores no Bigtable usando agregações, células de tabela que agregam valores no momento da gravação. Este guia de início rápido usa a Google Cloud CLI e a CLI do cbt para criar três contadores:

  • Um contador que mantém uma soma em execução
  • Um contador que acompanha o mínimo de todos os valores adicionados.
  • Um contador que acompanha o máximo de todos os valores adicionados.

Antes de começar

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se agora.

  2. Instale a CLI do Google Cloud.

  3. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  4. Para inicializar a gcloud CLI, execute o seguinte comando:

    gcloud init
  5. Depois que a gcloud CLI é inicializada, ela precisa ser atualizada e os componentes necessários instalados:

    gcloud components update
    gcloud components install cbt
  6. Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  7. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  8. Ative as APIs Cloud Bigtable e Cloud Bigtable Admin:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com
  9. Instale a CLI do Google Cloud.

  10. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  11. Para inicializar a gcloud CLI, execute o seguinte comando:

    gcloud init
  12. Depois que a gcloud CLI é inicializada, ela precisa ser atualizada e os componentes necessários instalados:

    gcloud components update
    gcloud components install cbt
  13. Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  14. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  15. Ative as APIs Cloud Bigtable e Cloud Bigtable Admin:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    gcloud services enable bigtable.googleapis.com bigtableadmin.googleapis.com
  16. Execute os seguintes comandos para garantir que a CLI gcloud esteja atualizada e inclua a CLI cbt:
    gcloud components update
    gcloud components install cbt

Criar uma instância do Bigtable

  1. Use o comando bigtable instances create para criar uma instância.

    gcloud bigtable instances create counters-quickstart-instance \
        --display-name="Counters quickstart instance" \
        --cluster-config=id="counters-quickstart-cluster",zone="us-east1-c"
    

Conectar-se à instância

  1. Configure a CLI cbt para usar o projeto e a instância criando um arquivo .cbtrc.

    echo project = PROJECT_ID >> ~/.cbtrc && echo instance = counters-quickstart-instance >> ~/.cbtrc
    

    Substitua PROJECT_ID pelo ID do projeto que você está usando.

  2. Verifique se você configurou o arquivo .cbtrc corretamente.

    cat ~/.cbtrc
    

    O terminal exibe o conteúdo do arquivo .cbtrc, que é semelhante ao seguinte:

    project = PROJECT_ID
    instance = counters-quickstart-instance

    Agora, é possível usar a CLI cbt com sua instância.

Criar uma tabela com grupos de colunas agregadas

  1. Use o comando cbt createtable para criar uma tabela chamada counters_quickstart_table com três grupos de colunas agregadas. Configure cada grupo de colunas com um tipo de agregação diferente:

    • O grupo de colunas max_family é do tipo Max com um tipo de entrada Integer.
    • O grupo de colunas min_family é do tipo Min com um tipo de entrada Integer.
    • O grupo de colunas sum_family é do tipo Sum com um tipo de entrada Integer.
    cbt createtable counters_quickstart_table families=sum_family:never:intsum,min_family:never:intmin,max_family:never:intmax
    
  2. Liste os grupos de colunas executando o comando cbt ls.

    cbt ls counters_quickstart_table
    

    O shell vai mostrar uma saída semelhante a esta:

    Family Name     GC Policy
    -----------     ---------
    max_family      <never>
    min_family      <never>
    sum_family      <never>
    

Criar contadores na tabela

  1. Use o comando cbt addtocell para gravar um valor inicial de 5 em uma nova coluna em cada um dos três grupos de colunas, usando uma chave de linha de row-key1 e um timestamp de 0. Essa operação cria células agregadas, que você usa como contadores.

    cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=5@0
    cbt addtocell counters_quickstart_table row-key1 min_family:min_column=5@0
    cbt addtocell counters_quickstart_table row-key1 max_family:max_column=5@0
    

Ler os dados

  1. Para conferir os valores do contador como números inteiros em vez de bytes, defina um arquivo yaml que a CLI cbt possa usar para formatar a saída. Execute o comando a seguir:

    echo "families:" > cbtformat.yaml
    echo "  max_family:" >> cbtformat.yaml
    echo "    default_encoding: BigEndian" >> cbtformat.yaml
    echo "    default_type: INT64" >> cbtformat.yaml
    echo "  min_family:" >> cbtformat.yaml
    echo "    default_encoding: BigEndian" >> cbtformat.yaml
    echo "    default_type: INT64" >> cbtformat.yaml
    echo "  sum_family:" >> cbtformat.yaml
    echo "    default_encoding: BigEndian" >> cbtformat.yaml
    echo "    default_type: INT64" >> cbtformat.yaml
    
  2. Verifique se você configurou o arquivo cbtformat.yaml corretamente.

    cat ~/cbtformat.yaml
    

    O terminal exibe o conteúdo do arquivo cbtformat.yaml, que é semelhante ao seguinte:

    families:
      max_family:
        default_encoding: BigEndian
        default_type: INT64
      min_family:
        default_encoding: BigEndian
        default_type: INT64
      sum_family:
        default_encoding: BigEndian
        default_type: INT64
    
  3. Use o comando cbt read para transmitir o arquivo yaml e ler os dados que você adicionou à tabela. A tabela agora tem três colunas, cada uma com um tipo de agregação diferente.

    cbt read counters_quickstart_table format-file=$HOME/cbtformat.yaml
    

    O shell vai mostrar uma saída semelhante a esta: Os valores são formatados como números inteiros, e os carimbos de data/hora estão no formato UTC.

    row-key1
      max_family:max_column                    @ 1970/01/01-00:00:00.000000
        5
      min_family:min_column                    @ 1970/01/01-00:00:00.000000
        5
      sum_family:sum_column                    @ 1970/01/01-00:00:00.000000
        5
    

Atualizar os contadores

  1. Adicione o valor 3 a cada coluna da tabela, usando os mesmos carimbos de data/hora que você usou ao criar as células. Em cada coluna, o valor da célula é mesclado com o valor atual com base no tipo de agregação da célula.

    cbt addtocell counters_quickstart_table row-key1 sum_family:sum_column=3@0
    cbt addtocell counters_quickstart_table row-key1 min_family:min_column=3@0
    cbt addtocell counters_quickstart_table row-key1 max_family:max_column=3@0
    
  2. Use o comando cbt read novamente para ler os dados na tabela. Cada célula agora contém um valor agregado.

    cbt read counters_quickstart_table format-file=$HOME/cbtformat.yaml
    

    O sum_column contém a soma de 5 e 3 (8), o min_column contém o mínimo dos dois valores gravados nele (3), e o max_column contém o máximo dos dois valores gravados nele (5).

    row-key1
        max_family:max_column                    @ 1970/01/01-00:00:00.000000
            5
        min_family:min_column                    @ 1970/01/01-00:00:00.000000
            3
        sum_family:sum_column                    @ 1970/01/01-00:00:00.000000
            8
    
  3. Opcional: consulte a tabela no console Google Cloud com SQL.

    1. No console do Google Cloud , abra a página Instâncias do Bigtable.

      Acesse a lista de instâncias

    2. Selecione counters-quickstart-instance na lista.

    3. No menu de navegação, clique em Bigtable Studio.

    4. Clique na guia Editor.

    5. Cole esta consulta no editor:

      SELECT * FROM `counters_quickstart_table`
      
    6. Clique em Executar. Os resultados da consulta são mostrados na tabela Resultados e são semelhantes a este:

    _key max_family min_family sum_family
    row-key1 { "max_column": 5 } { "min_column": 5 } { "sum_column": 8 }

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud e os recursos.

  1. No terminal, exclua a tabela counters_quickstart_table:

    cbt deletetable counters_quickstart_table
    
  2. Exclua a instância:

    cbt deleteinstance counters-quickstart-instance
    
  3. Exclua o arquivo .cbtrc:

    rm ~/.cbtrc
    
  4. Exclua o arquivo de formatação:

    rm ~/cbtformat.yaml
    
  5. Opcional: revogar credenciais da CLI gcloud:

    gcloud auth revoke
    

A seguir