SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
Juliano Atanazio
Por que PostgreSQL?Por que PostgreSQL?
2/54
About me
Juliano Atanazio
● Graduated in Computer Science for Business Management (Informática para Gestão de
Negócios), FATEC Zona Sul, São Paulo – SP;
● PostgreSQL DBA;
● Linux admin;
● Instructor (PostgreSQL);
● LPIC-1, LPIC-2 Certified;
● Linux user since 2000;
● Free Software enthusiast;
● Favorite technologies: PostgreSQL, Linux, Python, Shell Script, FreeBSD, etc...;
● Headbanger :) m/
3/54
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.
Hoje é desenvolvido e mantido pelo PGDG (PostgreSQL Global
Development Group – Grupo de Desenvolvimento Global do
PostgreSQL).
4/54
O que é
Seu nome vem do Ingres, que seu código-fonte originalmente era
descendente. Por isso o nome Postgres.
Seu código-fonte é aberto.
O PostgreSQL é Software Livre :)
5/54
Links
Site Oficial: www.postgresql.org
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
6/54
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.
7/54
Multi Plataforma
● Linux
● BSDs
● Solaris
● HPUX
● Irix
● AIX
● Unix
● MacOS
● Windows
etc...
8/54
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 seu código-fonte, alterá-lo e até
fechá-lo para fins comerciais.
Um grande exemplo disso é o derivado do PostgreSQL mais
famoso, o EDB Postgres, da EnterpriseDB [1], empresa que é
uma das grandes contribuidoras para o desenvolvimento do
projeto PostgreSQL original.
[1] https://www.enterprisedb.com/
9/54
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 (inclusive no Brasil) que
prestam consultoria em PostgreSQL.
10/54
Suporte
Documentação Oficial
http://www.postgresql.org/docs/
11/54
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” ou mesmo “Express”... Uma única versão e
sem cortes de funcionalidades.
Todo poder do grande elefante dos dados à disposição do
usuário!
12/54
Imune a Over-Deployment
Over-deployment é o que alguns fornecedores de banco de
dados proprietários 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.
Seu servidor de banco de dados PostgreSQL pode ter quantos
núcleos de processador desejar.
13/54
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;
● Foco em detalhes técnicos, sem a necessidade de lidar com
inconvenientes de licença.
14/54
Redução 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.
15/54
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!
16/54
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/
17/54
Projetos e Aplicativos: 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
18/54
Aplicativos Clientes
psql: Cliente padrão em modo texto;
pgcli [1]: Cliente em modo texto, escrito em Python com auto-
complete mais avançado do que o psql;
pgAdmin3 [2]: Aplicativo gráfico;
phpPgAdmin [3]: Interface web;
EMS SQL Management Studio para PostgreSQL [4]: Gráfico,
proprietário e disponível apenas para Windows;
DBeaver [5]: Aplicativo gráfico multi-plataforma escrito em Java,
depende do driver JDBC PostgreSQL.
19/54
Aplicativos Clientes
[1] http://pgcli.com/
[2] http://pgadmin.org/
[3] http://phppgadmin.sourceforge.net/
[4] http://www.sqlmanager.com.br/html/studio_postgresql.html
[5] http://dbeaver.jkiss.org/
20/54
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 a 1600 dependendo
do tipo de coluna
Número máximo de índices por tabela: Ilimitado
21/54
Tipos de Dados
● Numéricos;
● De Tempo;
● De Texto;
● Nulo;
● JSON;
● XML;
● Rede: IP (IPv4 e Ipv6) e mac address;
● UUID;
22/54
Tipos de Dados
● Boolean;
● Enumerados;
● Geométricos;
● Busca Textual;
● Compostos;
● De Faixa (Range Types);
● Suporte a arrays...
● A variedade é muito grande e o usuário pode também criar um tipo
de dados personalizado.
23/54
Funções e Procedures
Diferente de outros SGBDs, no PostgreSQL não há uma separação
entre Functions e Procedures.
É tudo Function!
Para invocar uma função é bem simples:
SELECT funcao();
24/54
Funções e Procedures
Triggers: Diferente de outros SGBDs a função que o trigger chama é
definida externa a ele. E depois, na definição do trigger é feita a
chamada a essa função.
Isso permite reaproveitamento de código de forma que uma mesma
função possa atender a mais de um trigger.
A linguagem procedural padrão do PostgreSQL é a PL/pgSQL (muito
similar à PL/SQL do Oracle, porém mais amigável).
25/54
Padrões SQL ISO
O core team de desenvolvimento, também conhecido como PGDG
(PostgreSQL Global Development Group) tem como premissa a
maior compatibilidade possível com os padrões SQL ISO.
https://www.postgresql.org/docs/current/static/features.html
26/54
O Elefante é Poliglota
Além da linguagem procedural padrão, PL/pgSQL, temos também
opções nativas para fazermos funções em Python (PL/Python) ou
em Perl (PL/Perl), de forma nativa.
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.
27/54
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]
Lua: LuaPgSQL [8]
Ruby: Ruby pg [9]
Go: pq [10]
Node.js: node-postgres [11]
Rust: Rust-Postgres [12]
28/54
Drivers para Linguagens
[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
[8] https://github.com/arcapos/luapgsql
[9] https://github.com/ged/ruby-pg
[10] https://github.com/lib/pq
[11] https://github.com/brianc/node-postgres
[12] https://github.com/sfackler/rust-postgres
29/54
Além do SQL Básico
Common Table Expressions - Expressões Comuns de Tabela
Com a cláusula WITH fornece uma forma de escrever comandos
auxiliares para uso em uma consulta muito grande.
Esses comandos também são conhecidos como Common Table
Expressions ou CTEs, que podemos pensar como se fosse uma
definição de tabelas temporárias que existem para apenas uma
consulta.
30/54
Além do SQL Básico
Common Table Expressions - Expressões Comuns de Tabela
Cada comando auxiliar em uma cláusula WITH pode ser um
SELECT, INSERT, UPDATE ou DELETE e a própria cláusula WITH é
anexada ao comando principal que pode também se um SELECT,
INSERT, UPDATE, ou DELETE.
https://www.postgresql.org/docs/current/static/queries-with.html
31/54
Além do SQL Básico
Window Functions - Funções de Janela
Permitem executar cálculos através de conjuntos de linhas que são
relacionadas à linha de consulta atual.
Similar ao tipo de cálculo que pode ser feito com funções de
agregação, mas o uso de funções de janela não faz as linhas serem
agrupadas em uma única linha de saída, as linhas mantêm suas
identidades separadas.
32/54
Além do SQL Básico
Window Functions - Funções de Janela
Internamente, uma função de janela é capaz de acessar mais do
que apenas linha atual de um resultado de uma consulta.
Funções de janela devem ser invocadas usando sua própria sintaxe
em que a cláusula OVER é necessária.
http://www.postgresql.org/docs/current/static/functions-window.html
33/54
Além do SQL Básico
Full Text Search - Busca Textual
Capacidade de identificar uma linguagem em documentos que
satisfaçam critérios de buscas de uma consulta e opcionalmente
ordená-las por relevância.
Tem suporte linguístico e baseado no idioma que o usuário definir.
http://www.postgresql.org/docs/current/static/textsearch.html
34/54
Dados Geográficos: PostGIS
A sigla GIS significa Geographic Information
System (Sistema de Informação Geográfica).
PostGIS é atualmente a melhor ferramenta
para dados geográficos em bancos de dados.
Está disponível em forma de extensão para o
PostgreSQL.
http://www.postgis.org
35/54
FDW: Acessando Dados Externos
FDW é a sigla para Foreign Data-Wrapper [1].
Podemos acessar dados vindos de outros servidores PostgreSQL
ou até mesmo outros SGBDs, além de outras coisas mais.
[1] https://wiki.postgresql.org/wiki/Foreign_data_wrappers
36/54
Multi Paradigma
Relacional e NoSQL
O PostgreSQL não é somente relacional.
Ele agrega também funcionalidades NoSQL.
O tipo de dado jsonb [1] o que implementa funcionalidades NoSQL
do tipo documento (como MongoDB por exemplo).
[1] https://www.postgresql.org/docs/current/static/datatype-json.html
37/54
O PostgreSQL é Bala de Prata?
Atualmente é SGBD mais avançado devido à quantidade de
recursos que oferece;
Duvida??? Basta comparar → [1]
Apesar disso ele não deve ter uma utilização forçada, pois há
determinadas coisas que outros SGBDs são melhores. Isso é fato.
[1] http://www.sql-workbench.net/dbms_comparison.html
38/54
O PostgreSQL é Bala de Prata?
Para aplicações embarcadas; o SQLite, um simples blog, algo que
não envolva um sistema necessariamente transacional
predominantemente texto; o MariaDB e em outras situações;
SGBDs NoSQL são mais apropriados.
39/54
O PostgreSQL é Bala de Prata?
Mas o Postgres conversa (se integra) com todo mundo…
Via FDW pode-se extrair o que é melhor de cada SGBD e então o
Postgres funcionará como um middleware deixando transparente
para a aplicação ;)
https://wiki.postgresql.org/wiki/Foreign_data_wrappers
https://www.postgresql.org/docs/current/static/postgres-fdw.html
40/54
O PostgreSQL é Bala de Prata?
Application
Server
41/54
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.
42/54
WAL - Write Ahead Log
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*.
*checkpoint é quando os dados que estão em memória e nos logs
de transação são efetivados nos arquivos físicos.
https://www.postgresql.org/docs/current/static/wal-intro.html
43/54
PITR: A Máquina do Tempo
PITR é uma sigla que significa Point In Time Recovery, que em
português seria algo como “Recuperação em um Ponto no Tempo”.
Pode-se estipular um ponto anterior no tempo e fazer o servidor
voltar seus dados como estavam nesse dado momento caso houver
necessidade.
https://www.postgresql.org/docs/current/static/continuous-archiving.html
44/54
Replicação
Física (via streaming);
● Assíncrona;
● Síncrona;
Lógica (pglogical)
● Integral;
● Parcial;
● Muito útil para fazer migrações de uma versão para outra.
Ambas permitem cascateamento.
45/54
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.
46/54
Versões e Ciclo de Desenvolvimento
Modelos de Versão X.Y.Z e X.Y
Até a versão 9.6 o PostgreSQL adotou o modelo X.Y.Z, em que X.Y
era a versão majoritária e Z e a versão minoritária;
A partir da versão 10, o modelo passa a ser simplesmente X.Y, em
que X é a versão majoritária e Y a versão minoritária;
Em ambos os modelos o último número diz respeito à versão
minoritária.
47/54
Versões e Ciclo de Desenvolvimento
Versão Majoritária
É a parte significativa do número da versão;
São lançamentos de versões que trazem novidades como novos
recursos;
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
Diz respeito a apenas correções de bugs e de segurança.
48/54
Eventos
Internacional: PgCon → https://www.pgcon.org
Nacional: PgBr → http://pgbr.postgresql.org.br
Regional: PgDay → http://www.postgresql.org.br/eventos/pgday
49/54
Recursos Técnicos
Veja no link abaixo a Matriz de Recursos conforme a versão do
PostgreSQL:
http://www.postgresql.org/about/featurematrix
50/54
Quem Utiliza o PostgreSQL
51/54
Conclusão
O PostgreSQL é robusto, flexível,
rico em recursos, torna mais fácil
a vida do programador e do
próprio DBA devido à sua
facilidade de programar e
administrar.
Sua licença permissiva permite
reduzir custos podendo
perfeitamente substituir uma
solução proprietária de forma
profissional e eficaz.
Então por que não usar? :)
52/54
Donate!
The elephant needs you!
O Elefante precisa de você!
Contribute! :)
Contribua! :)
http://www.postgresql.org/about/donate/
53/54
Save our planet!
54/54
See you soon!!!
Até a próxima!!!
Juliano Atanazio
juliano777@gmail.com
http://slideshare.net/spjuliano
https://speakerdeck.com/julianometalsp
https://juliano777.wordpress.com
:)

