dbt como ferramenta aceleradora da Jornada Data Driven

Algumas empresas possuem repositórios de dados centralizados (Data Warehouse e Data Lakes) que precisam ser trabalhados para gerarem valor. Nesse cenário, para revolucionar a Jornada Data Driven, é importante possuir uma ferramenta que se conecte a esses repositórios de dados e dê poder aos próprios usuários da área de negócio, analistas e engenheiros para gerar suas próprias transformações de dados, regras de negócios e insights valiosos. E uma das áreas que mais podem gerar valor com o uso de dados é a área de negócios. Em razão disso, surgiu a ferramenta dbt.

O que é dbt em dados?

dbt é uma ferramenta que facilita a transformação de dados. Dentro de um pipeline de dados, sempre é realizado um ETL ou ELT (extrair, transformar e carregar – na sigla em inglês). O dbt se concentra no “T” – transformação. Ele permite que qualquer pessoa com conhecimento em SQL crie fluxos de trabalhos de organização e transformações de dados, bem como seus fluxos de trabalho analíticos; tudo isso de forma colaborativa e seguindo as boas práticas de desenvolvimento de software como modularidade, portabilidade, CI/CD, testes e documentação.

Como surgiu o dbt em dados?

O dbt surgiu em 2016, em uma época quando existiam menos ferramentas em todas as etapas de dados. Mas foi criada para resolver essa dor latente que são a falta de unidade e o problema nas orquestrações de execuções SQL. 

Com o surgimento do Redshift, Big Query, Azure Sinapse, Snowflake e entre outros bancos de dados para Data Warehouse em Cloud e distribuídos, os Projetos de Analytics passaram a ser mais ágeis para serem construídos (antes um projeto poderia levar meses e até anos para ser processado) e mais acessíveis (financeiramente falando). Dessa forma, mais empresas conseguiram o acesso a esse ambiente analítico. Assim, o ecossistema, como um todo, foi beneficiado com essa evolução. Com isso, várias ferramentas apareceram para se conectar com esses Data Warehouse, entre eles o dbt. 

Um dos criadores do dbt, Tristan Handy, fazia parte da empresa RJ Metrics (que foi vendida para a Magento). Nesse contexto, há muito tempo, existiam pessoas envolvidas com analytics, preocupadas e conhecedoras de todo o ecossistema. 

O dbt suporta diversas ferramentas como motor de processamento SQL, entre elas, temos o Snowflake, Teradata, Amazon Athena, prestoDB e entre outras. Algumas das conexões para motores de processamento SQLs foram criadas pelos próprios desenvolvedores do dbt, mas, em sua grande maioria, foi uma contribuição da comunidade. Isso é um ponto muito forte do dbt, que é uma ferramenta Open Source e com um grande apoio da comunidade de desenvolvedores.

Princípios do dbt

O dbt trabalha com alguns princípios básicos, sendo eles: SQL para Desenvolvimento Rápido, Controle de Versão, Trabalho Colaborativo, CI/CD, Teste, Documentação e Linhagem de Dados. Vamos, agora, falar de cada um desses pontos: 

SQL para Desenvolvimento Rápido

O dbt é uma ferramenta que permite escrever em SQL combinado com uma linguagem de templates chamada Jinja, que possibilita que o código SQL seja reutilizável, modular, com blocos lógicos, condições e entre diversas outras facilidades. 

Além disso, é possível escrever os modelos SQL modulares com instruções SELECT e a função ref() para referenciar outros modelos de dados já existentes no seu projeto dbt; nesse aspecto, sem se preocupar com o gerenciamento de dependência, já que o dbt lida com esta tarefa.  

Também é possível substituir operações DDL/DML padrão por instruções SQL SELECT simples que inferem dependências, criam tabelas, exibições e executam modelos em ordem.

Controle de versão, CI/CD e Trabalho Colaborativo

