Category Archives: Banco de Dados

PostgreSQL versão 10

Foi lançado no dia 18/05/2017 a versão 10 Beta 1 Released do PostgreSQL. A versão final está prevista para Setembro/2017. Listo abaixo os principais pontos que sofreram alterações em relação a versão anterior.

  • Consultas paralelas usando btree;
  • Índices de hash;
  • Bloqueios referentes a permissões;
  • Otimizador;
  • Monitoramento;
  • Estatísticas;
  • Autenticação;
  • Novos tipos de dados;
  • Replicação e recuperação;

Para maiores detalhes basta consulta o link referente ao Release Notes da versão.

https://www.postgresql.org/docs/10/static/release-10.html

Dicas sobre Vacuum no Postgres

O Vacuum limpa e opcionalmente analisa um banco de dados e recupera a área de armazenamento ocupada pelos registros excluídos. Na operação normal do Postgres os registros excluídos ou tornados obsoletos por causa de uma atualização não são fisicamente removidos das tabelas, permanecem presentes até o comando Vacuum ser executado. Portanto é necessário executar o comando Vacuum periodicamente, especialmente em tabelas frequentemente atualizadas, sem nenhum parâmetro o Vacuum processa todas as tabelas do banco de dados correntes.

O comando Vacuum Analyze executa o Vacuum e depois o Analyze para cada tabela selecionada, esta é uma forma de combinação útil para scripts de rotinas de manutenção. O Analyze atualiza as estatísticas utilizadas pelo planejador para determinar o modo mais eficiente de executar um comando.

O comando Vacuum simples (sem o Full) apenas recupera o espaço, tornando-o disponível para ser reutilizado. Esta forma do comando pode operar em paralelo com a leitura e escrita normal da tabela, porque não é obtido um bloqueio exclusivo. O Vacuum Full executa um processamento mais extenso, incluindo a movimentação das tuplas entre blocos para tentar compactar a tabela no menor número de blocos de disco possível, esta forma é muito mais lenta e requer bloqueio exclusivo de cada tabela enquanto está sendo processada.

Por último temos a opção do Freeze, que seleciona um congelamento agressivo das tuplas, esta opção não é muito recomendada e é provável que seja retirada de futuras versões do Postgres.

O Processo de Mineração dos Dados

A mineração de dados é uma arte. Ela envolve a aplicação de uma quantidade substancial de ciência e tecnologia, mas como acontece com muitas artes maduras, existe um processo bem compreendido que coloca uma estrutura no problema, permitindo consistência, repetitividade e objetividade razoáveis. Uma codificação útil do processo de mineração de dados é dada pelo Processo de Indústrias Cruzadas para Exploração de Dados (CRISP-DM), conforme demonstra a imagem abaixo.

Figura 1: O processo de mineração de dados CRISP-DM

Este processo torna explicito o fato de que a repetição é a regra e não a exceção. Passar pelo processo uma vez sem ter resolvido o problema não é, de modo geral, um fracasso. Muitas vezes, todo o processo é uma mineração dos dados, e depois da primeira repetição a equipe de Data Sciense sabe muito mais. A próxima repetição pode ser muito mais bem informada.

Entendimento do Negócio: Pode parecer óbvio mais a primeira coisa a ser feita é entender o problema a ser resolvido. Esse entendimento no processo é demonstrado como um ciclo dentro do ciclo. O entendimento inicial pode não ser o ideal de modo que diversas repetições sejam necessárias.

Entendimento dos Dados: Tem-se que entender os pontos fortes e as limitações dos dados porque raramente há uma correspondência exata com o problema, os dados históricos geralmente são recolhidos para fins não relacionados com o problema de negócio ou para nenhum propósito explicito, podemos ter vários conjuntos de dados que apresentem populações de informações diferentes mais que podem se cruzar e gerar vários graus de confiabilidade.

No entendimento de dados, precisamos escavar a superfície e revelar a estrutura do problema de negócios e os dados que estão disponíveis e, em seguida, combina-las como uma ou mais tarefas da mineração de dados para que possamos ter ciência e tecnologia substanciais para aplica-las.

Preparação de Dados: Frequentemente temos que preparar os dados para que estejam em uma forma diferente de como são fornecidas naturalmente, e alguma conversão será necessária, muitas vezes os dados são manipulados e convertidos para que rendam resultados melhores. Uma preocupação muito importante durante a preparação dos dados é com vazamentos. Vazamento é uma situação onde uma variável coletada em dados históricos dá informações sobre a variável alvo.

