Caio Jacintho, Gabriel Gazola, Judite Cypreste
13
September
2022
Conforme falamos em nosso texto anterior, selecionar o conjunto de ferramentas utilizado para montar um projeto não é uma tarefa nada fácil, já que é nesta etapa que serão definidas todas as capacidades e restrições do sistema que está sendo desenvolvido.
Para escolher o menor conjunto possível de componentes, que também atendessem a todas as nossas necessidades, fizemos uma lista de todos os pontos que procurávamos nas ferramentas que estavam buscando:
Com as características priorizadas, nossa seleção de componentes ficou assim:
Agora, vamos para a explicação de cada item selecionado:
Para realizar a extração de dados, a ferramenta selecionada foi o Prefect. De código aberto, ela permite a automação de qualquer tarefa por meio da sua API, em Python.
Por possuir uma interface simples, é extremamente fácil modificar seu código para usufruir de suas funcionalidades. Além da bela interface que ele possui, duas caraterísticas foram decisivas para a sua escolha:
Aqui é onde a galera do SQL fica animada. O DBT é uma ferramenta de código aberto que permite a definição de modelos de dados em linguagem SQL. Com ele, é possível materializar os resultados de uma query em diferentes formas e em diferentes plataformas, como o Google BigQuery, Amazon Redshift, PostgreSQL, entre outros.
Assim, com a mesma query é possível criar tabelas e views em diferentes plataformas. E não só isso, as tabelas podem ser materializadas de maneiras diferentes, como, por exemplo, de forma incremental, o que consiste em adicionar novas linhas ao final de uma tabela (sem ter que usar funções de merge ou append).
Além de tudo, você pode parametrizar suas queries para que elas sejam executadas com diferentes valores de entrada, coma opção de especificação de configurações de particionamento diretamente no seu modelo de dados. É uma ferramenta bem completa, ajudando muito em nossas pipelines de dados.
Apesar de priorizarmos o software de código livre, optamos por uma iniciativa privada para nosso armazenamento de dados. Neste caso em específico, as ferramentas apresentadas pela Google atenderam todos os requisitos que havíamos levantado, além de reduzirem o número de componentes para apenas dois ao contrário dos múltiplos open-source que teríamos que manter em conjunto. Os componentes que utilizamos são:
Google Cloud Storage: é um serviço de armazenamento de objetos. Por meio de API é possível fazer upload de qualquer tipo de arquivo, configurar suas permissões e, caso tenha acesso, realizar o download dos dados. Além disso, é possível utilizá-lo como um data lake, armazenando arquivos na mesma estrutura de partições Hive e obtendo seus dados particionados para consulta.
Google BigQuery: um serviço de data warehouse serverless. Ele permite análises escalonáveis em petabytes de dados. Com a união dessas duas ferramentas, conseguimos manter um data lake e um data warehouse públicos e com pouco esforço.
Pensando não só no legado para o município, como também na responsabilidade de manutenção deste projeto de transparência para os próximos governos, divulgamos nossas escolhas e suas razões.
Também disponibilizamos publicamente, em nosso GitHub, diversos artefatos que permitem a replicação da infraestrutura proposta com pouca ou nenhuma modificação, garantindo também o monitoramento público por qualquer cidadão.
A ideia do Datalake é para o bem público, e, por isso mesmo, pensamos que todos os aspectos relativos a sua criação e manutenção também deveriam ser acessíveis a toda sociedade.