Más contenido relacionado

La actualidad más candente

Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosFábio dos Reis
 
12. oracle database architecture
12. oracle database architecture12. oracle database architecture
12. oracle database architectureAmrit Kaur
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Elaine Cecília Gatto
 
Banco de Dados Distribuídos - MySql
Banco de Dados Distribuídos - MySqlBanco de Dados Distribuídos - MySql
Banco de Dados Distribuídos - MySqlAdail Viana Neto
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágilClaudia Melo
 
Padronização de Nomenclatura para Banco de Dados
Padronização de Nomenclatura para Banco de DadosPadronização de Nomenclatura para Banco de Dados
Padronização de Nomenclatura para Banco de DadosSamuelson Brito
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)Mario Sergio
 
The principles of good programming
The principles of good programmingThe principles of good programming
The principles of good programmingAngelin R
 
Curso de css3 unidade 1 - introdução ao css
Curso de css3   unidade 1 - introdução ao cssCurso de css3   unidade 1 - introdução ao css
Curso de css3 unidade 1 - introdução ao cssLéo Dias
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
The Oracle RAC Family of Solutions - Presentation
The Oracle RAC Family of Solutions - PresentationThe Oracle RAC Family of Solutions - Presentation
The Oracle RAC Family of Solutions - PresentationMarkus Michalewicz
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosdiogocbj
 