Modelagem: A etapa de modelagem é o principal local onde as técnicas de mineração de dados são aplicadas aos dados. É importante ter alguma compreensão das ideias fundamentais de mineração de dados, incluindo os tipos de técnicas e algoritmos existentes, porque esta é a parte da arte em que a maioria da ciência e da tecnologia podem ser exercidas.

Avaliação: Seu objetivo é estimar os resultados de mineração de dados de forma rigorosa e obter a confiança de que são válidos e confiáveis antes de avançar. Averiguar se os modelos e padrões extraídos dos dados são regularidades verdadeiras e não apenas anomalias.

Disponibilização: Os resultados da mineração de dados são colocados em uso real afim de agregar valor ao investimento realizado. Independentemente de a disponibilização ser bem-sucedida, o processo muitas vezes volta para a fase de entendimento do negócio, uma segunda iteração pode produzir uma solução melhorada.

Fonte: Data Science para Negócios – Foster Provost & Tom Fawcett

Criando Conexões no Pentaho Data Integration (PDI)

Nesse artigo demostraremos como se conectar a databases dentro do PDI. Basicamente todas as conexões possuem quatro requisitos para a conexão:

  • Host Name – Endereço ou nome do servidor onde se localiza o banco de dados;
  • Port Number- Número da porta no qual o servidor trabalha;
  • User Name – Nome do usuário;
  • Password – Senha do usuário.

Obs. Não esquecer que seu usuário terá que ter privilegio de acesso ao banco de dados que quer conectar.

Vamos agora ao passo a passo para realizar nossa primeira conexão.

  1. Abra o arquivo Spoon.bat conforme a figura 1;

Figura 1

  1. Seleciona a aba View e clique com o botão direito em cima de Database Connection em seguida escolha a opção New;
  2. Irá abrir uma janela conforme a figura 2;

Figura 2

  1. Em Connection Name coloque o nome de sua preferência para a conexão. Em Connection Type escolha o banco de dados que irá utilizar, dependendo da escolha as configurações ao lado irão se modificar. Em Acess você irá escolher a forma de acessar ao banco de dados escolhido.
  2. Depois pressione o botão Test para verificar se sua conexão está correta, caso esteja tudo de acordo basta clicar em OK.

As conexões criadas podem ser compartilhadas entre todas as transformações ou Jobs, esse recurso é muito importante assim evita que sempre que se crie uma transformação ou Jobs tenha que criar uma nova conexão. Para compartilhar uma nova conexão basta clicar com o botão direito na conexão e escolher a opção share.

Também temos a opção de usar as conexões em tempo de execução, como exemplo podemos colocar uma variável no host name usando a seguinte notação ${HOST_NAME} ou %%HOST_NAME%%. Se você decidir mover de seu banco de dados local para o servidor você tem apenas que modificar o valor da variável e não necessita alterar nada nas transformações ou Jobs.

O PDI suporta um vasto conjunto de bancos de dados. A lista inclui tanto bases de dados comerciais (como Oracle) e de código aberto (como o PostgreSQL), tradicionais bancos de dados (como MS SQL Server) e modernos bancos de dados (Tais como Infobright), bancos de dados baseados em disco de armazenamento (como Informix) e in-memory bases de dados (tais como HSQLBD). No entanto, pode acontecer que você deseja se conectar a um banco de dados que não está nessa lista. Nesse caso, você ainda pode criar uma conexão com esse banco de dados. O primeiro de tudo, você tem que obter um driver JDBC para o seu banco de dados. Copie o arquivo jar que contém o driver para o libext / diretório JDBC dentro do diretório de instalação PDI. Em seguida, crie a conexão.

Esse foi um artigo bem simples sobre como criar conexões no PDI, espero que tenha ajudado e nos próximos pretendo exemplificar vários steps, caso tenham alguma preferência por algum step deixe seu comentário.

Fonte: Livro Pentaho Data Integration 4 Cookbook

Nove passos para se tornar um cientista de dados

Devido ao crescimento muito rápido nos campos da ciência e análise de dados atualmente há uma escassez de candidatos qualificados para o número de vagas disponíveis nesses campos, fazendo assim com que a ciência de dados se torne um campo promissor e lucrativo para pessoas interessadas na área ou a procura de uma nova carreira.

Mas como você se tornar um cientista de dados?

Em primeiro lugar, a definição de cientista de dados muda de empresa para empresa. Não havendo uma definição única do termo, em geral um cientista de dados combina as habilidades de engenheiro de software com um estatístico e ainda domina uma boa dose de conhecimento específico.

Abaixo os nove passos para se tornar um cientista de dados:

1. Aperfeiçoar suas habilidades de matemática e estatística. Um bom cientista de dados deve ser capaz de entender o que os dados estão lhe dizendo, e para fazer isso, você deve ter um conhecimento básico de álgebra linear, uma compreensão de algoritmos e habilidades em estatísticas. Matemática avançada pode ser necessária para determinadas posições.

