SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
PostgreSQL:             O melhor banco
                de dados Universo




 Conisli 2008               Fernando Ike de Oliveira
Como pronúncia isso aí?

●   Escreve-se PostgreSQL ou postgres

●   Pronúncia-se postígres-és-qüi-uel ou postígres

●   Não se diz/escreve: Postgree, PostrGREE, Postgrí
PostgreSQL: História
●   Início do desenvolvimento do INGRESS em 1977

●   Prova de conceito de banco de dados relacionalna Universidade de
    Berkley

●   Criado a empresa Ingres em 1980

●   INGRES foi comprada pela Computer Associates em 1994
●   Continuado a pesquisa como PostgreSQL em 1986
●   Maior desenvolvimento usando a concepção do INGRESS com um
    foco de orientação objeto e a linguagem de consulta Quel

●   Base do código do INGRES não foi usado como base para o
    POSTGRES
PostgreSQL: História
●   Comercializado como Illustra (Comprado pela Informix que depois
    foi comprada pela IBM)De POSTRGES para PostgreSQL:
    1994-1996

●   Suporte para SQL foi adicionado em 1994

●   Lançado como Postgres95 em 1995

●   Re-lançado como PostgreSQL em 1996

Criado o PostgreSQL Global Development Team

●   2008 os nomes aceitos oficialmente são Postgres ou PostgreSQL
PostgreSQL escala?
● Melhor suporte: independente do fornecedor
● Baixo custo de manutenção e tuning

● Alta estabilidade

● Extensibilidade: pode ser personalizados com funções, tipos ou

através acesso ao código fonte. Extensões na pasta /contrib ou no
Pgfoundry.
● Flexibilidade: roda em várias plataformas (inclusive BSD)

● Robusto: criado para suportar grande volume de dados e transações

concorrentes.
● Controle de transações utilizando MVCC ou Locks explícitos

● Compatível com ANSI SQL

●
  Funções em SQL, C, C++, PLpg/SQL, PL/Perl, PL/Python, PL/TCL
suportadas nativamente além de PL/Java, PL/PHP, PL/R, PL/Ruby,
PL/Scheme, PL/Lua, PL/sh, PL/Mono.
Afinal, qual licença do
             PostgreSQL?
●   PostgreSQL tem licença BSD.

●Pode alterar, modificar, copiar ou redistribuir sem
custo de licença

● Por exemplo: Pode alterar ou estender podendo
fechar o código-fonte para redistribuir

●   Isso é Bom ou Ruim?
PostgreSQL não tem suporte...

 ●PostgreSQL não tem um dono ou uma empresa
 patrocinadora.

 ●Empresas Internacionais como IBM, SUN, EnterpriseDB,
  Greenplum, Command Prompt, Fujitsu, Unisys, BULL
 patrocinam financeiramente ou mantendo
 desenvolvedores

 ●Empresas nacionais como Softa, Dextra, 4Linux, B2BR,
 OpenGEO tem serviço de suporte/treinamento em
 PostgreSQL
PostgreSQL: Quem usa, o que
      diz à respeito??
●   PostgreSQL tem baixo custo de manutenção e tuning

●   PostgreSQL tem alta estabilidade

●PostgreSQL é muito extensível, podendo criar funções, tipos de
dados e outras coisas modificando o código-fonte se necessário

●   Flexibilidade: roda em várias plataformas (inclusive BSD)

● Robusto: criado para suportar grande volume de dados e
transações concorrentes.
PostgreSQL: só o mercadinho
    da esquina que usa!
● Departamento de Estado    ● NASA
 dos EUA                    ● NTT (Telecom Japão)

● APPLE                     ● Sony

● CISCO                     ● Fujitsu

● Hitachi                   ● Hitachi

● Serpro                    ● Skype

● Caixa Econômica Federal   ● SUN

● Metrô-SP                  ● Yahoo

● Embrapa

● FAB
PostgreSQL: Plataformas
      suportadas

               ● Sparc32
● X86_32       ● Sparc64
● X86_64
               ● Alpha
● PowerPC
               ● ARM