La actualidad más candente (20)

Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentos
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
12. oracle database architecture
12. oracle database architecture12. oracle database architecture
12. oracle database architecture
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
Banco de Dados Distribuídos - MySql
Banco de Dados Distribuídos - MySqlBanco de Dados Distribuídos - MySql
Banco de Dados Distribuídos - MySql
 
Licenças de software
Licenças de softwareLicenças de software
Licenças de software
 
Prototype
PrototypePrototype
Prototype
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágil
 
Padronização de Nomenclatura para Banco de Dados
Padronização de Nomenclatura para Banco de DadosPadronização de Nomenclatura para Banco de Dados
Padronização de Nomenclatura para Banco de Dados
 
Aula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionaisAula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionais
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
The principles of good programming
The principles of good programmingThe principles of good programming
The principles of good programming
 
Curso de css3 unidade 1 - introdução ao css
Curso de css3   unidade 1 - introdução ao cssCurso de css3   unidade 1 - introdução ao css
Curso de css3 unidade 1 - introdução ao css
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
The Oracle RAC Family of Solutions - Presentation
The Oracle RAC Family of Solutions - PresentationThe Oracle RAC Family of Solutions - Presentation
The Oracle RAC Family of Solutions - Presentation
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dados
 

Destacado

Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Juliano Atanazio
 
