Quando comecei a programar, a linguagem de programação ensinada na minha faculdade era PASCAL. Logo no início arrumei emprego para trabalhar com páginas HTML e para deixar as páginas mais dinâmicas, tive que aprender Javascript. Com o tempo, imaginei que a linguagem ia logo cair em desuso por conta da evolução das tecnologias utilizadas para construção de página. Ledo engano! As novas tecnologias utilizam javascript(frameworks como JQuery, entre outros). O objetivo deste Post é fazer um resumo de javascript na forma mais básica.
sexta-feira, 31 de dezembro de 2021
Javascript
sábado, 25 de dezembro de 2021
O Ecossistema Hadoop
- Flume, Kafka, Sqoop são utilizados para fazer a ingestão de dados no HDFS.
- O HDFS é a unidade de armazenamento do Hadoop. Até os dados importados do HBase também são armazenados no HDFS.
- MapReduce e Spark são usados para processar os dados no HDFS e executar várias outras tarefas.
- Pig, Hive e Spark são utilizados para analisar dados.
- Oozie ajuda a agendar as tarefas e por funcionar com várias plataformas, é utilizado ao longo das etapas.
- Zookeeper sincroniza todos os nós do cluster e é utilizado em todas as etapas.
sábado, 6 de novembro de 2021
Orquestração de Containers com Kubernetes.
domingo, 19 de setembro de 2021
PL/SQL Resumo
O PL/SQL é uma extensão da linguagem padrão SQL para o SGBD da Oracle. É uma linguagem procedural da Oracle que estende a linguagem SQL. Permite que a manipulação de dados seja incluída em unidades de programas.
Todo programa possui variáveis, estruturas de condição, estruturas de repetição, unidades de programas reutilizáveis(funções e procedimentos) comandos para receber e exibir valores.
Além disso, o PL/SQL possibilita a integração com ferramentas Oracle, portabilidade e o tratamento de exceções.
Assuntos a serem tratados:
Nesse primeiro post vamos falar sobre as estruturas presentes em um programa e variáveis
(bloco anônimo)
DECLARE --(opcional)
–-Variáveis, cursores e exceções definidas pelo usuário
BEGIN --(obrigatório)
–-Instruções SQL
–-Instruções PL/SQL
EXCEPTION --(opcional)
–- Ações a serem executadas quando ocorrerem exceções
END; --(obrigatório)
quinta-feira, 19 de agosto de 2021
O Básico de Python
Python é uma linguagem Open-Source de propósito geral usado bastante em data science, machine learning, desenvolvimento de web, desenvolvimento de aplicativos, automação de scripts, fintechs e mais.
A ideia deste post é fazer um resumo, descrevendo a sintaxe da linguagem e suas estruturas (condição, repetição, e dados).
Análise de dados na prática com o Pandas
Lembra daquele trabalho que a gente fazia para promover a transformação e a higienização de dados no Excel? Não tínhamos problema em trabalhar dessa forma enquanto o volume de dados era pequeno. Porém na era do Big Data planilhar e analisar os dados no excel virou um problema. O pacote Pandas surgiu para resolver esse problema.
A biblioteca Pandas nos permite fazer análises exploratórias em conjunto de dados. Ela dá ao Python, a capacidade de trabalhar com dados tipo planilha, permitindo carregar, manipular e combinar dados.
A ideia aqui é apresentar um trabalho prático, de modo a assimilar conhecimento sobre o Pandas, sendo necessário apenas conhecimento básico das estruturas de dados do Python.
1 - Vamos criar um arquivo pandas.csv
2- importar o pacote pandas
sábado, 7 de agosto de 2021
O que é Engenharia de Dados
Até pouco tempo atrás, nos deparávamos com um cenário onde os sistemas eram monolíticos, persistindo e consultando informações em bancos de dados relacionais.
Os mais avançadinhos criavam bancos de dados dimensionais visando performance e facilidade na busca das informações.
Com o tempo, esse cenário foi mudando. Com o advento da Internet e Internet das coisas, hoje praticamente tudo gera informação, nem sempre de forma estruturada. O formato varia de acordo com o dispositivo que gera a informação. Exemplo: Câmeras que geram fotos, roteadores que geram logs em formato txt, uma peça de um automóvel que indica ao fabricante a necessidade de reparo, entre outros.
Daí surge algumas questões: Como e onde guardar esses dados? Como produzir informação com os dados gerados se estes, nem sempre são estruturados e possui diversos formatos. Seria o DBA o responsável por resolver essas questões? É nesse cenário que surge a Engenharia de Dados, visando promover a governança das estruturas que irão receber dados desta natureza.
Em um outro post falamos de ETL, aonde extraímos dados de bancos relacionais, realizamos transformações e geramos informações de acordo com a necessidade do negócio envolvido, com a finalidade de alimentar um banco de dados dimensional(Um DW estruturado). Mas, quando estamos lidando com dados semiestruturados ou ainda dados não estruturados, a ordem dos fatores se altera. Ocorre outro tipo de processo que é conhecido como ELT. É feita a carga desses dados não estruturados para o que chamamos de Datalake, onde é feita a transformação dos dados.
Resumindo, um Engenheiro de Dados é o profissional que desenvolve, opera e mantem estruturas de dados complexas e heterogêneas, sendo responsável pela segurança, integridade, disponibilidade e confiabilidade desses dados.
sexta-feira, 4 de junho de 2021
O cinto de utilidades ETL
Na postagem anterior, ficaram algumas questões a serem respondidas. Para responder a estas questões, vamos criar um cenário hipotético.
A empresa na qual você trabalha demandou a criação de uma base de dados OLAP para subsidiar um Data Warehouse. Essa empresa possui dois Sistemas OLTP para apoiar o trabalho desempenhada por ela: Um sistema de gestão administrativo no qual são mantidos o cadastro dos funcionários entre outros e outro sistema de gestão para gerir vendas efetuadas pela Empresa. Ao demandar a criação da base OLAP, o solicitante indicou aonde obter aos dados que irão compor a base em questão, com a finalidade de analisar as vendas efetuadas pelos funcionários da Empresa. Parte dessas informações encontram-se na base de dados que subsidia o sistema administrativo. Outra parte, pode ser obtida na base de dados do sistema que subsidia o sistema de vendas e ainda há informações constantes em planilhas preenchidas pelos vendedores e por seus gerentes.
Daí você pensa: Vou fazer um select desses dados nas bases de dados indicadas e fazer um insert no banco de dados OLAP. Simples assim! Simples? Como fica a questão das planilhas? E ainda como vincular as informações extraídas desses sistemas e das planilhas mencionadas? Além disso, verificou-se que os dados contidos nessas bases de origem possui formatos distintos, ou seja, não seguem um padrão único.
Chega a fazer a gente pensar que com a solução do Select/Insert é impossível resolver essa questão. Impossível não é, mas daria um "trabalhão" danado. Ainda mais, se levássemos em consideração a atualização periódica dessa base OLAP.
Complicou, né? E para descomplicar, surgiram no mercado ferramentas que fazem esse trabalho de Extração, Tranformação e carga dos dados.
ETL, vem do inglês Extract Transform Load, ou seja, Extração Transformação Carga. O ETL visa trabalhar com toda a parte de extração de dados de fontes externas, transformação para atender às necessidades de negócios e carga dos dados dentro do Data Warehouse.
Abaixo, uma ilustração do processo
Na extração, é feita a coleta de dados dos sistemas de origem , extraindo-os e transferindo-os para o ambiente de DW, permitindo ao sistema de ETL operar sobre os dados de forma independente.
Na etapa de transformação, é feita a limpeza, os ajustes e a consolidação dos dados ingeridos. É nesta etapa que realizamos os devidos ajustes, podendo assim melhorar a qualidade dos dados e consolidar dados de duas ou mais fontes. O estágio de transformação aplica uma série de regras ou funções aos dados extraídos para ajustar os dados a serem carregados. Algumas fontes de dados necessitarão de muito pouca manipulação de dados. Em outros casos, pode ser necessários trabalhar algumas transformações, como por exemplo, junção de dados provenientes de diversas fontes, seleção de apenas determinadas colunas e tradução de valores codificados. Por exemplo, se o sistema de origem armazena 1 para sexo masculino e 2 para feminino, mas o data warehouse armazena M para masculino e F para feminino.
A entrega ou Carga dos dados, consiste em fisicamente estruturar e carregar os dados para dentro da camada de apresentação seguindo o modelo dimensional. Dependendo das necessidades da organização, este processo varia amplamente. Alguns data warehouses podem substituir as informações existentes semanalmente, com dados cumulativos e atualizados, ao passo que outro DW (ou até mesmo outras partes do mesmo DW) podem adicionar dados a cada hora. A latência e o alcance de reposição ou acréscimo constituem opções de projeto estratégicas que dependem do tempo disponível e das necessidades de negócios.
Há ainda a parte de Gerenciamento que é composta por serviços para auxiliar no gerenciamento do DataWarehouse. Aqui existem tasks específicas para gerenciamento de jobs, planos de backup, verificação de itens de segurança e compliance.
A intenção aqui, era fazer um overview sobre o assunto. Existem diversas ferramentas deste tipo no mercado. Cabe a vocês pesquisarem sobre elas:
- Data Stage da IBM
- PowerCenter da Informatica
- Data Integrator da Oracle
- SSIS – Sql Server Integration Services da Microsoft
Hoje com o crescimento dos projetos de Big Data aumenta-se mais ainda a necessidade de fazer ETL entre plataformas heterogêneas, para isso, projetos como o Hadoop, possuem ferramentas próprias para carga de dados, como :
SQOOP – Ferramenta para movimentar dados dentre bancos de dados relacionais e o ambiente Hadoop.
HIVE – Ambiente de SQL sobre um cluster Hadoop.
PIG – Ferramenta de Script para transformação e processamento de dados.
SPARK – Framework de processamento em memoria.
É isso!
Modelagem dimensional na prática
Em outro post, tentei desmistificar o conceito de Data warehouse. Voltando a ler o Post, senti falta de um exemplo prático que mostrasse as vantagens e desvantagens de modelar de forma dimensional uma base de dados para atender a um DW. A ideia deste post é tentar apresentar uma resposta a estas questões.
Conforme mencionado no outro post, o DW visa resolver questões de performance na execução das consultas. E como se resolve isso? A forma encontrada foi modelar a base de um jeitão meio diferente, o que ficou conhecido como Modelagem dimensional.
A Modelagem dimensional é uma técnica de design de banco de dados projetada para suportar consultas de usuários finais em um Data Warehouse.
A ideia é que os usuários consigam fazer consultas sem necessitar da ajuda de profissionais especializados em SQL.
Em modelos relacionais, é prezada a questão da normalização. Na modelagem dimensional, para melhorar o desempenho das consultas, há redundância planejada dos dados, compensando os gastos com armazenamento e atualização das informações, fazendo com o que a base de dados fique de certo modo desnormalizada.
O modelo dimensional é composto por tabelas fato e por tabelas conhecida como dimensões.
Na prática, a tabela fato armazena as chaves das dimensões e armazena também as métricas a serem analisadas por quem vier a consultar o DW.
Já as tabelas de dimensão são compostas basicamente de atributos que descrevem as entidades envolvidas no modelo.
Modelando desta forma, o modelo fica parecido com uma "estrela"
Exemplo de modelo para análise de despesas
A dica aqui é procurar nos pais dos burros (Google) mais modelos de modo a fixar a ideia desse tipo de modelagem.
Como entrevistar os usuários de um DW? Segue um texto legal do Piton nesse link https://rafaelpiton.com.br/blog/data-warehouse-como-modelar/
E aí? O post deu uma clareada? Em caso afirmativo, fico satisfeito. Tem outras questões a serem respondidas. Como importar os dados da origem de dados que comporão as tabelas do DW? Como atualizar esses dados ao longo do tempo? Se os dados que vierem compor o DW provierem de fontes de dados distintos, com formatos diferentes, como unificar o padrão desses dados? A resposta a essas perguntas estará em outro post sobre ETL.
Valeu!!!