Com o dbt é possível implementar um pipeline de dados em SQL com segurança usando ambientes de desenvolvimento. O controle de versão habilitado para Git permite a colaboração e um retorno aos estados anteriores, em caso de falha e erros nos deploys. 

Outra característica interessante é o processo de observabilidade em fluxos de trabalho de transformação com agendamento, registro e alertas no aplicativo web do dbt. Neste ambiente, pode-se criar políticas de proteção, garantindo que os dados se movam por meio de processos governados, incluindo ambientes de desenvolvimento, com estágios de desenvolvimento e produção gerados por cada execução de CI.

Testes

O dbt permite testes de regressão automatizados para que seja possível garantir que os módulos SQL estejam realizando as transformações corretamente; além disso, garante que os dados de origem e os dados de resultado estejam no formato desejado.  

dbt oferece dois tipos de teste, os Testes de Esquema e os Testes de Dados: 

  • Testes de Esquema: declarações, como valores únicos, não nulos, aceitos e relacionados que são adicionados a arquivos .yml no modelo a ser testado. 
  • Testes de Dados: consultas SQL personalizadas que podem ser encontradas no diretório test. Os testes personalizados e pré-empacotados do dbt ajudam os desenvolvedores a criar uma “rastreabilidade” de suposições validadas para colaboradores de dados. 

Documentação

Os recursos de documentação do dbt oferecem a capacidade de definir modelos de dados e suas colunas em um arquivo yaml de “source”, facilitando o acompanhamento das principais definições de dados. 

É possível visualizar a documentação em uma interface web amigável,  por meio de um catálogo de dados, com definições, dependências e a linhagem de dados de todo o ecossistema dbt.

Linhagem

Na visualização do Lineage dos dados do dbt, é possível saber exatamente de onde os dados saíram e para onde eles foram. É possível visualizar a linhagem de dados não somente em termos de entidades de base de dados, mas também em termos de modelos, dependências e processamentos. O dbt possui também o conceito de “Exposures”, em que é possível dizer que determinado dado está disponível, tudo isso em uma visualização em dashboard no Metabase.

Como o dbt funciona?

Existem dois arquivos principais no dbt, o arquivo profiles.yml e dbt_project.yml. Esses são arquivos exclusivos dessa ferramenta de transformação e fornecem muito poder, permitindo que você personalize o seu ambiente conforme a sua necessidade.  

Os modelos de projetos são definidos no arquivo dbt_project.yml. É  por meio desse arquivo que o dbt sabe que um diretório é um projeto dbt. Ele também contém informações importantes que informam ao dbt como operar em seu projeto. 

O arquivo profiles.yml permite selecionar credenciais exclusivas de suas fontes e destinos de dados. Nestes arquivos, são descritos os perfis de banco de dados que serão conectados, com informações como: no profiles.yml. 

Além desses arquivos, existem algumas características bem definidas na ferramenta dbt, sendo elas: 

  • Projeto; 
  • Modelo;
  • Comandos.  

Como o dbt funciona?

Existem dois arquivos principais no dbt, o arquivo profiles.yml e dbt_project.yml. Esses são arquivos exclusivos dessa ferramenta de transformação e fornecem muito poder, permitindo que você personalize o seu ambiente conforme a sua necessidade.  

Os modelos de projetos são definidos no arquivo dbt_project.yml. É  por meio desse arquivo que o dbt sabe que um diretório é um projeto dbt. Ele também contém informações importantes que informam ao dbt como operar em seu projeto. 

O arquivo profiles.yml permite selecionar credenciais exclusivas de suas fontes e destinos de dados. Nestes arquivos, são descritos os perfis de banco de dados que serão conectados, com informações como: no profiles.yml. 

Além desses arquivos, existem algumas características bem definidas na ferramenta dbt, sendo elas: 

  • Projeto; 
  • Modelo;
  • Comandos.  

Projeto