● PowerPC 64
               ● MIPS
● S/390
               ● MIPSEL
● S/390X
               ● MK68
● Itanium
               ● PA-RISC
PostgreSQL: Sistemas
Operacionais suportados

 ● Linux       ● NetBSD
 ● Windows     ● OpenBSD

 ● HP-UX       ● Unixware

 ● Solaris     ● True64

 ● MacOSX      ● Irix

 ● FreeBSD     ● AIX
PostgreSQL: Objetos SQL

● Índices: btree, hash, rtree e gist, bitmap
● Seqüências

● Views (podem receber UPDATE, INSERT e UPDATE através

de RULES)
● Domínios

● Esquemas (podem estar atrelados ou não aos usuários)

● Tipos de dados

● Funções

● Funções de agregação

● Funções de operadores

● Funções de conversão de caracteres

● Funções de conversão de tipo de dados

● Funções de utilização de índices

● Gatilhos(Trigger), Restrições (Constraint)

● XML

● Full Text Search
PostgreSQL: Autenticação

● Tipos de autenticação:
✔ local (usando socket UNIX)

✔ host (TCP/IP com ou sem SSL)

✔ hostssl (TCP/IP com SSL)

✔ hostnossl (TCP/IP sem SSL)



● Métodos de autenticação:
✔ TRUST (aceita incondicionalmente)

✔ REJECT (rejeita incondicionalmente)

✔ md5

✔ crypt

✔ password (texto puro)

✔ Kerberos v4 e v5

✔ ident

✔ PAM

✔ LDAP
PostgreSQL: Localização

Suporte a localização:
● Ordenação de strings
● Idioma de mensagens

● Formatação de quantias monetárias

● Formatação de números

● Formatação de data e hora




Suporte a conjunto de caracteres:
● Suporte a ASCII, ISO, EUC, MULE, UTF8.
● Conversão automática de codificação no servidor e cliente.
PostgreSQL: Transação
●   Possibilidade de usar modo auto-commited.

● Uso de controle de multiversão (MMVC) permite acesso
simuntâneo de leitura e escrita utilizando um snapshot
separado.

●   Uso de isolamento Read Commited ou Serializable.

●Possibilidade de utilizar Lock explícito do tipo Acces Share,
Row Share, Row Exclusive, Share Update Exclusive, Share,
Share Row Exclusive, Exclusive e Access Exclusive.

●Facilita a manutenção do sistema pois quando um domínio é
alterado, todos campos baseados nele são alterados.
autenticamente

●Transação pode utilizar SAVEPOINT para retornar
a trasação até pontos específicos.
PostgreSQL: Backup
DUMP

●Realiza dump consistente com o banco de dados on-line sem
bloquear usuários.

●pg_dump gera dump em modo texto (em formato SQL),
binário e compactado por GZIP.

●Podem ser selecionados parte dos objetos na exportação ou
importação como permissões, dados, esquemas, etc.

●Um dump pode ser exportado ou compactado diretamente
para outro banco utilizando pipe!

●   Objetos binários só podem ser exportados no modo binário.
PostgreSQL: Armazenamento

●   Uso de TableSpaces para tabelas e índices.

●Cada TableSpace define um diretório vazio onde o
PostgreSQL cria arquivos automaticamente. Estes diretórios
são ligados por links simbólicos.

●Área para catálogo do sistema e armazenamento temporário
é definido na criação do Cluster e não pode ser modificado.

●Mecanismo TOAST gerencia o armazenamento de tabelas
com mais de 1GB e colunas de comprimento variável.

●Colunas de tamanho variável podem ser comprimidas ou não
e armazenadas em arquivo separado da tabela ou não.
PostgreSQL: Limites

Limites*:

● Tamanho máximo do Banco de Dados: Ilimitado
● Tamanho máximo de tabela: 32 TB

● Tamanho máximo de linha: 1,6 TB

● Tamanho máximo de campo: 1 GB

● Número máximo de linhas por tabela: Ilimitado

● Número máximo de colunas por tabela: 250 – 1600


