<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planeta PostgreSQL-BR</title>
	<link rel="self" href="http://planeta.postgresql.org.br/atom.xml"/>
	<link href="http://planeta.postgresql.org.br"/>
	<id>http://planeta.postgresql.org.br/atom.xml</id>
	<updated>2008-07-23T17:00:16+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en">
		<title type="html">Palestras sobre PostgreSQL no Serpro: 24/07</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/07/22/palestras-sobre-postgresql-no-serpro-2407-2/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=276</id>
		<updated>2008-07-22T15:12:03+00:00</updated>
		<content type="html">&lt;p&gt;Vou estar no &lt;a href=&quot;http://www.softwarelivre.gov.br/eventos/palestras-tecnicas-sobre-software-livre-postgresql-no-serpro-24-07-2008-14h-as-17h&quot; target=&quot;_blank&quot;&gt;dia 24/07 no Serpro em Brasília&lt;/a&gt; para duas palestras técnicas sobre PostgreSQL falando sobre Alta-Disponibilidade e Tuning.&lt;/p&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Grade preliminar da PGCon Brasil 2008</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/07/22/grade-preliminar-da-pgcon-brasil-2008/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=274</id>
		<updated>2008-07-22T08:59:18+00:00</updated>
		<content type="html">&lt;p&gt;Foi publico neste fim de semana a &lt;a href=&quot;http://pgcon.postgresql.org.br/programacao.html&quot; target=&quot;_blank&quot;&gt;grade preliminar&lt;/a&gt; da &lt;a href=&quot;http://pgcon.postgresql.org.br&quot; target=&quot;_blank&quot;&gt;PGCon Brasil 2008 &lt;/a&gt;e eu serei um dos paletrantes para falar um pouco &lt;a href=&quot;http://pgfoundry.org/projects/skytools/&quot; target=&quot;_blank&quot;&gt;Skytools&lt;/a&gt;, &lt;a href=&quot;http://pgfoundry.org/projects/plproxy&quot; target=&quot;_blank&quot;&gt;PL/Proxy&lt;/a&gt; e &lt;a href=&quot;http://pgfoundry.org/projects/pgbouncer&quot; target=&quot;_blank&quot;&gt;PgBouncer&lt;/a&gt;. &lt;img src=&quot;http://www.midstorm.org/~fike/weblog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Palestras sobre PostgreSQL no Serpro: 24/07</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/07/21/palestras-sobre-postgresql-no-serpro-2407/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=271</id>
		<updated>2008-07-22T01:42:44+00:00</updated>
		<content type="html">&lt;p&gt;Vou estar no &lt;a href=&quot;http://www.softwarelivre.gov.br/eventos/palestras-tecnicas-sobre-software-livre-postgresql-no-serpro-24-07-2008-14h-as-17h&quot; target=&quot;_blank&quot;&gt;dia 24/07 no Serpro em Brasília&lt;/a&gt; para duas palestras técnicas sobre PostgreSQL falando sobre Alta-Disponibilidade e Tuning.&lt;/p&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="pt-br">
		<title type="html">ribafs</title>
		<link href="http://ribafs.wordpress.com/2008/07/10/modelagem-de-bancos-de-dados/"/>
		<id>http://ribafs.wordpress.com/?p=22</id>
		<updated>2008-07-10T14:55:09+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Estou iniciando uma coleção de modelos free, que oferecem os diagramas e também os scripts de alguns bancos de dados comuns. Pois ao efetuar uma boa busca na Internet não consegui encontrar algo parecido. Encontrei um ótimo site, com bons diagramas (http://www.databaseanswers.org/data_models/index.htm)&lt;br /&gt;
e agora estou com a intenção de gerar os scripts para alguns diagramas e em especial com foco em detalhes da nossa realidade brasileira.&lt;/p&gt;
&lt;p&gt;Já elaborei modelos de dois bancos:&lt;br /&gt;
controle de estoque e vídeo locadora,&lt;br /&gt;
com os diagramas e respectivos scripts. Os scripts foram testados no PostgreSQL mas devem rodar em qualquer SGBD, já que usam apenas SQL padrão.&lt;/p&gt;
&lt;p&gt;Na lista de PostgreSQL (pgbr-geral) estamos discutindo sobre os mesmos no intuito de melhorá-los. Traga sua sugestão e outros modelos que queira compartilhar. Deixe comentários na seção projetos do site:&lt;br /&gt;
http://pg.ribafs.net/content/view/15/34/&lt;/p&gt;
&lt;p&gt;Torne-se um colaborador enviando artigos para o site: http://pg.ribafs.net (basta entrar em contato).&lt;/p&gt;
&lt;p&gt;Participe da lista de discussão do PostgreSQL:&lt;br /&gt;
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral&lt;/p&gt;
&lt;p&gt;Elaborar um projeto, por pequeno que seja, mesmo riscando algo no papel antes de começar de fato é algo que ajuda muito quando se cria um aplicativo, quando se cria um banco de dados e mesmo em muitas outras áreas.&lt;/p&gt;
&lt;p&gt;A modelagem de bancos de dados é uma etapa que evita retrabalho na criação de bancos de dados e juntamente com outros conhecimentos da teoria dos bancos de dados, normalização, integridade referencial e outros ajuda a criar bancos robustos.&lt;/p&gt;
&lt;p&gt;Controle de Estoque:&lt;br /&gt;
http://pg.ribafs.net/down/projeto//modelos_free/controle_estoque.jpg&lt;br /&gt;
http://pg.ribafs.net/down/projeto//modelos_free/controle_estoque.sql&lt;/p&gt;
&lt;p&gt;Vídeo Locadora:&lt;br /&gt;
http://pg.ribafs.net/down/projeto//modelos_free/video_locadora.jpg&lt;br /&gt;
http://pg.ribafs.net/down/projeto//modelos_free/video_locadora.sql&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ribafs.wordpress.com/22/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ribafs.wordpress.com/22/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ribafs.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ribafs.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ribafs.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ribafs.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ribafs.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ribafs.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ribafs.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ribafs.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ribafs.wordpress.com/22/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ribafs.wordpress.com/22/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ribafs.wordpress.com&amp;amp;blog=630184&amp;amp;post=22&amp;amp;subd=ribafs&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Ribamar FS</name>
			<uri>http://ribafs.wordpress.com</uri>
		</author>
		<source>
			<title type="html">PostgreSQL, o SGBD » PostgreSQL</title>
			<subtitle type="html">Um webblog sobre o SGBD PostgreSQL e assuntos correlatos</subtitle>
			<link rel="self" href="http://ribafs.wordpress.com/category/postgresql/feed"/>
			<id>http://ribafs.wordpress.com/category/postgresql/feed</id>
			<updated>2008-07-10T15:00:14+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL: Presença Fraca no Youtube</title>
		<link href="http://postgresqlbr.blogspot.com/2008/07/postgresql-presena-fraca-no-youtube.html"/>
		<id>tag:blogger.com,1999:blog-3371915898459901668.post-2675530211868492096</id>
		<updated>2008-07-09T09:13:29+00:00</updated>
		<content type="html">A presença do PostgreSQL entre os grandes SGBDs pode ser medida de diversas formas. Em busca de vídeos interessantes  de PostgreSQL, fiz uma busca no &lt;a href=&quot;http://www.youtube.com/results?search_query=postgresql&amp;amp;search_type=&amp;amp;aq=f&quot;&gt;Youtube&lt;/a&gt;, e me decepcionei.  Encontrei apenas 356 vídeos. É muito pouco para cobrir todas as funcionalidades e possibilidades deste banco de dados.&lt;br /&gt;&lt;br /&gt;Considerando-se que este resultado envolve todos os idiomas, os resultados são ainda mais fracos, pois temos muito pouca coisa em Português. A qualidade da imagem também deixa a desejar, possivelmente pelo formato do Youtube, que reduz a resolução e prejudica apresentações que capturam telas do computador e as filmagens de apresentações em telões multimídia. Faltam comentários nos vídeos, a visualização ainda é pequena por parte da comunidade e muitos permanecem sem avaliação (o Youtube tem uma graduação que vai até 5 estrelas). Vi bons vídeos em italiano, mas acho que a estrada a ser trilhada pelo PostgreSQL em vídeo ainda está no seu início.&lt;br /&gt;&lt;br /&gt;Para ter uma visão comparativa, fiz outras buscas para outros SGBDs. Entre os bancos de dados livres, apesar do PostgreSQL só estar atrás do MySQL, não se pode dizer que é uma boa colocação. A abrangência, quantidade e qualidade dos vídeos pode melhorar muito. O próprio campeão MySQL teve muito mais resultados encontrados, mas bem abaixo do que poderia ser. O fato é que ainda não utilizamos vídeos como forma de aprendizado e divulgação de conhecimento como poderíamos.&lt;br /&gt;&lt;br /&gt;Mesmo os Bancos de Dados proprietários apresentam poucas opções, mas o SQL Server teve quase o dobro de vídeos que o PostgreSQL. O Oracle também decepcionou e pode ser alcançado pelo PostgreSQL com algum trabalho da comuindade.&lt;br /&gt;&lt;br /&gt;O ranking total aparece abaixo. Faltam alguns SGBDs, mas o propósito não era uma busca exaustiva. A grande surpresa foi o DB2, com a terceira colocação. Os bancos de dados livres lideram com o MySQL e o PostgreSQL ocupa apenas uma posição intermediária, com o quinto lugar.&lt;br /&gt;&lt;br /&gt;1 - MySQL: 1330&lt;br /&gt;2 - SQL Server: 674&lt;br /&gt;3 - IBM DB2: 461&lt;br /&gt;4 - Oracle  (busca por &quot;Oracle SQL&quot;): 406&lt;br /&gt;5 -PostgreSQL: 356&lt;br /&gt;6 - Firebird (busca por &quot;Firebird SQL&quot;): 171&lt;br /&gt;7 - ACCESS (busca por &quot;ACCESS SQL&quot;): 50&lt;br /&gt;8 - SQLite: 22&lt;br /&gt;9 - ADABAS: 5&lt;br /&gt;10 - HSQLDB: 0&lt;br /&gt;&lt;br /&gt;&lt;span&gt;O que podemos fazer a respeito?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Bom, creio que podemos influir positivamente quanto a esta questão:&lt;br /&gt;&lt;br /&gt;- Assistir a vídeos de PostgreSQL no Youtube, dando feedback aos seus criadores, através de comentários e da colocação das estrelas, indicando os melhores. Esta ação permite que se possa estimular a produção de melhores vídeos e o reconhecimento dos autores.&lt;br /&gt;- Postar novos fragmentos de palestras e de cursos com conteúdo novo e diversificados. Muitos eventos de Software Livre, de Banco de Dados em Geral e de PostgreSQL são gravados e poderia ser feita seleção e publicação de parte deste material.&lt;br /&gt;- Produzir novos vídeos voltados para a internet. Podem ser pequenos, podem ser focados em temas específicos, indo do básico ao avançado&lt;span&gt;. &lt;/span&gt;É a melhor forma de aprender a fazer mais e melhor.&lt;br /&gt;&lt;br /&gt;Quem se habilita?&lt;br /&gt;&lt;span&gt;&lt;br /&gt;Este é um problema realmente grave? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Acredito que não,  mas que é um ponto que pode ser melhor trabalhado pela comunidade do PostgreSQL.&lt;div class=&quot;blogger-post-footer&quot;&gt;Meu Blog de PostgreSQL - http://postgresqlbr.blogspot.com/
- Cláudio Bezerra Leopoldino&lt;/div&gt;</content>
		<author>
			<name>cbleopoldino</name>
			<email>noreply@blogger.com</email>
			<uri>http://postgresqlbr.blogspot.com/search/label/PostgreSQL</uri>
		</author>
		<source>
			<title type="html">Meu Blog de PostgreSQL!!!</title>
			<link rel="self" href="http://postgresqlbr.blogspot.com/feeds/posts/default/-/PostgreSQL"/>
			<id>tag:blogger.com,1999:blog-3371915898459901668</id>
			<updated>2008-07-18T16:00:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Icedtea/OpeJDK e Pentaho</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/07/08/icedteaopejdk-e-pentaho/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=292</id>
		<updated>2008-07-08T22:33:39+00:00</updated>
		<content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Esses dias tenho tido bastante divers&amp;atilde;o j&amp;aacute; que a internet no trabalho tem algumas pequenas restri&amp;ccedil;&amp;otilde;es. Na &amp;uacute;ltima semana precisa testar o Pentaho, como tamb&amp;eacute;m precisava testar alguma vers&amp;atilde;o da m&amp;aacute;quina virtual java que rodasse num Linux na plataforma &lt;a href=&quot;http://en.wikipedia.org/wiki/SPARC&quot; target=&quot;_blank&quot;&gt;SPARC&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; Para uma linguagem multiplataforma que &amp;eacute; poss&amp;iacute;vel facilmente olhar sua conta pela internet (internet banking) na plataforma AMD64 com Linux (meu caso &lt;a href=&quot;http://www.debian.org&quot; target=&quot;_blank&quot;&gt;Debian)&lt;/a&gt; nativamente e executar programas com Linux na plataforma SPARC. Ainda prefiro a velha e antiquada &lt;a href=&quot;http://en.wikipedia.org/wiki/C_(programming_language)&quot; target=&quot;_blank&quot;&gt;linguagem C&lt;/a&gt;. Isso &amp;eacute; uma ironia, complemento de um &lt;a href=&quot;http://www.midstorm.org/~fike/weblog/wp-admin/post.php?action=edit&amp;amp;post=292&amp;amp;message=4&quot; target=&quot;_blank&quot;&gt;nota antiga&lt;/a&gt; aqui no blog.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; Depois de tr&amp;ecirc;s brigando com o &lt;a href=&quot;javascript:void(0);/*1215556067698*/&quot;&gt;OpenJDK&lt;/a&gt;/&lt;a href=&quot;javascript:void(0);/*1215556107719*/&quot;&gt;IcedTe&lt;/a&gt;a para compilar, consegui gerar os bin&amp;aacute;rios depois de 13 horas initerruptas. No SPARC n&amp;atilde;o consegui fazer muito coisa mas no &lt;a href=&quot;http://en.wikipedia.org/wiki/X86-64&quot; target=&quot;_blank&quot;&gt;AMD64&lt;/a&gt; em testes sem rigor cient&amp;iacute;fico, o tempo que demorou para a inst&amp;acirc;ncia do &lt;a href=&quot;http://www.jboss.org&quot; target=&quot;_blank&quot;&gt;JBoss&lt;/a&gt; 4.2 carregar com o &lt;a href=&quot;http://www.pentaho.com/products/bi_platform/&quot; target=&quot;_blank&quot;&gt;Pentaho BI Plataform&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenJDK:&lt;br /&gt;Tempo M&amp;eacute;dio: 56 segundos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sun-Java6:&lt;br /&gt;Tempo M&amp;eacute;dio: 59 segundos&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; Como o foco n&amp;atilde;o era comparar as m&amp;aacute;quina virtuais java, somente fiz a m&amp;eacute;dia de carregar uma inst&amp;acirc;ncia do JBoss com Pentaho. O equipamento &amp;eacute; um Pentium Dual-Core, 2GB de RAM, &lt;a href=&quot;http://www.debian.org/releases/testing/&quot; target=&quot;_blank&quot;&gt;Debian Lenny&lt;/a&gt; (AMD64), JBoss 4.2.2 e &lt;a href=&quot;http://www.postgresql.org&quot; target=&quot;_blank&quot;&gt;PostgreSQL&lt;/a&gt; 8.3.3. Gostaria de avan&amp;ccedil;ar mais nesse teste mas uma pequena falta de tempo me impede no momento. &lt;img src=&quot;http://www.midstorm.org/~fike/weblog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="pt-br">
		<title type="html">ribafs</title>
		<link href="http://ribafs.wordpress.com/2008/07/08/gerando-graficosrelatorios-diretamente-do-postgresql/"/>
		<id>http://ribafs.wordpress.com/?p=20</id>
		<updated>2008-07-08T14:40:27+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;O objetivo principal deste tutorial é mostrar como se cria gráficos (relatórios) bonitos diretamente de bancos do PostgreSQL ou de qualquer outro SGBD que gere arquivos de saída de suas consultas, como faz o psql. Apenas precisamos do SGBD e do software open-source GNUPlot.&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;O GNUPLOT é um aplicativo open source, destinado à construção de gráficos e superfícies. É uma poderosa ferramenta, usada por uma série de organizações por todo o mundo, como pode-se ver a partir dos links disponíveis na página oficial.&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Veja o tutorial aqui:&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;gráfico&quot; href=&quot;http://pg.ribafs.net/down/docs/Tutoriais/Graficos/gnuplot_tutorial.pdf&quot; target=&quot;_blank&quot;&gt;http://pg.ribafs.net/down/docs/Tutoriais/Graficos/gnuplot_tutorial.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ribafs.wordpress.com/20/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ribafs.wordpress.com/20/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ribafs.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ribafs.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ribafs.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ribafs.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ribafs.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ribafs.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ribafs.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ribafs.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ribafs.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ribafs.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ribafs.wordpress.com&amp;amp;blog=630184&amp;amp;post=20&amp;amp;subd=ribafs&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</content>
		<author>
			<name>Ribamar FS</name>
			<uri>http://ribafs.wordpress.com</uri>
		</author>
		<source>
			<title type="html">PostgreSQL, o SGBD » PostgreSQL</title>
			<subtitle type="html">Um webblog sobre o SGBD PostgreSQL e assuntos correlatos</subtitle>
			<link rel="self" href="http://ribafs.wordpress.com/category/postgresql/feed"/>
			<id>http://ribafs.wordpress.com/category/postgresql/feed</id>
			<updated>2008-07-10T15:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Primeiros palestrantes do PGCon Brasil 2008 aprovados!!!</title>
		<link href="http://www.midstorm.org/~telles/2008/07/04/primeiros-palestrantes-do-pgcon-brasil-2008-aprovados/"/>
		<id>http://www.midstorm.org/~telles/?p=234</id>
		<updated>2008-07-04T15:12:04+00:00</updated>
		<content type="html">&lt;p&gt;A chamada de trabalhos para o PGCon Brasil 2008 foi realmente um sucesso. Foram quase 30 propostas de palestras. Coube a uma comissão de três pessoas a difícil tarefa de escolher algumas poucas palestras para o evento. Acredito que para o ano que vem, será factível termos duas salas simultâneas no evento. &lt;img src=&quot;http://www.midstorm.org/~telles/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Bom, vejamos aqui uma primeira versão da grade do evento:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;26/09 - Sexta-feira&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;08:00   Credenciamento&lt;br /&gt;
09:00   Abertura (Fala de representantes da UNICAMP, Governo Federal, Comunidade PostgreSQL Brasileira, Conunidade PostgreSQL Internacional e Empresários).&lt;br /&gt;
09:50   Bruce Momjian - &amp;#8220;PostgreSQL&amp;#8217;s Path to the Future&amp;#8221;&lt;br /&gt;
11:00   Intervalo&lt;br /&gt;
11:20   Palestra de patrocinador OURO (Dextra)&lt;br /&gt;
12:00   Almoço&lt;br /&gt;
14:00   Case / Palestrante Platina&lt;br /&gt;
14:50   &amp;#8212; (a definir)&lt;br /&gt;
15:40   &amp;#8212; (a definir)&lt;br /&gt;
16:30   Intervalo&lt;br /&gt;
16:50    Wagner Corrêa Ramos - &amp;#8220;Projeto de replicação multi-master com 143 servidores&amp;#8221;&lt;br /&gt;
17:40   Euler Taveira - &amp;#8220;Monitorando o PostgreSQL&amp;#8221;&lt;br /&gt;
18:30   David Fetter - &amp;#8220;Trees in PostgreSQL&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;27/09 - Sábado&lt;/strong&gt;&lt;br /&gt;
09:00   Tutorial: Leandro Dutra - &amp;#8220;O elefante aparelhado: ferramental e processo&lt;br /&gt;
de administração de dados em PostgresSQL&amp;#8221;&lt;br /&gt;
11:00   Intervalo&lt;br /&gt;
11:20   Palestra de patrocinador OURO (OpenGEO)&lt;br /&gt;
12:00   Almoço&lt;br /&gt;
14:00   Lightning Talks (paineis de 5 minutos cada)&lt;br /&gt;
15:00   Eduardo Leal - &amp;#8220;Utilizando o PostgreSQL em bancos de dados biológicos&amp;#8221;&lt;br /&gt;
15:50   Fábio Telles - &amp;#8220;PostgreSQL, o Elefante Encouraçado&amp;#8221;&lt;br /&gt;
16:40   Intervalo&lt;br /&gt;
17:00   Dickson dos Santos Guedes - Replicação Síncrona - &amp;#8220;Não existe&lt;br /&gt;
almoço de graça!&amp;#8221;&lt;br /&gt;
17:50   Fernando Ike - &amp;#8220;skytools, pgbouncer, plproxy&amp;#8221;&lt;br /&gt;
18:40   Diogo Biazus - PostgreSQL Br - &amp;#8220;Passado, Presente e Futuro&amp;#8221;&lt;/p&gt;
&lt;p&gt;Como vocês podem ver, temos ainda 2 vagas que estão sendo definidas pela comissão. Uma das vagas deverá ser de Geoprocessamento. Recebemos muitas propostas nesta área (5 ao todo) e estamos com dificuldades para escolher uma. Então, se a sua palestra não foi escolhida, aguarde mais um pouco. Você pode ser escolhido em breve.&lt;/p&gt;
&lt;p&gt;Este ano ainda contaremos com duas novidades na programação:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Os Lightning Talks são uma novidade importada do PGCon internacional, por sugestão do Josh Berkus quando veio ao Brasil durante o IX FISL. A idéia é que as pessoas podem dar um &amp;#8220;recado&amp;#8221; no estilo painel contendo até alguns slides (acho que uns 2 ou 3, por exemplo). Assim, serão até 12 apresentações relâmpago. A idéia é fazer algo mais descontraído e dar a oportunidade para os 5 minutos de fama para os participantes do evento. Segundo o Fernando Ike, os Lightning Talks no PGCon em Otawa foram uma parte muito interessante do evento, acho que as pessoas vão gostar. A chamada de trabalhos para os Lightning Talks devem abrir às vésperas do evento e terminar no primeiro dia do evento. O Sr. Dickson Guedes será o organizador desta parte do evento e prometeu até levar um sino (sugestão do Josh) para tocar no final dos 5 minutos de cada um. &lt;img src=&quot;http://www.midstorm.org/~telles/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/li&gt;
&lt;li&gt;Haverá uma pequena sala (com com capacidade aproximada de 25 pessoas) onde se pretende dar algumas palestras destinadas a incentivar novos desenvolvedores do PostgreSQL. Serão poucas vagas e os tópicos abordados serão bem avançados. Então se você está com a intenção de se tornar um desenvolvedor do PostgreSQL, está na hora de desenferrujar o seu C e ficar de olho no que estamos por enquanto chamando de &amp;#8220;hard talks&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bom, por enquanto é isso pessoal. Em breve estaremos atualizando o site do PGCon Brasil com a primeira versão oficial da grade. Lembre-se que o que apresentei aqui é apenas um rascunho da grade, sujeito a alterações sem aviso prévio.&lt;/p&gt;</content>
		<author>
			<name>Fabio Telles</name>
			<uri>http://www.midstorm.org/~telles</uri>
		</author>
		<source>
			<title type="html">SAVEPOINT » PostgreSQL</title>
			<subtitle type="html">Ideas not commited yet!</subtitle>
			<link rel="self" href="http://www.midstorm.org/~telles/category/informatica/postgresql/rss2"/>
			<id>http://www.midstorm.org/~telles/category/informatica/postgresql/rss2</id>
			<updated>2008-07-23T17:00:15+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">O mínimo que você deveria aprender para se defender de ataques de injeção de SQL no PostgreSQL</title>
		<link href="http://www.midstorm.org/~telles/2008/06/27/o-minimo-que-voce-deveria-aprender-para-se-defender-de-ataques-de-injecao-de-sql-no-postgresql/"/>
		<id>http://www.midstorm.org/~telles/?p=233</id>
		<updated>2008-06-27T16:24:55+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Sql_injection&quot;&gt;SQL Injection&lt;/a&gt; ou injeção de SQL é uma técnica de invasão de sistemas que se tornou famosa na Internet, mas pode ser utilizada em qualquer linguagem de programação. No entanto, na Internet temos uma combinação explosiva:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A aplicação está acessível para toda internet que possui milhares de usuários dispostos a quebrar seu sistema;&lt;/li&gt;
&lt;li&gt;O uso de linguagens de script fracamente tipadas em conjunto com  com tipos de dados fracamente tipados ajuda a abrir algumas brexas de segurança.&lt;/li&gt;
&lt;li&gt;O protocolo HTTP tem peculiaridades que quando mal utilizadas podem tornar uma aplicação web mais vulnerável como o uso de parâmetros GET.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;O exemplo clássico é o login de um usuário da aplicação. Você pede o nome e senha do usuário numa tela e depois envia um SQL com esta característica:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot;&gt;&lt;span&gt;SELECT&lt;/span&gt; TRUE &lt;span&gt;WHERE&lt;/span&gt; nome &lt;span&gt;=&lt;/span&gt; &lt;span&gt;'telles'&lt;/span&gt; &lt;span&gt;AND&lt;/span&gt; senha &lt;span&gt;=&lt;/span&gt; &lt;span&gt;'abizi'&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Na tela de login o usuário pode digitar no lugar da senha algo mais ou menos assim:&lt;/p&gt;
&lt;p&gt;USUÁRIO: admin&lt;br /&gt;
SENHA: &amp;#8216; OR 1=1 &amp;#8211;&lt;/p&gt;
&lt;p&gt;Ao substituir as variáveis o seu SQL ficaria assim:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot;&gt;&lt;span&gt;SELECT&lt;/span&gt; TRUE &lt;span&gt;WHERE&lt;/span&gt; nome &lt;span&gt;=&lt;/span&gt; &lt;span&gt;'admin'&lt;/span&gt; &lt;span&gt;AND&lt;/span&gt; senha &lt;span&gt;=&lt;/span&gt; &lt;span&gt;''&lt;/span&gt; &lt;span&gt;OR&lt;/span&gt; &lt;span&gt;1&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt; &lt;span&gt;--'&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2&gt;Segurança contra o SQL Injection&lt;/h2&gt;
&lt;h4&gt;Regra no mínimo privilégio&lt;/h4&gt;
&lt;p&gt;Veja que há uma série de problemas a serem analisados aqui. A primeira questão que qualquer sistema deve se preocupar em analisar é saber qual o potencial de destruição que o usuário vai ter se ele conseguir um ataque bem sucedido. Se o usuário que se conecta na aplicação é dono de objetos no banco de dados, como muitas aplicações gostam de fazer por uma questão de comodidade, você verá que o seu usuário terá permissões plenas sobre os seus objetos. Utilizando SQL Injection, ele poderá realizar operações como DROP, TRUNCATE, ALTER além do DELETE, INSERT, UPDATE e SELECT.&lt;/p&gt;
&lt;p&gt;Então a primeira regra que deve SEMPRE ser seguida a risca é que:&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&amp;#8220;O USUÁRIO QUE A APLICAÇÃO UTILIZA PARA SE CONECTAR NO BANCO DE DADOS JAMAIS DEVE SER O DONO DOS OBJETOS CRIADOS NO BANCO DE DADOS&amp;#8221;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Alguns artigos que tratam sobre SQL Injection ignoram solenemente esta recomendação. Alguns ficam desempregados inesperadamente. Então, precauções especiais devem ser tomadas em aplicações onde cada usuário da aplicação não tem seu próprio usuário criado no banco de dados - o que é comum em aplicações web com milhares de usuários que surgem sem controle do DBA. Você deve ter pelo menos 4 usuários para cada aplicação com este perfil:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Um usuário que é dono dos objetos criados no banco de dados. Este usuário deve estar sob controle somente e tão somente do DBA, tanto no ambiente de testes como em produção. Lembre-se que este usuário tem poderes plenos sobre estes objetos do banco de dados.&lt;/li&gt;
&lt;li&gt;Um usuário ou grupo de usuários destinado aos desenvolvedores com poderes específicos para as suas tarefas. Pode-se determinar que no ambiente de produção ele tenha permissão de SELECT em todas tabelas e sequências e no ambiente de produção tenha poderes de SELECT, INSERT, UPDATE e DELETE.&lt;/li&gt;
&lt;li&gt;Um usuário ou grupo de usuários destinado aos administradores da aplicação, que terão poderes específicos na aplicação como deletar registros ou atualizar valores em tabelas. Este usuário deve se conectar a partir de outro executável que não o utilizado pelos usuários normais. A aplicação utilizada para fins administrativos deve ter acesso restrito ao acesso local por exemplo. Este usuário terá permissões de DELETE, UPDATE e INSERT em tabelas que um usuário normal não terá permissão. Portanto, este usuário jamais deve ser utilizado em operações de rotina.&lt;/li&gt;
&lt;li&gt;Um usuário para os usuários normais da aplicação. Este usuário deve seguir a risca a regra no menor privilégio. Ele deve apenas as permissões para acessar os objetos estritamente necessários. Privilégios de UPDATE e DELETE devem ser concedidos com muita cautela. Operações deste tipo quando executadas sem uma clausula WHERE adequada podem ser desatrosas. É este usuário que será alvo de ataques de SQL Injection. Se você for rigoroso com as permissões para este usuário, limitará muito a dimensão dos estragos que podem acontecer no caso de um ataque bem sucedido.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Use criptografia, visões e funções&lt;/h4&gt;
&lt;p&gt;Feito isso, você já terá um ambiente muito mais seguro, com certeza. A próxima parte do nosso trabalho será realizar um tratamento dedicado às informações mais sensíveis do seu sistema. Identifique estes objetos com cuidado. Existem dados sigilosos que podem ser alvo de criptografia. Senhas jamais devem ser armazenados sem criptografia. Use uma função como MD5 para isso. Lembre-se que você não poderá saber qual é a senha armazenada no campo, apenas poderá verificar se uma senha é igual a que está armazenada. No entanto, se apenas um grupo específico precisa ter acesso a estas informações você deve restringir o acesso a elas. Quando você quer restringir o acesso a apenas uma coluna ou grupo de columas de uma tabela a melhor alternativa é criar uma visão com apenas as colunas que o usuário vai precisar. De permissão ao usuário acessar esta visão não permita que ele leia a tabela diretamente.&lt;/p&gt;
&lt;p&gt;Há casos em que a pessoa precisa alterar ou ler registros, mas você não quer que limitar a possibilidade de que o usuário altere todos os registros da tabela. Para isso, você pode criar funções que encapsulem toda a operação. Você passa para a função os parâmetros a serem alterados, a função checa a validade destes dados, faz todas as alterações em todas tabelas necessárias e retorna se realizou a operação com sucesso ou não, ou ainda retorna um valor desejado como se fosse um SELECT. O resultado disso é que você só precisa dar permissão ao usuário para executar a função e não precisa dar nenhum acesso a qualquer um dos objetos envolvidos na transação. Isto significa que o usuário só poderá realizar aquela transação especificada pela função, que se for bem codificada, evitará definitivamente qualquer chance de acesso indevido.&lt;/p&gt;
&lt;h4&gt;Procedimentos preparados&lt;/h4&gt;
&lt;p&gt;A terceira etapa é utilizar os procedimentos preparados ou &amp;#8220;prepared statements&amp;#8217;. Este procedimentos fazem com que você passe como parâmetros os valores a serem substituídos num comando SQL qualquer. As pessoas evitam utilizar este procedimento pois ele requer que você o execute em duas etapas: &lt;a href=&quot;http://www.postgresql.org/docs/8.3/static/sql-prepare.html&quot;&gt;preparar&lt;/a&gt; o procedimento e &lt;a href=&quot;http://www.postgresql.org/docs/8.3/static/sql-execute.html&quot;&gt;executar&lt;/a&gt; o procedimento. Quando executado com freqüência, os procedimentos preparados não só são mais seguros, como também apresentam um ganho de performance.&lt;/p&gt;
&lt;h4&gt;Dollar Quoting&lt;/h4&gt;
&lt;p&gt;A quarta etapa que você pode utilizar é peculiar ao PostgreSQL, e chama-se &amp;#8220;&lt;a href=&quot;http://www.postgresql.org/docs/8.3/static/sql-syntax-lexical.html&quot;&gt;dollar quoting&lt;/a&gt;&amp;#8220;. Ao invés colocar strings de caractere entre aspas simples em expressões SQL, você pode usar o $$ como em:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot;&gt;&lt;span&gt;SELECT&lt;/span&gt; TRUE &lt;span&gt;FROM&lt;/span&gt; users &lt;span&gt;WHERE&lt;/span&gt; name &lt;span&gt;=&lt;/span&gt; $$$$ &lt;span&gt;AND&lt;/span&gt; senha &lt;span&gt;=&lt;/span&gt; $$abizi$$;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Você ainda pode fazer coisas como:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot;&gt;&lt;span&gt;SELECT&lt;/span&gt; TRUE &lt;span&gt;FROM&lt;/span&gt; users &lt;span&gt;WHERE&lt;/span&gt; name &lt;span&gt;=&lt;/span&gt; $name$telles$name$ &lt;span&gt;AND&lt;/span&gt; senha &lt;span&gt;=&lt;/span&gt; $senha$abizi$senha$;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note que você pode colocar suas strings entre $$, $nome$, $senha$ ou qualquer outra coisa, tendo somente que começar e terminar com a mesma marca. Usar este tipo de notação no código SQL pode parecer um tanto grotesco inicialmente, mas quando você for escrever funções, ela pode tornar a sua vida muito mais simples, pois você não terá situações bizarras como um grupo de várias aspas simples ou contra barras. Com o dollar quoting, você não precisa se preocupar com as aspas simples.&lt;/p&gt;
&lt;h4&gt;Checar o tipo de dados&lt;/h4&gt;
&lt;p&gt;A próxima barreira de defesa na luta contra a injeção de SQL é checar o tipo de dados utilizado. Um tipo comum de ataque é por exemplo ingetar código em parâmetros GET do protocolo http. Se você espera um número, tenha certeza de que ele é um número antes de substituir a sua variável no seu código SQL. Uma forma eficiente de fazer isso é utilizar a função &amp;#8216;printf&amp;#8217;. Quase toda linguagem de programação possui um comando semelhante ao printf da linguagem C. A nossa string SQL utilizando printf ficaria alguma coisa assim:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot;&gt;SQL &lt;span&gt;=&lt;/span&gt; printf&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'SELECT TRUE FROM users WHERE nome = %s AND senha = %s'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt; nome&lt;span&gt;,&lt;/span&gt; senha&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;A questão aqui é que a função printf vai forçar o uso do tipo de dados correto na função SQL. Não é uma solução perfeita, mas pode evitar alguns problemas além de evitar a conversão implícita de tipos de dados, fonte de muitas dores de cabeça no banco de dados.&lt;/p&gt;
&lt;h4&gt;Escapar as strings&lt;/h4&gt;
&lt;p&gt;A barreira mais conhecida na proteção contra a injeção de SQL é o uso de funções que escapem as strings. Hoje a maioria das linguagens de programação possuem funções para escapar caracteres como aspas simples em strings. Veja que uma aspa simples pode fazer parte de uma string como em &amp;#8220;database&amp;#8217;s security&amp;#8221;. Para que uma string deste tipo seja aceita, é preciso escrevê-la desta forma numa expressão SQL:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot;&gt;&lt;span&gt;INSERT&lt;/span&gt; &lt;span&gt;INTO&lt;/span&gt; titulo &lt;span&gt;VALUES&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'database'&lt;/span&gt;&lt;span&gt;'s security'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note que existem duas aspas simples e não uma aspas dupla. Esta é a única forma de se adicionar aspas simples numa string em banco de dados. Você deve esperar que o seu usuário por qualquer motivo digite uma aspa simples em qualquer string. A não ser que você remova explicitamente as aspas simples da sua string antes de construir o seu comando SQL, você deverá sempre escapa-las. Se a sua linguagem de programação possuir uma função de escape de strings específica para o seu banco de dados, utilize-a no lugar de uma função genérica.&lt;/p&gt;
&lt;h4&gt;Conclusão&lt;/h4&gt;
&lt;p&gt;Os problemas de segurança em geral são criados por profissionais mal informados ou por desenvolvedores que acreditam que segurança é um fator supérfluo e que implementar todas as barreiras necessárias é muito trabalhoso. O descuido com a segurança chega num ponto onde muitos servidores web exibem suas mensagens de erro diretamente na tela do usuário, no ambiente de produção. O uso de técnicas de SQL Injection em ambiente que não implantaram todas as barreiras citadas e ainda oferecem de bandeja os erros da aplicação na tela é absolutamente devastador. O usuário consegue descobrir o nome de todas as tabelas e colunas da sua aplicação, alterar qualquer registro ou mesmo apagar todas as informações de todas tabelas. Não é incomum encontrarmos aplicações de grande porte com furos homéricos de segurança. Não é incomum sites famosos e grandes corporações sofrerem com o vazamento de informações, fraudes e perda de dados. O prejuízo é sempre maior do que o custo de implementar a segurança de forma correta na aplicação.&lt;/p&gt;
&lt;p&gt;Quando pensar novamente em segurança, lembre-se que a tarefa é de todos. Os ataques de SQL injections são muito simples de executar, a pondo de criarem a expressão &amp;#8220;&lt;a href=&quot;http://en.wikipedia.org/wiki/Script_kiddie&quot;&gt;Script kiddie&lt;/a&gt;&amp;#8221; para designar pessoas com pouco conhecimento técnico que utilizam receitas simples e eficientes para invadir sistemas. Não adiante a rede, o servidor e o banco de dados adotarem condutas rigorosas de segurança se você lança mão de aplicações (desenvolvidas por você ou por terceiros) que não tomam este tipo de precaução.&lt;/p&gt;</content>
		<author>
			<name>Fabio Telles</name>
			<uri>http://www.midstorm.org/~telles</uri>
		</author>
		<source>
			<title type="html">SAVEPOINT » PostgreSQL</title>
			<subtitle type="html">Ideas not commited yet!</subtitle>
			<link rel="self" href="http://www.midstorm.org/~telles/category/informatica/postgresql/rss2"/>
			<id>http://www.midstorm.org/~telles/category/informatica/postgresql/rss2</id>
			<updated>2008-07-23T17:00:15+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Jobs no PostgreSQL</title>
		<link href="http://coutinho.mondriantecnologia.com/archives/4"/>
		<id>http://coutinho.mondriantecnologia.com/archives/4</id>
		<updated>2008-06-27T16:00:21+00:00</updated>
		<content type="html">Um recurso interessante do Oracle e que não está presente nativamente no PostgreSQL é o agendamento de tarefas, popularmente conhecido como &quot;Jobs&quot;.  Embora o postgreSQL não saia do forno com o suporte a jobs, o PgAdmin3 instala o pgAgent, uma execelenete implementação de um sistema de jobs.

O pgAgent é tão ...</content>
		<author>
			<name>Nabucodonosor Coutinho</name>
			<uri>http://coutinho.mondriantecnologia.com</uri>
		</author>
		<source>
			<title type="html">Blog do Coutinho » postgresql</title>
			<subtitle type="html">ainda vou arrumar um nome pra esse blog!</subtitle>
			<link rel="self" href="http://coutinho.mondriantecnologia.com/archives/category/postgresql/rss"/>
			<id>http://coutinho.mondriantecnologia.com/archives/category/postgresql/rss</id>
			<updated>2008-06-27T16:00:21+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Minhas propostas ingênuas palestras para o PgCon BR 2008</title>
		<link href="http://dutras.blogspot.com/2008/06/minhas-propostas-ingnuas-palestras-para.html"/>
		<id>tag:blogger.com,1999:blog-6838506.post-4069226151786004579</id>
		<updated>2008-06-27T15:13:38+00:00</updated>
		<content type="html">&lt;p&gt;&lt;span class=&quot;post-body-first-line&quot;&gt;&lt;span class=&quot;post-body-first-letter&quot;&gt;E&lt;/span&gt;stou completamente sem originalidade&lt;/span&gt; — e sem tempo.  Há outras coisas sobre o que escrever, mas, assim como duas vezes já nos últimos meses (e a segunda desde ontem) vou seguir o Fernando &lt;span class=&quot;last-surname&quot;&gt;Ike&lt;/span&gt; com minha &lt;a href=&quot;http://www.midstorm.org/%7Efike/weblog/index.php/2008/06/25/minhas-propostas-toscas-para-pgcon-brasil-2008/&quot;&gt;exposição de propostas ingênuas de palestras&lt;/a&gt; para a &lt;a href=&quot;http://pgcon.postgresql.org.br/&quot;&gt;Conferência Brasileira de PostgreSQL 2008&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Lembrando que hoje (dia vinte e sete de junho do ano da Graça de dois mil e oito &amp;amp;c &amp;amp;c) é o último dia para apresentar as propostas.&lt;/p&gt;

&lt;h2&gt;Um elefante previdente: preparando-se para o futuro de seu sistema com uma boa
arquitetura e modelagem de dados em PostgreSQL.&lt;/h2&gt;

&lt;p&gt;Palestra&lt;/p&gt;

&lt;h3&gt;Público Alvo: intermediário&lt;/h3&gt;

&lt;h3&gt;Resumo&lt;/h3&gt;

&lt;p&gt;Freqüentemente vemos, em listas de discussões e outros fora de comunicações,
pessoas pedindo ajuda com problemas decorrentes de abordagens ingênuas de
arquitetura de sistemas, e dois dos aspectos mais problemáticos têm sido a
arquitetura e a modelagem de dados.  Muitas vezes os problemas só aparecem
quando sua correção é praticamente impossível.  Veremos quais conceitos
básicos de administração e modelagem de dados são mais críticos para um
sistema à prova de futuro, e como aplicá-los em sistemas PostgreSQL com alguns
exemplos básicos em SQL e D.&lt;/p&gt;

&lt;h3&gt;Descrição&lt;/h3&gt;

&lt;p&gt;Problemas de arquitetura: a tragédia do cliente servidor e a crise de
software.&lt;/p&gt;
&lt;p&gt;Manipulando os dados onde estão: evitar turismo de bits.&lt;/p&gt;
&lt;p&gt;Problemas de organização: saiba do que fala antes de abrir a boca.&lt;/p&gt;
&lt;p&gt;Tipos (abstratos) de dados e domínios SQL: evitando a confusão.&lt;/p&gt;
&lt;p&gt;Entidades e relacionamentos: cada coisa no seu porta-coisa.&lt;/p&gt;
&lt;p&gt;Restrições de integridade: deixe a base de dados cuidar de si.&lt;/p&gt;
&lt;p&gt;Problemas de modelagem: a otimização precoce é a raiz de toda sorte de males.&lt;/p&gt;
&lt;p&gt;Normalização: otimizando o gargalo mais comum.  Ou você quer mesmo fazer o disco se exercitar?&lt;/p&gt;
&lt;p&gt;Desnormalização: ¿¡tem certeza!?  Fazendo o disco trabalhar dobrado.&lt;/p&gt;

&lt;h2&gt;O elefante aparelhado: ferramental e processo de administração de dados em
PostgreSQL.&lt;/h2&gt;

&lt;p&gt;Tutorial (pode também ser resumido numa palestra).&lt;/p&gt;

&lt;h3&gt;Público Alvo: intermediário&lt;/h3&gt;

&lt;h3&gt;Resumo&lt;/h3&gt;

&lt;p&gt;Freqüentemente confunde-se modelagem e diagramação de dados, e aí vemos
pessoas tentando ‘tirar leite de pedra’: criar um modelo apenas com
ferramentas de diagramação, ou de mapeamento objeto-relacional.&lt;/p&gt;

&lt;p&gt;Pior ainda, o trabalho de administração de dados não se resume à modelagem.  A
documentação, a manutenção do ciclo de vida de uma base de dados, o apoio ao
desenvolvedor e ao usuário são também responsabilidades do administrador de
dados.&lt;/p&gt;

&lt;p&gt;Há toda uma variedade de ferramentas para auxiliar na administração de dados,
e pretendemos mostrar algumas ao longo do ciclo de vida da base.&lt;/p&gt;

&lt;h3&gt;Descrição&lt;/h3&gt;

&lt;p&gt;Documentação: requisitos, interfaces e regras de negócio.&lt;/p&gt;
&lt;p&gt;Rascunhos: cérebro, caneta e papel.&lt;/p&gt;
&lt;p&gt;O modelo de dados: seu editor de textos preferidos, e DDL.  Ou que tal algo
melhor?: a possibilidade próxima futura de DDL relacional no Alphora Dataphor
como uma interface relacional para PostgreSQL.&lt;/p&gt;
&lt;p&gt;O diagrama de dados: AutoDoc e SQL::Fairy, deixe o programa trabalhar por
você!&lt;/p&gt;
&lt;p&gt;Documentos: AutoDoc, SQL::Fairy, LaTεχ e DocBook.  Concentre-se no conteúdo,
não na formatação.&lt;/p&gt;
&lt;p&gt;Controle do ciclo de vida da base: versionamento, colaboração, e geração
automática dos produtos.&lt;/p&gt;</content>
		<author>
			<name>DUTRA, Leandro Guimarães Faria Corcete</name>
			<email>noreply@blogger.com</email>
			<uri>http://dutras.blogspot.com/search/label/Po%C5%BFtgreSQL</uri>
		</author>
		<source>
			<title type="html">Soli Deo Gloria</title>
			<link rel="self" href="http://dutras.blogspot.com/feeds/posts/default/-/Po%C5%BFtgreSQL"/>
			<id>tag:blogger.com,1999:blog-6838506</id>
			<updated>2008-07-22T20:00:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="pt-br">
		<title type="html">ribafs</title>
		<link href="http://ribafs.wordpress.com/2008/06/26/ajude-a-sustentar-a-wikipedia-sem-colocar-a-mao-no-bolso/"/>
		<id>http://ribafs.wordpress.com/?p=19</id>
		<updated>2008-06-26T23:37:41+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!&lt;/strong&gt;&lt;br /&gt;
…e também a pen drives, card drives, camisetas geeks, livros e mais! O &lt;a href=&quot;http://br-linux.org/&quot;&gt;BR-Linux&lt;/a&gt; e o &lt;a href=&quot;http://efetividade.net/&quot;&gt;Efetividade&lt;/a&gt; lançaram uma &lt;a href=&quot;http://br-linux.org/2008/campanha-wikipedia/&quot;&gt;campanha&lt;/a&gt; para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e &lt;a href=&quot;http://br-linux.org/2008/campanha-wikipedia/&quot;&gt;participe&lt;/a&gt; - quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!&lt;/p&gt;
&lt;p&gt;Em minhas aulas de PostgreSQL estarei dando o exemplo aos alunos, colaborando com os assuntos relacionados ao PostgreSQL e diretamente.&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ribafs.wordpress.com/19/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ribafs.wordpress.com/19/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ribafs.wordpress.com/19/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ribafs.wordpress.com/19/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ribafs.wordpress.com/19/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ribafs.wordpress.com/19/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ribafs.wordpress.com/19/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ribafs.wordpress.com/19/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ribafs.wordpress.com/19/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ribafs.wordpress.com/19/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ribafs.wordpress.com/19/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ribafs.wordpress.com/19/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ribafs.wordpress.com&amp;amp;blog=630184&amp;amp;post=19&amp;amp;subd=ribafs&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Ribamar FS</name>
			<uri>http://ribafs.wordpress.com</uri>
		</author>
		<source>
			<title type="html">PostgreSQL, o SGBD » PostgreSQL</title>
			<subtitle type="html">Um webblog sobre o SGBD PostgreSQL e assuntos correlatos</subtitle>
			<link rel="self" href="http://ribafs.wordpress.com/category/postgresql/feed"/>
			<id>http://ribafs.wordpress.com/category/postgresql/feed</id>
			<updated>2008-07-10T15:00:14+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!</title>
		<link href="http://dutras.blogspot.com/2008/06/ajude-sustentar-wikipdia-e-outros.html"/>
		<id>tag:blogger.com,1999:blog-6838506.post-1340930882353312855</id>
		<updated>2008-06-26T18:16:29+00:00</updated>
		<content type="html">&lt;p&gt;…e também a pen drives, card drives, camisetas geeks, livros e mais!  O &lt;a href=&quot;http://br-linux.org/&quot;&gt;BR-Linux&lt;/a&gt; e o &lt;a href=&quot;http://efetividade.net/&quot;&gt;Efetividade&lt;/a&gt; lançaram uma &lt;a href=&quot;http://br-linux.org/2008/campanha-wikipedia/&quot;&gt;campanha&lt;/a&gt; para ajudar a &lt;a href=&quot;http://wikimedia.org./&quot;&gt;Wikimedia&lt;/a&gt; Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line.  Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções.  Mas se não puder, veja as regras da promoção e &lt;a href=&quot;http://br-linux.org/2008/campanha-wikipedia/&quot;&gt;participe&lt;/a&gt; — quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!&lt;/p&gt;

&lt;p&gt;É uma idéia do &lt;a href=&quot;http://augustocampos.net/&quot;&gt;Augusto &lt;span class=&quot;last-surname&quot;&gt;Campos&lt;/span&gt;&lt;/a&gt;, da qual fiquei sabendo pelo &lt;a href=&quot;http://www.midstorm.org/~fike/weblog&quot;&gt;Fernando &lt;span class=&quot;last-surname&quot;&gt;Ike&lt;/span&gt;&lt;/a&gt; através do &lt;a href=&quot;http://planeta.postgresql.org.br&quot;&gt;Planeta&lt;/a&gt; &lt;a href=&quot;http://postgresql.org/&quot;&gt;PostgreSQL&lt;/a&gt; &lt;a href=&quot;http://postgresql.org.br/&quot;&gt;Brasil&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Escolhi, além da Wikipædia, o OpenSSH, que é fundamental para a operação segura da Internet (além dos meus sistemas!).  E viva a liberdade!&lt;/p&gt;</content>
		<author>
			<name>DUTRA, Leandro Guimarães Faria Corcete</name>
			<email>noreply@blogger.com</email>
			<uri>http://dutras.blogspot.com/search/label/Po%C5%BFtgreSQL</uri>
		</author>
		<source>
			<title type="html">Soli Deo Gloria</title>
			<link rel="self" href="http://dutras.blogspot.com/feeds/posts/default/-/Po%C5%BFtgreSQL"/>
			<id>tag:blogger.com,1999:blog-6838506</id>
			<updated>2008-07-22T20:00:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/06/26/ajude-a-sustentar-a-wikipedia-e-outros-projetos-sem-colocar-a-mao-no-bolso-e-concorra-a-um-eee-pc/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=290</id>
		<updated>2008-06-26T03:29:59+00:00</updated>
		<content type="html">&lt;p&gt;&amp;nbsp; Tamb&amp;eacute;m estou participando da campanha do Augusto Campos com o seus sites BR-LInux e Efetividade.&amp;nbsp; Voc&amp;ecirc; tamb&amp;eacute;m pode ajudar os projetos de Software Livre/C&amp;oacute;digo Aberto n&amp;atilde;o s&amp;oacute; participando dessa campanha mas contribuindo diretamente. &lt;img src=&quot;http://www.midstorm.org/~fike/weblog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; Eu escolhi o &lt;a href=&quot;http://creativecommons.org/&quot; target=&quot;_blank&quot;&gt;Creative Commons &lt;/a&gt;al&amp;eacute;m do &lt;a href=&quot;http://www.wikipedia.org&quot; target=&quot;_blank&quot;&gt;Wikipedia&lt;/a&gt; para essa campanha. J&amp;aacute; contribuo de forma pequenina para o &lt;a href=&quot;http://www.postgresql.org&quot; target=&quot;_blank&quot;&gt;PostgreSQL&lt;/a&gt; e &lt;a href=&quot;http://www.debian.org&quot; target=&quot;_blank&quot;&gt;Debian&lt;/a&gt;, e voc&amp;ecirc;. &lt;img src=&quot;http://www.midstorm.org/~fike/weblog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Ajude a sustentar a Wikip&amp;eacute;dia e outros projetos, sem colocar a m&amp;atilde;o no bolso, e concorra a um Eee PC!&lt;/strong&gt;&lt;br /&gt;&amp;hellip;e tamb&amp;eacute;m a pen drives, card drives, camisetas geeks, livros e mais! O &lt;a href=&quot;http://br-linux.org/&quot;&gt;BR-Linux&lt;/a&gt; e o &lt;a href=&quot;http://efetividade.net/&quot;&gt;Efetividade&lt;/a&gt; lan&amp;ccedil;aram uma &lt;a href=&quot;http://br-linux.org/2008/campanha-wikipedia/&quot;&gt;campanha&lt;/a&gt; para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se voc&amp;ecirc; puder doar diretamente, ou contribuir de outra forma, s&amp;atilde;o sempre melhores op&amp;ccedil;&amp;otilde;es. Mas se n&amp;atilde;o puder, veja as regras da promo&amp;ccedil;&amp;atilde;o e &lt;a href=&quot;http://br-linux.org/2008/campanha-wikipedia/&quot;&gt;participe&lt;/a&gt; - quanto mais divulga&amp;ccedil;&amp;atilde;o, maior ser&amp;aacute; a doa&amp;ccedil;&amp;atilde;o do BR-Linux e do Efetividade, e voc&amp;ecirc; ainda concorre a diversos brindes!&lt;/p&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Minhas propostas toscas para PGCon Brasil 2008</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/06/25/minhas-propostas-toscas-para-pgcon-brasil-2008/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=289</id>
		<updated>2008-06-25T14:34:06+00:00</updated>
		<content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp; Bom, para ajudar voc&amp;ecirc; que est&amp;aacute; inibido em enviar uma proposta de palestra para PGCon Brasil 2008, vou publicar aqui as tr&amp;ecirc;s proposta que enviei at&amp;eacute; ent&amp;atilde;o: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;strong&gt;&lt;font size=&quot;4&quot;&gt;A primeira&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size=&quot;4&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; T&amp;iacute;tulo: HA em PostgreSQL: O Elefante dispon&amp;iacute;vel para al&amp;eacute;m do infinito&lt;br /&gt;Tipo: Palestra&lt;br /&gt;P&amp;uacute;blico Alvo: Intermedi&amp;aacute;rio&lt;br /&gt;Resumo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alta-Disponibilidade para banco de dados &amp;eacute; um das tarefas mais dif&amp;iacute;ceis para qualquer profissional de TI, os desafios est&amp;atilde;o muito al&amp;eacute;m do que somente trocar um endere&amp;ccedil;o IP. Esta palestra tem como objetivo mostrar as estrat&amp;eacute;gias e ferramentas poss&amp;iacute;veis de usar para Alta-Disponibilidade em PostgreSQL e tamb&amp;eacute;m mostrar o que n&amp;atilde;o funciona.&lt;/p&gt;
&lt;p&gt; Descri&amp;ccedil;&amp;atilde;o (at&amp;eacute; 3000 caracteres):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Existe um mito corriqueiro que alta-disponibilidade basta ter duas m&amp;aacute;quinas com um servi&amp;ccedil;o simples de alta-disponibilidade ou que &amp;eacute; simples montar um Cluster Multi-Master que a Disponibilidade do Banco de Dados est&amp;aacute; garantida. A simplicidade de encontrar a solu&amp;ccedil;&amp;atilde;o pode significar o fracasso de um projeto. Pois, para um projeto bem-sucedido de Alta-Disponibilidade &amp;eacute; necess&amp;aacute;rio avaliar as muitas vari&amp;aacute;veis que podem significar em pontos de falhas, tratando-se de&lt;br /&gt; banco de dados as vari&amp;aacute;veis aumentam significativamente porque ter&amp;aacute; que avaliar se um projeto de Alta-Disponibilidade &amp;eacute; em uma rede LAN ou WAN, Ass&amp;iacute;ncrono ou S&amp;iacute;ncrono, aplica&amp;ccedil;&amp;atilde;o est&amp;aacute; preparada para suportar replica&amp;ccedil;&amp;atilde;o ou trabalhar em cluster.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Esta palestra visa desmitificar a id&amp;eacute;ia simplista de um projeto de Alta-Disponibilidade em Banco de Dados (PostgreSQL) e mostrar solu&amp;ccedil;&amp;otilde;es com as principais ferramentas com suas funcionalidades e quais s&amp;atilde;o as melhores solu&amp;ccedil;&amp;otilde;es de Alta-Disponibilidade para essas ferramentas. Dentre elas, ser&amp;aacute; citado: PgBouncer, PL/Proxy, PgPool-2, Slony, Log&lt;br /&gt; Shipping, Sequoia, etc&amp;#8230;&lt;br /&gt; &lt;font color=&quot;#888888&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;strong&gt;&lt;font size=&quot;4&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;strong&gt;&lt;font size=&quot;4&quot;&gt;A segunda&lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size=&quot;4&quot;&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div align=&quot;left&quot;&gt; T&amp;iacute;tulo: skytools, pgbouncer, plproxy&lt;br /&gt;Tipo: Palestra&lt;br /&gt;P&amp;uacute;blico Alvo: Intermedi&amp;aacute;rio&lt;br /&gt;Resumo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nos &amp;uacute;ltimos anos o PostgreSQL tem aumentado sua participa&amp;ccedil;&amp;atilde;o em empresas em &amp;aacute;reas importantes das mesmas. Com isso problemas como performance com grande quantidade de usu&amp;aacute;rios e aumentar disponibilidade do banco de dados em ambientes que precisam de 99,9% do ano dispon&amp;iacute;vel. Por falta de op&amp;ccedil;&amp;otilde;es dispon&amp;iacute;veis em Software Livre/C&amp;oacute;digo Aberto empresas como Skype criaram suas pr&amp;oacute;prias ferramentas e liberaram como Software Livre/C&amp;oacute;digo Aberto como&lt;br /&gt; SkyTools, PlProxy, PgBouncer. Essa palestra tem com objetivo mostrar um pouco dessas ferramentas.&lt;/div&gt;
&lt;p&gt; &lt;strong&gt;&lt;font size=&quot;4&quot;&gt;A terceira&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font size=&quot;4&quot;&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div align=&quot;left&quot;&gt; T&amp;iacute;tulo: Sinergia PostgreSQL e Debian, o melhor SGDB com o melhor SO.&lt;br /&gt;Tipo: Palestra&lt;br /&gt;P&amp;uacute;blico Alvo: Iniciante&lt;br /&gt;Resumo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; O PostgreSQL &amp;eacute; considerado o melhor banco de dados em Software Livre/C&amp;oacute;digo Aberto atualmente e a sinergia entre o PostgreSQL e o Debian &amp;eacute; bem antiga e muito respeitada. Muitos instalam, configuram ou personalizam sem usar as ferramentas dispon&amp;iacute;veis no Debian aumentando ainda mais a extenuante tarefa de administrar um banco de dados. Esta&lt;br /&gt; palestra visa demonstrar como gerenciar corretamente o PostgreSQL no Debian como tamb&amp;eacute;m demonstrar como funciona o time de empacotamento do PostgreSQL, os pacotes dependentes e extens&amp;otilde;es dispon&amp;iacute;veis do&lt;br /&gt; PostgreSQL no Debian, a possibilidade de gerenciar m&amp;uacute;ltiplas inst&amp;acirc;ncias. Enfim, ajudar muitos DBA&amp;#8217;s e administradores de rede e sistema a ter mais tempo para tomar um caf&amp;eacute;, cerveja e fam&amp;iacute;lia.&lt;/div&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Prorrogado prazo para enviar proposta de palestras para PGCon Brasil 2008</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/06/25/prorrogado-prazo-para-enviar-proposta-de-palestras-para-pgcon-brasil-2008/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=288</id>
		<updated>2008-06-25T04:09:07+00:00</updated>
		<content type="html">&lt;p&gt;&amp;nbsp; O &lt;a href=&quot;http://postgreslogia.wordpress.com/&quot; target=&quot;_blank&quot;&gt;Leonardo C&amp;eacute;zar&lt;/a&gt; &lt;a href=&quot;javascript:void(0);/*1214366796532*/&quot;&gt;enviou&lt;/a&gt; para lista de discuss&amp;atilde;o &lt;a href=&quot;javascript:void(0);/*1214366908951*/&quot;&gt;pg-geral&lt;/a&gt; que foi prorrogado a inscri&amp;ccedil;&amp;atilde;o de proposta de palestras para &lt;a href=&quot;javascript:void(0);/*1214366924286*/&quot;&gt;PGCon Brasil 2008&lt;/a&gt;. Aproveite que foi prorrogado envie uma proposta e compartilhe seu conhecimento com o banco de dados que nunca esquece (PostgreSQL).&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&amp;nbsp;&lt;img width=&quot;696&quot; height=&quot;207&quot; src=&quot;http://pgcon.postgresql.org.br/img/topo.jpg&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Dica: remover os comentários do postgresql.conf</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/06/19/dica-remover-os-comentarios-do-postgresqlconf/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=286</id>
		<updated>2008-06-19T15:19:33+00:00</updated>
		<content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Esses dias estava relat&amp;oacute;rio para um cliente uma instala&amp;ccedil;&amp;atilde;o e configura&amp;ccedil;&amp;atilde;o . Precisava adicionar ao relat&amp;oacute;rio as configura&amp;ccedil;&amp;otilde;es&amp;nbsp; do &lt;a href=&quot;http://www.postgresql.org&quot; target=&quot;_blank&quot;&gt;PostgreSQL&lt;/a&gt; e tive um pequeno problema para resolver, colocar todas as quinhentas (507 precisamente) com os coment&amp;aacute;rios ou somente as linhas que foram alteradas?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Depois de algumas horas apanhando de express&amp;atilde;o regular, lembei que o pgtesttool do &lt;a href=&quot;http://www.timbira.com/&quot; target=&quot;_blank&quot;&gt;Euler&lt;/a&gt; remove as linhas com os coment&amp;aacute;rios do postgresql.conf.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Basicamente &amp;eacute;:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;

	&lt;!--
		@page { margin: 2cm }
		P { margin-bottom: 0.21cm }
	--&gt;
	
&lt;p class=&quot;western&quot;&gt;&lt;font size=&quot;2&quot;&gt;sed -e &amp;#8216;/^[[:space:]]&lt;/font&gt;&lt;font size=&quot;1&quot;&gt;/&lt;/font&gt;d&amp;#8217; -e &amp;#8216;/^#/d&amp;#8217; -e &amp;#8216;/^$/d&amp;#8217; postgresql.conf&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="pt-br">
		<title type="html">ribafs</title>
		<link href="http://ribafs.wordpress.com/2008/06/15/postgresql-curso-online/"/>
		<id>http://ribafs.wordpress.com/?p=17</id>
		<updated>2008-06-15T21:56:16+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;Nasce mais um site sobre PostgreSQL.&lt;/p&gt;
&lt;p&gt;Este site nasceu na necessidade de reunir material para um curso sobre PostgreSQL, portanto esse nome.&lt;/p&gt;
&lt;p&gt;Conta com módulos sobre programação no cliente e no servidor, administração e projeto de bancos de dados.&lt;/p&gt;
&lt;p&gt;Reuni o material e gerei PDFs de cada aula e também de cada módulo. Os três módulos juntos resultam em mais de 700 páginas.&lt;/p&gt;
&lt;p&gt;Além do material para o curso que compartilho, também conta com uma grande quantidade de tutoriais de diversos assuntos, dicas, diagramas de modelos, exercícios e muita informação sobre o SGBD PostgreSQL.&lt;/p&gt;
&lt;p&gt;Aqui - &lt;a title=&quot;PostgreSQL - Curso Online&quot; href=&quot;http://pg.ribafs.net&quot; target=&quot;_blank&quot;&gt;http://pg.ribafs.net&lt;/a&gt;&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/ribafs.wordpress.com/17/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/ribafs.wordpress.com/17/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/ribafs.wordpress.com/17/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/ribafs.wordpress.com/17/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/ribafs.wordpress.com/17/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/ribafs.wordpress.com/17/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/ribafs.wordpress.com/17/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/ribafs.wordpress.com/17/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/ribafs.wordpress.com/17/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/ribafs.wordpress.com/17/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/ribafs.wordpress.com/17/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/ribafs.wordpress.com/17/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=ribafs.wordpress.com&amp;amp;blog=630184&amp;amp;post=17&amp;amp;subd=ribafs&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Ribamar FS</name>
			<uri>http://ribafs.wordpress.com</uri>
		</author>
		<source>
			<title type="html">PostgreSQL, o SGBD » PostgreSQL</title>
			<subtitle type="html">Um webblog sobre o SGBD PostgreSQL e assuntos correlatos</subtitle>
			<link rel="self" href="http://ribafs.wordpress.com/category/postgresql/feed"/>
			<id>http://ribafs.wordpress.com/category/postgresql/feed</id>
			<updated>2008-07-10T15:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Ottawa: PGCon 2008 conclusões…</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/06/14/ottawa-pgcon-2008-conclusoes/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=283</id>
		<updated>2008-06-14T21:16:13+00:00</updated>
		<content type="html">&lt;p&gt;&lt;!--adsense--&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Com muito atraso mas agora sobrou um tempinho para escrever melhor sobre a PGCon 2008. Vale a pena ir num evento fora mais espec&amp;iacute;fico porque &amp;eacute; como o FISL ou outros eventos de Software Livre/C&amp;oacute;digo Aberto no Brasil. &amp;Eacute; algo mais intimista e com parte t&amp;eacute;cnica bem avan&amp;ccedil;ada.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Aquelas conversas de entusiastas que temos no Brasil,&amp;nbsp; na PGCon elas eram diminutas, maior parte das discuss&amp;otilde;es eram focadas em problemas t&amp;eacute;cnicos, curiosidades culturais. Tenho que agradecer imensamente o &lt;a href=&quot;http://fxjr.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Francisco Figueiredo Jr.&lt;/a&gt; pela paci&amp;ecirc;ncia e presteza por me ajudar (praticamente co-palestrante) na palestra. A palestra ficou um pouco deficiente pois o &lt;a href=&quot;http://www.timbira.com&quot; target=&quot;_blank&quot;&gt;Euler&lt;/a&gt; n&amp;atilde;o conseguiu o visto para entrar no Canad&amp;aacute; &amp;agrave; tempo de ir para PGCon. M&amp;eacute;rito que seja dito, essa paletra tem todo o m&amp;eacute;rito do Euler de ter sido realizadae espero que ano que vem ele esteja l&amp;aacute; porque eu n&amp;atilde;o vou de novo, s&amp;oacute; de pensar em dez horas de avi&amp;atilde;o j&amp;aacute; me d&amp;aacute; calafrios.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp; A PGCon me surpreendeu pela maneira que as empresas portaram-se durante o evento, n&amp;atilde;o era o esquema das empresas daqui do &amp;quot;&lt;em&gt;&lt;strong&gt;toma l&amp;aacute; da c&amp;aacute;&lt;/strong&gt;&lt;/em&gt;&amp;quot;. Eles patrocinam e incentivam pois sabem que o retorno indireto (melhora do PostgreSQL) &amp;eacute; proporcional ou maior que ter a melhor posi&amp;ccedil;&amp;atilde;o do logo da empresa no site ou na camiseta do evento.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; Para quem &amp;eacute; usu&amp;aacute;rio, entusiasta ou quer contribuir com o PostgreSQL, mais que recomendado ir para Ottawa na PGCon, conhecimento e experi&amp;ecirc;ncia inesquec&amp;iacute;vel. Principalmente pelo fato que a cidade de Ottawa em maio est&amp;aacute; maravilhosamente linda com muitos eventos acontecendo com a chegada do ver&amp;atilde;o no hemisf&amp;eacute;rio norte. Com tempo, posto melhor sobre Ottawa e posto umas fotos. &lt;img src=&quot;http://www.midstorm.org/~fike/weblog/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Validação de CPF com Pl/ PgSQL</title>
		<link href="http://postgresqlbr.blogspot.com/2008/06/validao-de-cpf-com-pl-pgsql.html"/>
		<id>tag:blogger.com,1999:blog-3371915898459901668.post-2855521485586088268</id>
		<updated>2008-06-08T14:20:36+00:00</updated>
		<content type="html">A partir de hoje passamos a divulgar algoritmos de funções e consultas que sejam de utilidade pública. A validação de CPF com Pl/ PgSQL foi escolhida em primeiro lugar por ser um algoritmo simples mas bastante útil (além disto, procurei em vários sites e não encontrei um exemplo em PL/ PGSQL).&lt;br /&gt;&lt;br /&gt;O CPF é utilizado por muitos sistemas brasileiros como identificação dos indivíduos.  Validar o CPF é  fazer a verificação dos dois últimos dígitos que são gerados a partir dos nove primeiros. O código abaixo foi uma tradução mais ou menos literal do código em javascript &lt;a href=&quot;http://webmasters.neting.com/msg07743.html&quot;&gt;deste site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Talvez possa ser feita otimização ou melhoria neste algoritmo, mas a idéia é que vocês o melhorem e atualizem neste site. Estejam à vontade para utilizar e compartilhar este código.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;CREATE OR REPLACE FUNCTION CPF_Validar(par_cpf varchar(11)) RETURNS integer AS $$&lt;/span&gt;&lt;br /&gt;&lt;span&gt;-- ROTINA DE VALIDAÇÃO DE CPF&lt;/span&gt;&lt;br /&gt;&lt;span&gt;-- Conversão para o PL/ PGSQL: Cláudio Leopoldino - http://postgresqlbr.blogspot.com/&lt;/span&gt;&lt;br /&gt;&lt;span&gt;-- Algoritmo original: http://webmasters.neting.com/msg07743.html&lt;/span&gt;&lt;br /&gt;&lt;span&gt;-- Retorna 1 para CPF correto.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    x real;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    y real; --Variável temporária&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    soma integer;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    dig1 integer; --Primeiro dígito do CPF&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    dig2 integer; --Segundo dígito do CPF&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    len integer; -- Tamanho do CPF&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    contloop integer; --Contador para loop&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    val_par_cpf varchar(11); --Valor do parâmetro&lt;/span&gt;&lt;br /&gt;&lt;span&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    -- Teste do tamanho da string de entrada&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    IF char_length(par_cpf) = 11 THEN&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    ELSE&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        RAISE NOTICE 'Formato inválido: %',$1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        RETURN 0;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    END IF;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    -- Inicialização&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    x := 0;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    soma := 0;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    dig1 := 0;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    dig2 := 0;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    contloop := 0;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    val_par_cpf := $1; --Atribuição do parâmetro a uma variável interna&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    len := char_length(val_par_cpf);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    x := len -1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    --Loop de multiplicação - dígito 1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    contloop :=1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    WHILE contloop = (len -2) LOOP&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        y := CAST(substring(val_par_cpf  from contloop for 1) AS NUMERIC);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        soma := soma + ( y * x);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        x := x - 1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        contloop := contloop +1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    dig1 := 11 - CAST((soma % 11) AS INTEGER);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    if (dig1 = 10) THEN dig1 :=0 ; END IF;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    if (dig1 = 11) THEN dig1 :=0 ; END IF;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;        -- Dígito 2&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    x := 11; soma :=0;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    contloop :=1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    WHILE contloop = (len -1) LOOP&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        soma := soma + CAST((substring(val_par_cpf FROM contloop FOR 1)) AS REAL) * x;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        x := x - 1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;        contloop := contloop +1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    dig2 := 11 - CAST ((soma % 11) AS INTEGER);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    IF (dig2 = 10) THEN dig2 := 0; END IF;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    IF (dig2 = 11) THEN dig2 := 0; END IF;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    --Teste do CPF&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    IF ((dig1 || '' || dig2) = substring(val_par_cpf FROM len-1 FOR 2)) THEN&lt;/span&gt;&lt;br /&gt;&lt;span&gt;         RETURN 1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    ELSE&lt;/span&gt;&lt;br /&gt;&lt;span&gt;         RAISE NOTICE 'DV do CPF Inválido: %',$1;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;         RETURN 0;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    END IF;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;$$ LANGUAGE PLPGSQL;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Meu Blog de PostgreSQL - http://postgresqlbr.blogspot.com/
- Cláudio Bezerra Leopoldino&lt;/div&gt;</content>
		<author>
			<name>cbleopoldino</name>
			<email>noreply@blogger.com</email>
			<uri>http://postgresqlbr.blogspot.com/search/label/PostgreSQL</uri>
		</author>
		<source>
			<title type="html">Meu Blog de PostgreSQL!!!</title>
			<link rel="self" href="http://postgresqlbr.blogspot.com/feeds/posts/default/-/PostgreSQL"/>
			<id>tag:blogger.com,1999:blog-3371915898459901668</id>
			<updated>2008-07-18T16:00:27+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Uso de SET em Funções Pl/PgSQL</title>
		<link href="http://postgresqlbr.blogspot.com/2008/05/uso-de-set-em-funes-plpgsql.html"/>
		<id>tag:blogger.com,1999:blog-3371915898459901668.post-5102002658321886870</id>
		<updated>2008-06-06T10:46:55+00:00</updated>
		<content type="html">Na versão 8.3 do PostgreSQL foi implementado um recurso interessante, que permite a parametrização da execução de uma função utilizando o comando SET no momento da sua criação. Desta forma, a configuração é alterada apenas durante a sua execução, retornando aos valores prévios após o seu encerramento.&lt;br /&gt;&lt;br /&gt;Valores de tablespace padrão (default_tablespace), encoding do cliente (client_encoding) entre outros são definidos de forma explícita, de modo que se force o comportamento esperado da função não importando que programa faça a sua chamada de execução.&lt;br /&gt;&lt;br /&gt;Existe também a opção de utilização da cláusula FROM CURRENT para fazer com que a alteração de configuração seja mantida após a execução da função.&lt;br /&gt;&lt;br /&gt;Nem todos os parâmetros de execução podem ser alterados com o comando SET dentro de uma função. Os erros são revelados no momento de criação da função.&lt;br /&gt;&lt;br /&gt;O comando &lt;a href=&quot;http://postgresqlbr.blogspot.com/2007/08/o-comando-show.html&quot;&gt;SHOW&lt;/a&gt; mostra a lista de parâmetros e seus valores correntes.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Criação de Função com Parâmetros de Configuração&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O código abaixo mostra a criação de uma função que atualiza a tabela salário. Após o corpo da função são definidos os valores dos itens de configuração array_nulls, default_tablespace, commit_delay e client_encoding.&lt;br /&gt;&lt;br /&gt;CREATE TABLE SALARIO (cod integer PRIMARY KEY, provento real);&lt;br /&gt;INSERT INTO SALARIO VALUES (1, 1000.00);&lt;br /&gt;INSERT INTO SALARIO VALUES (2, 100.00);&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION salario_aumento() RETURNS BOOLEAN AS $&lt;br /&gt;BEGIN&lt;br /&gt; UPDATE SALARIO SET provento = provento * 1.1;&lt;br /&gt; RETURN true;&lt;br /&gt;END;&lt;br /&gt;$  LANGUAGE plpgsql&lt;br /&gt;&lt;span&gt;    SET array_nulls  = OFF&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    SET default_tablespace = 'pg_default'&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    SET commit_delay TO 10&lt;/span&gt;&lt;br /&gt;&lt;span&gt;    SET client_encoding TO UNICODE&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Mantendo Alterações na Configuração&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O código abaixo mostra a criação de uma função na qual é alterado e mantido o valor do client_encoding. A cláusula FROM CURRENT indica que parâmetro terá o valor de configuração que foi alterado mantido.&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION salario_parametros() RETURNS BOOLEAN AS $&lt;br /&gt;BEGIN&lt;br /&gt; UPDATE SALARIO SET provento = provento * 1.1;&lt;br /&gt;     RETURN true;&lt;br /&gt;END;&lt;br /&gt;$  LANGUAGE plpgsql&lt;br /&gt; SET client_encoding TO UNICODE&lt;br /&gt; SET client_encoding &lt;span&gt;FROM CURRENT&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Ressalva no Uso de SET em Funções&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Alguns dos itens de configuração não são alteráveis pelo comando SET dentro de uma função. Neste caso, será retornado erro no ato da criação da função. No exemplo abaixo, tanto o log_checkpoints quanto o transaction_isolation não puderam ser alterados no escopo de uma função.&lt;br /&gt;&lt;br /&gt;-- Não funcionaram&lt;br /&gt;CREATE OR REPLACE FUNCTION salario_parametros_teste() RETURNS BOOLEAN AS $&lt;br /&gt;BEGIN&lt;br /&gt; UPDATE SALARIO SET provento = provento * 1.1;&lt;br /&gt;     RETURN true;&lt;br /&gt;END;&lt;br /&gt;$  LANGUAGE plpgsql&lt;br /&gt; SET log_checkpoints = ON&lt;br /&gt; SET transaction_isolation = SERIALIZABLE;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;ERROR:  parameter &quot;log_checkpoints&quot; cannot be changed now&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;********** Error **********&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;ERROR: parameter &quot;log_checkpoints&quot; cannot be changed now&lt;/span&gt;&lt;br /&gt;&lt;span&gt;SQL state: 55P02&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Meu Blog de PostgreSQL - http://postgresqlbr.blogspot.com/
- Cláudio Bezerra Leopoldino&lt;/div&gt;</content>
		<author>
			<name>cbleopoldino</name>
			<email>noreply@blogger.com</email>
			<uri>http://postgresqlbr.blogspot.com/search/label/PostgreSQL</uri>
		</author>
		<source>
			<title type="html">Meu Blog de PostgreSQL!!!</title>
			<link rel="self" href="http://postgresqlbr.blogspot.com/feeds/posts/default/-/PostgreSQL"/>
			<id>tag:blogger.com,1999:blog-3371915898459901668</id>
			<updated>2008-07-18T16:00:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Chamada de Trabalhos para o PGCon Brasil 2008</title>
		<link href="http://www.midstorm.org/~telles/2008/06/03/chamada-de-trabalhos-para-o-pgcon-brasil-2008/"/>
		<id>http://www.midstorm.org/~telles/?p=229</id>
		<updated>2008-06-03T17:45:55+00:00</updated>
		<content type="html">&lt;p&gt;Agora é a sua vez de mandar uma proposta de palestra para o &lt;a href=&quot;http://pgcon.postgresql.org.br/&quot;&gt;PGCon Brasil 2008&lt;/a&gt;. A &lt;a href=&quot;http://pgcon.postgresql.org.br/chamadas.html&quot;&gt;chamada&lt;/a&gt; já foi publicada e se encerra no dia 22/06. Portanto não perca tempo e mande logo a sua proposta. Está em dúvida sobre qual palestra submeter??? Mande mais de uma! &lt;img src=&quot;http://www.midstorm.org/~telles/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Está esperando o que??? Ah&amp;#8230; você conhece uma pessoa que é fera em PostgreSQL? Convide-o a participar também! E não deixe de &lt;a href=&quot;http://pgcon.postgresql.org.br/divulgue.html&quot;&gt;divulgar&lt;/a&gt; o evento!&lt;/p&gt;</content>
		<author>
			<name>Fabio Telles</name>
			<uri>http://www.midstorm.org/~telles</uri>
		</author>
		<source>
			<title type="html">SAVEPOINT » PostgreSQL</title>
			<subtitle type="html">Ideas not commited yet!</subtitle>
			<link rel="self" href="http://www.midstorm.org/~telles/category/informatica/postgresql/rss2"/>
			<id>http://www.midstorm.org/~telles/category/informatica/postgresql/rss2</id>
			<updated>2008-07-23T17:00:15+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PGCon 2008: Segundo dia</title>
		<link href="http://www.midstorm.org/~fike/weblog/2008/06/02/pgcon-2008-segundo-dia/"/>
		<id>http://www.midstorm.org/~fike/weblog/?p=277</id>
		<updated>2008-06-02T03:44:39+00:00</updated>
		<content type="html">&lt;p&gt;&amp;nbsp;Hoje foi um dia tenso, a primeira palestra com tradu&amp;ccedil;&amp;atilde;o simult&amp;acirc;nea portugu&amp;ecirc;s-ingl&amp;ecirc;s na PGCON (a minha). O Francisco Figueiredo Jr. gentilmente aceito a minha proposta insana de ser o tradutor da palestra. Tinha um p&amp;uacute;blico grande para uma desconhecido como eu (100). Foi uma experi&amp;ecirc;ncia boa mas faz pensar em rever algumas prioridades&amp;#8230; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; O que vi no segundo dia, &lt;a href=&quot;http://www.pgcon.org/2008/schedule/events/59.en.html&quot; target=&quot;_blank&quot;&gt;Approximate Search&lt;/a&gt; (Enrico Pirozzi), &lt;a href=&quot;http://www.pgcon.org/2008/schedule/events/77.en.html&quot; target=&quot;_blank&quot;&gt;Security-Enhanced PostgreSQL&lt;/a&gt; (Kaigai Kohel), &lt;a href=&quot;http://www.pgcon.org/2008/schedule/events/64.en.html&quot; target=&quot;_blank&quot;&gt;PostgreSQL Project and Release Management&lt;/a&gt; (Peter Eisentraut), &lt;a href=&quot;http://www.pgcon.org/2008/schedule/events/93.en.html&quot; target=&quot;_blank&quot;&gt;Greg Mullane Sabino&lt;/a&gt; (Bucardo). N&amp;atilde;o consegui assistir as palestras do pessoal do skype mas foram bem comentadas.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;A conclus&amp;atilde;o fica para um pr&amp;oacute;ximo post. ;)&amp;nbsp;&amp;nbsp;&lt;/p&gt;</content>
		<author>
			<name>Fernando Ike</name>
			<uri>http://www.midstorm.org/~fike/weblog</uri>
		</author>
		<source>
			<title type="html">Memnemonics fike’s » postgresql</title>
			<subtitle type="html">Just another WordPress weblog</subtitle>
			<link rel="self" href="http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2"/>
			<id>http://www.midstorm.org/~fike/weblog/index.php/category/postgresql/rss2</id>
			<updated>2008-07-22T16:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="pt">
		<title type="html">Instalando e Implementando DBI-LINK no PostgreSQL</title>
		<link href="http://keniamilene.wordpress.com/2008/05/29/instalando-e-implementando-dbi-link-no-postgresql/"/>
		<id>http://keniamilene.wordpress.com/?p=81</id>
		<updated>2008-05-29T20:01:04+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Existem ocasiões onde temos 2 servidores distintos e precisamos de um merge dessas informações, como obter o retorno de um select se tenho dados em 2 servidores separados ???????&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Seus problemas acabaram!!!! &amp;#8230; Nesse caso temos 2 soluções &lt;strong&gt;DBLINK e DBI-LINK&lt;/strong&gt;, sendo que se os 2 servidores forem postgres, use dblink mas se um for postgres e outro for Oracle, Mysql ou seja la qual banco &amp;#8230; usamos o dbi-link.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Vendo o site da &lt;a title=&quot;PGCON 2008 INTERNACIONAL&quot; href=&quot;http://www.pgcon.org/2008/&quot; target=&quot;_blank&quot;&gt;pgcon 2008 Internacional&lt;/a&gt; achei uma palestra muito bacana do &lt;a title=&quot;BLOG DAVID FETTER&quot; href=&quot;http://people.planetpostgresql.org/dfetter/&quot; target=&quot;_blank&quot;&gt;David Fetter&lt;/a&gt; sobre o &lt;a title=&quot;DBI-LINK&quot; href=&quot;http://www.pgcon.org/2008/schedule/events/88.en.html&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;DBI-LINK  3.0&lt;/strong&gt;&lt;/a&gt; resolvi testar esse bicho &amp;#8230; e querem saber ??? é muito bacana !!!!!!.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Antes de começar só vamoslembrar que quando usamos esse tipo de recurso temos que levar em conta que ficamos “refens” da rede, seja interna ou externa, uma vez que as informações estão em servidores distintos&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Instalando o postgres&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Baixando pacotes &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;# aptitude install ssh&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
# aptitude install gcc&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;# aptitude install make&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
# aptitude install libreadline-dev&lt;br /&gt;
# aptitude install zlib1gdev&lt;br /&gt;
# aptitude install zlibc&lt;br /&gt;
# aptitude install zlib1g-dev&lt;br /&gt;
# aptitude install libio-zlib-perl&lt;br /&gt;
# aptitude install perl&lt;br /&gt;
# aptitude install libyaml-perl&lt;br /&gt;
# aptitude install libconfig-yaml-perl&lt;br /&gt;
# aptitude install libyaml-syck-perl&lt;br /&gt;
# aptitude install libtest-yaml-meta-perl&lt;br /&gt;
# aptitude install libtest-yaml-valid-perl&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Compilando &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;$ tar -xvzf postgresql-8.3.1.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ mv postgresql-8.3.1 postgresql-8.3&lt;br /&gt;
$ cd postgresql-8.3&lt;br /&gt;
$ cd src/include/&lt;br /&gt;
$ vi pg_config_manual.h&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;#define BLCKSZ  8192 &amp;#8211;&lt;/span&gt; Usado em BI por isso o bloco de gravação é maior&lt;span&gt;&lt;br /&gt;
#define BLCKSZ  4096 &amp;#8211;&lt;/span&gt; Usado em Transacionais por isso o bloco de gravação é menor&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ cd ../../&lt;br /&gt;
$ ./configure &amp;#8211;prefix=/home/postgres/postgresql-8.3 &amp;#8211;with-python &amp;#8211;with-perl&lt;br /&gt;
$ make $$ make install&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Criando o cluster &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;O diretório pg83 deve ser criado para alocar o novo cluster&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ mkdir -p /postgres/pg83/dados/&lt;br /&gt;
$ /home/postgres/postgresql-8.3/bin/initdb -D 	/postgres/pg83/dados/ &amp;#8211;encoding=latin1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;&lt;span&gt;Subindo o banco&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ cd /postgres/pg83/dados/&lt;br /&gt;
$ /home/postgres/postgresql-8.3/bin/pg_ctl -D . start&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Baixando os pacotes para para DBI-LINK&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Para esse procedimento são necessários 2 pacotes: &lt;a title=&quot;DBI-LINK&quot; href=&quot;http://pgfoundry.org/frs/?group_id=1000045&quot; target=&quot;_blank&quot;&gt;DBI-LINK&lt;/a&gt; &lt;a href=&quot;http://pgfoundry.org/frs/?group_id=1000045&quot;&gt;&lt;/a&gt;e o &lt;a title=&quot;DBD&quot; href=&quot;http://search.cpan.org/dist/DBD-Pg/&quot; target=&quot;_blank&quot;&gt;DBD-Pg&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Instalando os pacotes&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Esse recurso para ser instalado necessita de alguns pré requisitos, ou seja, alguns pacotes instalados:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;DBI-LINK&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;build, test, and install Perl 5         (at least 5.6.1)&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;BDB-PG&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;build, test, and install Perl 5         (at least 5.6.1)&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
build, test, and install the DBI module (at least 1.52)&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
build, test, and install PostgreSQL     (at least 7.4)&lt;br /&gt;
build, test, and install Test::Simple   (at least 0.47)&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Descompacte os pacotes e execute o Makefile.pl para que a instalação seja feita:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ tar - xvjf dbi-link-2.0.0.tar.bz2&lt;br /&gt;
$ cd dbi-link-2.0.0&lt;br /&gt;
$ perl Makefile.PL&lt;br /&gt;
Writing Makefile for dbi-link&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ tar -xvzf DBD-Pg-2.7.2.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;O Makefile padrão usa algumas variáveis que devem ser definidas antes da instalação:&lt;strong&gt;&lt;br /&gt;
POSTGRES_HOME&lt;/strong&gt; - Instalação do PostgreSQL&lt;strong&gt;&lt;br /&gt;
POSTGRES_LIB&lt;/strong&gt; - bilbiotecas do PostgreSQL&lt;strong&gt;&lt;br /&gt;
POSTGRES_INCLUDE&lt;/strong&gt; - Diretório de include do PostgreSQL&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Para fazer o export das variáveis: &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ export POSTGRES_LIB=&amp;#8221;/home/postgres/postgresql-8.3/lib/&amp;#8221;&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;$ export POSTGRES_HOME=&amp;#8221;/home/postgres/postgresql-8.3/&amp;#8221;&lt;br /&gt;
$ export POSTGRES_INCLUDE=&amp;#8221;/home/postgres/postgresql-8.3/include/&amp;#8221;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Os primeiros passos da instalação devem ser feitos com o usuário comum postgres:&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ cd  DBD-Pg-2.7.2&lt;br /&gt;
$ perl Makefile.PL&lt;br /&gt;
Configuring DBD::Pg 2.7.2&lt;br /&gt;
PostgreSQL version: 80301 (default port: 5432)&lt;br /&gt;
POSTGRES_HOME: /home/postgres/postgresql-8.3/&lt;br /&gt;
POSTGRES_INCLUDE: /home/postgres/postgresql-8.3/include/&lt;br /&gt;
POSTGRES_LIB: /home/postgres/postgresql-8.3/lib/&lt;br /&gt;
OS: linux&lt;br /&gt;
Checking if your kit is complete&amp;#8230;&lt;br /&gt;
Looks good&lt;br /&gt;
Using DBI 1.604 (for perl 5.010000 on i486-linux-gnu-thread-multi) installed in /usr/lib/perl5/auto/DBI/&lt;br /&gt;
Writing Makefile for DBD::Pg&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ make&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;O make install criará alguns diretórios em locais de sistema que não é permitido a usuário comum, sendo assim execute-o com o usuário root&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;#&lt;/strong&gt; make install&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;Files found in blib/arch: installing files in blib/lib into architecture dependent library tree&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
Installing /usr/local/lib/perl/5.10.0/auto/DBD/Pg/Pg.so&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;Installing /usr/local/lib/perl/5.10.0/auto/DBD/Pg/Pg.bs&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;Installing /usr/local/lib/perl/5.10.0/Bundle/DBD/Pg.pm&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;Installing /usr/local/lib/perl/5.10.0/DBD/Pg.pm&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
Installing /usr/local/man/man3/Bundle::DBD::Pg.3pm&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;Installing /usr/local/man/man3/DBD::Pg.3pm&lt;/span&gt;&lt;span&gt;Writing /usr/local/lib/perl/5.10.0/auto/DBD/Pg/.packlist&lt;br /&gt;
Appending installation info to /usr/local/lib/perl/5.10.0/perllocal.pod&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Adicionando um DBI-LINK&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Antes de tudo é necessário criar a linguagem  plperl no banco em questão, pois o dbi-link foi desenvolvido em PL/PERL.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ createlang plperlu portgres&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Agora rode o script que criará toda estrutura dbi-link &lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;$ psql -p 5432 &amp;lt; /home/postgres/dbi-link-2.0.0/dbi_link.sql&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;Note que no banco foi criado o schema dbi_link, com 3 tabela, 26 funções e 1 trigger&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Adicionando uma conexão Remota &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;MYSQL&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Criando nova conexão&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;SELECT dbi_link.make_accessor_functions(&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
&amp;#8216;dbi:mysql:database=teste;host=localhost&amp;#8217;,&lt;span&gt;&amp;#8211;&lt;/span&gt;&lt;strong&gt;Driver:banco:host&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;&amp;#8216;root&amp;#8217;, &lt;strong&gt;&amp;#8211; usuário&lt;/strong&gt;&lt;br /&gt;
&amp;#8221;, &lt;strong&gt;&amp;#8211; senha&lt;/strong&gt;&lt;span&gt;&lt;br /&gt;
&amp;#8216;&amp;#8212; AutoCommit: 1 RaiseError: 1 &amp;#8216;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211; atributos do banco remoto&lt;/strong&gt;&lt;br /&gt;
NULL, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211; ambiente de conexão&lt;/strong&gt;&lt;br /&gt;
NULL, &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211; schema remoto&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;
NULL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;, &amp;#8212; catalogo remoto&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;
&amp;#8216;teste&amp;#8217;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt; &amp;#8212; schema local&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Usando a conexão&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;SELECT *  FROM teste.tabela;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;strong&gt;Transferindo dados de um banco para outro&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;É possivel transferir dados direto de um banco para outro, porém com algumas restrições (que serão resolvidas futuramente, segundo o desenvolvedor). Todos os dados retornados do banco externo são formato text, sendo assim ou a tabela destino tem os campos text ou trate as informações antes de fazer a inserção.&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;CREATE SCHEMA testepg&lt;br /&gt;
AUTHORIZATION postgres;&lt;br /&gt;
GRANT ALL ON SCHEMA testepg TO postgres;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;CREATE TABLE testepg.tabela&lt;br /&gt;
(&lt;br /&gt;
campo1 character varying,&lt;br /&gt;
campo2 character varying,&lt;br /&gt;
campo3 character varying,&lt;br /&gt;
campo4 date,&lt;br /&gt;
campo5 character varying,&lt;br /&gt;
campo6 text&lt;br /&gt;
CONSTRAINT tabela_pk PRIMARY KEY (campo1)&lt;br /&gt;
)&lt;br /&gt;
WITH (OIDS=FALSE);&lt;br /&gt;
ALTER TABLE testepg.tabela OWNER TO postgres;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;INSERT INTO testepg.tabela&lt;br /&gt;
(SELECT campo1:: character varying,&lt;br /&gt;
campo1:: character varying,&lt;br /&gt;
campo2:: character varying,&lt;br /&gt;
campo3:: date,&lt;br /&gt;
campo4:: character varying,&lt;br /&gt;
campo5:: text&lt;br /&gt;
FROM teste.tabela&lt;br /&gt;
WHERE campo1 = &amp;#8216;XXX&amp;#8217;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;Bom .. por hoje é só pessoal !!!!!!&lt;br /&gt;
PS: vou fazer mais algumas brincadeiras com o DBI-LINK e posto aqui.&lt;br /&gt;
PS2: Conversei com o David e vou traduzir o pacote dele !!!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;Kenia Milene&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/keniamilene.wordpress.com/81/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/keniamilene.wordpress.com/81/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/keniamilene.wordpress.com/81/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/keniamilene.wordpress.com/81/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/keniamilene.wordpress.com/81/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/keniamilene.wordpress.com/81/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/keniamilene.wordpress.com/81/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/keniamilene.wordpress.com/81/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/keniamilene.wordpress.com/81/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/keniamilene.wordpress.com/81/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/keniamilene.wordpress.com/81/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/keniamilene.wordpress.com/81/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=keniamilene.wordpress.com&amp;amp;blog=1572796&amp;amp;post=81&amp;amp;subd=keniamilene&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/p&gt;&lt;/div&gt;</content>
		<author>
			<name>Kenia Milene</name>
			<uri>http://keniamilene.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Kenia Milene G.'s Blog » PostgreSQL</title>
			<subtitle type="html">Aventuras de uma garota DBA no mundo da informática</subtitle>
			<link rel="self" href="http://keniamilene.wordpress.com/category/categorias/banco-de-dados/postgresql/feed"/>
			<id>http://keniamilene.wordpress.com/category/categorias/banco-de-dados/postgresql/feed</id>
			<updated>2008-07-10T22:00:17+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">PostgreSQL - Funcionalidades de Performance</title>
		<link href="http://postgresqlbr.blogspot.com/2008/02/postgresql-funcionalidades-de.html"/>
		<id>tag:blogger.com,1999:blog-3371915898459901668.post-5640556312862007629</id>
		<updated>2008-05-29T09:43:26+00:00</updated>
		<content type="html">&lt;dl&gt;&lt;dt&gt;Comentários sobre as funcionalidades voltadas para a melhoria de desempenho da versão 8.3 do PostgreSQL. Coloco o texto original em inglês e abaixo uma nota explicativa sobre a nova implementação:&lt;/dt&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;- HOT&lt;/dt&gt;&lt;dd&gt;&quot;Heap Only Tuple (HOT) dramatically reduces the database maintenance issues associated with frequently updated data, reducing the need to vacuum and giving substantial throughput improvements for some applications.&quot;&lt;/dd&gt;&lt;/dl&gt;&lt;span&gt;&lt;br /&gt;Nota: O HOT - Heap Only Tuple é uma alteração que &lt;span&gt;reduz a necessidade do banco de dados fazer atualizações nos índices&lt;/span&gt;. No PostgreSQL, cada alteração nos dados gera uma nova versão do registro. Caso seja alterado um campo de um arquivo e este campo não seja parte do índice, o mesmo não precisa mais ser atualizado. A entrada original de índice aponta, ainda que indiretamente, para o dado alterado. Esta implementação de HOT traz um ganho substancial, especialmente em dados alterados com muita freqüência. O termo &quot;Heap only&quot; significa exatamente que os dados estão apenas no arquivo de dados, não nos índices.&lt;br /&gt;&lt;/span&gt;&lt;dl&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;- Asynchronous Commit&lt;/dt&gt;&lt;dd&gt;&quot;Allows the ability for COMMIT to return control without waiting for a physical disk write. This gives better response time at the expense of potentially losing a set amount of transactions in the event of system failure.&quot;&lt;/dd&gt;&lt;/dl&gt;&lt;span&gt;Nota: a implementação de commits assíncronos faz com que os mesmos sejam mais rápidos em geral. No caso de commits síncronos, operações mais lentas fazem com que as mais rápidas tenham que esperar, impactando a performance como um todo. A alteração implementada faz com que o PostgreSQL não tenha de esperar a conclusão de operações feitas para disco para prosseguir o commit, acelerando este tipo de operação tão freqüente.&lt;/span&gt;&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;&lt;br /&gt;&lt;/dt&gt;&lt;dt&gt;- Spread Checkpoints&lt;/dt&gt;&lt;dd&gt;&quot;Checkpoint autotuning: delays and spreads out checkpoints, reducing the impact of checkpoints on response times.&quot;&lt;/dd&gt;&lt;/dl&gt;&lt;span&gt;Nota: periodicamente o banco de dados necessita sincronizar o que está no banco com o que está armazenado em log. Este momento é chamado de checkpoint e toma tempo de processamento e acesso a disco. A alteração realizada no PostgreSQL faz com que este evento possa ser atrasado quando não há real necessidade de fazê-lo imediatamente. O ganho de desempenho se dá pela economia de tempo de processamento de checkpoints.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;Just-in-time background writing strategy&lt;/dt&gt;&lt;dd&gt;&quot;Auto-tuning for the Background Writer estimates how many buffers it should try to clean based on statistics about recent activity.&quot;&lt;/dd&gt;&lt;/dl&gt;&lt;span&gt;Nota: A sentença &quot;Just-in-time background writing strategy&quot; significa uma melhor alocação de memória durante os processos de gravação feitos em background. É um processo crítico para o desempenho e passa a sofrer um Auto-tuning (auto ajuste) baseado na atividade mais recente do servidor. O resultado final é maior ganho em desempenho e facilidade de utilização.&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Meu Blog de PostgreSQL - http://postgresqlbr.blogspot.com/
- Cláudio Bezerra Leopoldino&lt;/div&gt;</content>
		<author>
			<name>cbleopoldino</name>
			<email>noreply@blogger.com</email>
			<uri>http://postgresqlbr.blogspot.com/search/label/PostgreSQL</uri>
		</author>
		<source>
			<title type="html">Meu Blog de PostgreSQL!!!</title>
			<link rel="self" href="http://postgresqlbr.blogspot.com/feeds/posts/default/-/PostgreSQL"/>
			<id>tag:blogger.com,1999:blog-3371915898459901668</id>
			<updated>2008-07-18T16:00:27+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="pt">
		<title type="html">Particionamento de Tabelas no PostgreSQL</title>
		<link href="http://keniamilene.wordpress.com/2008/05/26/particionamento-de-tabelas-no-postgresql/"/>
		<id>http://keniamilene.wordpress.com/?p=80</id>
		<updated>2008-05-26T16:54:01+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;Quando temos uma tabela muito grande, ou seja com milhões de linhas a melhor opção é particiona-la para uma melhor performance do banco. Para isso, é necessário algumas regras na tabela principal e criar as tabelas auxiliares:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;Veja abaixo.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;1 – &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&lt;span&gt;Crie a tabela principal&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE TABLE salario&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
funcionario numeric(10) NOT NULL,&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
centro_custo character varying(10) NOT NULL,&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;valor_resultado numeric(13,2),&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
data_evento date,&lt;/span&gt;&lt;span&gt;evento numeric(3),&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;conta numeric(10),&lt;/span&gt;&lt;span&gt;cargo numeric(5)&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
)&lt;br /&gt;
WITH (OIDS=TRUE);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;2 – &lt;/strong&gt;Crie as tabelas particionadas para inserção dos dados, sendo que as mesmas devem herdar as caracteristicas da tabela principal, para isso usamos o &lt;strong&gt;() INHERITS&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211;JANEIRO&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE TABLE salario_jan  () INHERITS (salario);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211;FEVEREIRO&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE TABLE salario_fev  () INHERITS (salario);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;..&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211;DEZEMBRO&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE TABLE salario_dez  () INHERITS (salario);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;3 – &lt;/strong&gt;Crie a regra que no caso de uma tabela de pagamentos de funcionarios, Nesse caso, o campo referencia é a data de pagamento tendo base o mês. Sendo assim crie uma rule para cada mês, onde a cada insert feito na tabela mãe &amp;#8230; os dados são filtrados e inseridos em cada tabela filha correspondende ao mês.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211; JANEIRO&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE OR REPLACE RULE insert_jan AS&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
ON INSERT TO salario&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
WHERE date_part (&amp;#8217;month&amp;#8217;::text, new.data_evento)=1&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
DO INSTEAD  INSERT INTO salario_jan (funcionario, centro_custo, valor_resultado, data_evento, evento, conta, cargo)&lt;br /&gt;
VALUES (new.funcionario, new.centro_custo, new.valor_resultado, new.data_evento, new.evento, new.conta, new.cargo);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211; FEVEREIRO&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE OR REPLACE RULE insert_fev AS&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
ON INSERT TO salario&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;WHERE date_part(&amp;#8217;month&amp;#8217;::text, new.data_evento)=2&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;DO INSTEAD  INSERT INTO salario_fev (funcionario, centro_custo, valor_resultado, data_evento, evento, conta, cargo)&lt;br /&gt;
VALUES (new.funcionario, new.centro_custo, new.valor_resultado, new.data_evento, new.evento, new.conta, new.cargo);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211; DEZEMBRO&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE OR REPLACE RULE insert_dez AS&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;ON INSERT TO salario&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;WHERE date_part(&amp;#8217;month&amp;#8217;::text, new.data_evento)=12&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;DO INSTEAD INSERT INTO salario_dez (funcionario, centro_custo, valor_resultado, data_evento, evento, conta, cargo)&lt;br /&gt;
VALUES (new.funcionario, new.centro_custo, new.valor_resultado, new.data_evento, new.evento, new.conta, new.cargo);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;Explicando &amp;#8230; &lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;A função data_part, vai extrair uma determinada parte da data a ser imposta pela regra.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;No caso desse particionamento a referencia é o mês. Sendo assim no momento do insert, será verificado o mês em questão e redirecionado para tabela particionada correspondente.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;É importante dizer que se um registro não atender a uma  determinada regra, ele será inserido na tabela principal.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;E que a tabela principal se comportará como uma tabela MERGE, sendo assim ela mostrará todos os registros !!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;4 –&lt;/strong&gt; Criando os Indices ..&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;Para a busca ser mais rápida é interessante a criação de indice nas tabelas particionadas.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211; JANEIRO&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE INDEX salario_jan_idx&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;ON salario_jan&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;USING btree&lt;br /&gt;
(data_evento);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211; FEVEREIRO&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE INDEX salario_fev_idx&lt;br /&gt;
ON salario_fev&lt;br /&gt;
USING btree&lt;br /&gt;
(data_evento);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;&amp;#8230;..&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;strong&gt;&amp;#8211; DEZEMBRO&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE INDEX salario_dez_idx&lt;br /&gt;
ON salario_dez&lt;br /&gt;
USING btree&lt;br /&gt;
(data_evento);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;
&lt;strong&gt;4 –&lt;/strong&gt; Criando as views &amp;#8230;.. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;As views vão auxiliar na vizualização dos dados particionados por mês, sendo assim, algumas views são interessantes &amp;#8230;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;View para cada mês &lt;span&gt;CORRENTE&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE OR REPLACE VIEW vw_salario_jan AS&lt;br /&gt;
SELECT a.funcionario, a.centro_custo, a.valor_resultado, 			  a.data_evento, a.evento, a.conta, a.cargo&lt;br /&gt;
FROM salario_jan a&lt;br /&gt;
WHERE date_part(&amp;#8217;month&amp;#8217;::text, data_evento) = 1&lt;br /&gt;
AND date_part(&amp;#8217;year&amp;#8217;::text, data_evento) = now()&lt;br /&gt;
ORDER BY a.data_evento;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE OR REPLACE VIEW vw_salario_fev AS&lt;br /&gt;
&lt;/span&gt;&lt;span&gt; SELECT a.funcionario, a.centro_custo, a.valor_resultado, a.data_evento, a.evento, a.conta, a.cargo&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
FROM salario_fev a&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;WHERE date_part(&amp;#8217;month&amp;#8217;::text, data_evento) = 2&lt;br /&gt;
&lt;/span&gt;&lt;span&gt;AND date_part(&amp;#8217;year&amp;#8217;::text, data_evento) = now()&lt;br /&gt;
ORDER BY a.data_evento;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE OR REPLACE VIEW vw_salario_dez AS&lt;br /&gt;
SELECT a.funcionario, a.centro_custo, a.valor_resultado, a.data_evento, a.evento, a.conta, a.cargo&lt;br /&gt;
FROM salario_dez a&lt;br /&gt;
WHERE date_part(&amp;#8217;month&amp;#8217;::text, data_evento) = 12&lt;br /&gt;
AND date_part(&amp;#8217;year&amp;#8217;::text, data_evento) = now()&lt;br /&gt;
ORDER BY a.data_evento;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;View de anos anteriores.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Para vizualização dos anos anteriores as seguintes views&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE OR REPLACE VIEW vw_salario_2006 AS&lt;br /&gt;
SELECT a.funcionario, a.centro_custo, a.valor_resultado, a.data_evento, a.evento, a.conta, a.cargo&lt;br /&gt;
FROM salario a&lt;br /&gt;
WHERE date_part(&amp;#8217;year&amp;#8217;::text, a.data_evento) = 2006&lt;br /&gt;
ORDER BY a.data_evento;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;
CREATE OR REPLACE VIEW vw_salario_2007 AS&lt;br /&gt;
SELECT a.funcionario, a.centro_custo, a.valor_resultado, a.data_evento,	a.evento, a.conta, a.cargo&lt;br /&gt;
FROM salario a&lt;br /&gt;
WHERE date_part(&amp;#8217;year&amp;#8217;::text, a.data_evento) = 2007&lt;br /&gt;
ORDER BY a.data_evento;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE OR REPLACE VIEW vw_salario_2008 AS&lt;br /&gt;
SELECT a.funcionario, a.centro_custo, a.valor_resultado, a.data_evento, a.evento, a.conta, a.cargo&lt;br /&gt;
FROM salario a&lt;br /&gt;
WHERE date_part(&amp;#8217;year&amp;#8217;::text, a.data_evento) = 2008&lt;br /&gt;
ORDER BY a.data_evento;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;strong&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;View dos ultimos 6 meses apartir do 1o dia util&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;CREATE OR REPLACE VIEW vw_6meses_anteriores AS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;span&gt;&lt;span&gt;SELECT a.funcionario, a.centro_custo, a.valor_resultado, a.data_evento, a.evento, a.conta,a.cargo&lt;br /&gt;
FROM salario a&lt;br /&gt;
WHERE a.data_evento &amp;gt;= (current_date - (date_part( &amp;#8216;day&amp;#8217; , current_date)::integer -1)) - interval &amp;#8216;6 months&amp;#8217;&lt;br /&gt;
ORDER BY a.data_evento;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Bom &amp;#8230; apartir dai .. é possivel a criação de varias views para ver os dados &amp;#8230;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;
Espero que seja util para vcs como foi pra mim !!!!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;western&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Kenia Milene&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/keniamilene.wordpress.com/80/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/keniamilene.wordpress.com/80/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/keniamilene.wordpress.com/80/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/keniamilene.wordpress.com/80/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/keniamilene.wordpress.com/80/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/keniamilene.wordpress.com/80/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/keniamilene.wordpress.com/80/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/keniamilene.wordpress.com/80/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/keniamilene.wordpress.com/80/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/keniamilene.wordpress.com/80/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/keniamilene.wordpress.com/80/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/keniamilene.wordpress.com/80/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=keniamilene.wordpress.com&amp;amp;blog=1572796&amp;amp;post=80&amp;amp;subd=keniamilene&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;</content>
		<author>
			<name>Kenia Milene</name>
			<uri>http://keniamilene.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Kenia Milene G.'s Blog » PostgreSQL</title>
			<subtitle type="html">Aventuras de uma garota DBA no mundo da informática</subtitle>
			<link rel="self" href="http://keniamilene.wordpress.com/category/categorias/banco-de-dados/postgresql/feed"/>
			<id>http://keniamilene.wordpress.com/category/categorias/banco-de-dados/postgresql/feed</id>
			<updated>2008-07-10T22:00:17+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="pt-br">
		<title type="html">Personalizando o psql</title>
		<link href="http://makeall.wordpress.com/2008/05/25/personalizando-o-psql/"/>
		<id>http://makeall.wordpress.com/?p=54</id>
		<updated>2008-05-25T03:36:28+00:00</updated>
		<content type="html">&lt;div class=&quot;snap_preview&quot;&gt;&lt;br /&gt;&lt;p&gt;&lt;img class=&quot;alignleft alignnone size-medium wp-image-5&quot; src=&quot;http://makeall.files.wordpress.com/2008/03/database.png?w=42&amp;amp;h=42&quot; alt=&quot;Personalizando o psql&quot; width=&quot;42&quot; height=&quot;42&quot; /&gt;Uma das ferramentas mais utilizadas na administração do PostgreSQL é o nosso bom e velho &lt;em&gt;psql&lt;/em&gt;. Sua interface em modo texto permite a sua utilização local ou remota de maneira rápida e eficiente  nos presenteando com alguns recursos interessantes como por exemplo a complementação de código baseada em contexto (proporcionado pelo &lt;em&gt;readline&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Outro recurso que utilizo é a personalização do &lt;em&gt;prompt&lt;/em&gt;, e este é muito útil para quem está acostumado a conectar em vários servidores distintos, administrando várias bases de dados em cada um deles, pois ele pode lhe fornecer dados interessantes de uma forma simples e prática. Vou tentar exemplificar:&lt;/p&gt;
&lt;p&gt;Imagine um cenário onde você administre 3 (três) servidores diferentes, cada um deles contendo algumas bases de dados, conforme a figura abaixo:&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-medium wp-image-56&quot; src=&quot;http://makeall.files.wordpress.com/2008/05/diagrama_banco1.jpg?w=250&amp;amp;h=189&quot; alt=&quot;Personalizando o psql&quot; width=&quot;250&quot; height=&quot;189&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Você pode utilizar o script a seguir para definir o um prompt personalizado para cada servidor.&lt;/p&gt;
&lt;pre&gt;#!/bin/sh
######################################