Por que PostgreSQL?

spjuliano 2,109 views 35 slides Sep 10, 2015
Slide 1
Slide 1 of 35
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35

About This Presentation

Uma breve apresentação sobre este fantástico Sistema Gerenciador de Banco de Dados Objeto-Relacional.
Razões para adotá-lo, curiosidades e características.


Slide Content

PostgreSQL
O Grande Elefante dos Dados
Juliano Atanazio

2/35
O que é
É um sistema gerenciador de banco de dados objeto-relacional
originalmente desenvolvido na Universidade da Califórnia no
Departamento de Ciências da Computação em Berkeley.
Seu nome vem do Ingres, que seu código-fonte originalmente era
descendente. Por isso do nome Postgres.
Seu código-fonte é aberto.
O PostgreSQL é Software Livre :)

3/35
Links
Site oficial: www.postgresql.org.br
Planet PostgreSQL: http://planet.postgresql.org/
Wiki: https://wiki.postgresql.org
Site da comunidade brasileira: www.postgresql.org.br
Planet PostgreSQL BR: http://planeta.postgresql.org.br/

4/35
Como se Fala e Como se Escreve
Uma dúvida comum ao PostgreSQL é seu nome. As formas
corretas são as duas seguintes:
Postgres, pronuncia-se “postígres” (sim, o “s” é pronunciado!);
PostgreSQL, pronuncia-se “postgres és quiu el”.
Nunca, jamais, em hipótese nenhuma escrever “postgree” ou
dizer “postgrí”.
Infelizmente ainda há fontes na Internet com o nome do Postgres
escrito erroneamente, o que leva muita gente também a falar
errado.

5/35
Licença
A licença utilizada é uma licença própria similar à licença BSD
(herança de Berkeley).
Essa licença é mais flexível do que a GPL, permitindo inclusive
que qualquer um possa pegar o código-fonte do PostgreSQL,
alterá-lo, fechá-lo para fins comerciais.
Um grande exemplo disso é o derivado do PostgreSQL mais
famoso, o Postgres Plus, da EnterpriseDB, empresa que é uma
das grandes contribuidoras para o desenvolvimento do projeto
PostgreSQL original.

6/35
Licença
Seu produto além das funcionalidades originais do PostgreSQL
oferece algumas outras exclusivas [1]
[1]
http://www.enterprisedb.com/products-services-training/products/postgres-plus-adv
anced-server?quicktabs_advanceservertab=3#quicktabs-advanceservertab

7/35
Suporte
Comunidade:
Brasil: https://listas.postgresql.org.br/cgi-bin/mailman/listinfo
Internacional: https://lists.postgresql.org
Comercial:
Há várias empresas ao redor do mundo que prestam consultoria
em PostgreSQL.

8/35
Suporte
Documentação oficial:
http://www.postgresql.org/docs/

9/35
Liberdade
O PostgreSQL é Software Livre!
Você pode baixar, usar e /ou alterar o código-fonte como bem
entender.
Não precisa se preocupar com quantos núcleos tem seu servidor.
Totalmente livre! Livre!
O PostgreSQL é um só! Não existem versões "Light", "Standard",
"Advanced Server" e etc...

10/35
Imune a Over-Deployment
Over-deployment é que alguns fornecedores de banco de dados
proprietário consideram como problema de inconformidade de
sua licença.
Com PostgreSQL, ninguém pode processá-lo por quebra de
acordos de licenciamento, devido a não haver nenhum custo de
licenciamento associado para o software.

11/35
Imune a Over-Deployment
Algumas vantagens adicionais:
●Modelos de negócios mais lucrativos com implantações em
larga escala;
●Sem possibilidade de ser auditado por inconformidade de
licença em qualquer fase;
●Flexibilidade para conceituar pesquisar e tentar implantações
sem necessidade de incluir custos adicionais de licença.