(dependendo dos tipos de dados utilizados)
● Número de índices por tabela: Ilimitado




* Estes valores podem variar devido a restrições do sistema operacional ou plataforma
utilizada
PostgreSQL: Vacuum e autovacuum

Vacuum

● Recupera espaço em disco utilizado pelo MMVC
● Atualiza estatísticas utilizadas pelo planejador

● Estatísticas podem ser diferenciadas para colunas específicas

de tabelas
● Previne reinicio no id de transações

● Pode ser executado com o Banco de Dados on-line com ajustes

no impacto de desempenho.
● Pode ser automatizado




Autovacuum

●Daemon/serviço que executa o vacuum de forma automatizada
e sem grande impacto de performance (8.3)
PostgreSQL: Backup
Cópia do datafile

● Só pode ser realizado com o banco off-line ou com snapshot
(através do SO) de todos tablespaces e log (WAL)
simultaneamente.

Cópia do datafile + cópia de log (WAL)

● Permite a cópia dos datafiles com o banco de dados on-line
sem o uso de snapshot.
● Permite a recuperação uma data e hora específica ou até o a

realização de determinada transação.
● Permite o controle de históricos paralelos de recuperações até

um ponto específico.
● Necessita de espaço para arquivamento do WAL a partir da

realização da última cópia dos datafiles.
● Permite a criação de um Stand By em outro servidor.
PostgreSQL: Ferramentas de
     Gerenciamento
Software Livre/Código Aberto

● PgAdmin3
● Psql

● Tora




Software Proprietário

● PowerArchitect
● OpenOffice

● PhpPgAdmin

● Case Studio

● Erwin

● PowerDesigner
Minha linguagem não tem driver para esse
tal PostgreSQL...

● C                ● Erlang
● C++              ● TCL

● Java             ● Scheme(Lisp)

● .NET/Mono        ● Lua

● Perl             ● Pascal

● Python           ● Gambas

● Ruby             ● Smaltalk

● PHP              ● Ocaml

● R                ● Ada

● Haskell          ● Algol

● Octave           ● Cobol

                   ● OBDC
Consigo escrever código dentro do
PostgreSQL (Procedural Languages)?


●Pode usar algumas das linguagens suportadas oficialmente
chamadas de PL (Procedural Languages) como: PL/PgSQL,
PL/Perl, PL/Python, PL/TCL além de SQL e C.

 Pode usar algumas outras com:
●PL/Java, PL/PHP, PL/R, PL/Ruby, PL/Scheme, PL/Lua, PL/sh e
PL/Mono...
PostgreSQL escala (Cluster)?


● PgBouncer   ● Postgres-R
● Pgpool-2    ● Warmup/Stand-by

● PL/Proxy    ● Bucardo

● Slony       ● Bizgres

● Londsite    ● GridSQL

● PgCluster   ● Pargres
PostgreSQL consegue
conectar em outros banco de
          dados?
●DBI-Link: Permite conectar em qualquer banco de dados suportado
pelo Perl/DBD como Oracle, MSSQL, DB2, MySQL. CSV, Excel,
Firebird, etc...

●DBLink: Possibilita conectar/manipular em outros servidores
PostgreSQL.

● PL/Proxy: Permite particionar horizontalmente ou replicar tabelas e
registros em vários servidores PostgreSQL.
Como assim não tem
         certificação?
●   Hoje não existe certificação oficial

●Empresas dão treinamento em PostgreSQL: No Brasil tem a
Dextra, 4Linux, OpenGeo, F12...

●   Treinamentos com certificação: EnterpriseDB, SRA-JP.

●   http://www.postgresqlcertification.org/
Radiografia do PostgreSQL

 Pgfoundry: 292 projetos e 8.637 usuários

 Sourceforge: 763 projetos com PostgreSQL

 Pessoas envolvidas com o projeto: +200

 Lista Brasileira de dúvidas e suporte: +1000 inscritos

 Grupo de usuários no mundo: 30

  Encontro de desenvolvedores e usuários: Canadá, Japão, EUA,
Itália e Brasil.
Referências

