Por que usar o Apache Druid para seu banco de dados analítico de código aberto
Seus aplicativos analíticos externos são essenciais para seus usuários. É importante construir a arquitetura de dados correta.
Analytics não é mais apenas para partes interessadas internas. Se você estiver criando um aplicativo de análise para clientes, provavelmente está se perguntando qual é o back-end de banco de dados certo para você.
Seu instinto natural pode ser usar o que você conhece, como PostgreSQL ou MySQL. Você pode até pensar em estender um data warehouse além dos principais painéis e relatórios de BI. Porém, a análise para usuários externos é um recurso importante, então você precisa da ferramenta certa para o trabalho.
A chave para responder a isso se resume à experiência do usuário. Aqui estão algumas considerações técnicas importantes para usuários de seus aplicativos de análise externos.
Evite atrasos com Apache Druid
O jogo de espera para processar consultas em uma fila pode ser irritante. A causa raiz dos atrasos se resume à quantidade de dados que você está analisando, ao poder de processamento do banco de dados e ao número de usuários e chamadas de API, juntamente com a capacidade do banco de dados de acompanhar o aplicativo.
Existem algumas maneiras de criar uma experiência de dados interativa com qualquer banco de dados genérico de Online Analytical Processing (OLAP) quando há muitos dados, mas elas têm um custo. As consultas de pré-computação tornam a arquitetura muito cara e rígida. Agregar os dados primeiro pode minimizar o insight. Limitar os dados analisados apenas a eventos recentes não dá aos usuários uma visão completa.
A resposta "sem compromisso" é uma arquitetura otimizada e um formato de dados criado para interatividade em escala, que é exatamente o que o Apache Druid, um banco de dados em tempo real projetado para potencializar aplicativos analíticos modernos, oferece.
- Primeiro, o Druid possui uma arquitetura distribuída e elástica exclusiva que pré-busca dados de uma camada de dados compartilhada em um cluster quase infinito de servidores de dados. Essa arquitetura permite um desempenho mais rápido do que um mecanismo de consulta desacoplado, como um data warehouse em nuvem, porque não há dados para mover e mais escalabilidade do que um banco de dados escalável como PostgreSQL e MySQL.
- Em segundo lugar, o Druid emprega indexação multinível automática (às vezes chamada de "automágica") incorporada diretamente no formato de dados para gerar mais consultas por núcleo. Isso está além do formato colunar OLAP típico com a adição de um índice global, dicionário de dados e índice de bitmap. Isso maximiza os ciclos da CPU para processamento mais rápido.
Alta disponibilidade não pode ser algo "bom de se ter"
Se você e sua equipe de desenvolvimento criam um back-end para relatórios internos, realmente importa se ele fica inativo por alguns minutos ou até mais? Na verdade. É por isso que sempre houve tolerância para períodos de inatividade não planejados e janelas de manutenção em bancos de dados e data warehouses OLAP clássicos.
Mas agora sua equipe está construindo um aplicativo analítico externo para clientes. Eles percebem interrupções e isso pode afetar a satisfação do cliente, a receita e, definitivamente, o seu fim de semana. É por isso que a resiliência, tanto a alta disponibilidade quanto a durabilidade dos dados, precisa ser uma consideração importante no banco de dados para aplicações analíticas externas.
Repensar a resiliência requer pensar nos critérios de design. Você pode se proteger contra uma falha em todo o nó ou cluster? Quão ruim seria perder dados e que trabalho seria necessário para proteger seu aplicativo e seus dados?
Os servidores falham. A maneira padrão de construir resiliência é replicar nós e lembrar de fazer backups. Mas se você estiver criando aplicativos para clientes, a sensibilidade à perda de dados será muito maior. O backup ocasional simplesmente não vai resolver isso.
A resposta mais fácil está incorporada na arquitetura central do Apache Druid. Projetado para resistir a qualquer coisa sem perder dados (até mesmo eventos recentes), o Apache Druid apresenta uma abordagem simples e capaz de resiliência.
Druid implementa alta disponibilidade (HA) e durabilidade com base na replicação automática e multinível com dados compartilhados no armazenamento de objetos. Ele permite que as propriedades de alta disponibilidade esperadas e o que você pode considerar um backup contínuo protejam e restaurem automaticamente o estado mais recente do banco de dados, mesmo se você perder todo o cluster.
Mais usuários deveriam ser uma coisa boa
Os melhores aplicativos têm os usuários mais ativos e a experiência envolvente e, por esses motivos, é importante arquitetar seu back-end para alta simultaneidade. A última coisa que você deseja são clientes frustrados porque os aplicativos estão travando. A arquitetura para relatórios internos é diferente porque a contagem de usuários simultâneos é muito menor e finita. A realidade é que o banco de dados que você usa para relatórios internos provavelmente não é adequado para aplicativos altamente simultâneos.
Arquitetar um banco de dados para alta simultaneidade se resume a encontrar o equilíbrio certo entre uso de CPU, escalabilidade e custo. A resposta padrão para lidar com a simultaneidade é adicionar mais hardware a ela. A lógica diz que se você aumentar o número de CPUs, poderá executar mais consultas. Embora seja verdade, esta também pode ser uma abordagem dispendiosa.
Uma abordagem melhor é examinar um banco de dados como o Apache Druid com um armazenamento otimizado e mecanismo de consulta que reduz o uso da CPU. A palavra-chave é "otimizado". Um banco de dados não deve ler dados desnecessários. Use algo que permita que sua infraestrutura atenda a mais consultas no mesmo período.
Economizar dinheiro é um grande motivo pelo qual os desenvolvedores recorrem ao Apache Druid para seus aplicativos analíticos externos. Apache Druid possui um formato de dados altamente otimizado que usa uma combinação de indexação multinível, emprestada do mundo dos mecanismos de pesquisa, junto com algoritmos de redução de dados para minimizar a quantidade de processamento necessária.
O resultado líquido é que o Apache Druid oferece processamento muito mais eficiente do que qualquer outra coisa por aí. Ele pode suportar dezenas a milhares de consultas por segundo em escala de Terabyte ou até Petabyte.
Construa o que você precisa hoje, mas prepare-o para o futuro
Seus aplicativos analíticos externos são essenciais para seus usuários. É importante construir a arquitetura de dados correta.
A última coisa que você deseja é começar com o banco de dados errado e depois lidar com as dores de cabeça à medida que você escala. Felizmente, o Apache Druid pode começar pequeno e ser facilmente dimensionado para oferecer suporte a qualquer aplicativo imaginável. O Apache Druid tem uma documentação excelente e, claro, é de código aberto, então você pode experimentá-lo e começar a trabalhar rapidamente.