2. Compreender o conceito de aprendizado de máquina. Aprendizado de máquina está emergindo como a próxima palavra da moda, mas está indissociavelmente ligada à big data. Aprendizado de máquina usa algoritmos de inteligência artificial para transformar dados em valor e aprender sem ser programado de forma explícita.

3. Aprender a codificar, cientistas de dados devem saber como manipular o código, a fim de dizer ao computador como analisar os dados. Comece com uma linguagem de código aberto, como Python.

4. Entender as bases de dados e armazenamento distribuído. Os dados são armazenados em bases de dados ou em redes distribuídas, e a forma como esses repositórios são construídos pode ditar como você deverá acessar, usar e analisar esses dados.

5. Saiba preparar seus dados e técnicas de limpeza de dados. A preparação de dados é o processo de conversão de dados “brutos” para outro formato que é mais fácil de acessar e analisar. Limpeza de dados ajuda a eliminar a duplicação e dados “ruins”. Ambos são ferramentas essenciais na caixa de ferramentas de um cientista de dados.

6. Compreender os princípios de boa visualização de dados e relatórios. Você não tem que se tornar um designer gráfico, mas você precisa ser bem versátil em como criar relatórios para que um leigo – como seu gerente ou CEO – possa entender.

7. Adicionar mais ferramentas para sua caixa de ferramentas. Uma vez que você já domina as habilidades acima, é hora de expandir sua caixa de ferramentas para incluir programas como o Hadoop, R e Spark.

8. Prática. Como você pratica a ciência de dados antes de você ter um trabalho no campo? Desenvolver seu próprio projeto de estimação a partir de dados de código aberto, entrar em competições, participar de um bootcamp, voluntário ou estagiário. Os melhores cientistas de dados terão a experiência e intuição no campo e serão capazes de mostrar o seu trabalho para um recrutador.

9. Tornar-se parte da comunidade. Siga líderes na indústria, ler blogs da indústria e sites, participar, fazer perguntas, e ficar a par das notícias e da teoria atual.

Segue abaixo a fonte original desse artigo:

http://www.datasciencecentral.com/profiles/blogs/9-steps-to-become-a-data-scientist-from-scratch?overrideMobileRedirect

Conceitos Processo ETL

O ETL (Extract, Transform e Load) é um processo para extrair dados de um sistema de origem, sendo esses dados processados, modificados, e posteriormente inseridos numa base de dados esta etapa é uma das fases mais críticas de um Data Warehouse, pois envolve a fase de movimentação dos dados. A mesma se dá basicamente em três passos, extração, transformação e carga dos dados, esses passos são os mais trabalhosos, complexos e também muito detalhados num Data Warehouse, embora tenhamos várias ferramentas que nos auxiliam na execução desse trabalho.

A figura 1 descreve de forma geral o processo de ETL. A camada inferior representa o armazenamento dos dados que são utilizados em todo o processo. No lado esquerdo pode-se observar os dados “originais” provenientes, na maioria dos casos, de Banco de Dados ou, então, de ficheiros com formatos heterogéneos, por exemplo de texto. Os dados provenientes destas fontes são obtidos, por rotinas de extração que fornecem informação igual ou modificada, relativamente à fonte de dados original. Posteriormente, esses dados são propagados para a Data Staging Area (DSA) onde são transformados e limpos antes de serem carregados para o Data Warehouse. O Data Warehouse é representado na parte direita da figura 1 e tem como objetivo o armazenamento dos dados. O carregamento dos dados no Data Warehouse, é realizado através das atividades de carga representadas na parte superior direita da figura 1.

clip_image002

Figura 1: Processo ETL

O primeiro passo a ser tomado no processo de ETL é simplesmente a definição das fontes de dados. As origens podem ser várias e também em diferentes formatos, onde poderemos encontrar desde os sistemas transacionais das empresas até planilhas, arquivos textos, arquivos do tipo DBF, etc.

Definidas as fontes, partimos para o segundo passo que consiste em transformar e limpar esses dados. Além da limpeza, temos de fazer na maioria das vezes uma transformação, pois os dados provêm de vários sistemas, e por isso, geralmente uma mesma informação tem diferentes formatos. Quando levamos esses dados para o Data Warehouse, deve-se ter uma padronização, ou seja, quando o usuário for consultar o Data Warehouse, ele não pode ver informações iguais em formatos diferentes, então quando fazemos o processo de ETL, transformamos esses dados e deixamos num formato uniforme sugerido pelo próprio usuário.