http://www.postgresql.org.br/quem_est%C3%A1_usando

http://www.postgresql.org/about

http://www.pgfoundry.org

http://www.postgresql.org/community/lists/
Contato e referência


http://www.postgresql.org/docs/8.3/interactive/high-availability.html


http://www.pgfoundry.org

fernando.ike@b2br.com.br
fernando.ike@gmail.com

Mais conteúdo relacionado

Mais procurados

Discos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxDiscos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxFábio dos Reis
 
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaGerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaAlexandre Duarte
 
Fundamentos de banco de dados 01 indrodução
Fundamentos de banco de dados   01 indroduçãoFundamentos de banco de dados   01 indrodução
Fundamentos de banco de dados 01 indroduçãoRafael Pinheiro
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 
Sistemas de Arquivos FAT x NTFS
Sistemas de Arquivos FAT x NTFSSistemas de Arquivos FAT x NTFS
Sistemas de Arquivos FAT x NTFSCleber Ramos
 
Sistema Operativo Servidor
Sistema Operativo ServidorSistema Operativo Servidor
Sistema Operativo ServidorDaniel Barros
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Gerenciamento de Memoria
Gerenciamento de MemoriaGerenciamento de Memoria
Gerenciamento de Memoriaaudineisilva1
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosNatanael Simões
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Leinylson Fontinele
 

Mais procurados (20)

Discos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxDiscos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em Linux
 
Pcie drivers basics
Pcie drivers basicsPcie drivers basics
Pcie drivers basics
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
Device tree
Device treeDevice tree
Device tree
 
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaGerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
 
Fundamentos de banco de dados 01 indrodução
Fundamentos de banco de dados   01 indroduçãoFundamentos de banco de dados   01 indrodução
Fundamentos de banco de dados 01 indrodução
 
Banco De Dados
Banco De DadosBanco De Dados
Banco De Dados
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Placa mãe (motherboard)
Placa mãe (motherboard)Placa mãe (motherboard)
Placa mãe (motherboard)
 
Sistemas de Arquivos FAT x NTFS
Sistemas de Arquivos FAT x NTFSSistemas de Arquivos FAT x NTFS
Sistemas de Arquivos FAT x NTFS
 
Sistema Operativo Servidor
Sistema Operativo ServidorSistema Operativo Servidor
Sistema Operativo Servidor
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Modelagem de dados
Modelagem de dados Modelagem de dados
Modelagem de dados
 
Processadores
ProcessadoresProcessadores
Processadores
 
Gerenciamento de Memoria
Gerenciamento de MemoriaGerenciamento de Memoria
Gerenciamento de Memoria
 
Programação web e o front-end
Programação web e o front-endProgramação web e o front-end
Programação web e o front-end
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
 

Destaque

PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do ParanáPGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do ParanáPGDay Campinas
 
MySQL é de graça?
MySQL é de graça?MySQL é de graça?
MySQL é de graça?MySQL Brasil
 
Banco II - PostgreSQL - Funções
Banco II - PostgreSQL - FunçõesBanco II - PostgreSQL - Funções
Banco II - PostgreSQL - FunçõesGustavo Sávio
 
Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhanyKaren Costa
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
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
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...PGDay Campinas
 
PGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ CloudPGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ CloudPGDay Campinas
 
PostgreSQL and Benchmarks
PostgreSQL and BenchmarksPostgreSQL and Benchmarks
PostgreSQL and BenchmarksJignesh Shah
 
Maximizing EC2 and Elastic Block Store Disk Performance (STG302) | AWS re:Inv...
Maximizing EC2 and Elastic Block Store Disk Performance (STG302) | AWS re:Inv...Maximizing EC2 and Elastic Block Store Disk Performance (STG302) | AWS re:Inv...
Maximizing EC2 and Elastic Block Store Disk Performance (STG302) | AWS re:Inv...Amazon Web Services
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
(SDD416) Amazon EBS Deep Dive | AWS re:Invent 2014
(SDD416) Amazon EBS Deep Dive | AWS re:Invent 2014(SDD416) Amazon EBS Deep Dive | AWS re:Invent 2014
(SDD416) Amazon EBS Deep Dive | AWS re:Invent 2014Amazon Web Services
 