12/35
Redução Significativa
de Custos de Pessoal
O PostgreSQL foi projetado e criado para ter requisitos muito
mais baixos de manutenção e ajustes do que os principais
bancos de dados proprietários, mas ainda manter todas as
características, estabilidade e desempenho.

13/35
Confiabilidade e Estabilidade
Lendárias
Diferente de muitos sistemas gerenciadores de banco de dados
proprietários, é muito comum organizações reportarem que o
PostgreSQL nunca falhou em anos de operação.
Nem uma única vez, ele simplesmente funciona!

14/35
Extensibilidade e PGXN
É possível desenvolver extensões para o PostgreSQL de forma a
ampliar o leque de funcionalidades oferecidas.
A PGXN [1], "the PostgreSQL Extension Network", é um sistema
de distribuição central para bibliotecas open-source de extensão
para o PostgresQL.
[1] http://pgxn.org/

15/35
Projetos e Aplicativos para
PostgreSQL: pgFoundry
De forma similar ao PGXN, existe o pgFoundry [1].
É um site que reúne vários projetos relativos ao PostgreSQL.
[1] http://pgfoundry.org

16/35
Aplicativos Clientes
psql: padrão, modo texto;
pgAdmin3 [1]: aplicativo gráfico;
phpPgAdmin [2]: interface web;
EMS SQL Management Studio para PostgreSQL [3]: gráfico,
proprietário e disponível apenas para Windows
[1] http://pgadmin.org/
[2] http://phppgadmin.sourceforge.net/
[3] http://www.sqlmanager.com.br/html/studio_postgresql.html

17/35
O Elefante é Poliglota
Diferente de outros SGBDs, no PostgreSQL não há uma
separação entre Functions e Procedures.
É tudo Function!
A linguagem procedural padrão do PostgreSQL é a PL/pgSQL
(muito similar à PL/SQL do Oracle, porém mais amigável).
Como se não bastasse, temos também op ões nativas para

fazermos funções em Python (PL/PythonU / PL/Python3U) ou em
Perl (PL/Perl).
Devido à característica de extensibilidade do PostgreSQL
podemos também programar funções em Java e PHP (PL/Java e
PL/PHP, respectivamente) e outras linguagens de programação
que podemos instalar em forma de extensão.

18/35
Drivers para Linguagens
Python: psycopg2 [1]
Java: JDBC [2]
Perl: DBI:Pg [3]
C: libpq [4]
PHP: PDO [5]
C#: Npgsql [6]
C++: libpqxx [7]
[1] http://initd.org/psycopg/
[2] https://jdbc.postgresql.org/
[3] https://metacpan.org/pod/DBD::Pg
[4] http://www.postgresql.org/docs/current/static/libpq.html
[5] http://php.net/manual/pt_BR/ref.pdo-pgsql.connection.php
[6] http://www.npgsql.org/
[7] http://pqxx.org/development/libpqxx/

19/35
Multi Paradigma
O PostgreSQL não é somente relacional.
Ele agrega também funcionalidades NoSQL:
●extensão hstore [1] que implementa funcionalidades
de SGBDs NoSQL do tipo chave-valor (como
HBase, Redis, por exemplo).
●tipo de dado jsonb [2] o que implementa
funcionalidades NoSQL do tipo documento (como
MongoDB por exemplo).

20/35
Multi Paradigma
Obs.: Há comparativos pela Internet fazendo comparativos
interessantes PostgreSQL vs MongoDB, dentre eles tem um
estudo muito interessante feito pela EnterpriseDB [3].
[1] http://www.postgresql.org/docs/current/static/hstore.html
[2] http://www.postgresql.org/docs/current/static/datatype-json.html
[3]
http://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-o
utperforms-mongodb-and-ushers-new-developer-reality

21/35
Multi Plataforma
●Linux
●BSDs
●Solaris
●HPUX
●Irix
●AIX
●Unix
●MacOS
●Windows
etc...

