Os bancos de dados relacionais tradicionais, como MySQL, PostgreSQL, MS SQL e Oracle armazenam as informações linearmente, o que oferece uma série de vantagens para operações de bases de dados que estão em produção em softwares, principalmente se acoplada à criação de índices em colunas que serão constantemente consultadas (como IDs) para retornar dados brutos de linhas de registros.
Imagine um conjunto de dados como o seguite:
Id | Nome | Sobrenome | Idade |
---|---|---|---|
1 | João | Pereira | 32 |
2 | Carlos | Gonçalves | 41 |
3 | Kondado | Inteligência | 13 |
Banco de dados linear tradicional
Em um banco de dados tradicional, essas informações seriam armazenadas em um formato muito parecido com a tabela abaixo:
Assim, em uma operação de busca, se você quiser saber qual o usuário com o Id 2, basta procurar pelo primeiro bloco e retornar os próximos 3 blocos verdes.
Agora, quando você precisar fazer algo mais complexo, como ver a soma de idade da tabela, o banco irá buscar em cada cor o quarto bloco e fazer a soma. Parece algo simples – apenas olhando para esses registros podemos ver que o resultado será 86 – mas quando estamos falando de uma tabela de um bilhão de registros, essa operação de “buscar para cada cor o quarto bloco” fica muito pesada – basicamente, registro por registro terá que ser buscado e somado pelo banco de dados.
Lembre-se que as informações de um banco de dados tradicional são armazenadas no disco (HD) e não na memória (RAM), então cada busca requer uma operação de leitura de informações custosa.
Bancos de dados colunares
Os bancos de dados colunares, como o Amazon Redshift e o Google BigQuery, armazenam a informação coluna-a-coluna, o que permite:
- Maior compressão – já que dados de tipos iguais são armazenados juntos, há uma otimização de espaço utilizado
- Eliminação da necessidade de índices – não é necessário rearranjar como as cores de blocos estão ordenadas (existem outras opções de otimização como sharding)
- Alta-performance para operações de agregação
O nosso conjunto de dados de exemplo, seria armazenado da seguinte forma em um banco colunar:
Veja só como os valores foram re-ordenados:
Se você quiser fazer a soma das idades, o banco de dados fará apenas uma operação de leitura para a cor laranja e fará o cálculo.
Os bancos de dados colunares disponíveis no mercado desenvolveram outras otimizações para melhoria de performance, o que os torna ideiais para times de analytics que precisam lidar com grandes bases de dados – principalmente otimização de cruzamentos entre tabelas.
Além disso, o Amazon Redshift e o Google BigQuery foram desenvolvidos com o objetivo de tornar muito simples a sua operação. Eles suportam SQL da mesma maneira que os bancos tradicionais – o que reduz a curva de aprendizado para usá-los – e, por estarem na estrutura dos maiores fornecedores cloud do mundo a sua infra-estrutura também é simples de ser mantida – o Google BigQuery é até servless!
Se você precisa lidar com um grande volume de informações de fontes distintas, pare de perder tempo criando integrações e foque nos resultados!
Veja como a nossa plataforma pode ajudar você a integrar e cruzar informações de múltiplas fontes no Redshift e no BigQuery, sem que você precise escrever uma única linha de código.
Ah, se você gostou desse artigo, faça um teste grátis na nossa plataforma e vá da teoria à prática em poucos minutos.
Publicado em 2019-10-31