Palestra realizada em 03/10/2012 no PGDay Campinas. De "Sistema Gerenciador de Banco de Dados Relacional" até "Plataforma de Persistência Aberta", ou algo parecido. Acompanhe como as coisas evoluíram de 1970 para cá e fizeram do Postgres uma das mais flexíveis e confiáveis plataformas para persistência de dados, passando pelos bancos "Orientados a Objeto" e pelo NoSQL.
2. Como tudo começou...
● 1970 – IBM - Teoria Relacional por E. F. Codd
● 1973 – IBM – Começa o desenvolvimento do
System R (System Relational)
● Primeira implementação da teoria relacional;
● Desenvolvimento do SQL;
● Publicação de documentos descrevendo o
System R;
●1974 – Berkeley – Desenvolvimento do Ingres
(INteractive Graphics REtrieval System)
por Fábio Telles Rodriguez
03 de outubro de 2012
3. A primeira mutação
● 1982: Michael Stonebraker sai de Berkeley para
comercializar o Ingres;
● 1985: Stonebraker volta para Berkeley para
iniciar o Postgres (Post Ingres)
● Tipos de dados e domínios definidos pelo
usuário;
● Arrays;
● Tabelas hierárquicas;
● Substituiu o QUEL pelo PostQUEL...
por Fábio Telles Rodriguez
03 de outubro de 2012
4. A primeira mutação
● 1989 – Primeira versão do Postgres;
● 1994 - Postgres 4.2 – Última versão lançada em
Berkeley;
● 1995 - Postgres95 – Versão lançada por alunos
recém-graduados de Berkeley;
● Substituição do PostQUEL pelo SQL;
● Subconsultas;
por Fábio Telles Rodriguez
03 de outubro de 2012
5. A segunda mutação...
● 1996 – PostgreSQL 6.0 - Primeira versão lançada
como Software Livre, fora de Berkeley;
● Primeiro servidor do projeto em Hub.org;
por Fábio Telles Rodriguez
03 de outubro de 2012
7. ● De 1997 a 2007 – PostgreSQL 6.0, 6.1, 6.2,
6.3, 6.4, 6.5, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1,
8.2
● PL/CTL, PL/Python, PL/Perl, PL/pgSQL;
● Compatibilidade com SQL;
● Porte nativo para Windows;
● Gborg, pgFoundry;
● 1º PGCon (Congresso anual);
● fsync, synchronous_commit,
full_page_writes
por Fábio Telles Rodriguez
03 de outubro de 2012
8. A Metamorfose Ambulante
● 2008 – PostgreSQL 8.3
● Salto de performance;
● Fim dos CASTs implícitos;
● UUID, XML, ENUM, Arrays de tipos
compostos;
● Full Text Search;
● 2009 – PostgreSQL 8.4
● Window Functions, CTE
por Fábio Telles Rodriguez
03 de outubro de 2012
9. A Metamorfose Ambulante
● 2010 – PostgreSQL 9.0
● Streaming Replication;
● Melhorias no Listen/Notify e no Hstore;
● 2011 – PostgreSQL 9.1
● Extensions (PGXN);
● Foreign Tables;
● Unlogged Tables;
● 2012 – PostgreSQL 9.2
● Range types, JSON, PLV8;
● Postgres-XC 1.0 é lançado
por Fábio Telles Rodriguez
03 de outubro de 2012
11. Foreign Data Wrappers
● Infraestrutura para conexão com
outras fontes de dados;
● Completamente transparente para a
aplicação;
● Qualquer um pode construir seu
próprio plugin em horas;
● Alguns já criados: oracle, mysql, odbc,
couchdb, ldap, twitter, web services,
Amazon S3, etc;
por Fábio Telles Rodriguez
03 de outubro de 2012
12. Dá até para usar GPU c/ FDW
PGStrom: 10x a 20x mais rápido
http://wiki.postgresql.org/wiki/PGStrom
por Fábio Telles Rodriguez
03 de outubro de 2012
13. Comunidade Vibrante
● Novas versões lançadas anualmente
● 17 listas por e-mail + 42 listas regionais
● Acesso direto e on-line aos
desenvolvedores via IRC
● Dezenas de eventos exclusivos de postgres
todos os anos. Em 2011 foram 6 só no
Brasil
● Novos artigos nos planetas diariamente
● Amigável para novos usuários e novos
desenvolvedores
por Fábio Telles Rodriguez
03 de outubro de 2012
15. SIM, Software Livre tem Suporte
● Você pode contar com o suporte da
comunidade
● Você pode escolher
● Você pode trocar de empresa
● Você pode encomendar novas
funcionalidades no Postgres para você
● Você não precisa pagar um suporte para ter
acesso à documentação e os últimos patches
por Fábio Telles Rodriguez
03 de outubro de 2012
16. Ser maluco não é ser burro
por Fábio Telles Rodriguez
03 de outubro de 2012
17. Em resumo
● Bancos de Dados Objeto-Relacional nunca foram muito bem
definidos, já a teoria relacional sim.
● Isto não nos impede de criar extensões não relacionais
para resolver problemas complexos;
● NoSQL contém uma salada de definições, boa parte delas
não são tecnologias novas;
● Você pode abrir mão do lado transacional para todo o
cluster (fsync off) ou apenas para uma tabela (unlogged
table);
● Você pode utilizar tipos não estruturados também;
● Você Vpode usar um DataWraper para a sua base NoSQL
por Fábio Telles Rodriguez
03 de outubro de 2012
18. OBRIGADO
Dúvidas, sugestões, correções,
indignações e cervejas são
bem vindas!
Fábio Telles Rodriguez,
Timbira: http://timbira.com.br
SAVEPOINT:
http://tellesr.wordpress.com/
● e-mail:
telles@timbira.com.br
por Fábio Telles Rodriguez
03 de outubro de 2012