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.
Size: 1.66 MB
Language: pt
Added: Sep 10, 2015
Slides: 35 pages
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.
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.
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.