Destaque (17)

PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do ParanáPGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
PGDay Campinas 2013 - CASE: PostgreSQL no Tribunal de Justiça do Paraná
 
MySQL é de graça?
MySQL é de graça?MySQL é de graça?
MySQL é de graça?
 
Trabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQLTrabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQL
 
Postgres Big data
Postgres Big dataPostgres Big data
Postgres Big data
 
Arquivos No Banco
Arquivos No BancoArquivos No Banco
Arquivos No Banco
 
Banco II - PostgreSQL - Funções
Banco II - PostgreSQL - FunçõesBanco II - PostgreSQL - Funções
Banco II - PostgreSQL - Funções
 
Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhany
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
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
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
PGDay Campinas 2013 - Implementando o PostgreSQL de maneira escalável e com a...
 
PGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ CloudPGDay Campinas 2013 - Postgres XC @ Cloud
PGDay Campinas 2013 - Postgres XC @ Cloud
 
PgconfSV compression
PgconfSV compressionPgconfSV compression
PgconfSV compression
 
PostgreSQL and Benchmarks
PostgreSQL and BenchmarksPostgreSQL and Benchmarks
PostgreSQL and Benchmarks
 
Maximizing EC2 and Elastic Block Store Disk Performance (STG302) | AWS re:Inv...
Maximizing EC2 and Elastic Block Store Disk Performance (STG302) | AWS re:Inv...Maximizing EC2 and Elastic Block Store Disk Performance (STG302) | AWS re:Inv...
Maximizing EC2 and Elastic Block Store Disk Performance (STG302) | AWS re:Inv...
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
(SDD416) Amazon EBS Deep Dive | AWS re:Invent 2014
(SDD416) Amazon EBS Deep Dive | AWS re:Invent 2014(SDD416) Amazon EBS Deep Dive | AWS re:Invent 2014
(SDD416) Amazon EBS Deep Dive | AWS re:Invent 2014
 

Semelhante a PostgreSQL: O melhor banco de dados Universo

Oracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTIOracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTIFernando Ike
 
PostgreSQL Conceitos e aplicações - FSA
PostgreSQL  Conceitos e aplicações - FSAPostgreSQL  Conceitos e aplicações - FSA
PostgreSQL Conceitos e aplicações - FSAFabio Telles Rodriguez
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoelliando dias
 
Fisl banco de dados no sql de código aberto
Fisl   banco de dados no sql de código abertoFisl   banco de dados no sql de código aberto
Fisl banco de dados no sql de código abertoSuissa
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
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
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open sourceMatheus Espanhol
 
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
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04Ale Uehara
 

Semelhante a PostgreSQL: O melhor banco de dados Universo (20)

PostgreSQL Conceitos e aplicações
PostgreSQL  Conceitos e aplicaçõesPostgreSQL  Conceitos e aplicações
PostgreSQL Conceitos e aplicações
 
Oracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTIOracle para PostgreSQL: Conseguir migrar e não parar UTI
Oracle para PostgreSQL: Conseguir migrar e não parar UTI
 
PostgreSQL Conceitos e aplicações - FSA
PostgreSQL  Conceitos e aplicações - FSAPostgreSQL  Conceitos e aplicações - FSA
PostgreSQL Conceitos e aplicações - FSA
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinito
 
Fisl banco de dados no sql de código aberto
Fisl   banco de dados no sql de código abertoFisl   banco de dados no sql de código aberto
Fisl banco de dados no sql de código aberto
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
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
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 
Postgre sql +python
Postgre sql +pythonPostgre sql +python
Postgre sql +python
 
Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro Vieira
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Por que PostgreSQL?
Por que PostgreSQL?Por que PostgreSQL?
Por que PostgreSQL?
 
Intro linux
Intro linuxIntro linux
Intro linux
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04
 
Visao geralti netshoes04
Visao geralti netshoes04Visao geralti netshoes04
Visao geralti netshoes04
 

