Pular para o conteúdo principal

Sistema de gerenciamento de banco de dados verdadeiramente orientado a colunas

Em um SGBD verdadeiramente orientado a colunas, nenhum dado extra é armazenado junto com os valores. Isso significa que valores de tamanho constante precisam ser suportados para evitar armazenar o “número” do comprimento ao lado dos valores. Por exemplo, um bilhão de valores do tipo UInt8 deve consumir cerca de 1 GB sem compressão; caso contrário, isso afeta significativamente o uso da CPU. É essencial armazenar os dados de forma compacta (sem qualquer “lixo”) mesmo sem compressão, já que a velocidade de descompressão (uso de CPU) depende principalmente do volume de dados sem compressão. Isso contrasta com sistemas que conseguem armazenar separadamente os valores de diferentes colunas, mas que não conseguem processar consultas analíticas com eficiência devido à otimização para outros cenários, como HBase, Bigtable, Cassandra e Hypertable. Nesses sistemas, você obteria uma taxa de transferência de cerca de cem mil linhas por segundo, e não centenas de milhões de linhas por segundo. Por fim, o ClickHouse é um sistema de gerenciamento de banco de dados, não um único banco de dados. Ele permite criar tabelas e bancos de dados em tempo de execução, carregar dados e executar consultas sem reconfigurar nem reiniciar o servidor.

Compressão de dados

Alguns SGBDs orientados a colunas não usam compressão de dados. No entanto, a compressão de dados é fundamental para alcançar um excelente desempenho. Além de codecs de compressão de uso geral eficientes, com diferentes compensações entre espaço em disco e consumo de CPU, ClickHouse fornece codecs especializados para tipos específicos de dados, o que permite ao ClickHouse competir com bancos de dados mais especializados, como os de séries temporais, e superá-los.

Armazenamento de dados em disco

Manter os dados fisicamente ordenados pela chave primária permite extrair dados com base em valores específicos ou em intervalos de valores com baixa latência, em poucas dezenas de milissegundos. Alguns SGBDs orientados a colunas, como SAP HANA e Google PowerDrill, só conseguem operar na RAM. Essa abordagem exige um investimento em hardware maior do que o necessário para análises em tempo real. O ClickHouse foi projetado para funcionar em discos rígidos comuns, o que significa que o custo por GB de armazenamento de dados é baixo, mas SSDs e RAM adicional também são plenamente aproveitados, quando disponíveis.

Processamento paralelo em múltiplos núcleos

Consultas grandes são paralelizadas naturalmente, usando todos os recursos necessários disponíveis no servidor atual.

Processamento distribuído em vários servidores

Quase nenhum dos SGBDs colunares mencionados acima oferece suporte ao processamento distribuído de consultas. No ClickHouse, os dados podem estar armazenados em diferentes shards. Cada shard pode ser um grupo de réplicas usado para tolerância a falhas. Todos os shards são usados para executar uma consulta em paralelo, de forma transparente para o usuário.

Suporte a SQL

O ClickHouse oferece suporte a uma linguagem de consulta declarativa baseada em SQL que é amplamente compatível com o padrão ANSI SQL. As consultas compatíveis incluem GROUP BY, ORDER BY, subconsultas em FROM, a cláusula JOIN, o operador IN, funções de janela e subconsultas escalares. Subconsultas correlacionadas (dependentes) não têm suporte no momento, mas podem vir a ser disponibilizadas no futuro.

Mecanismo de computação vetorial

Os dados não são armazenados apenas em colunas, mas processados em vetores (partes das colunas), o que permite alta eficiência da CPU.

Inserções de dados em tempo real

O ClickHouse oferece suporte a tabelas com chave primária. Para executar consultas rapidamente em um intervalo da chave primária, os dados são ordenados de forma incremental usando a MergeTree. Com isso, os dados podem ser adicionados continuamente à tabela. Nenhum bloqueio é usado quando novos dados são inseridos.

Índices primários

Ter os dados fisicamente ordenados pela chave primária permite extrair dados com base em valores específicos ou intervalos de valores com baixa latência, em menos de algumas dezenas de milissegundos.

Índices secundários

Diferentemente de outros sistemas de gerenciamento de banco de dados, os índices secundários no ClickHouse não apontam para linhas específicas nem para intervalos de linhas. Em vez disso, eles permitem que o banco de dados saiba de antemão que todas as linhas em determinadas partes de dados não corresponderão às condições de filtragem da consulta e, portanto, nem sequer sejam lidas; por isso, são chamados de data skipping indexes.

Adequado para consultas online

A maioria dos sistemas de gerenciamento de bancos de dados OLAP não é voltada para consultas online com latência inferior a um segundo. Em sistemas alternativos, um tempo de geração de relatórios de dezenas de segundos ou até de minutos costuma ser considerado aceitável. Às vezes, isso leva ainda mais tempo, o que obriga os sistemas a preparar relatórios offline (com antecedência ou respondendo com “volte mais tarde”). No ClickHouse, “baixa latência” significa que as consultas podem ser processadas sem demora e sem tentar preparar uma resposta antecipadamente, exatamente no momento em que a página da interface do usuário está carregando — em outras palavras, online.

Suporte a cálculos aproximados

O ClickHouse oferece várias formas de sacrificar precisão em troca de desempenho:
  1. Funções de agregação para calcular aproximadamente o número de valores distintos, medianas e quantis.
  2. Executar uma consulta com base em uma parte (SAMPLE) dos dados e obter um resultado aproximado. Nesse caso, proporcionalmente menos dados são lidos do disco.
  3. Executar uma agregação para um número limitado de chaves escolhidas aleatoriamente, em vez de todas as chaves. Sob certas condições de distribuição das chaves nos dados, isso fornece um resultado razoavelmente preciso com menos uso de recursos.

Algoritmo de join adaptativo

O ClickHouse escolhe de forma adaptativa como JOIN várias tabelas, priorizando hash join e recorrendo a merge join quando há mais de uma tabela grande.

Suporte à replicação e à integridade dos dados

O ClickHouse usa replicação assíncrona multi-master. Após serem gravados em qualquer réplica disponível, todas as demais réplicas obtêm sua cópia em segundo plano. O sistema mantém dados idênticos em réplicas diferentes. A recuperação após a maioria das falhas é realizada automaticamente ou, em casos complexos, de forma semiautomática. Para mais informações, consulte a seção Replicação de dados.

Controle de Acesso Baseado em Funções

O ClickHouse implementa o gerenciamento de contas de usuário por meio de consultas SQL e permite a configuração de controle de acesso baseado em funções, semelhante ao disponível no padrão ANSI SQL e em sistemas populares de gerenciamento de bancos de dados relacionais.

Recursos que podem ser considerados desvantagens

  1. Não há suporte a transações completas.
  2. Não é possível modificar ou excluir dados já inseridos em alta taxa e com baixa latência. Há exclusões e atualizações em lote disponíveis para limpar ou modificar dados, por exemplo, para cumprir o GDPR.
  3. O índice esparso faz com que o ClickHouse não seja tão eficiente para consultas pontuais que recuperam uma única linha por chave.
Última modificação em 10 de junho de 2026