Um projeto dbt é um diretório que contém arquivos .sql e .yml . Os arquivos mínimos necessários são: 

  • Um arquivo de projeto chamado dbt_project.yml  – esse arquivo contém configurações de um projeto dbt; 
  • Modelo(s) arquivos .sql  – modelo em dbt é simplesmente um único arquivo .sql contendo uma única instrução SELECT . 

Modelo

Um modelo dbt é basicamente um arquivo .sql com uma instrução SELECT. O modelo denominado “.sql” contém instruções SQL SELECT, que em tempo de execução serão aplicadas aos motores de processamento SQL – Data Warehouse com Snowflake, Redsfift, Big Query etc. ou framework de processamento SQL, como Spar, prestoDB, AWS Athena e entre outros. 

O modelo também define o esquema de nossas tabelas de origem em source e o esquema das visualizações a serem criadas em models.

Comandos

Os comandos dbt começam com dbt e podem ser executados usando uma das seguintes maneiras: 

  • dbt Cloud – a seção de comando na parte inferior do painel dbt Cloud; 
  • dbt CLI. 

Alguns comandos só podem ser usados ​​em dbt CLI como dbt init.

O que o dbt não é

  • Ferramenta de extração de dados: Como premissa, os dados já devem estar na Data Warehouse, no Data Lake, para que consiga transformar os dados com o dbt. 
  • Ferramenta de ETL/ELT:  Só atende a camada T de transformação. 
  • Orquestrador de fluxos de trabalho: Apesar de, internamente, orquestrar toda a execução dos arquivos SQL, ele trabalha somente com os arquivos dele próprio, ou seja, não consegue orquestrar fluxo de trabalho de linguagens diferentes. 
  • Ferramenta de migração de dados. 
  • Engine de processamento de dados: Ele orquestra a execução dos próprios arquivos em SQL e deixa para que o Data Warehouse se encarregue de processar essas consultas.

dbt e os próximos passos

O dbt oferece uma experiência única para engenheiros e analistas de dados, pois usa instruções SQL SELECT simples para realizar transformações pesadas de maneira limpa e econômica. Seus módulos têm execução competitivamente mais rápida e são fáceis de modificar e testar. A integração do dbt com os modelos e templates, juntamente com a sua capacidade de controle de versão e realização de testes automatizados, torna o processo de transformação de dados mais robusto e seguro. Esta é uma excelente ferramenta de transformação e processamento de dados, empoderando qualquer pessoa na Jornada Data Driven, desde que se sinta confortável com a linguagem SQL.  

No próximo post da nossa série sobre dbt, faremos um tutorial de exemplo, criando modelos, templates, testes e colocando nosso dbt em produção. 

Aproveite e conheça mais em nosso blog!  

Learn More

Escalando aplicações com MongoDB

MongoDB é hoje um dos 5 bancos de dados mais famosos do mundo, mas você já teve curiosidade de saber o porquê dessa fama tão grande?  

Saiba isso e muito mais sobre MongoDB neste artigo.

O que é MongoDB?

MongoDB é um NoSQL baseado em documentos. Esses documentos possuem uma estrutura de dados no formato JSON. Esse tipo de estrutura é muito conhecido por toda comunidade de desenvolvimento de software. JSON é um formato baseado em JavaScript, que é hoje a linguagem de programação mais famosa do mundo. Atualmente, um desenvolvedor JavaScript pode ser totalmente full stack, usando front-end em JavaScript com seu framework predileto, back-end em Node.JS e banco de dados baseados em MongoDB, uma combinação perfeita. Além disso, existem milhares de bibliotecas para outras linguagens de programação que facilitam o trabalho tanto com JSON como com o MongoDB. 

Por fim, uma das coisas que faz com que o MongoDB seja tão famoso é sua facilidade e sua curva de conhecimento suave.

Mongo DB é uma ferramenta Open Source

