O documento descreve o RelStorage, um armazenamento de dados para o ZODB que utiliza bancos de dados relacionais como PostgreSQL, MySQL e Oracle em vez de arquivos. Ele fornece melhor desempenho que o FileStorage para sites com alto volume de acesso e permite que múltiplas instâncias do Zope compartilhem o mesmo banco de dados. Instruções passo a passo são fornecidas para configurar o RelStorage com PostgreSQL.
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and ZabbixZabbix
The aim of the lecture is to discuss the main questions people have when using SNMP with Zabbix. Will present an overview of SNMP, MIBs, Net-SNMP and items used in Zabbix templates.
Introdução prática ao Apache Ant.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and ZabbixZabbix
The aim of the lecture is to discuss the main questions people have when using SNMP with Zabbix. Will present an overview of SNMP, MIBs, Net-SNMP and items used in Zabbix templates.
Introdução prática ao Apache Ant.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
How to use Elasticsearch Analyzers by EmergiNetEmergiNet
Presentation ( em Português - Brasil) about how to use Elasticsearch analyzers to boost your searches. The content was exhibited in Elasticsearch Meetup in Rio de Janeiro and Porto Alegre by Pablo Musa from EmergiNet.
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
Palestra apresentada na RubyConf Brasil 2010 mostrando dicas de bibliotecas úteis para aplicações web escritas em Rails e maneiras para conseguir código flexível, fácil de testar e modificar utilizando SOLID, defensive programming e outras técnicas.
Por que e como montamos um meio de pagamentos inteiramente em Node.js? Nessa palestra, falarei sobre o que aprendemos construindo um projeto relativamente grande em Node. Primeiro, os motivos que nos levaram a usá-lo no Pagar.me e porque Node foi a ferramenta certa para nós. Depois, sobre como montamos uma infraestrutura que une Node.js com tecnologias diferentes (MongoDB, MySQL e ElasticSearch) para usar a melhor parte de cada uma delas e ganhar versatilidade e escalabilidade.
Também abordarei os cuidados com código (patterns, code style, modules, etc), testes, integração contínua e segurança na stack que precisamos ter para criar algo grande com Node. Além disso, contarei um pouco sobre ele em produção, incluindo as ferramentas que usamos para rodar e monitorar nossa aplicação e a infraestrutura por trás dela. O objetivo é mostrar quando, como e porque utilizar o Node, e provar até onde ele pode chegar.
The wireless network monitoring data are abundant, as it seems relevant store information from devices and users connected, especially in an multicampus environment like Unesp. In this sense, the database tends to increase rapidly the number of records, being necessary to optimize the periodic cleaning routine of Zabbix data. Here are our way of improving the functioning of the "housekeeping" native application. Also will demonstrate the massive use of the data type "Zabbix Trapper" for flexible the list of informations of Wi-Fi infrastructure and techniques varied use of "low level discovery" for monitoring of wireless access points.
Palestra apresentado no The Developers Conference - Florianópolis de 2017, um evento que aborda diversas tecnologias. A palestra foi uma apresentação sobre a tecnologia Elasticsearch na versão 5.X abordando pequenas questões arquiteturais do cluster e da sua utilização.
Aqui são apresentados as técnicas de Desenvolvimento com Jakarta Cactus.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Replicação e escalabidade do ZODB com RelStorageRuda Filgueiras
O CMS Plone utiliza o ZODB como usa base de dados principal. Em alguns cenários, como grandes portais, é preciso ter muitos servidores ZOPE no frontend processando as requisições dos usuários.
Nessas situações, o ZEO, backend distribuído padrão do ZODB, pode ficar sobrecarregado, principalmente pela quantidade de IO requisitada e em alguns casos de CPU também.
Como alternativa ao ZEO, foi desenvolvido um novo backend para o ZODB que armazena os dados dos objetos (raw) em banco de dados relacionais, com alguns objetivos:
facilitar o uso de múltiplas CPUs no processamento do backend
utilizar ferramentas de backup e replicação já conhecidas dos administradores de banco de dados
fazer backup on-lin dos dados do servidor com a utilização de réplicas escravas
fazer um balanceamento das requisições ao backend utilizando-se de clusters
Além disso, o RelStorage também inovou na integração com memcached para centralizar o cache do objetos e aliviar ainda mais o IO do backend ZODB.
O objetivo desta apresentação é falar sobre o projeto RelStorage, utilizando-se de exemplos de práticos de utilização dele em aplicação Zope/Plone e sua integração com memcached e realizando um espelhamento da base de dados.
How to use Elasticsearch Analyzers by EmergiNetEmergiNet
Presentation ( em Português - Brasil) about how to use Elasticsearch analyzers to boost your searches. The content was exhibited in Elasticsearch Meetup in Rio de Janeiro and Porto Alegre by Pablo Musa from EmergiNet.
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010lucashungaro
Palestra apresentada na RubyConf Brasil 2010 mostrando dicas de bibliotecas úteis para aplicações web escritas em Rails e maneiras para conseguir código flexível, fácil de testar e modificar utilizando SOLID, defensive programming e outras técnicas.
Por que e como montamos um meio de pagamentos inteiramente em Node.js? Nessa palestra, falarei sobre o que aprendemos construindo um projeto relativamente grande em Node. Primeiro, os motivos que nos levaram a usá-lo no Pagar.me e porque Node foi a ferramenta certa para nós. Depois, sobre como montamos uma infraestrutura que une Node.js com tecnologias diferentes (MongoDB, MySQL e ElasticSearch) para usar a melhor parte de cada uma delas e ganhar versatilidade e escalabilidade.
Também abordarei os cuidados com código (patterns, code style, modules, etc), testes, integração contínua e segurança na stack que precisamos ter para criar algo grande com Node. Além disso, contarei um pouco sobre ele em produção, incluindo as ferramentas que usamos para rodar e monitorar nossa aplicação e a infraestrutura por trás dela. O objetivo é mostrar quando, como e porque utilizar o Node, e provar até onde ele pode chegar.
The wireless network monitoring data are abundant, as it seems relevant store information from devices and users connected, especially in an multicampus environment like Unesp. In this sense, the database tends to increase rapidly the number of records, being necessary to optimize the periodic cleaning routine of Zabbix data. Here are our way of improving the functioning of the "housekeeping" native application. Also will demonstrate the massive use of the data type "Zabbix Trapper" for flexible the list of informations of Wi-Fi infrastructure and techniques varied use of "low level discovery" for monitoring of wireless access points.
Palestra apresentado no The Developers Conference - Florianópolis de 2017, um evento que aborda diversas tecnologias. A palestra foi uma apresentação sobre a tecnologia Elasticsearch na versão 5.X abordando pequenas questões arquiteturais do cluster e da sua utilização.
Aqui são apresentados as técnicas de Desenvolvimento com Jakarta Cactus.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Replicação e escalabidade do ZODB com RelStorageRuda Filgueiras
O CMS Plone utiliza o ZODB como usa base de dados principal. Em alguns cenários, como grandes portais, é preciso ter muitos servidores ZOPE no frontend processando as requisições dos usuários.
Nessas situações, o ZEO, backend distribuído padrão do ZODB, pode ficar sobrecarregado, principalmente pela quantidade de IO requisitada e em alguns casos de CPU também.
Como alternativa ao ZEO, foi desenvolvido um novo backend para o ZODB que armazena os dados dos objetos (raw) em banco de dados relacionais, com alguns objetivos:
facilitar o uso de múltiplas CPUs no processamento do backend
utilizar ferramentas de backup e replicação já conhecidas dos administradores de banco de dados
fazer backup on-lin dos dados do servidor com a utilização de réplicas escravas
fazer um balanceamento das requisições ao backend utilizando-se de clusters
Além disso, o RelStorage também inovou na integração com memcached para centralizar o cache do objetos e aliviar ainda mais o IO do backend ZODB.
O objetivo desta apresentação é falar sobre o projeto RelStorage, utilizando-se de exemplos de práticos de utilização dele em aplicação Zope/Plone e sua integração com memcached e realizando um espelhamento da base de dados.
Este material não é um curso ou parte de nenhum curso ou treinamento. Foi elaborado com o único objetivo de transferir conhecimentos adquiridos em estudos autônomos e também adquiridos durante o curso Administração de Banco de Dados com PostgreSQL ministrado por Fábio da Luz Caiut na Escola Superior de Redes (ESR) da Rede Nacional de Pesquisa (RNP) em Brasília/DF.
Talk at FISL 9 (year 2008) about Plone/Zope infrastructure development at Procuradoria Geral da República - PGR. In 2010 the infrastructure was completely redone, so it now does not reflect what is exposed on this presentation, In Brazilian Portuguese.
Aqui são apresentados conceitos básicos a plataforma Java. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
Apresentação da framework de desenvolvimento de aplicações web - cakePHP.
Aprender a criar uma aplicação web em PHP usando o CakePHP.
- Instalação?
- Organização?
- Como criar um Blog?
- Autenticação?
- Multi-utilizador?
Investimentos da Oracle no MySQL está elevando o nível do produto a um novo patamar. Baseada na apresentação do VP de Engenharia MySQL, Tomas Ulin, esta apresentação cobre as principais novidades do MySQL 5.7, MySQL Cluster 7.4, MySQL Fabric etc.
2. Bancos Suportados
● PostgreSQL 8.1 ou superior (via
psycopg2)
● MySQL 5.0.x (via MySQLdb)
● Oracle 10g (via cx_Oracle)
2
3. Características
● É um substituto para o FileStorage e ZEO.
● Há um caminho simples para converter
FileStorage para RelStorage e reverter
novamente. Você pode também converter uma
instância de RelStorage para um diferente
banco de dados relacional.
● Projetado para sites com grande volume:
Múltiplas instâncias do ZODB podem
compartilhar o mesmo banco de dados. Isto é
similar para o ZEO, mas RelStorage não
requer ZEO.
3
4. Características (cont.)
● De acordo com alguns testes, RelStorage
manipula alta concorrência melhor que a
combinação de ZEO e FileStorage.
● Enquanto que o FileStorage toma mais tempo
para iniciar à medida que o banco de dados
cresce, devido a uma indexação de todos os
objetos na memória, RelStorage inicia
rapidamente sem levar em consideração o
tamanho do banco de dados.
● Suporta undo e packing.
● Livre, open source (ZPL 2.1)
4
9. Instalando e Ajustando o
PostgreSQL
# aptitude install postgresql-8.1
Altere o seguintes atributos no PostgreSQL:
# vim /etc/postgresql/8.1/main/postgresql.conf
listen_address = '*'
# vim /etc/postgresql/8.1/main/pg_hba.conf
# Database administrative login by UNIX sockets
local all postgres ident sameuser
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all IP_DO_ZOPE/24 md5
# /etc/init.d/postgresql-8.1 restart
9
10. Criando o Banco de Dados para
o ZODB
# su – postgres
$ psql
postgres=# CREATE DATABASE zodb;
postgres=# CREATE USER zodb WITH PASSWORD 'admin' SUPERUSER;
postgres=# l
Lista dos bancos de dados
Nome | Dono | Codificação
------------+----------+-------------
zodb | postgres | UTF8
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(4 registros)
postgres=# q
10
11. Instalando o Zope
# wget http://www.zope.org/Products/Zope/2.10.5/Zope-2.10.5-final.tgz
# tar xvfz Zope-2.10.5-final.tgz
# cd Zope-2.10.5-final
# ./configure --prefix=/opt/Zope-2.10.5 --with-python=/usr/bin/python2.4
# make
# make install
11
12. Instalando e Configurando
o RelStorage
# svn co svn://svn.zope.org/repos/main/relstorage/trunk RelStorage
# cd RelStorage
# export PYTHONPATH=/opt/Zope-2.10.5/lib/python
# python2.4 setup.py install --install-lib=$PYTHONPATH
Antes de você poder usar o RelStorage, o ZODB precisa ter o patch
de invalidação de checagem aplicado. Há duas versões do patch: uma
para ZODB 3.7.1 (que é parte do Zope 2.10.5) e outra para ZODB
3.8.0 (que é parte do Zope 2.11). O patch não tem efeito no ZODB
exceto quando se está usando o RelStorage.
# cd /opt/Zope-2.10.5/lib/python/ZODB
# cat /root/RelStorage/poll-invalidation-1-zodb-3-7-1.patch | patch -N -p0
12
13. Criando uma instância do Zope e instalando
o adaptador para o PostgresQL
# su - rogerio
$ /opt/Zope-2.10.5/bin/mkzopeinstance.py
Please choose a directory in which you'd like to install
Zope quot;instance homequot; files such as database files, configuration
files, etc.
Directory: site
Please choose a username and password for the initial user.
These will be the credentials you use to initially manage
your new Zope instance.
Username: admin
Password:
Verify password:
$ cd site/Products
$ svn co http://initd.org/svn/psycopg/psycopg2/trunk/ZPsycopgDA ZpsycopgDA
13
14. Configurando o Relstorage no
zope.conf para acessar o PostgreSQL
Substitua o seguinte bloco no zope.conf:
<zodb_db main>
# Main FileStorage database
<filestorage>
path $INSTANCE/var/Data.fs
</filestorage>
mount-point /
</zodb_db>
Por:
%import relstorage
<zodb_db main>
mount-point /
<relstorage>
<postgresql>
dsn dbname='zodb' user='zodb' host='IP_DO_POSTGRESQL' password='admin'
</postgresql>
</relstorage>
</zodb_db>
Ative também no zope.conf o modo de debug:
debug-mode on
14
15. Iniciando a Instância do Zope
Adicione novamente um usuário admin para o Zope:
$ site/bin/zopectl adduser usuario_admin senha
NOTA: Quando for acessar a ZMI utilize o usuário e senha definido acima.
Agora é só iniciar a nossa instância (site) do Zope:
$ site/bin/runzope
2008-09-05 12:22:40 INFO ZServer HTTP server started at Fri Sep 5 12:22:40
2008
Hostname: 0.0.0.0
Port: 8080
2008-09-05 12:22:42 INFO psycopg2 installed. Logging using Python logging
module
/home/rogerio/site/Products/ZpsycopgDA/DA.py:45: DeprecationWarning: The
ImageFile module will be removed in Zope 2.11. Use App.ImageFile instead.
from ImageFile import ImageFile
(...)
2008-09-05 12:22:47 INFO Zope Ready to handle requests
15
18. Migrando uma Base
Existente
Você pode converter uma instância de
FileStorage para RelStorage e
reverter usando o utilitário chamado
ZODBConvert.
18
19. Migrando de FileStorage
para RelStorage
Definindo o arquivo de Migração:
# vim FileStorage2RelStorage
<filestorage source>
path /home/rogerio/site/var/Data.fs
</filestorage>
<relstorage destination>
<postgresql>
dsn dbname='zodbconv' user='zodb' host='IP_DO_POSTGRESQL' password='admin'
</postgresql>
</relstorage>
Executando o utilitário de migração:
# zodbconvert.py FileStorage2RelStorage --verbose
NOTA: Com a opção --clear os dados do banco de destino são apagados.
19
20. Revertendo
Definindo o arquivo de Reversão:
# vim RelStorage2FileStorage
<filestorage destination>
path /home/rogerio/site/var/Data.fs
</filestorage>
<relstorage source>
<postgresql>
dsn dbname='zodbconv' user='zodb' host='IP_DO_POSTGRESQL' password='admin'
</postgresql>
</relstorage>
Instale o seguinte pacote:
# aptitude install python2.4-zodb
Crie um nova instância de Zope ou apague o conteúdo do diretório var da instância:
# rm -rf /home/rogerio/site/var/*
Executando o utilitário de migração:
# export PYTHONPATH=/opt/Zope-2.10.5/lib/python
# zodbconvert.py RelStorage2FileStorage –verbose
Altere as permissões dos arquivos criados pelo zodbconvert.py:
# chown rogerio.rogerio -R /home/rogerio/site/var/
20
21. Atributos Opcionais
poll-interval
Esta opção é proveitosa se você necessita reduzir o tráfego do banco de
dados. Se configurada, o RelStorage irá checar mudanças no banco de dados
com menos frequência. Um ajuste de 1 a 5 segundos deverá ser suficiente
para a maioria dos sistemas. Fração de segundos são permitidos.
Enquanto este ajuste poderia não afetar a integridade do banco de dados, ele
aumenta a probabilidade de transações baseadas em dados antigos, levando a
conflitos. Dessa forma um ajuste diferente de zero pode danificar a
perfomance de servidores com alto volume de escrita.
Para habilitar este atributo, adicione uma linha similar a quot;poll-interval 2quot;
dentro de uma secão <relstorage> do zope.conf.
21
22. Atributos Opcionais (cont.)
pack-gc
Se pack-gc for falsa, operações de pack não efetuarão a coleta de lixo. A
coleta de lixo é habilitada por padrão.
Se o coletor de lixo estiver desabilitado, operações de pack manterão uma de
suas menores revisões de cada objeto. Com a coleta de lixo desabilitada, o
código de pack não necessita seguir referências de objetos, fazendo packing
de modo muito mais rápido.
No entanto, alguns dos benefícios podem ser perdidos devido a sempre
aumentar o número de objetos não usados.
Desabilitando a coleta de lixo é também cortada a segurança que referências
inter-database nunca quebrem.
Para desabilitar a coleta de lixo, adicione a linha quot;pack-gc noquot; dentro de
uma seção <relstorage> do zope.conf.
22
23. Mais Informações
● http://wiki.zope.org/ZODB/RelStorage
● http://wiki.zope.org/ZODB/ZODBConvert
● http://rogerioferreira.objectis.net
23
24. Palestrante
Rogerio Ferreira, trabalha
na 4Linux como Consultor
responsável por Infra
Estrutura e Projetos de Zope
e Plone. Possui Certificação
LPIC-1, LPIC-2 e LPIC-3. É
autor de Projeto de Software
Livre em Governo Estadual,
participou de Projeto de
Zope/Plone no Governo
Federal.
24