O Apache Doris é um banco de dados analítico em tempo real e de alto desempenho, ideal para análise de relatórios, consultas ad hoc e aceleração de consultas federadas em data lakes.
Informações básicas
Para obter mais informações sobre o Apache Doris, consulte Introdução ao Apache Doris.
Cenários
Após a integração e o processamento de dados de diversas origens, eles são normalmente carregados em um data warehouse em tempo real, como o Doris, e em um data lakehouse offline, como Hive, Iceberg e Hudi. A figura a seguir ilustra esse processo.
O Apache Doris é amplamente utilizado nos seguintes cenários:
-
Análise de relatórios
Painéis em tempo real.
Relatórios para analistas internos e gestores.
Análise de relatórios com alta concorrência (Customer Facing Analytics), como análises de site para proprietários de websites e relatórios de anúncios para anunciantes. Esse cenário geralmente exige milhares de consultas por segundo (QPS) com latência na casa dos milissegundos.
Consultas ad hoc: Análises self-service para analistas, com padrões de consulta variáveis que demandam alto throughput.
Construção de data warehouse unificado: O Doris funciona como uma plataforma única para criar um data warehouse unificado. Ele substitui arquiteturas legadas compostas por Spark, Hive, Kudu, Hbase e Phoenix, simplificando significativamente a stack de software de big data.
Consultas federadas em data lake: Tabelas externas permitem análises federadas de dados no Hive, Iceberg e Hudi sem cópia de dados, o que melhora consideravelmente o desempenho das consultas.
Visão técnica
A figura a seguir apresenta a arquitetura do Doris, composta por apenas dois tipos de processos.
Frontend (FE): Atende solicitações de clientes, analisa e planeja consultas, gerencia metadados e administra nós.
Backend (BE): Gerencia o armazenamento de dados e executa os planos de consulta.
Ambos os tipos de processo escalam horizontalmente e suportam centenas de máquinas e dezenas de petabytes de armazenamento por cluster. Um protocolo de consistência garante alta disponibilidade (HA) para os serviços e alta confiabilidade para os dados. Além disso, a arquitetura integrada reduz os custos de operação e manutenção (O&M) de um sistema distribuído.
A tecnologia do Doris baseia-se em cinco aspectos principais:
O Doris utiliza o protocolo MySQL, possui alta compatibilidade com a sintaxe MySQL e suporta SQL padrão. Isso permite acessar o Doris com várias ferramentas cliente e integrá-lo perfeitamente a ferramentas de Business Intelligence (BI).
-
O mecanismo de armazenamento colunar do Doris codifica, compacta e lê dados por coluna. Essa abordagem atinge uma taxa de compressão muito elevada e reduz varreduras de dados irrelevantes, tornando o uso de I/O e CPU mais eficiente.
Além disso, o Doris oferece um conjunto abrangente de estruturas de índice para minimizar a varredura de dados:
Índice de Chave Composta Ordenada: Suporta até três colunas como chave de ordenação composta, permitindo recorte eficaz de dados em cenários de relatórios com alta concorrência.
Índice Z-order: Executa consultas de intervalo de forma eficiente em qualquer combinação de campos do modelo de dados.
Min/Max: Filtra eficazmente consultas de igualdade e de intervalo em tipos numéricos.
Bloom Filter: Altamente eficaz para recorte de filtros de igualdade em colunas de alta cardinalidade.
Índice Invertido: Possibilita recuperação rápida em qualquer campo.
-
O Doris suporta múltiplos modelos de armazenamento otimizados para diferentes cenários:
Modelo Aggregate Key: Mescla colunas de valor com a mesma chave. Este modelo aumenta drasticamente o desempenho por meio de pré-agregação.
Modelo Unique Key: As chaves são únicas. Dados com a mesma chave são sobrescritos, viabilizando atualizações de dados no nível de linha.
Modelo Duplicate Key: Modelo de dados detalhado que armazena os detalhes de uma tabela de fatos.
O Doris também suporta visualizações materializadas fortemente consistentes, atualizadas e selecionadas automaticamente sem intervenção manual, reduzindo significativamente os custos de manutenção.
-
O Doris adota um modelo de Processamento Massivamente Paralelo (MPP). A execução ocorre em paralelo entre nós e dentro de cada nó. Ele também suporta joins com shuffle distribuído para múltiplas tabelas grandes, lidando melhor com consultas complexas. A figura a seguir ilustra o mecanismo de consulta.

O mecanismo de consulta do Doris é vetorizado. Todas as estruturas de memória são organizadas em layout colunar. Esse design reduz drasticamente as invocações de funções virtuais, aumenta a taxa de acerto de cache e utiliza instruções SIMD de forma eficiente. Em cenários de agregação de tabelas largas, seu desempenho é de 5 a 10 vezes superior ao de um mecanismo não vetorizado.
Uma estratégia híbrida de otimização combina o Otimizador Baseado em Regras (RBO) e o Otimizador Baseado em Custo (CBO). O RBO suporta dobragem de constantes, reescrita de subconsultas e pushdown de predicados. Já o CBO permite reordenação de joins e passa por otimizações contínuas, focando em coleta e derivação de estatísticas mais precisas, além de estimativas mais exatas do modelo de custo.
Com a tecnologia de Execução Adaptativa de Consultas, o Doris ajusta dinamicamente os planos de execução com base em estatísticas de tempo de execução. Por exemplo, o Runtime Filter gera um filtro durante a execução e o envia para o lado da sondagem (probe side). Esse filtro também pode ser automaticamente aplicado ao nó de varredura de nível mais baixo no lado da sondagem, reduzindo drasticamente o volume de dados e acelerando o desempenho de joins, conforme mostra o fluxograma a seguir.
O Runtime Filter do Doris suporta filtros In, Min, Max e Bloom.
O conteúdo e as imagens deste tópico foram obtidos em Introdução ao Apache Doris.