Tech Talk: Vamos falar sobre arquitetura de dados?

Este artigo foi escrito por Mauricio Oliveira, Data Engineer na Pipefy, baseado em uma de suas Tech Talks.

Cenário 

Não é segredo que, já há algum tempo, o maior bem de uma empresa são seus dados e suas informações, sendo parte principal na tomada de decisões e até alvo de ataques.

A arquitetura, gestão, segurança e utilização destes dados devem ser prioridades para qualquer empresa – ou até indivíduo – que preocupa-se com a sua relevância e quer crescer.

Alguns modelos de arquitetura de dados existem no mercado, assim como várias ferramentas para gerenciamento delas. Neste artigo, vamos conhecer um pouco sobre esses modelos:

  • Bancos relacionais
  • Bancos não relacionais
  • Data Warehouses
  • Data Lakes
  • Data LakeHouses

Bancos de dados relacionais

Amplamente utilizados, tendo soluções gratuitas e com opções de executar como um serviço diretamente em provedores na nuvem, os bancos de dados relacionais (como MySQL, Postgresql, SQL Server, Oracle e demais) conversam diretamente com a aplicação e dão suporte a transações, criptografias, forte consistência e integridade dos dados, além de suporte a backups e recuperação de desastres relativamente fácil.

Os dados são estruturados em tabelas e organizados logicamente, de acordo com o problema a ser resolvido.

Se necessário, é possível escalar instâncias de um banco de dados relacional, mas este processo geralmente envolve aumentar o servidor ou serviço executando o mesmo – ou, se o banco permitir, adicionar mais instâncias de leitura ou escrita. Independente da solução, escalar um banco de dados relacional tende a ser uma operação cara, adicionando também mais pontos de falha na aplicação.

Apesar de resolver bem muitos problemas, realizar análises em cima de um banco de dados relacional pode provocar alguns cenários indesejáveis, como concorrência de leitura e escrita, alocação de tabelas ou queda de performance na aplicação. Como dito, escalar pode resolver algumas destas situações, mas ao custo de mais investimento para manter a aplicação no ar.

Bancos de dados não relacionais

Um banco de dados não relacional (como MongoDB, Cassandra, Firebase, DynamoDB e outros) compartilha muitos dos recursos de bancos relacionais, como recuperação de desastres, transações e criptografias, mas não se utilizam de tabelas para operar, e sua escala é realizada de forma mais fácil e barata, uma vez que eles tem suporte a salvar seus dados em vários lugares para consulta de forma eficiente.

No lugar de tabelas, estes bancos costumam utilizar-se mais de conceitos de “coleções”, e aceitam diversos tipos de dados, como texto, imagens, documentos, dados estruturados… Por conta disso o desenvolvimento de aplicações utilizando esta lógica costuma ser mais rápida, pois basta jogar os dados desejados na coleção e utilizar-se dos índices e mecanismos de busca depois.

Porém, a maior vantagem também torna-se sua maior dificuldade: como há a possibilidade de mudar a natureza do dado de forma fácil, a sua consulta torna-se um desafio, além de a consistência dos dados não ser garantida dado um volume alto de transações a curto prazo, dificultando a consulta em tempo real.

Data Warehouses

Data warehouses são sistemas usados para centralizar os dados de uma ou mais aplicações. Conseguem lidar com uma quantidade massiva de dados a um custo relativamente baixo. Exemplos de Data Warehouses são o Google BigQuery e o Amazon Redshift

São mais voltados para realização de análises e tomadas de decisão, portanto não substituem a necessidade de ter um banco de dados, relacional ou não, para servir a aplicação. Por ser voltado a análises e não ser o principal repositório, costuma ter uma apresentação similar a bancos relacionais, com tabelas divididas por colunas e registros.

A população de um data warehouse é feita por outras ferramentas, para justamente garantir a integridade de todas as bases da empresa. Estas ferramentas podem ser tanto nativas dos serviços, conectando-se periodicamente e replicando os dados das outras bases, ou gerenciadas pelos desenvolvedores – como o Apache Airflow, por exemplo.

Data Lakes

Similar ao Data Warehouse, data lakes são sistemas que visam centralizar os dados da empresa, mas dando suporte a diferentes formatos e estruturas, sem a necessidade de definir um esquema em primeira mão. 

Data Lakes também podem ser utilizados para armazenamento de dados sem um propósito inicial, como logs de aplicação, amostragens de uso de telas (dado o consentimento dos usuários) e similares. Como os dados são armazenados em sua forma bruta, análises posteriores podem ser feitas, além de ser possível ativar serviços de aprendizagem de máquina nestes dados, para identificar padrões inicialmente ocultos.

O poder de armazenamento de um data lake é muito grande, pois nele podemos gravar qualquer tipo de dado – inclusive vídeos. Por isso mesmo, a consulta feita diretamente em um data lake requer ferramentas específicas para tal, e um relativo conhecimento técnico.

Data Lakehouse

Data lakehouses são a combinação de data lakes e data warehouses, visando combinar a escalabilidade e a flexibilidade do data lake com a estrutura e facilidade de análises de um data warehouse. 

Governança e Dados sensíveis

Independente da arquitetura – ou combinação de arquiteturas – escolhida, um dos maiores desafios é manter a governança de dados e lidar com os dados sensíveis. Para isso, é necessário um constante planejamento e auditoria no que entra para o banco de dados e no que sai para consumo e análises. 

Dentro das soluções podemos mascarar, anonimizar e criptografar os dados. Podemos ter controles de acessos restritos, estar em conformidade com processos e leis, como GDPR e LGPD – mas o elo mais fraco sempre será em quem está consumindo, pois depois de um relatório ou análise feita, nenhuma ferramenta consegue bloquear um consumo irresponsável e uma possível brecha de segurança.

Considerações Finais

A adoção de múltiplas arquiteturas de dados para o gerenciamento, tomada de decisão e escala de aplicações se torna necessária junto com o crescimento da empresa. 

Montar uma estratégia de dados utilizando-se de um data lakehouse é essencial para, a um custo acessível, garantir respostas a perguntas sobre o desempenho, o consumo, a estratégia da empresa e a utilização da aplicação. Abre também a possibilidade de metodologias como modelos de aprendizagem de máquina e predições sobre comportamentos e cenários.

Em suma, adotar estas estratégias é um esforço a mais que, a médio prazo, se torna muito viável pois dá a possibilidade de se obter uma solução mais económica, flexível, escalável e imediata para problemas que sequer sabemos que existem hoje. 

Similar Posts

Leave a Reply