A seguir são apresentados alguns dos fatores que devem ser analisados antes de começar a fase de extração dos dados:

  • A extração de dados do ambiente transacional para o ambiente de Data Warehouse demanda uma mudança na tecnologia. Os dados são transferidos de bancos de dados hierárquicos, para um Data Warehouse;
  • A seleção de dados do ambiente transacional pode ser muito complexa, pois muitas vezes é necessário selecionar vários campos para compor um único campo no Data Warehouse;
  • Outro fator que deve ser levado em conta é que dificilmente há o modelo de dados dos sistemas antigos, e se existem não estão documentados;
  • Os dados são reformatados. Por exemplo: um campo data do sistema operacional do tipo DD/MM/AAAA pode ser passado para o outro sistema do tipo ano e mês como AAAA/MM;
  • Quando há vários arquivos de entrada, a escolha das chaves deve ser feita antes que os arquivos sejam intercalados. Isso significa que se diferentes estruturas de chaves são usados nos diferentes arquivos de entrada, então deve-se optar por apenas uma dessas estruturas;
  • Os arquivos devem ser gerados obedecendo a mesma ordem das colunas estipuladas no ambiente de Data Warehouse;
  • Podem haver vários resultados. Dados podem ser produzidos em diferentes níveis de resumo pelo mesmo programa de criação do Data Warehouse;
  • Valores default devem ser fornecidos. As vezes pode existir um campo no Data Warehouse que não possui fonte de dados, então a solução é definir um valor padrão para estes campos.

No mercado existem muitas ferramentas capazes de executar processos de ETL, a tabela 1 apresenta uma visão geral da evolução destas ferramentas.

Ano

Título

Significado

Início de 1990

Codificação manual de ETL

Código personalizados escritos à mão

1993-1997

A primeira geração de ferramentas de ETL

Código baseado em ferramentas ETL

1999-2001

Segunda geração de ferramentas ETL

Código baseado em ferramentas ETL

2003-2010

Ferramentas atuais de ETL

A maioria das ferramentas eficientes

Tabela 1: Gerações de ETL

A seleção de uma ferramenta de ETL adequada é uma decisão muito importante a ser tomada. A ferramenta de ETL opera no núcleo do DW, com a extração de dados de múltiplas fontes e a sua transformação. Estas características tornam-na numa ferramenta acessível para os analistas de sistemas de informação.

Ao contrário de outros componentes de uma arquitetura de Data Warehouse, é muito difícil mudar de uma ferramenta ETL para outra, devido à falta de normas, definições de dados e regras de transformação.

Ao selecionar uma ferramenta de ETL devem ser tomados em consideração os seguintes pontos:

  • Suporte à plataforma: Deve ser independente de plataforma, podendo assim correr em qualquer uma.
  • Tipo de fonte independente: Deve ser capaz de ler diretamente da fonte de dados, independentemente do seu tipo, saber se é uma fonte de RDBMS (Relational Database Management System), ficheiro simples ou um ficheiro XML.
  • Apoio funcional: Deve apoiar na extração de dados de múltiplas fontes, na limpeza de dados, e na transformação, agregação, reorganização e operações de carga.
  • Facilidade de uso: Deve ser facilmente usada pelo utilizador.
  • Paralelismo: Deve apoiar as operações de vários segmentos e execução de código paralelo, internamente, de modo que um determinado processo pode tirar proveito do paralelismo inerente da plataforma que está sendo executada. Também deve suportar a carga e equilíbrio entre os servidores e capacidade de lidar com grandes volumes de dados. Quando confrontados com cargas muito elevadas de trabalho, a ferramenta deve ser capaz de distribuir tarefas entre múltiplos servidores.
  • Apoio ao nível do debugging: Deve apoiar o tempo de execução e a limpeza da lógica de transformação. O utilizador deve ser capaz de ver os dados antes e depois da transformação.
  • Programação: Deve apoiar o agendamento de tarefas ETL aproveitando, assim, melhor o tempo não necessitando de intervenção humana para completar uma tarefa particular. Deve também ter suporte para programação em linha de comandos usando programação externa.
  • Implementação: Deve suportar a capacidade de agrupar os objetos ETL e implementa-los em ambiente de teste ou de produção, sem a intervenção de um administrador de ETL.
  • Reutilização: Deve apoiar a reutilização da lógica de transformação para que o utilizador não precise reescrever, várias vezes, a mesma lógica de transformação outra vez.

Fontes:

http://www.evolve.mb.ca/dw/etlreport.pdf

http://inforum.org.pt/INForum2010/papers/sistemas-inteligentes/Paper080.pdf

http://www.angelicatoffano.pro.br/upload_arquivos/pt/etl.pdf