Apresentação realizada no PGConf.Brasil 2018.
Utilizando o Apache NiFi para capturar a replicação lógica do PostgreSQL e gerar fluxo de Stream no NiFi para poder ser ingestado nas tecnologias de Big Data como Kafka, Hdfs, Hbase, Hive, Solr, etc...
Zabbix + GLPI: Como estas duas ferramentas podem otimizar seus recursosJose Ferronato
As duas ferramentas Zabbix e GLPI podem ser integradas para otimizar a gestão de recursos de TI através do monitoramento de ativos e infraestrutura, automação de tarefas e processos, e geração de métricas.
O documento discute as novidades da plataforma Java EE 7, incluindo o foco em serviços de computação em nuvem, auto provisionamento e multi-tenancy. A especificação Java EE 7 também trará melhorias em APIs existentes como JPA, JSF e JAX-RS e novas APIs como JSON-P e WebSocket. O lançamento está previsto para o primeiro semestre de 2013.
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiiMasters
Este documento resume os principais pontos sobre APIs REST, RPC e GraphQL. Ele discute os problemas de cada abordagem e quando cada uma é mais adequada, concluindo que não existe uma solução perfeita e que é importante entender os dados e usuários.
O documento resume 55 novas funcionalidades do Java 7, incluindo: literais binários e numéricos com underline, strings no switch, gerenciamento automático de recursos com try-with-resources, e novas APIs para concorrência, arquivos e números aleatórios.
O documento discute a ferramenta de gerenciamento de virtualização Ganeti. Em três frases, o documento apresenta o caso de uso da EBC, que migrou 160 máquinas virtuais para um cluster Ganeti com 15 nós, permitindo administração centralizada e automação de serviços. Além disso, discute como o Ganeti oferece recursos como replicação de dados em tempo real e migração transparente de VMs entre nós do cluster.
O documento descreve como Fluentd, Logstash, Elasticsearch e Kibana podem ser usados juntos para análise de logs em tempo real. Fluentd coleta logs de aplicações e os envia para Logstash ou diretamente para Elasticsearch. Logstash filtra e transforma os dados antes de enviá-los para Elasticsearch. Elasticsearch armazena os dados de forma a permitir pesquisas rápidas. Kibana fornece uma interface para visualização e análise dos dados armazenados no Elasticsearch.
Este documento apresenta uma introdução ao Mcollective, ferramenta de orquestração de servidores em tempo real. O documento discute conceitos de orquestração, instalação e configuração do Mcollective, uso de agentes e clientes, filtros, construção de agentes e clientes personalizados e demonstração prática. O documento também fornece informações sobre suporte e comunidade em torno do Mcollective.
Zabbix + GLPI: Como estas duas ferramentas podem otimizar seus recursosJose Ferronato
As duas ferramentas Zabbix e GLPI podem ser integradas para otimizar a gestão de recursos de TI através do monitoramento de ativos e infraestrutura, automação de tarefas e processos, e geração de métricas.
O documento discute as novidades da plataforma Java EE 7, incluindo o foco em serviços de computação em nuvem, auto provisionamento e multi-tenancy. A especificação Java EE 7 também trará melhorias em APIs existentes como JPA, JSF e JAX-RS e novas APIs como JSON-P e WebSocket. O lançamento está previsto para o primeiro semestre de 2013.
InterCon 2017 - Design Coerente: decisões de tecnologia para APIs - Ravan ScafiiMasters
Este documento resume os principais pontos sobre APIs REST, RPC e GraphQL. Ele discute os problemas de cada abordagem e quando cada uma é mais adequada, concluindo que não existe uma solução perfeita e que é importante entender os dados e usuários.
O documento resume 55 novas funcionalidades do Java 7, incluindo: literais binários e numéricos com underline, strings no switch, gerenciamento automático de recursos com try-with-resources, e novas APIs para concorrência, arquivos e números aleatórios.
O documento discute a ferramenta de gerenciamento de virtualização Ganeti. Em três frases, o documento apresenta o caso de uso da EBC, que migrou 160 máquinas virtuais para um cluster Ganeti com 15 nós, permitindo administração centralizada e automação de serviços. Além disso, discute como o Ganeti oferece recursos como replicação de dados em tempo real e migração transparente de VMs entre nós do cluster.
O documento descreve como Fluentd, Logstash, Elasticsearch e Kibana podem ser usados juntos para análise de logs em tempo real. Fluentd coleta logs de aplicações e os envia para Logstash ou diretamente para Elasticsearch. Logstash filtra e transforma os dados antes de enviá-los para Elasticsearch. Elasticsearch armazena os dados de forma a permitir pesquisas rápidas. Kibana fornece uma interface para visualização e análise dos dados armazenados no Elasticsearch.
Este documento apresenta uma introdução ao Mcollective, ferramenta de orquestração de servidores em tempo real. O documento discute conceitos de orquestração, instalação e configuração do Mcollective, uso de agentes e clientes, filtros, construção de agentes e clientes personalizados e demonstração prática. O documento também fornece informações sobre suporte e comunidade em torno do Mcollective.
O documento discute três princípios para programação livre de XML:
1) Configuração dentro do código em vez de arquivos XML externos
2) Transferência de dados usando JSON em vez de XML
3) Projetar linguagens de programação para serem mais humanas
O documento fornece um resumo sobre JDBC (Java Database Connectivity), descrevendo suas principais características como uma interface baseada em Java para acesso a bancos de dados através de SQL e apresentando conceitos como DriverManager, Connection, Statement, ResultSet e transações.
1. O documento fornece instruções para instalação e configuração do GLPI e OCSInventory no Ubuntu Server 9.04 e integração entre os sistemas e o Active Directory.
2. Inclui procedimentos iniciais, instalação do Apache, PHP, MySQL e outros softwares necessários, download e instalação do GLPI e OCSInventory, configuração do LDAP para autenticação no AD.
3. Fornece anexos com informações adicionais como mapeamento de pastas do Windows, restauração de bancos de dados e recuperação de senhas.
O documento apresenta uma palestra sobre otimização de aplicações com o framework Zend. Resume os principais pontos abordados: 1) Introdução ao palestrante e seus trabalhos com PHP; 2) Conceitos de avaliação e análise de desempenho; 3) Demonstração de testes de desempenho em aplicação simples utilizando diferentes técnicas de cache e escalonamento com Gearman.
Escalabilidade horizontal com PostgreSQL e Pgpool IIMatheus Espanhol
O documento discute como o PostgreSQL 9.x e o Pgpool II podem ser usados juntos para fornecer escalabilidade horizontal e alta disponibilidade. O Pgpool II oferece balanceamento de carga, replicação síncrona e failover automático entre servidores PostgreSQL. Isso permite aumentar a capacidade de processamento adicionando novos servidores de forma transparente à aplicação.
O documento descreve o Apache Software Foundation e alguns de seus principais projetos de software livre desenvolvidos na linguagem Java, como Lucene, Struts, Tomcat, Ant, Maven, entre outros.
Big Data como Serviço: da captura à visualização de dados com alto desempenhoRicardo Longa
O documento descreve a arquitetura de dados da Neoway, incluindo como processam milhões de dados por dia através de crawlers, tratamento, integração e disponibilização dos dados usando Golang, MongoDB, Elasticsearch, mensageria e outros serviços. A arquitetura é construída para escala, disponibilidade e desempenho.
O documento descreve as principais novidades da versão 9.0 do PostgreSQL, incluindo:
- Melhorias na alta disponibilidade com Hot Standby e Streaming Replication, permitindo consultas no servidor secundário;
- Mais de 200 melhorias gerais de desempenho e funcionalidade, como administração simplificada de privilégios de usuários.
Este documento fornece uma introdução sobre serviços RESTful e mashups. Resume as seguintes informações essenciais:
1) Apresenta os conceitos fundamentais de arquitetura REST e como serviços RESTful funcionam;
2) Discutem a API JAX-RS para construir serviços RESTful em Java;
3) Explicam como consumir e testar serviços RESTful usando ferramentas como RESTClient, cURL e bibliotecas JavaScript;
4) Introduzem o conceito de mashups e como agregam conteúdo de v
Este documento discute a motivação para criar uma nova versão da API do Apontador usando o framework Spring. Isso permitiria melhorias como manutenibilidade, autenticação, padronização de serviços REST e compatibilidade. O Spring fornece funcionalidades como REST, segurança, OAuth, cache e integração com bancos de dados e redes sociais.
Este documento fornece um resumo sobre WebServlets de acordo com a especificação Java EE 7. Ele contém informações sobre aplicações Web, WebServlets, requisições e respostas HTTP, URLs e redirecionamento, contexto da aplicação, sessão do cliente, filtros interceptadores e arquitetura MVC.
O documento discute as principais funcionalidades introduzidas nas versões 9.0 e 9.1 do PostgreSQL. A versão 9.0 introduziu recursos como hot standby, streaming replication, triggers por colunas e privilégios de usuários em massa. A versão 9.1 introduziu replicação síncrona, monitoramento de replicação e fontes de dados externas. O documento também discute porque usar o PostgreSQL e seus recursos avançados.
Gestão automática de configuração usando puppetDaniel Sobral
O documento apresenta Daniel Sobral e seu trabalho com gestão automática de configuração usando Puppet. Ele explica quem ele é, os objetivos da apresentação e dá uma visão geral de como o Puppet funciona, incluindo recursos, catálogos e a organização de elementos como sites, nós, módulos e classes.
Este documento apresenta um treinamento sobre Grails, incluindo: (1) introdução ao Groovy e suas funcionalidades, (2) modelagem de domínio com classes e relacionamentos, e (3) geração automática de telas e controle de acesso com plugins.
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosAlex Hübner
[1] O documento descreve uma estratégia implementada para melhorar o desempenho e disponibilidade de um site institucional dos Correios que rodava no ColdFusion. [2] A estratégia envolveu duplicar as instâncias do ColdFusion em cada servidor para melhor aproveitar os recursos, otimizar configurações do servidor e do banco de dados, e estabelecer rotinas de reciclagem noturna. [3] As mudanças permitiram dobrar a capacidade do ambiente existente sem necessidade de novos servidores.
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
O documento lista 13 ferramentas/frameworks para desenvolvimento Android, descrevendo brevemente cada um. As ferramentas incluem bibliotecas para requisições HTTP assíncronas, cache e carregamento de imagens, comunicação com banco de dados SQLite, animações de progresso, atualização de interface com usuário e mais. Muitas são open source e facilitam tarefas comuns no desenvolvimento mobile.
O documento discute as evoluções na persistência de dados em Java, começando pelo acesso direto ao banco de dados via JDBC, depois o uso do Hibernate para mapeamento objeto-relacional e por fim a abstração proporcionada pela especificação JPA.
1. Docker permite empacotar aplicações em containers leves para executá-las de forma rápida e confiável em diferentes ambientes computacionais.
2. Diferente de máquinas virtuais, containers Docker utilizam recursos do sistema operacional de forma compartilhada para executar aplicações de forma isolada e leve.
3. Dockerfiles permitem declarar instruções para construir imagens Docker reutilizáveis de aplicações.
Este documento fornece instruções para instalar e configurar o Nagios, NagiosQL, MySQL e outros plugins relacionados em uma máquina virtual CentOS. Ele abrange a instalação do sistema operacional CentOS, download e compilação dos softwares necessários, configuração do Nagios e plugins, e instalação do NSClient e NagiosQL para permitir monitoramento remoto e interface web.
Henrique Gogó é um músico, professor de violão e desenvolvedor front-end de Fortaleza, Brasil. Ele explica as características e vantagens do banco de dados CouchDB, incluindo sua escalabilidade, replicação, controle de usuário e suporte a JavaScript. O documento também discute como linguagens como Erlang facilitam o desenvolvimento de sistemas distribuídos e o teorema CAP em relação à disponibilidade e consistência em bancos de dados.
O documento discute três princípios para programação livre de XML:
1) Configuração dentro do código em vez de arquivos XML externos
2) Transferência de dados usando JSON em vez de XML
3) Projetar linguagens de programação para serem mais humanas
O documento fornece um resumo sobre JDBC (Java Database Connectivity), descrevendo suas principais características como uma interface baseada em Java para acesso a bancos de dados através de SQL e apresentando conceitos como DriverManager, Connection, Statement, ResultSet e transações.
1. O documento fornece instruções para instalação e configuração do GLPI e OCSInventory no Ubuntu Server 9.04 e integração entre os sistemas e o Active Directory.
2. Inclui procedimentos iniciais, instalação do Apache, PHP, MySQL e outros softwares necessários, download e instalação do GLPI e OCSInventory, configuração do LDAP para autenticação no AD.
3. Fornece anexos com informações adicionais como mapeamento de pastas do Windows, restauração de bancos de dados e recuperação de senhas.
O documento apresenta uma palestra sobre otimização de aplicações com o framework Zend. Resume os principais pontos abordados: 1) Introdução ao palestrante e seus trabalhos com PHP; 2) Conceitos de avaliação e análise de desempenho; 3) Demonstração de testes de desempenho em aplicação simples utilizando diferentes técnicas de cache e escalonamento com Gearman.
Escalabilidade horizontal com PostgreSQL e Pgpool IIMatheus Espanhol
O documento discute como o PostgreSQL 9.x e o Pgpool II podem ser usados juntos para fornecer escalabilidade horizontal e alta disponibilidade. O Pgpool II oferece balanceamento de carga, replicação síncrona e failover automático entre servidores PostgreSQL. Isso permite aumentar a capacidade de processamento adicionando novos servidores de forma transparente à aplicação.
O documento descreve o Apache Software Foundation e alguns de seus principais projetos de software livre desenvolvidos na linguagem Java, como Lucene, Struts, Tomcat, Ant, Maven, entre outros.
Big Data como Serviço: da captura à visualização de dados com alto desempenhoRicardo Longa
O documento descreve a arquitetura de dados da Neoway, incluindo como processam milhões de dados por dia através de crawlers, tratamento, integração e disponibilização dos dados usando Golang, MongoDB, Elasticsearch, mensageria e outros serviços. A arquitetura é construída para escala, disponibilidade e desempenho.
O documento descreve as principais novidades da versão 9.0 do PostgreSQL, incluindo:
- Melhorias na alta disponibilidade com Hot Standby e Streaming Replication, permitindo consultas no servidor secundário;
- Mais de 200 melhorias gerais de desempenho e funcionalidade, como administração simplificada de privilégios de usuários.
Este documento fornece uma introdução sobre serviços RESTful e mashups. Resume as seguintes informações essenciais:
1) Apresenta os conceitos fundamentais de arquitetura REST e como serviços RESTful funcionam;
2) Discutem a API JAX-RS para construir serviços RESTful em Java;
3) Explicam como consumir e testar serviços RESTful usando ferramentas como RESTClient, cURL e bibliotecas JavaScript;
4) Introduzem o conceito de mashups e como agregam conteúdo de v
Este documento discute a motivação para criar uma nova versão da API do Apontador usando o framework Spring. Isso permitiria melhorias como manutenibilidade, autenticação, padronização de serviços REST e compatibilidade. O Spring fornece funcionalidades como REST, segurança, OAuth, cache e integração com bancos de dados e redes sociais.
Este documento fornece um resumo sobre WebServlets de acordo com a especificação Java EE 7. Ele contém informações sobre aplicações Web, WebServlets, requisições e respostas HTTP, URLs e redirecionamento, contexto da aplicação, sessão do cliente, filtros interceptadores e arquitetura MVC.
O documento discute as principais funcionalidades introduzidas nas versões 9.0 e 9.1 do PostgreSQL. A versão 9.0 introduziu recursos como hot standby, streaming replication, triggers por colunas e privilégios de usuários em massa. A versão 9.1 introduziu replicação síncrona, monitoramento de replicação e fontes de dados externas. O documento também discute porque usar o PostgreSQL e seus recursos avançados.
Gestão automática de configuração usando puppetDaniel Sobral
O documento apresenta Daniel Sobral e seu trabalho com gestão automática de configuração usando Puppet. Ele explica quem ele é, os objetivos da apresentação e dá uma visão geral de como o Puppet funciona, incluindo recursos, catálogos e a organização de elementos como sites, nós, módulos e classes.
Este documento apresenta um treinamento sobre Grails, incluindo: (1) introdução ao Groovy e suas funcionalidades, (2) modelagem de domínio com classes e relacionamentos, e (3) geração automática de telas e controle de acesso com plugins.
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosAlex Hübner
[1] O documento descreve uma estratégia implementada para melhorar o desempenho e disponibilidade de um site institucional dos Correios que rodava no ColdFusion. [2] A estratégia envolveu duplicar as instâncias do ColdFusion em cada servidor para melhor aproveitar os recursos, otimizar configurações do servidor e do banco de dados, e estabelecer rotinas de reciclagem noturna. [3] As mudanças permitiram dobrar a capacidade do ambiente existente sem necessidade de novos servidores.
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
O documento lista 13 ferramentas/frameworks para desenvolvimento Android, descrevendo brevemente cada um. As ferramentas incluem bibliotecas para requisições HTTP assíncronas, cache e carregamento de imagens, comunicação com banco de dados SQLite, animações de progresso, atualização de interface com usuário e mais. Muitas são open source e facilitam tarefas comuns no desenvolvimento mobile.
O documento discute as evoluções na persistência de dados em Java, começando pelo acesso direto ao banco de dados via JDBC, depois o uso do Hibernate para mapeamento objeto-relacional e por fim a abstração proporcionada pela especificação JPA.
1. Docker permite empacotar aplicações em containers leves para executá-las de forma rápida e confiável em diferentes ambientes computacionais.
2. Diferente de máquinas virtuais, containers Docker utilizam recursos do sistema operacional de forma compartilhada para executar aplicações de forma isolada e leve.
3. Dockerfiles permitem declarar instruções para construir imagens Docker reutilizáveis de aplicações.
Este documento fornece instruções para instalar e configurar o Nagios, NagiosQL, MySQL e outros plugins relacionados em uma máquina virtual CentOS. Ele abrange a instalação do sistema operacional CentOS, download e compilação dos softwares necessários, configuração do Nagios e plugins, e instalação do NSClient e NagiosQL para permitir monitoramento remoto e interface web.
Henrique Gogó é um músico, professor de violão e desenvolvedor front-end de Fortaleza, Brasil. Ele explica as características e vantagens do banco de dados CouchDB, incluindo sua escalabilidade, replicação, controle de usuário e suporte a JavaScript. O documento também discute como linguagens como Erlang facilitam o desenvolvimento de sistemas distribuídos e o teorema CAP em relação à disponibilidade e consistência em bancos de dados.
O documento apresenta o ORM Doctrine para PHP, descrevendo suas principais características como mapeamento objeto-relacional, tarefas via linha de comando, caching, linguagem de consulta DQL e relacionamentos entre objetos.
This document discusses using Java for cloud computing on Google App Engine. It introduces cloud computing and Google App Engine, explains why Java is suitable for cloud applications, and covers key Java technologies for building cloud apps like JSP, servlets, NoSQL databases, and object-relational mapping. It also promotes the Java Noroeste user group.
O documento apresenta o DeltaSpike, um conjunto de extensões portáteis para CDI que fornecem funcionalidades úteis para aplicações Java que não são suportadas pela especificação CDI. O DeltaSpike inclui módulos para segurança, JPA, JSF, validação de beans, agendamento de tarefas e outros que facilitam o desenvolvimento com CDI. O DeltaSpike não é um framework completo, mas sim um conjunto de ferramentas que estendem as capacidades do CDI.
O documento apresenta conceitos e exemplos sobre REST e JAX-RS. É introduzido o que são web services e os tipos SOAP/JAX-WS e RESTful/JAX-RS. São mostrados exemplos práticos de implementação de recursos RESTful com JAX-RS e discutidas vantagens da arquitetura REST.
O documento apresenta uma oficina básica sobre PostgreSQL ministrada por Fabrizio de Royes Mello. A agenda inclui introdução ao PostgreSQL, preparação do servidor, e manipulação de bancos de dados. O público aprenderá sobre instalação, configuração de clusters, criação e remoção de bancos de dados no PostgreSQL.
O documento discute o framework Spark para processamento de grandes dados. Spark é um framework open-source que facilita o processamento de grandes volumes de dados de forma distribuída através de recursos como DataFrames, SQL, machine learning e streaming. O documento também descreve como a Globo.com usa Spark para análises, recomendações e machine learning com volumes de dados de até 3.5 bilhões de eventos por dia.
O documento discute possibilidades com Python para integração de serviços web, escalabilidade e NoSQL. Ele aborda REST, APIs do Twitter e Facebook, caching, paralelismo, frameworks e o modelo de dados de Cassandra.
O documento descreve o WebSphere Application Server (WAS) da IBM, incluindo o que é, demonstrações de instalação e fluxo de funcionamento. Também fornece exemplos de aplicações simples como "Olá Mundo" usando JSP e um WAR para implantação no servidor.
Apresentação realizada no dia 8/11/2014 no evento TchêLinux Bento Gonçalves edição 2014 - http://bento.tchelinux.org
Falei sobre os conceitos de bases de dados NoSQL, cases, comparações com o modelo relacional, expressões SQL x MongoDB (orientado à documentos), instalação, recursos do MongoDB, operações via console, modelagem (abordagem embedded), driver PHP, anatomia do código PHP, CRUD (Create, Read, Update and Delete), ObjectId, operadores, segurança, persistência de objetos, tratamento de arrays (documentos aninhados), índices (performance), projeção, agregação, hospedagem, ferramentas de administração e programa de certificação.
Este documento fornece instruções sobre como gerar relatórios no IReport usando o banco de dados Firebird. Ele descreve o JasperReports, iReport e JDBC e como conectar ao Firebird para gerar relatórios.
1) O documento discute o framework DataFlow para facilitar a criação de fluxos de dados em Perl.
2) O framework fornece objetos chamados "Processadores" que podem ser conectados em fluxos para processar e transformar dados.
3) Os processadores podem ser personalizados e estendidos para atender a necessidades específicas, e vários processadores prontos são fornecidos, como leitura/escrita de arquivos e processamento de CSV.
O documento apresenta Frederico Maia, um programador Java e instrutor. Ele discute o conceito de computação em nuvem e como serviços como Google Docs, Dropbox e Amazon Web Services oferecem armazenamento e processamento na nuvem. O documento também descreve como o Google App Engine pode ser usado para hospedar aplicativos Java de forma escalonável e elástica na nuvem.
Julio Viegas é um engenheiro de software e instrutor com 15 anos de experiência na área de tecnologia. Ele apresenta sobre várias tecnologias NoSQL como Redis, MongoDB, CouchDB, Memcached e Cassandra, discutindo suas características, arquitetura, instalação e uso.
O documento fornece diretrizes sobre melhores práticas para modelagem, desempenho, segurança e administração do banco de dados PostgreSQL. Algumas recomendações incluem utilizar esquemas e tablespaces separados por aplicação, confiar nas restrições do PostgreSQL para integridade dos dados, realizar backups periódicos e monitorar logs para detecção de erros.
O documento descreve ferramentas para balanceamento de carga e alta disponibilidade no PostgreSQL, incluindo PL/Proxy, PgBouncer e Skytools. PL/Proxy direciona consultas SQL para bancos de dados específicos usando hash dos dados, PgBouncer gerencia pools de conexões para melhorar o desempenho e Skytools fornece replicação e particionamento de dados.
Aplicações de tempo real com Meteor.jsRafael Sales
O documento descreve o Meteor, uma plataforma open-source para criar aplicações web modernas em tempo real usando programação reativa e JavaScript no cliente e servidor. O Meteor permite compartilhar código e APIs entre cliente e servidor, incluindo a API do banco de dados, para facilitar o desenvolvimento.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
2. PALESTRANTES
Gerdan Rezende dos Santos
Brasília - DF
Tecnisys Tecnologias Inovadoras
Especialista em Banco de Dados e Big Data
Ativo em várias comunidades de software livre,
sendo um apaixonado por tecnologias open
source
Revisor de funcionalidades do PostgreSQL e
desenvolvedor/contribuidor do projeto Apache
NiFi
Organizador e palestrante do PGDAY Brasília,
já palestrou em eventos da IBM, Latinoware,
PGDAY Brasília, entre outros
https://www.linkedin.com/in/gerdan
Davy Alvarenga Machado
Brasília - DF
Tecnisys Tecnologias Inovadoras
Interessado em dados de todos os tamanhos
Desenvolvedor Java e Android nas horas vagas
e curioso por natureza
Revisor de funcionalidades do PostgreSQL e
desenvolvedor/contribuidor do projeto Apache
NiFi
Organizador e palestrante do PGDay Brasília
Editor e escritor do blog Sketchtease
https://br.linkedin.com/in/davy-alvarenga-
machado
3. TECNISYS
Referência nacional em soluções open source
atuando no mercado de TI a mais de 25 anos
Parceira de empresas líderes internacionalmente,
tais como, EnterpriseDB, Hortonworks, Red Hat,
SUSE, entre outras
Especialistas em Banco de Dados, Big Data,
Sistemas Operacionais, Middlewares, entre outras
áreas
Principal via estratégica de mercado da
EnterpriseDB para o território brasileiro
Suporte ao PostgreSQL 24x7, com atendimento
inicial em menos de 15 min via 0800, site ou e-
mail
4. AGENDA
▪ HADOOP, DATA FLOW E APACHE NIFI
▪ CAPTURE DATA CHANGE (CDC)
▪ POSTGRESQL REPLICAÇÃO LÓGICA
▪ PROCESSADOR CAPTURECHANGEPOSTGRESQL
▪ LOGICAL REPLICATION API
▪ COPY API
▪ LIMITAÇÕES DA REPLICAÇÃO LÓGICA
5. APACHE HADOOP
Coleção de open source software frameworks para armazenamento e
processamento distribuído de grandes conjuntos de dados
Escalável e tolerante a falhas
Hardware commodity
Processa todos os tipos de Big Data (all/semi/un structured)
Comunidade
Apache Software Foundation (ASF)
9. APACHE NIFI
UMA BREVE HISTÓRIA
2006
NiagaraFiles (NiFi) foi desenvolvido pela Agência de Segurança Nacional
dos Estados Unidos (NSA)
2014
NiFi foi doado para a Apache Software Foundation (ASF)
2015
NiFi alcança o status de projeto top-level na ASF
10. APACHE NIFI Interface visual
Dirigido à gráficos
Feedback imediato
Flexível
Seguro
Distribuído
Extensível
Alta disponibilidade
Multi-tenant
+220 processadores
Fácil integração com soluções de
Enterprise Service Bus, Processing
Framework, ETL e Messaging Bus
11. CAPTURE DATA CHANGE (CDC)
Categoria de processadores NiFi responsáveis pela captura de eventos de alteração
de um banco de dados em tempo real
Baseado em logs transacionais (não em triggers)
Captura single-thread, Processamento multi-thread
Ordenação dos eventos (EnforceOrder)
Diversas aplicações
Até o momento, temos apenas o processador CaptureChangeMySQL
12. POSTGRESQL
REPLICAÇÃO LÓGICA
Modelo Publish/Subscribe
Eventos publicados em tempo real
Eventos aplicados na ordem de confirmação (COMMIT)
REPLICA IDENTITY (DEFAULT, USING INDEX, FULL e NOTHING)
Slot de Replicação
Um para cada subscrição (SUBSCRIPTION)
Nome da subscrição por padrão
pgoutput
Plugin de decodificação lógica padrão
Replicação síncrona e assíncrona
14. REPLICAÇÃO LÓGICA
ARQUITETURA
walsender no publisher inicia a decodificação lógica do WAL
pgoutput transforma e filtra os registros transacionais
Protocolo de Replicação
Parâmetros e formato das mensagens
Protocolo de Streaming de Replicação
Transferência contínua
bgworker no subscriber aplica as alterações
Sincronização inicial (snapshot) semelhante a um COPY
16. REPLICAÇÃO LÓGICA
CONFIGURAÇÃO
Publisher Cluster
wal_level = logical
max_replication_slots = pelo menos o número de assinantes esperados mais uma reserva para
sincronização
max_wal_senders = pelo menos, max_replication_slots mais o número de réplica que se conectam
ao mesmo tempo no cluster
Subscriber Cluster
max_logical_replication_workers = pelo menos o número de assinaturas que serão criadas mais
uma reserva para sincronização
max_worker_processes = pelo menos max_logical_replication_workers + 1
18. REPLICAÇÃO LÓGICA
MONITORAMENTO
Visões
pg_replication_slots
slots de replicação, plugin, tipo, temporário, estado, xmin
pg_stat_replication
wal sender, informações do cliente, estado, último lsn enviado/flushed/escrito/aplicado
pg_stat_subscription
nome da sub, pid do worker, último lsn recebido, último lsn reportado
pg_publication/pg_publication_rel
nome da pub, FOR ALL TABLES/table OID, publication OID
pg_subscription
informações de conexão, nome do slot de replicação, nome da pub
19. CAPTURECHANGEPOSTGRESQL
ASF JIRA NIFI-4239
Desenvolvido em Java
Logical Replication API
Copy API (sincronização inicial)
Eventos são retornados como flowfiles em formato JSON
cdc.sequence.id, cdc.event.type e mime.type
Em fase de ajustes, melhorias e testes
20. LOGICAL REPLICATION API
CRIANDO UM CONEXÃO DE REPLICAÇÃO
String url = "jdbc:postgresql://localhost:5432/test";
Properties props = new Properties();
PGProperty.USER.set(props, "postgres");
PGProperty.PASSWORD.set(props, "postgres");
PGProperty.ASSUME_MIN_SERVER_VERSION.set(props, "10");
PGProperty.REPLICATION.set(props, "database");
PGProperty.PREFER_QUERY_MODE.set(props, "simple");
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection(url, props);
PGConnection replConnection = con.unwrap(PGConnection.class);
21. LOGICAL REPLICATION API
CRIANDO UM SLOT DE REPLICAÇÃO
public void createReplicationSlot() throws SQLException {
PGConnection pgcon = this.connection.unwrap(PGConnection.class);
pgcon.getReplicationAPI()
.createReplicationSlot()
.logical()
.withSlotName(this.slotName)
.withOutputPlugin("pgoutput")
.make();
}
22. LOGICAL REPLICATION API
CRIANDO UM STREAM DE REPLICAÇÃO
public PGReplicationStream getReplicationStream() throws SQLException {
PGConnection pgcon = this.start.connection.unwrap(PGConnection.class);
return pgcon.getReplicationAPI()
.replicationStream()
.logical()
.withSlotName(this.start.slotName)
.withSlotOption("proto_version", "1")
.withSlotOption("publication_names", this.start.publicationName)
.withStatusInterval(20, TimeUnit.SECONDS)
.start();
}
23. LOGICAL REPLICATION API
LENDO UM STREAM DE REPLICAÇÃO EM TEMPO REAL
public void readPendingStream() throws SQLException, InterruptedException, ParseException, UnsupportedEncodingException {
Decode decode = new Decode();
if(Decode.dataTypes.isEmpty())
decode.loadDataTypes(this.start.connection);
PGReplicationStream stream = getReplicationStream();
while (true) {
ByteBuffer buffer = stream.readPending();
if (buffer == null) {
TimeUnit.MILLISECONDS.sleep(10L);
continue;
}
JSONObject json = new JSONObject();
if(this.start.messageQueuePretty) {
this.start.messageQueue.addLast(decode.decodeLogicalReplicationMessagePretty(buffer, json).toJSONString());
} else {
this.start.messageQueue.addLast(decode.decodeLogicalReplicationMessage(buffer, json).toJSONString().replace(""", """));
}
/* Feedback */
stream.setAppliedLSN(stream.getLastReceiveLSN());
stream.setFlushedLSN(stream.getLastReceiveLSN());
}
}
24. LOGICAL REPLICATION API
CARREGANDO TIPOS DE DADOS
public void loadDataTypes(Connection connection) throws SQLException {
connection.setAutoCommit(true);
PreparedStatement stmt = connection.prepareStatement("SELECT oid, typname FROM pg_catalog.pg_type");
ResultSet rs = stmt.executeQuery();
while(rs.next()) {
Decode.dataTypes.put(rs.getInt(1), rs.getString(2));
}
rs.close();
stmt.close();
}
25. LOGICAL REPLICATION API
DECODIFICANDO UMA MENSAGEM
public class Decode {
protected static HashMap<Integer, String> dataTypes = new HashMap<>();
protected HashMap<Integer, Relation> relations = new HashMap<>();
public JSONObject decodeLogicalReplicationMessage(ByteBuffer buffer, JSONObject json) throws ParseException, SQLException,
UnsupportedEncodingException {
char msgType = (char) buffer.get(0); /* (Byte1) Identifies the message as a begin message. */
int position = 1;
switch (msgType) {
case 'B’: /* Identifies the message as a begin message.*/
JSONObject jsonMessage_B = new JSONObject();
jsonMessage_B.put("xLSNFinal", buffer.getLong(1)); /* (Int64) The final LSN of the transaction. */
jsonMessage_B.put("xCommitTime", getFormattedPostgreSQLEpochDate(buffer.getLong(9)));
/* (Int64) Commit timestamp of the transaction.
The value is in microseconds since
PostgreSQL epoch (2000-01-01). */
jsonMessage_B.put("xid", buffer.getInt(17)); /* (Int32) Xid of the transaction. */
json.put("begin", jsonMessage_B);
return json;
...
26. COPY API
REALIZANDO A SINCRONIZAÇÃO INICIAL
public void getInitialSnapshot() throws SQLException, IOException {
ArrayList<String> pubTables = this.getPublicationTables();
JSONObject jsonSnapshot = new JSONObject();
for (String table : pubTables) {
ArrayList<String> lines = this.getInitialSnapshotTable(table);
JSONArray tableLines = new JSONArray();
for (String line : lines) {
tableLines.add(line);
}
jsonSnapshot.put(table, tableLines);
}
this.start.messageQueue.addFirst("{"snaphost":" + jsonSnapshot.toJSONString().replace(""", """) + "}");
}
27. COPY API
REALIZANDO A SINCRONIZAÇÃO INICIAL
public ArrayList<String> getInitialSnapshotTable(String tableName) throws SQLException, IOException {
PGConnection pgcon = this.start.connection.unwrap(PGConnection.class);
ByteArrayOutputStream out = new ByteArrayOutputStream();
CopyManager manager = pgcon.getCopyAPI();
manager.copyOut("COPY (SELECT REGEXP_REPLACE(ROW_TO_JSON(t)::TEXT, '', '', 'g’)
FROM (SELECT * FROM " + tableName + ") t) TO STDOUT", out);
return new ArrayList<String>(Arrays.asList(
out.toString("UTF-8").split("n")));
}
28. REPLICAÇÃO LÓGICA
LIMITAÇÕES
Esquemas e operações DDL não são replicadas
Sequências não são replicadas
TRUNCATE não é replicado
Large Objects (LO) não são replicados
Apenas tabelas regulares são replicadas (pg_class.relkind = ‘r’)
Visões, Visões Materializadas, Tabelas Estrangeiras, Tabelas Pai em uma relação de Herança, entre
outras não são replicadas
Statement triggers são disparadas apenas na sincronização inicial
Replicação bidirecional não é suportada