LabMM4 (T21 - 12/13) - insert, delete e update
LabMM4 (T21 - 12/13) - insert, delete e updateLabMM4 (T21 - 12/13) - insert, delete e update
LabMM4 (T21 - 12/13) - insert, delete e updateCarlos Santos
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLMatheus Espanhol
 
Postgre S Q L Apresentacao U F C
Postgre S Q L Apresentacao U F CPostgre S Q L Apresentacao U F C
Postgre S Q L Apresentacao U F CRibamar Sousa
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQLDiogo Biazus
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance TuningFernando Ike
 
SQL window functions for MySQL
SQL window functions for MySQLSQL window functions for MySQL
SQL window functions for MySQLDag H. Wanvik
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
 
Manipulación de datos: INSERT, UPDATE y DELETE
Manipulación de datos: INSERT, UPDATE y DELETEManipulación de datos: INSERT, UPDATE y DELETE
Manipulación de datos: INSERT, UPDATE y DELETEAlberto Caro Navarro
 

Destacado (19)

Postgre sql +python
Postgre sql +pythonPostgre sql +python
Postgre sql +python
 
Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
Se meu elefante falasse
Se meu elefante falasseSe meu elefante falasse
Se meu elefante falasse
 
LabMM4 (T21 - 12/13) - insert, delete e update
LabMM4 (T21 - 12/13) - insert, delete e updateLabMM4 (T21 - 12/13) - insert, delete e update
LabMM4 (T21 - 12/13) - insert, delete e update
 
Postgre sql
Postgre sqlPostgre sql
Postgre sql
 
Conceitos E Aplicações
Conceitos E AplicaçõesConceitos E Aplicações
Conceitos E Aplicações
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
 
Postgre S Q L Apresentacao U F C
Postgre S Q L Apresentacao U F CPostgre S Q L Apresentacao U F C
Postgre S Q L Apresentacao U F C
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
 
