Índice:
Vídeo: REDIS - Banco de Dados NoSQL - Conceitos e Tutorial Básico (em Português Brasileiro) 2024
Um Bigtable possui tabelas exatamente como um RDBMS, mas, ao contrário de um RDBMS, as tabelas Bigtable geralmente não possuem relacionamentos com outras tabelas. Em vez disso, os dados complexos são agrupados em uma única tabela.
Uma tabela em um Bigtable consiste em grupos de colunas, chamado famílias de colunas e uma chave de linha. Estes juntos permitem uma pesquisa rápida de um único registro de dados mantido em um Bigtable.
Usando chaves de linha
Cada linha precisa ser identificada de forma exclusiva. É aí que entra uma chave de linha. Uma chave de linha é uma string exclusiva usada para fazer referência a um único registro em um Bigtable. Você pode pensar que eles são semelhantes a uma chave primária ou como um número de segurança social para Bigtables.
Muitos Bigtables não fornecem bons índices secundários (índices sobre os próprios valores das colunas), de modo a criar uma chave de linha que permita uma pesquisa rápida de registros é crucial para garantir um bom desempenho.
Uma chave de linha bem projetada permite que um registro seja localizado sem ter que ler sua aplicação e verificar a aplicabilidade de cada registro. É mais rápido para o banco de dados fazer isso.
As teclas de linha também são usadas pela maioria dos Bigtables para distribuir uniformemente registros entre servidores. Uma chave de linha mal projetada levará a um servidor em seu cluster de banco de dados recebendo mais carga (solicitações) do que os outros servidores, diminuindo o desempenho visível ao usuário de todo o seu serviço de banco de dados.
Criando famílias de colunas
Uma família de colunas é um agrupamento lógico de colunas. Embora os Bigtables permitam variar o número de colunas suportadas em qualquer definição de tabela no tempo de execução, você deve especificar as famílias de colunas permitidas na frente. Normalmente, isso não pode ser modificado sem levar o servidor offline. Como exemplo, um aplicativo de catálogo de endereços pode usar uma família para endereço residencial. Isso pode conter as colunas Endereço Linha 1, Endereço Linha 2, Área, Cidade, Condado, Estado, País e CEP.
Nem todos os endereços terão dados em todos os campos. Por exemplo, a Linha de Endereço 2, Área e Condado pode ser em branco. Por outro lado, você pode ter dados apenas na linha de endereço 1 e no código postal. Estes dois exemplos estão bem na mesma família de endereços de endereços.
Tendo vários números de colunas tem suas desvantagens. Se você quiser HBase, por exemplo, para listar todas as colunas dentro de uma família específica, você deve iterar sobre todas as linhas para obter a lista completa de colunas! Então, você precisa acompanhar seu modelo de dados em seu aplicativo com um clone Bigtable para evitar essa penalidade de desempenho.
Usando timestamps
Cada valor dentro de uma coluna normalmente pode armazenar versões diferentes.Essas versões são referenciadas usando um valor de carimbo de data / hora.
Os valores nunca são modificados - um valor diferente é adicionado com um carimbo de data / hora diferente. Para excluir um valor, você adiciona um marcador de lápide ao valor, o que, basicamente, indica que o valor é excluído em um determinado momento.
Todos os valores para a mesma família de linhas e colunas são armazenados juntos, o que significa que todas as pesquisas ou decisões de versão são tomadas em um único local onde residem todos os dados relevantes.
Manipulação de valores binários
Em Bigtables, os valores são simplesmente conjuntos de bytes. Por exemplo, eles podem ser texto, números ou mesmo imagens. O que você armazena neles depende de você.
Apenas alguns clones Bigtable suportam a tipografia de valor. Hypertable, por exemplo, permite que você defina tipos e adicione índices secundários a valores. Cassandra também permite que você defina tipos de valores, mas seus índices de consulta de alcance (menos do que maiores do que as operações para cada tipo de dados) estão limitados a acelerar operações de pesquisa de chaves, e não a operações de comparação de valores.