Já pensou em ter um banco de dados quase 100 vezes mais rápido do que o principal e mais caro banco de dados do mercado? E sem gastar um centavo com licenciamento? É isso que o MongoDB te oferece! Ele é um NoSQL extremamente fácil de se trabalhar e é Open Source (código aberto) sob a licença GNU AGPL3. Essa licença lhe permite usar seu aplicativo comercial distribuído como serviço, sem precisar compartilhar o código. Desta forma, todo mundo que quer usar o MongoDB em um serviço comercial está amparado pela sua licença.

Mongo DB é Escalável, Altamente Disponível e Flexível

Uma das aplicações mais comuns que vemos no uso do MongoDB é em arquitetura de microsserviço. É muito rápido e simples subir uma instância única de MongoDB para atender o seu serviço. Na outra ponta, também é muito comum vermos grandes clusters de MongoDB com dezenas de máquinas rodando simultaneamente em empresas. Isto porque o MongoDB é altamente escalável e extremamente disponível. Com o MongoDB, você pode começar pequeno e quando necessário, aumentar sua capacidade rapidamente, atendendo a real demanda da sua aplicação. 

MongoDB e Cloud Computing uma combinação perfeita

Hoje, todos os principais provedores de cloud oferecem a você serviços de MongoDB gerenciado. Isso significa que você pode provisionar o seu MongoDB como serviço, sem se preocupar com o gerenciamento do seu cluster de Mongo. Existe ainda a possibilidade de utilizar o MongoDB Atlas, que é o serviço provisionado pela própria Mongo, empresa responsável pelo desenvolvimento do banco.

Muitas outras features

MongoDB possui diversas features muito legais, que nem todos os NoSQL possuem. Uma delas, por exemplo, é o suporte a transações ACID sobre múltiplos documentos de forma simultânea. Ele possui também a capacidade de realização de queries sobre qualquer campo do documento, inclusive campos em arrays e estrutura alinhadas. Ainda possui features de indexações, como a indexação secundária, que pode tornar suas queries muito mais rápidas e eficientes. Ele também suporta nativamente agregações e ordenação em queries.  

Para você que é desenvolvedor, diversos pacotes em sua linguagem favorita são disponibilizados pela comunidade. Um exemplo disso é que você pode escolher trabalhar diretamente com JSON dentro do Mongo ou pode usar o seu ORM favorito. 

Diversas outras features são oferecidas pelo MongoDB, mas eu gostaria de citar mais uma apenas, o GridFS. Essa feature possibilita você armazenar documentos extremamente grandes. Por deafult, você pode armazenar documentos de até 16MB no MongoDB, mas, caso precise de ainda maiores, o GridFS pode ser muito útil para você.

Conte com a Rox para suportar o seu MongoDB e foque no desenvolvimento do seu aplicativo

Apesar da sua grande popularidade, ainda não é tão comum encontrar no mercado profissionais como DBAs especializados em MongoDB. Essa é uma demanda cada vez mais comum em grandes projetos, principalmente quando é necessário aumentar a escala do seu cluster MongoDB, aplicar boas práticas, melhorar particionamento, sharding, replicas sets e entre outras características do seu cluster de MongoDB para aprimorar ainda mais o desempenho do seu banco de dados. Pensando nisso, a Rox desenvolveu um time especializado na manutenção, suporte e melhorias em MongoDB, seja on-primese ou na sua cloud favorita. Somos especializados em todo o ciclo de vida de dados e temos, além dos melhores DBAs em MongoDB, uma equipe completa especializada em infra-estrutura, cloud computing, DevOps, e banco de dados em geral. Com a Rox você pode focar no desenvolvimento das suas aplicações e ficar tranquilo com o suporte, manutenção e melhoria do seu ambiente de banco de dados NoSQL com MongoDB graças aos nossos especialistas. Não deixe de conversar conosco. 

Quer saber como podemos te ajudar? Clique aqui! 

Learn More