PostgreSQL: Performance Tuning
PostgreSQL: Performance TuningPostgreSQL: Performance Tuning
PostgreSQL: Performance Tuning
 
Postgre Sql
Postgre SqlPostgre Sql
Postgre Sql
 
Curso MySQL #15 - Chaves Estrangeiras e SELECT com JOIN
Curso MySQL #15 - Chaves Estrangeiras e SELECT com JOINCurso MySQL #15 - Chaves Estrangeiras e SELECT com JOIN
Curso MySQL #15 - Chaves Estrangeiras e SELECT com JOIN
 
SQL window functions for MySQL
SQL window functions for MySQLSQL window functions for MySQL
SQL window functions for MySQL
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Manipulación de datos: INSERT, UPDATE y DELETE
Manipulación de datos: INSERT, UPDATE y DELETEManipulación de datos: INSERT, UPDATE y DELETE
Manipulación de datos: INSERT, UPDATE y DELETE
 

Similar a Por que PostgreSQL?

Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfArleiEvaristo
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPedro Fernandes Vieira
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlLeonardo Medeiros Martins
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014MySQL Brasil
 
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGIFazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGIFabio Telles Rodriguez
 
Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Cláudio Leopoldino
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universoelliando dias
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
Palestra ferramentas de administraao sgbd
Palestra   ferramentas de administraao sgbdPalestra   ferramentas de administraao sgbd
Palestra ferramentas de administraao sgbdDiego Rivera Tavares
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) Grupo Treinar
 
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...Ambiente Livre
 
Pentaho Data Integration - Integração e Migração de Dados com ETL Open Source...
Pentaho Data Integration - Integração e Migração de Dados com ETL Open Source...Pentaho Data Integration - Integração e Migração de Dados com ETL Open Source...
Pentaho Data Integration - Integração e Migração de Dados com ETL Open Source...Ambiente Livre
 

Similar a Por que PostgreSQL? (20)

Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro Vieira
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para Postgresql
 
Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014Novidades do Universo MySQL Maio 2014
Novidades do Universo MySQL Maio 2014
 
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGIFazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
 
Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Plsql
PlsqlPlsql
Plsql
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universo
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Palestra ferramentas de administraao sgbd
Palestra   ferramentas de administraao sgbdPalestra   ferramentas de administraao sgbd
Palestra ferramentas de administraao sgbd
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
 
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
Pentaho Data Integration (Kettle) Integração e Migração de Dados com ETL Open...
 
Pentaho Data Integration - Integração e Migração de Dados com ETL Open Source...
Pentaho Data Integration - Integração e Migração de Dados com ETL Open Source...Pentaho Data Integration - Integração e Migração de Dados com ETL Open Source...
Pentaho Data Integration - Integração e Migração de Dados com ETL Open Source...
 

Más de Juliano Atanazio

PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLJuliano Atanazio
 
PostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords SafelyPostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords SafelyJuliano Atanazio
 
Neutralizing SQL Injection in PostgreSQL
Neutralizing SQL Injection in PostgreSQLNeutralizing SQL Injection in PostgreSQL
Neutralizing SQL Injection in PostgreSQLJuliano Atanazio
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!Juliano Atanazio
 
Boas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosBoas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosJuliano Atanazio
 
Full Text Search - Busca Textual no PostgreSQL
Full Text Search -  Busca Textual no PostgreSQLFull Text Search -  Busca Textual no PostgreSQL
Full Text Search - Busca Textual no PostgreSQLJuliano Atanazio
 
Gerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanGerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanJuliano Atanazio
 

Más de Juliano Atanazio (8)

PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQL
 
Por que FreeBSD?
Por que FreeBSD?Por que FreeBSD?
Por que FreeBSD?
 
PostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords SafelyPostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords Safely
 
Neutralizing SQL Injection in PostgreSQL
Neutralizing SQL Injection in PostgreSQLNeutralizing SQL Injection in PostgreSQL
Neutralizing SQL Injection in PostgreSQL
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!
 
Boas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosBoas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de Dados
 
Full Text Search - Busca Textual no PostgreSQL
Full Text Search -  Busca Textual no PostgreSQLFull Text Search -  Busca Textual no PostgreSQL
Full Text Search - Busca Textual no PostgreSQL
 
Gerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanGerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarman
 

Por que PostgreSQL?

  • 1. Juliano Atanazio Por que PostgreSQL?Por que PostgreSQL?
  • 2. 2/54 About me Juliano Atanazio ● Graduated in Computer Science for Business Management (Informática para Gestão de Negócios), FATEC Zona Sul, São Paulo – SP; ● PostgreSQL DBA; ● Linux admin; ● Instructor (PostgreSQL); ● LPIC-1, LPIC-2 Certified; ● Linux user since 2000; ● Free Software enthusiast; ● Favorite technologies: PostgreSQL, Linux, Python, Shell Script, FreeBSD, etc...; ● Headbanger :) m/
  • 3. 3/54 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. Hoje é desenvolvido e mantido pelo PGDG (PostgreSQL Global Development Group – Grupo de Desenvolvimento Global do PostgreSQL).
  • 4. 4/54 O que é Seu nome vem do Ingres, que seu código-fonte originalmente era descendente. Por isso o nome Postgres. Seu código-fonte é aberto. O PostgreSQL é Software Livre :)
  • 5. 5/54 Links Site Oficial: www.postgresql.org 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
  • 6. 6/54 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.
  • 7. 7/54 Multi Plataforma ● Linux ● BSDs ● Solaris ● HPUX ● Irix ● AIX ● Unix ● MacOS ● Windows etc...
  • 8. 8/54 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 seu código-fonte, alterá-lo e até fechá-lo para fins comerciais. Um grande exemplo disso é o derivado do PostgreSQL mais famoso, o EDB Postgres, da EnterpriseDB [1], empresa que é uma das grandes contribuidoras para o desenvolvimento do projeto PostgreSQL original. [1] https://www.enterprisedb.com/
  • 9. 9/54 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 (inclusive no Brasil) que prestam consultoria em PostgreSQL.
  • 11. 11/54 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” ou mesmo “Express”... Uma única versão e sem cortes de funcionalidades. Todo poder do grande elefante dos dados à disposição do usuário!
  • 12. 12/54 Imune a Over-Deployment Over-deployment é o que alguns fornecedores de banco de dados proprietários 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. Seu servidor de banco de dados PostgreSQL pode ter quantos núcleos de processador desejar.
  • 13. 13/54 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; ● Foco em detalhes técnicos, sem a necessidade de lidar com inconvenientes de licença.
  • 14. 14/54 Redução 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.
  • 15. 15/54 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!
  • 16. 16/54 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/
  • 17. 17/54 Projetos e Aplicativos: 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
  • 18. 18/54 Aplicativos Clientes psql: Cliente padrão em modo texto; pgcli [1]: Cliente em modo texto, escrito em Python com auto- complete mais avançado do que o psql; pgAdmin3 [2]: Aplicativo gráfico; phpPgAdmin [3]: Interface web; EMS SQL Management Studio para PostgreSQL [4]: Gráfico, proprietário e disponível apenas para Windows; DBeaver [5]: Aplicativo gráfico multi-plataforma escrito em Java, depende do driver JDBC PostgreSQL.
  • 19. 19/54 Aplicativos Clientes [1] http://pgcli.com/ [2] http://pgadmin.org/ [3] http://phppgadmin.sourceforge.net/ [4] http://www.sqlmanager.com.br/html/studio_postgresql.html [5] http://dbeaver.jkiss.org/
  • 20. 20/54 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 a 1600 dependendo do tipo de coluna Número máximo de índices por tabela: Ilimitado
  • 21. 21/54 Tipos de Dados ● Numéricos; ● De Tempo; ● De Texto; ● Nulo; ● JSON; ● XML; ● Rede: IP (IPv4 e Ipv6) e mac address; ● UUID;
  • 22. 22/54 Tipos de Dados ● Boolean; ● Enumerados; ● Geométricos; ● Busca Textual; ● Compostos; ● De Faixa (Range Types); ● Suporte a arrays... ● A variedade é muito grande e o usuário pode também criar um tipo de dados personalizado.
  • 23. 23/54 Funções e Procedures Diferente de outros SGBDs, no PostgreSQL não há uma separação entre Functions e Procedures. É tudo Function! Para invocar uma função é bem simples: SELECT funcao();
  • 24. 24/54 Funções e Procedures Triggers: Diferente de outros SGBDs a função que o trigger chama é definida externa a ele. E depois, na definição do trigger é feita a chamada a essa função. Isso permite reaproveitamento de código de forma que uma mesma função possa atender a mais de um trigger. A linguagem procedural padrão do PostgreSQL é a PL/pgSQL (muito similar à PL/SQL do Oracle, porém mais amigável).
  • 25. 25/54 Padrões SQL ISO O core team de desenvolvimento, também conhecido como PGDG (PostgreSQL Global Development Group) tem como premissa a maior compatibilidade possível com os padrões SQL ISO. https://www.postgresql.org/docs/current/static/features.html
  • 26. 26/54 O Elefante é Poliglota Além da linguagem procedural padrão, PL/pgSQL, temos também opções nativas para fazermos funções em Python (PL/Python) ou em Perl (PL/Perl), de forma nativa. 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.
  • 27. 27/54 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] Lua: LuaPgSQL [8] Ruby: Ruby pg [9] Go: pq [10] Node.js: node-postgres [11] Rust: Rust-Postgres [12]
  • 28. 28/54 Drivers para Linguagens [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 [8] https://github.com/arcapos/luapgsql [9] https://github.com/ged/ruby-pg [10] https://github.com/lib/pq [11] https://github.com/brianc/node-postgres [12] https://github.com/sfackler/rust-postgres
  • 29. 29/54 Além do SQL Básico Common Table Expressions - Expressões Comuns de Tabela Com a cláusula WITH fornece uma forma de escrever comandos auxiliares para uso em uma consulta muito grande. Esses comandos também são conhecidos como Common Table Expressions ou CTEs, que podemos pensar como se fosse uma definição de tabelas temporárias que existem para apenas uma consulta.
  • 30. 30/54 Além do SQL Básico Common Table Expressions - Expressões Comuns de Tabela Cada comando auxiliar em uma cláusula WITH pode ser um SELECT, INSERT, UPDATE ou DELETE e a própria cláusula WITH é anexada ao comando principal que pode também se um SELECT, INSERT, UPDATE, ou DELETE. https://www.postgresql.org/docs/current/static/queries-with.html
  • 31. 31/54 Além do SQL Básico Window Functions - Funções de Janela Permitem executar cálculos através de conjuntos de linhas que são relacionadas à linha de consulta atual. Similar ao tipo de cálculo que pode ser feito com funções de agregação, mas o uso de funções de janela não faz as linhas serem agrupadas em uma única linha de saída, as linhas mantêm suas identidades separadas.
  • 32. 32/54 Além do SQL Básico Window Functions - Funções de Janela Internamente, uma função de janela é capaz de acessar mais do que apenas linha atual de um resultado de uma consulta. Funções de janela devem ser invocadas usando sua própria sintaxe em que a cláusula OVER é necessária. http://www.postgresql.org/docs/current/static/functions-window.html
  • 33. 33/54 Além do SQL Básico Full Text Search - Busca Textual Capacidade de identificar uma linguagem em documentos que satisfaçam critérios de buscas de uma consulta e opcionalmente ordená-las por relevância. Tem suporte linguístico e baseado no idioma que o usuário definir. http://www.postgresql.org/docs/current/static/textsearch.html
  • 34. 34/54 Dados Geográficos: PostGIS A sigla GIS significa Geographic Information System (Sistema de Informação Geográfica). PostGIS é atualmente a melhor ferramenta para dados geográficos em bancos de dados. Está disponível em forma de extensão para o PostgreSQL. http://www.postgis.org
  • 35. 35/54 FDW: Acessando Dados Externos FDW é a sigla para Foreign Data-Wrapper [1]. Podemos acessar dados vindos de outros servidores PostgreSQL ou até mesmo outros SGBDs, além de outras coisas mais. [1] https://wiki.postgresql.org/wiki/Foreign_data_wrappers
  • 36. 36/54 Multi Paradigma Relacional e NoSQL O PostgreSQL não é somente relacional. Ele agrega também funcionalidades NoSQL. O tipo de dado jsonb [1] o que implementa funcionalidades NoSQL do tipo documento (como MongoDB por exemplo). [1] https://www.postgresql.org/docs/current/static/datatype-json.html
  • 37. 37/54 O PostgreSQL é Bala de Prata? Atualmente é SGBD mais avançado devido à quantidade de recursos que oferece; Duvida??? Basta comparar → [1] Apesar disso ele não deve ter uma utilização forçada, pois há determinadas coisas que outros SGBDs são melhores. Isso é fato. [1] http://www.sql-workbench.net/dbms_comparison.html
  • 38. 38/54 O PostgreSQL é Bala de Prata? Para aplicações embarcadas; o SQLite, um simples blog, algo que não envolva um sistema necessariamente transacional predominantemente texto; o MariaDB e em outras situações; SGBDs NoSQL são mais apropriados.
  • 39. 39/54 O PostgreSQL é Bala de Prata? Mas o Postgres conversa (se integra) com todo mundo… Via FDW pode-se extrair o que é melhor de cada SGBD e então o Postgres funcionará como um middleware deixando transparente para a aplicação ;) https://wiki.postgresql.org/wiki/Foreign_data_wrappers https://www.postgresql.org/docs/current/static/postgres-fdw.html
  • 40. 40/54 O PostgreSQL é Bala de Prata? Application Server
  • 41. 41/54 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.
  • 42. 42/54 WAL - Write Ahead Log 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*. *checkpoint é quando os dados que estão em memória e nos logs de transação são efetivados nos arquivos físicos. https://www.postgresql.org/docs/current/static/wal-intro.html
  • 43. 43/54 PITR: A Máquina do Tempo PITR é uma sigla que significa Point In Time Recovery, que em português seria algo como “Recuperação em um Ponto no Tempo”. Pode-se estipular um ponto anterior no tempo e fazer o servidor voltar seus dados como estavam nesse dado momento caso houver necessidade. https://www.postgresql.org/docs/current/static/continuous-archiving.html
  • 44. 44/54 Replicação Física (via streaming); ● Assíncrona; ● Síncrona; Lógica (pglogical) ● Integral; ● Parcial; ● Muito útil para fazer migrações de uma versão para outra. Ambas permitem cascateamento.
  • 45. 45/54 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.
  • 46. 46/54 Versões e Ciclo de Desenvolvimento Modelos de Versão X.Y.Z e X.Y Até a versão 9.6 o PostgreSQL adotou o modelo X.Y.Z, em que X.Y era a versão majoritária e Z e a versão minoritária; A partir da versão 10, o modelo passa a ser simplesmente X.Y, em que X é a versão majoritária e Y a versão minoritária; Em ambos os modelos o último número diz respeito à versão minoritária.
  • 47. 47/54 Versões e Ciclo de Desenvolvimento Versão Majoritária É a parte significativa do número da versão; São lançamentos de versões que trazem novidades como novos recursos; 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 Diz respeito a apenas correções de bugs e de segurança.
  • 48. 48/54 Eventos Internacional: PgCon → https://www.pgcon.org Nacional: PgBr → http://pgbr.postgresql.org.br Regional: PgDay → http://www.postgresql.org.br/eventos/pgday
  • 49. 49/54 Recursos Técnicos Veja no link abaixo a Matriz de Recursos conforme a versão do PostgreSQL: http://www.postgresql.org/about/featurematrix
  • 50. 50/54 Quem Utiliza o PostgreSQL
  • 51. 51/54 Conclusão O PostgreSQL é robusto, flexível, rico em recursos, torna mais fácil a vida do programador e do próprio DBA devido à sua facilidade de programar e administrar. Sua licença permissiva permite reduzir custos podendo perfeitamente substituir uma solução proprietária de forma profissional e eficaz. Então por que não usar? :)
  • 52. 52/54 Donate! The elephant needs you! O Elefante precisa de você! Contribute! :) Contribua! :) http://www.postgresql.org/about/donate/
  • 54. 54/54 See you soon!!! Até a próxima!!! Juliano Atanazio juliano777@gmail.com http://slideshare.net/spjuliano https://speakerdeck.com/julianometalsp https://juliano777.wordpress.com :)