22/35
Foreign Data-Wrappers:
Comunicação com Outros Bancos...
Podemos acessar dados vindos de outros servidores PostgreSQL ou até
mesmo outros SGBDs, além de outras coisas mais.
Graças ao recurso chamado Foreign Data-Wrapper [1].
[1] https://wiki.postgresql.org/wiki/Foreign_data_wrappers

23/35
Limites do PostgreSQL
Tamanho máximo de um banco de dados : Ilimitado
Tamanho máximo de uma tabela: 32 TB
Tamanho máximo de uma linha (registro): 1.6 TB
Tamanho máximo de um campo (coluna): 1 GB
Número máximo de linhas por tabela: Ilimitado
Número máximo de colunas por tabela: 250 - 1600 dependendo do tipo de
coluna
Número máximo de índices por tabela: Ilimitado

24/35
Tipos de Dados
●Numéricos
●De Tempo
●De Texto
●Nulo
●Monetário
. . .
A variedade é muito grande, cujas categorias também têm: binários,
enumerados, geométricos, de rede, busca textual, UUID, XML, JSON, arrays,
compostos, de faixa e etc.
O usuário pode também criar um tipo de dados personalizado.

25/35
WAL - Write Ahead Log
Mecanismo que assegura a integridade dos dados.
Qualquer escrita em banco antes de ser gravada nos arquivos de dados é
gravada nos logs de transação (xlogs).
Isso permite que se houver uma falha (crash) do servidor, ao reinicializá-lo, o
servidor lerá primeiro os logs de transação e então aplicará aos arquivos de
dados (também conhecidos como arquivos físicos) todas modificações não
feitas ainda.
O log existe primariamente para propósitos de segurança contra falhas: se o
sistema falha (crash), a base de dados pode ser restaurada consistentemente
pela aplicação das entradas de log feitas desde o último checkpoint*.
* chepoint é quando os dados que estão em memória e nos logs de transação
são efetivados nos arquivos físicos.

26/35
PITR - Point In Time Recovery:
A Máquina do Tempo
Pode-se estipular um ponto anterior no tempo e fazer o servidor voltar seus
dados como estavam nesse dado momento caso houver necessidade.

27/35
Replicação Nativa via Streaming
●Um Master n Slaves
●Assíncrona
●Síncrona
●Escrita somente no Master
●Slaves podem ser colocados como somente leitura.

28/35
Desenvolvimento
O PostgreSQL é desenvolvido em conjunto pela comunidade e por empresas
que o apoiam.
A cada ano uma versão nova é liberada trazendo novos recursos, melhora de
performance e correções de eventuais bugs.

29/35
Versões e Ciclo de
Desenvolvimento
Versão Majoritária (X.Y)
É a parte significativa do número da versão, composta apenas pelos dois
primeiros números (X.Y).
São lançamentos de versões que trazem novidades como novos recursos, e.
g.: 9.4;
Cada versão lançada tem suporte de até cinco anos, após isso não são mais
lançados quaisquer patches para a mesma.
Versão Minoritária (X.Y.Z)
São considerados os três números que compõem a versão, no entanto, o
último número (Z) diz respeito a apenas correções de bugs e de segurança.

30/35
Eventos
Internacional: PgCon [1]
Nacional: PgBr [2]
Regional: PgDay [3]
[1] https://www.pgcon.org
[2] http://pgbr.postgresql.org.br/
[3] http://www.postgresql.org.br/eventos/pgday

31/35
Recursos Técnicos
Veja no link abaixo a Matriz de Recursos conforme a versão do PostgreSQL:
http://www.postgresql.org/about/featurematrix/

32/35
Quem Utiliza o PostgreSQL

33/35
Doe!
O Elefante precisa de você!
Contribua! :)
http://www.postgresql.org/about/donate/

34/35
Save our planet!

35/35
Até a próxima!!! :)
Juliano Atanazio
[email protected]
https://juliano777.wordpress.com