Agregar valores no momento da gravação
Se quiser agregar seus dados no Bigtable no momento da gravação, pode usar agregações. Os agregados são células da tabela do Bigtable que agregar valores de célula à medida que os dados são gravados. Quando você adiciona um novo valor, função de agregação mescla o valor com o valor agregado que já está na célula. Outros bancos de dados se referem a funcionalidades semelhantes como contadores ou contadores distribuídos.
Durante a prévia, você pode trabalhar com agregações usando o
CLI cbt
e
bibliotecas de cliente do Bigtable para C++, Go e Java.
Este documento fornece uma visão geral dos agregados e mostra como criar um de colunas agregadas e fornece exemplos que mostram como adicionar um valor a uma célula agregada. Antes de ler este documento, você precisa conhecer Bigtable visão geral e Escrevem do Google.
Quando usar agregações
Os dados agregados do Bigtable são úteis nas situações em que você precisa dados de uma entidade de forma agregada, e não como pontos de dados individuais. Se você estiver migração para o Bigtable de bancos de dados como o Apache Cassandra ou Redis, é possível usar agregações do Bigtable nos locais se usavam contadores nesses sistemas.
Intervalos de tempo
É possível usar intervalos de tempo para obter valores agregados para um período de tempo, como por hora, dia ou semana. Em vez de agregar os dados antes ou depois de serem gravados à sua tabela, você adiciona novos valores para agregar as células da tabela.
Por exemplo, se você gerencia um serviço que ajuda instituições de caridade a arrecadar dinheiro, pode
querem saber a quantidade de doações on-line por dia para cada campanha, mas você
não precisam saber a hora exata de cada doação ou o valor por hora. Em
na tabela, as chaves de linha representam os IDs da instituição de caridade e você cria uma coluna agregada
família chamada donations
. Os qualificadores de coluna na linha são IDs de campanha.
À medida que cada doação recebida em um determinado dia para uma campanha é recebida, ela é adicionada à soma na célula agregada na coluna desse dia. Cada anúncio solicitação para a célula usa uma data e hora truncada para o início do dia, por isso se todas as solicitações têm o mesmo carimbo de data/hora. Como truncar os carimbos de data/hora garante que todas as doações desse dia sejam adicionadas à mesma célula. A no dia seguinte, todas as suas solicitações vão para uma nova célula, usando carimbos de data/hora que são truncada para a nova data, e esse padrão continua.
Dependendo do caso de uso, é possível criar novas colunas para o novo agregados. Dependendo do número de buckets que você planeja acumular uma chave de linha diferente.
Para mais informações sobre intervalos de tempo, consulte Projeto de esquema para série temporal. dados.
Simplificação dos fluxos de trabalho
Os dados agregados permitem agregar dados na tabela do Bigtable sem precisar usar ETL ou software de processamento de streaming para agregar os dados antes ou depois de gravá-los no Bigtable. Por exemplo: se o aplicativo publicou mensagens anteriormente no Pub/Sub e depois usou o Dataflow para ler as mensagens e agregar os dados antes gravá-los no Bigtable, é possível enviá-los diretamente para agregar células no Bigtable.
Grupos de colunas agregadas
Para criar e atualizar células agregadas, é necessário ter uma ou mais tabelas agregadas grupos de colunas em sua tabela - grupos de colunas que contêm apenas dados agregados células. Você pode criá-las ao criar uma tabela ou adicionar uma agregação grupo de colunas para uma tabela que já esteja em uso. Ao criar a coluna família, você especifica o tipo de agregação, como soma.
Não é possível converter um grupo de colunas que contém dados não agregados em um grupo de colunas agregadas. As colunas em grupos de colunas agregadas não podem conter células não agregadas, e os grupos de colunas padrão não podem conter células agregadas.
Para criar uma nova tabela com um grupo de colunas agregado, consulte Criar um tabela. Para adicionar uma coluna agregada a uma tabela, consulte Adicionar coluna famílias.
Tipos de agregação
O Bigtable é compatível com os seguintes tipos de agregação:
sum
: Quando você adiciona um valor a uma célula agregada de soma, o valor da célula é substituído pela soma do valor recém-adicionado e do valor da célula atual. O tipo de entrada compatível com somas éInt64
.min
: Quando você adiciona um valor a uma célula de agregação mínima, o valor da célula é substituído pelo valor mais baixo entre o valor recém-adicionado e o valor atual valor da célula. O tipo de entrada com suporte para o valor mínimo éInt64
.max
: Quando você adiciona um valor a uma célula agregada máxima, o valor da célula é substituído pelo valor mais alto entre o valor recém-adicionado e o valor atual valor da célula. O tipo de entrada compatível com o máximo éInt64
.
Carimbos de data/hora
Uma célula agregada é definida por chave de linha, grupo de colunas, qualificador de coluna e carimbo de data/hora. O mesmo carimbo de data/hora é usado sempre que você adiciona dados à célula. Se você enviar um valor para a mesma chave de linha, grupo de colunas e qualificador de coluna, mas com uma carimbo de data/hora diferente, uma nova célula agregada é criada na coluna.
Uma solicitação de adição enviada para uma célula agregada precisa incluir um carimbo de data/hora.
Tipo de entrada
O tipo de entrada do valor na solicitação de adição deve corresponder ao tipo de entrada que
com que o grupo de colunas é criado. Por exemplo, se você enviar um valor de string para um
grupo de colunas configurado para Int64
, a solicitação será rejeitada.
AddToCell
Uma solicitação de adição envia uma mutação AddToCell
na API Bigtable Data.
Por outro lado, uma solicitação de gravação não agregada envia uma mutação SetCell
. Para mais
mais informações, consulte a API Data
Referência
do Google. As operações AddToCell
estão sujeitas às mesmas operações
limites
que outras mutações de tabela.
Em uma tabela replicada, uma célula agregada converge para o mesmo valor total em
todos os clusters no atraso de replicação atual. O valor total é
agregado de todas as mutações AddToCell
enviadas para essa célula em todos os clusters desde
a última operação de exclusão ou desde que a célula foi criada.
Adicionar exemplos de solicitação
Os exemplos a seguir mostram como adicionar um valor a uma célula agregada. A
são adicionados a uma soma em um grupo de colunas que espera o tipo de entrada Int64
.
cbt
cbt addtocell TABLE_ID ROW_KEY
FAMILY_NAME:COLUMN_QUALIFER=VALUE@TIMESTAMP
Substitua:
TABLE_ID
: identificador permanente da tabela;ROW_KEY
: a chave de linha.FAMILY_NAME
: o nome do grupo de colunas agregadoCOLUMN_QUALIFIER
: um identificador para a coluna.VALUE
: o valor a ser adicionado à célula.TIMESTAMP
: um carimbo de data/hora Unix em microssegundos, como1710868850000000
Exemplo:
cbt addtocell mobile-data device-1 updates:week12=100@1710868850000000
Go
Para aprender a instalar e usar a biblioteca de cliente para o Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Para aprender a instalar e usar a biblioteca de cliente para o Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.