Como funciona o sistema de inserção de dados na BD
Tags: database, systems, python, programming
Published: 2021-05-28 15:32:31

**TL;DR:** Vamos conhecer um pouquinho sobre como funciona a infraestrutura de inserção de dados da Base dos Dados e como você pode melhorar seu portfólio de cientista de dados e/ou desenvolvedor contribuindo com a nossa missão de universalizar o acesso a dados.

## A Infraestrutura

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g5v7q6ubopmziloojgft.png)

O time de infraestrutura da Base dos Dados é responsável pelas ferramentas de ingestão de dados, que englobam desde o upload de dados até a disponibilização de dados no ambiente de produção; pelo acesso de dados através de pacotes em Python e R; e pelo website. Neste cenário o time é atualmente dividido em várias frentes, tratando da renovação do site e da implementação de pesos e contrapesos automatizados.

Procuramos simplificar e automatizar todos os processos, começando com o [upload de dados](https://basedosdados.github.io/mais/colab_data/) e inserção dos mesmos no **Ambiente de Experimentação**. Neste ponto o colaborador pode adicionar dados em sua nuvem do Google, limpar e tratar os dados, e então criar as tabelas locais com a interface de linha de comando desenvolvida pela infra. Por fim, o colaborador pode submeter a base de dados para revisão, criando um pull request no [Github](https://github.com/basedosdados/mais/pulls).

Após o pull request de revisão entra em ação o sistema de **Pesos e Contrapesos**, com o time de dados checando a qualidade dos dados e metadados. Esse ponto é crucial para manter a qualidade dos dados, um diferencial da BD. O time de infra atua procurando automatizar o máximo possível o processo de revisão dos dados, realizando a validação de metadados como descrições e nomes de colunas; e tipos de dados, como dados chaves primárias.

Após a checagem dos dados, o pull request de inserção de dados é aprovado e os dados entram no **Ambiente de Produção**. Logo podem ser acessados por uma de nossas ferramentas, como os pacotes em Python e R, ou diretamente pelo BigQuery.

Paralelamente ao processo de inserção de dados, o time de Infra também trabalha com a renovação do portal, visando oferecer uma interface moderna.

## Contribuindo com dados

No caminho para se tornar um analista de dados ou desenvolvedor nos encontramos com certas dificuldades de entrada no mercado de trabalho. Por vezes não existe balanço entre estudo e aplicação prática, ou somente a análise de dados de brincadeirinha. Levante a mão quem não passou uma época paralisado em bases de dados como o Titanic ou Iris. E apesar dessas bases de dados serem uma boa alternativa para aprender novos métodos ou ferramentas, o conhecimento obtido trabalhando com as mesmas não é transferível para o mundo real.

Uma boa alternativa para lidar com dados reais e melhorar seu portfólio é ajudar a Base dos Dados com a sua ingestão de dados.  No mínimo você irá lidar com a captura de dados, preferencialmente de forma automatizada, a arquitetura de dados, e a limpeza dos mesmos. Também vai interagir com ferramentas do dia a dia de um cientista de dados, como interfaces de linha de comando, YAML e BigQuery. A experiência conquistada pode ser crucial na entrada no mercado de trabalho.

Descrevemos em detalhes esse processo em [Colaborando com dados na BD+](https://basedosdados.github.io/mais/colab_data/). Em resumo o processo é dividido em quatro partes. Inicialmente você informa seu interesse para a BD. Então limpa e trata os dados. Em seguida realiza upload dos dados em seu BigQuery pessoal. E por fim envia os dados para revisão.

## Contribuindo com a infra

Aliás, outra forma de contribuir e melhorar seu portfólio, mas agora de desenvolvedor, é colaborando com a infraestrutura da BD.

A colaboração começa conversando conosco, no bate papo da infra ou nas reuniões às 19h da segunda-feira, ambas nos canais da infra no [Discord](https://discord.gg/huKWpsVYx4). Após este passo podemos escolher uma feature ou problema para desenvolvimento, isto é, caso ainda não tenha escolhido algum problema contido nas [issues](https://github.com/basedosdados/mais/issues).

Como você pode colaborar? Aqui estão algumas ideias:
- Adicionando novos conjuntos de dados 
- Fazendo a revisão de submissões de dados
- Aprimorando e criando novas funcionalidades do pacote em Python
- Aprimorando e criando novas funcionalidades do pacote em R
- Criando um pacote em Stata
- Adicionando checagens automáticas de dados
- Adicionando checagens automáticas de metadados
- Desenvolvendo novas features para o site

---

**Nosso projeto já te ajudou de alguma forma?** Saiba como nos ajudar:

- [Apoie o projeto](https://apoia.se/basedosdados)
- [Seja um(a) colaborador(a) de dados na BD](https://basedosdados.github.io/mais/colab_data/)
- [Colabore com nossos pacotes](https://github.com/basedosdados/mais)
- Compartilhe nas redes sociais!

Texto produzido por [Vinicius](https://github.com/vncsna) e [Fernanda](https://github.com/fernandascovino), com apoio de [Diego](https://github.com/d116626), [João](https://github.com/JoaoCarabetta) e [Caio](https://github.com/Hellcassius) do time de Infra da Base dos Dados 💚