Mais de elliando dias

Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 

Mais de elliando dias (20)

Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 

PostgreSQL: O melhor banco de dados Universo

  • 1. PostgreSQL: O melhor banco de dados Universo Conisli 2008 Fernando Ike de Oliveira
  • 2. Como pronúncia isso aí? ● Escreve-se PostgreSQL ou postgres ● Pronúncia-se postígres-és-qüi-uel ou postígres ● Não se diz/escreve: Postgree, PostrGREE, Postgrí
  • 3.
  • 4. PostgreSQL: História ● Início do desenvolvimento do INGRESS em 1977 ● Prova de conceito de banco de dados relacionalna Universidade de Berkley ● Criado a empresa Ingres em 1980 ● INGRES foi comprada pela Computer Associates em 1994 ● Continuado a pesquisa como PostgreSQL em 1986 ● Maior desenvolvimento usando a concepção do INGRESS com um foco de orientação objeto e a linguagem de consulta Quel ● Base do código do INGRES não foi usado como base para o POSTGRES
  • 5. PostgreSQL: História ● Comercializado como Illustra (Comprado pela Informix que depois foi comprada pela IBM)De POSTRGES para PostgreSQL: 1994-1996 ● Suporte para SQL foi adicionado em 1994 ● Lançado como Postgres95 em 1995 ● Re-lançado como PostgreSQL em 1996 Criado o PostgreSQL Global Development Team ● 2008 os nomes aceitos oficialmente são Postgres ou PostgreSQL
  • 6. PostgreSQL escala? ● Melhor suporte: independente do fornecedor ● Baixo custo de manutenção e tuning ● Alta estabilidade ● Extensibilidade: pode ser personalizados com funções, tipos ou através acesso ao código fonte. Extensões na pasta /contrib ou no Pgfoundry. ● Flexibilidade: roda em várias plataformas (inclusive BSD) ● Robusto: criado para suportar grande volume de dados e transações concorrentes. ● Controle de transações utilizando MVCC ou Locks explícitos ● Compatível com ANSI SQL ● Funções em SQL, C, C++, PLpg/SQL, PL/Perl, PL/Python, PL/TCL suportadas nativamente além de PL/Java, PL/PHP, PL/R, PL/Ruby, PL/Scheme, PL/Lua, PL/sh, PL/Mono.
  • 7.
  • 8. Afinal, qual licença do PostgreSQL? ● PostgreSQL tem licença BSD. ●Pode alterar, modificar, copiar ou redistribuir sem custo de licença ● Por exemplo: Pode alterar ou estender podendo fechar o código-fonte para redistribuir ● Isso é Bom ou Ruim?
  • 9.
  • 10. PostgreSQL não tem suporte... ●PostgreSQL não tem um dono ou uma empresa patrocinadora. ●Empresas Internacionais como IBM, SUN, EnterpriseDB, Greenplum, Command Prompt, Fujitsu, Unisys, BULL patrocinam financeiramente ou mantendo desenvolvedores ●Empresas nacionais como Softa, Dextra, 4Linux, B2BR, OpenGEO tem serviço de suporte/treinamento em PostgreSQL
  • 11.
  • 12. PostgreSQL: Quem usa, o que diz à respeito?? ● PostgreSQL tem baixo custo de manutenção e tuning ● PostgreSQL tem alta estabilidade ●PostgreSQL é muito extensível, podendo criar funções, tipos de dados e outras coisas modificando o código-fonte se necessário ● Flexibilidade: roda em várias plataformas (inclusive BSD) ● Robusto: criado para suportar grande volume de dados e transações concorrentes.
  • 13.
  • 14. PostgreSQL: só o mercadinho da esquina que usa! ● Departamento de Estado ● NASA dos EUA ● NTT (Telecom Japão) ● APPLE ● Sony ● CISCO ● Fujitsu ● Hitachi ● Hitachi ● Serpro ● Skype ● Caixa Econômica Federal ● SUN ● Metrô-SP ● Yahoo ● Embrapa ● FAB
  • 15. PostgreSQL: Plataformas suportadas ● Sparc32 ● X86_32 ● Sparc64 ● X86_64 ● Alpha ● PowerPC ● ARM ● PowerPC 64 ● MIPS ● S/390 ● MIPSEL ● S/390X ● MK68 ● Itanium ● PA-RISC
  • 16. PostgreSQL: Sistemas Operacionais suportados ● Linux ● NetBSD ● Windows ● OpenBSD ● HP-UX ● Unixware ● Solaris ● True64 ● MacOSX ● Irix ● FreeBSD ● AIX
  • 17. PostgreSQL: Objetos SQL ● Índices: btree, hash, rtree e gist, bitmap ● Seqüências ● Views (podem receber UPDATE, INSERT e UPDATE através de RULES) ● Domínios ● Esquemas (podem estar atrelados ou não aos usuários) ● Tipos de dados ● Funções ● Funções de agregação ● Funções de operadores ● Funções de conversão de caracteres ● Funções de conversão de tipo de dados ● Funções de utilização de índices ● Gatilhos(Trigger), Restrições (Constraint) ● XML ● Full Text Search
  • 18. PostgreSQL: Autenticação ● Tipos de autenticação: ✔ local (usando socket UNIX) ✔ host (TCP/IP com ou sem SSL) ✔ hostssl (TCP/IP com SSL) ✔ hostnossl (TCP/IP sem SSL) ● Métodos de autenticação: ✔ TRUST (aceita incondicionalmente) ✔ REJECT (rejeita incondicionalmente) ✔ md5 ✔ crypt ✔ password (texto puro) ✔ Kerberos v4 e v5 ✔ ident ✔ PAM ✔ LDAP
  • 19. PostgreSQL: Localização Suporte a localização: ● Ordenação de strings ● Idioma de mensagens ● Formatação de quantias monetárias ● Formatação de números ● Formatação de data e hora Suporte a conjunto de caracteres: ● Suporte a ASCII, ISO, EUC, MULE, UTF8. ● Conversão automática de codificação no servidor e cliente.
  • 20. PostgreSQL: Transação ● Possibilidade de usar modo auto-commited. ● Uso de controle de multiversão (MMVC) permite acesso simuntâneo de leitura e escrita utilizando um snapshot separado. ● Uso de isolamento Read Commited ou Serializable. ●Possibilidade de utilizar Lock explícito do tipo Acces Share, Row Share, Row Exclusive, Share Update Exclusive, Share, Share Row Exclusive, Exclusive e Access Exclusive. ●Facilita a manutenção do sistema pois quando um domínio é alterado, todos campos baseados nele são alterados. autenticamente ●Transação pode utilizar SAVEPOINT para retornar a trasação até pontos específicos.
  • 21. PostgreSQL: Backup DUMP ●Realiza dump consistente com o banco de dados on-line sem bloquear usuários. ●pg_dump gera dump em modo texto (em formato SQL), binário e compactado por GZIP. ●Podem ser selecionados parte dos objetos na exportação ou importação como permissões, dados, esquemas, etc. ●Um dump pode ser exportado ou compactado diretamente para outro banco utilizando pipe! ● Objetos binários só podem ser exportados no modo binário.
  • 22. PostgreSQL: Armazenamento ● Uso de TableSpaces para tabelas e índices. ●Cada TableSpace define um diretório vazio onde o PostgreSQL cria arquivos automaticamente. Estes diretórios são ligados por links simbólicos. ●Área para catálogo do sistema e armazenamento temporário é definido na criação do Cluster e não pode ser modificado. ●Mecanismo TOAST gerencia o armazenamento de tabelas com mais de 1GB e colunas de comprimento variável. ●Colunas de tamanho variável podem ser comprimidas ou não e armazenadas em arquivo separado da tabela ou não.
  • 23. PostgreSQL: Limites Limites*: ● Tamanho máximo do Banco de Dados: Ilimitado ● Tamanho máximo de tabela: 32 TB ● Tamanho máximo de linha: 1,6 TB ● Tamanho máximo de campo: 1 GB ● Número máximo de linhas por tabela: Ilimitado ● Número máximo de colunas por tabela: 250 – 1600 (dependendo dos tipos de dados utilizados) ● Número de índices por tabela: Ilimitado * Estes valores podem variar devido a restrições do sistema operacional ou plataforma utilizada
  • 24. PostgreSQL: Vacuum e autovacuum Vacuum ● Recupera espaço em disco utilizado pelo MMVC ● Atualiza estatísticas utilizadas pelo planejador ● Estatísticas podem ser diferenciadas para colunas específicas de tabelas ● Previne reinicio no id de transações ● Pode ser executado com o Banco de Dados on-line com ajustes no impacto de desempenho. ● Pode ser automatizado Autovacuum ●Daemon/serviço que executa o vacuum de forma automatizada e sem grande impacto de performance (8.3)
  • 25. PostgreSQL: Backup Cópia do datafile ● Só pode ser realizado com o banco off-line ou com snapshot (através do SO) de todos tablespaces e log (WAL) simultaneamente. Cópia do datafile + cópia de log (WAL) ● Permite a cópia dos datafiles com o banco de dados on-line sem o uso de snapshot. ● Permite a recuperação uma data e hora específica ou até o a realização de determinada transação. ● Permite o controle de históricos paralelos de recuperações até um ponto específico. ● Necessita de espaço para arquivamento do WAL a partir da realização da última cópia dos datafiles. ● Permite a criação de um Stand By em outro servidor.
  • 26. PostgreSQL: Ferramentas de Gerenciamento Software Livre/Código Aberto ● PgAdmin3 ● Psql ● Tora Software Proprietário ● PowerArchitect ● OpenOffice ● PhpPgAdmin ● Case Studio ● Erwin ● PowerDesigner
  • 27. Minha linguagem não tem driver para esse tal PostgreSQL... ● C ● Erlang ● C++ ● TCL ● Java ● Scheme(Lisp) ● .NET/Mono ● Lua ● Perl ● Pascal ● Python ● Gambas ● Ruby ● Smaltalk ● PHP ● Ocaml ● R ● Ada ● Haskell ● Algol ● Octave ● Cobol ● OBDC
  • 28. Consigo escrever código dentro do PostgreSQL (Procedural Languages)? ●Pode usar algumas das linguagens suportadas oficialmente chamadas de PL (Procedural Languages) como: PL/PgSQL, PL/Perl, PL/Python, PL/TCL além de SQL e C. Pode usar algumas outras com: ●PL/Java, PL/PHP, PL/R, PL/Ruby, PL/Scheme, PL/Lua, PL/sh e PL/Mono...
  • 29. PostgreSQL escala (Cluster)? ● PgBouncer ● Postgres-R ● Pgpool-2 ● Warmup/Stand-by ● PL/Proxy ● Bucardo ● Slony ● Bizgres ● Londsite ● GridSQL ● PgCluster ● Pargres
  • 30. PostgreSQL consegue conectar em outros banco de dados? ●DBI-Link: Permite conectar em qualquer banco de dados suportado pelo Perl/DBD como Oracle, MSSQL, DB2, MySQL. CSV, Excel, Firebird, etc... ●DBLink: Possibilita conectar/manipular em outros servidores PostgreSQL. ● PL/Proxy: Permite particionar horizontalmente ou replicar tabelas e registros em vários servidores PostgreSQL.
  • 31. Como assim não tem certificação? ● Hoje não existe certificação oficial ●Empresas dão treinamento em PostgreSQL: No Brasil tem a Dextra, 4Linux, OpenGeo, F12... ● Treinamentos com certificação: EnterpriseDB, SRA-JP. ● http://www.postgresqlcertification.org/
  • 32. Radiografia do PostgreSQL Pgfoundry: 292 projetos e 8.637 usuários Sourceforge: 763 projetos com PostgreSQL Pessoas envolvidas com o projeto: +200 Lista Brasileira de dúvidas e suporte: +1000 inscritos Grupo de usuários no mundo: 30 Encontro de desenvolvedores e usuários: Canadá, Japão, EUA, Itália e Brasil.