2. Apresentação
Fabrízio de Royes Mello (fabriziomello@gmail.com)
Gerente de Tecnologia
Bacharel em Informática pela URCAMP – Bagé/RS
Experiência Profissional
Desenvolvimento de Software desde 1993
Experiência em PostgreSQL desde 1999
Experiência em PHP desde 2002
Consultor/Coach PostgreSQL
Colaborador Comunidade Brasileira PostgreSQL
Colaborador PGDG – PostgreSQL Global Development
Group
3. Agenda
Introdução
Preparação do Servidor
Manipulando Bancos de Dados
5. Introdução
Breve Histórico
Arquitetura do PostgreSQL
6. Breve Histórico
Antes : Oriundo do INGRES
1986 : Início Projeto (Berkley)
1987 : Primeira versão do Postgres
1991 : versão 3 com principais funcionalidades atuais
1993 : versão 4.2, última lançada pela Berkley
1994 : Andrew Yu e Jolly Chen lançam Postgre95 com interpretador para
linguagem SQL
1997 : Nome muda para PostgreSQL, versão 6 lançada
2000 : versão 7 lançada com suporte a FK
2005 : versão 8 lançada com versão nativa Windows, Tablespaces,
Savepoints, Point-In-Time-Recovery
2005 : versão 8.1 Commit Tho Phases, Roles
2006 : versão 8.2 (Insert, Update, Delete) Returning, melhora performance
OLTP e BI
2008 : versão 8.3 debug PL/PgSQL, Tsearch2 (XML) no core
2009 : versão 8.4 Windowing Functions, Common Table Expressions and
Recursive Queries, Parallel Restore, ”pg_upgrade”
2010 : versão 9.0 Hot Standby and Streaming Replication (assincrona)
2011 : versão 9.1 Synchronous Streaming Replication, Extensions, FDWs
2012 : versão 9.2 Index-Only Scans, JSON, PLV8, Cascade Replication
7. Arquitetura
Modelo Cliente/Servidor
Processo Servidor (postgres)
Aplicação Cliente (text, gui, web, etc)
Faz uma cópia (fork) do processo servidor para
cada conexão cliente
Processos auxiliares
Checkpointer
Writer
Wal Writer
Autovacuum
Stats Collector
9. Preparação Servidor
Instalação e Configuração
Usuário ”postgres” sistema Operacional
Entendendo e Trabalhando com Clusters
Iniciando/Parando o Servidor PostgreSQL
Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com
10. Instalação e Configuração
Repositórios Ubuntu 12.04
$ sudo s (senha latinoware2012)
$ addaptrepository ppa:pitti/postgresql
$ aptget update
$ aptget install postgresql9.2
Verificando se as coisas estão OK!
$ pg_lsclusters
Listar Bases de Dados
$ psql U postgres l
Oops... erro autenticação!!!!
11. Instalação e Configuração
Configurar pg_hba.conf
$ sudo vim
/etc/postgresql/9.2/main/pg_hba.conf
Trocar ident e md5 por ”trust” e salvar
$ sudo /etc/init.d/postgresql9.2 reload
Listar Bases de Dados (novamente)
$ psql U postgres l (gravem isso!!)
Agora sim!!!!
12. Usuário ”postgres” S.O.
Encapsular atividades em um único usuário
Usuário ”postgres” que executa binários
Arquivos de configuração e datafiles tem owner e
group = ”postgres”
Uma breve ”verificação”
$ ls al /etc/postgresql/9.2/main
$ ls al /var/lib/postgresql/9.2
$ ps aux | egrep '^postgres'
13. Entendendo e Trabalhando
com Clusters
Cluster = agrupamento de bancos de dados
Gerenciado por um ”processo servidor"
Listar clusters (debian based - pg_common)
$ pg_lsclusters
Criar clusters (debian based - pg_common)
$ pg_createcluster
http://www.postgresql.org/docs/9.2/static/app-initdb.html
Apagar clusters (debian based - pg_common)
$ pg_dropcluster
14. Entendendo e Trabalhando
com Clusters
Exercício
Criar um cluster chamado ”latinoware”
Criar um cluster chamado ”oficina”
Configurar autenticação clusters (pg_hba.conf)
Listar clusters
Apagar cluster ”oficina”
Respostas
$ sudo pg_createcluster 9.2 latinoware
$ sudo pg_createcluster 9.2 oficina
$ sudo vim /etc/postgresql/9.2/**/pg_hba.conf
$ pg_lsclusters
$ sudo pg_dropcluster stop 9.2 oficina
16. Manipulando
Bancos de Dados
Criando um Banco de Dados
Banco de Dados Template
Removendo Banco de Dados
Localização Física no Sistema de Arquivos
Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com
17. Criando um Banco de Dados
Utilitário ”createdb”
$ createdb U postgres latino1
http://www.postgresql.org/docs/9.2/static/app-createdb.html
SQL ”CREATE DATABASE”
$ psql U postgres
postgres=# CREATE DATABASE latino1;
http://www.postgresql.org/docs/9.2/static/sql-createdatabase.html
18. Banco de Dados Template
Template = Banco de Dados Modelo
CREATE DATABASE, atualmente, ”copia” uma
base de dados existente, por padrão
”template1”
Existe outro banco template chamado
”template0” que é um ”banco virgem”
Criando ou banco por template
$ createdb -U postgres -T latino1 latino2
http://www.postgresql.org/docs/9.2/static/manage-ag-templatedbs.html
19. Removendo
Bancos de Dados
Utilitário ”dropdb”
$ dropdb U postgres latino2
http://www.postgresql.org/docs/9.2/static/app-dropdb.html
SQL ”DROP DATABASE”
$ psql U postgres
postgres=# DROP DATABASE latino2;
http://www.postgresql.org/docs/9.2/static/sql-dropdatabase.html
20. Localização Física no
Sistema de Arquivos
Cluster
$ psql U postgres
postgres=# SHOW data_directory
Configurações
$ psql U postgres
postgres=# SHOW config_file;
postgres=# SHOW hba_file;
21. Exercícios
Criar / Apagar Cluster
Criar Banco de Dados
Criar Banco usando anterior como template
Dica: Mudar cluster atual da sessão
export PGCLUSTER=9.2/nome_do_cluster