domingo, 21 de agosto de 2022

Datalake (Uma versão BIG DATA do DW clássico)

Houve um tempo em que era possível gerar relatórios gerenciais com dados extraídos das bases transacionais que subsidiam os sistemas de informação. Com o aumento do volume de dados, constatou-se que as consultas envolvidas na produção desses relatórios estavam comprometendo o desempenho dos sistemas.

No sentindo de resolver essa questão eis que surgem as bases de dados analíticas com dados extraídos de bases transacionais, modelados de forma dimensional de modo a otimizar a performance das consultas efetuadas. Surge aí o conceito de Data Warehouse,

Agora vamos imaginar um cenário com uma grande VARIEDADE de dados (estruturados, semiestruturados e não estruturados).

Quando se fala em BIG DATA, verifica-se que o mercado e as ferramentas até então usadas para trabalhar com dados, precisaram ser adaptadas para processar um volume e uma variedade maior de dados. E o quesito análise de dados não poderia ser deixado de lado. 

Há quem diga que um DATALAKE é uma versão moderna do DW clássico surgido nos anos 90. Assim como o Data warehouse, um Datalake é um armazém de dados corporativo com a diferença de que neste último, os dados contidos podem ser estruturados, semiestruturados, e não estruturados. Além disso, esse armazém de dados é hospedado em um ambiente distribuído (dados hospedados em um sistema de arquivos distribuído), escalável e tolerante a falhas.

Outra diferença entre Data Warehouse  e Datalake é a ordem de como as coisas acontecem. No caso do DW, as atividades do processo de trabalho é a extração de dados de banco de dados transacionais, transformação desses dados para um formato dimensional e em seguida, a carga desses dados em tabelas fato e tabelas dimensão, presentes no DW. No caso do Datalake, primeira é feita a ingestão  dos dados(extração), em seguida ocorre a carga desses dados no lake para a partir daí se faça a transformação destes dados. Esse processo é conhecido como ELT.

A estruturas que recebem os dados varia de projeto, mas basicamente é previsto uma área para receber os dados brutos, outra área para realização de transformações sobre os dados e por fim, uma área para manter um histórico dos dados. 

A ingestão dos dados para essas estruturas pode ser feita em lote (batch), aonde acumula-se os dados por um tempo ou ainda a  medida que os dados são gerados, sendo capturados em tempo real(streaming).  O Spark Streaming ou ainda um serviço de mensageria (Kafka ou RabbitMQ) podem ser utilizadas como ferramenta para apoiar o trabalho.

A medida que esses dados são trabalhados vão sendo armazenados nas devidas camadas. utilizando formatos diversos de BIG DATA( Parquet, ORC, AVRO) visando economia de espaço em disco e velocidade de consulta. Para apoiar esse trabalho, geralmente utiliza-se uma engine de processamento de BIG DATA (Spark, Hadoop, Flink, entre outras) e alguma ferramenta de orquestração das atividades envolvidas( apache airflow, Oozie, etc).

No caso do DW os dados são consultados na bases dimensionais do mesmo. E no caso do DL como disseminar a informação? Podemos indexar esses dados numa ferramenta de busca como o Elastic, armazenar os dados em um banco de dados NoSQL, ou ainda, jogar os dados tratados sob o formato de arquivo, numa ferramenta do tipo DMS (CKAN).

Com os dados tratados, é possível disponibilizar a informação através de ferramentas de visualização do tipo Self Service BI (Tableau, Qlik, PowerBI, apache superset, KIBANA entre outras), mas aí é assunto para outro post. 

Inté!

Nenhum comentário: