oficina postgresql básico latinoware 2012
DESCRIPTION
Oficina Básica de PostgreSQL ministrada no Latinoware 2012TRANSCRIPT
Latinoware 2012Oficina PostgreSQL Básico
Fabrízio de Royes [email protected]
@fabriziomello
http://www.postgresql.org.brhttp://listas.postgresql.org.br
Apresentação
Fabrízio de Royes Mello ([email protected])
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
Agenda
Introdução Preparação do Servidor Manipulando Bancos de Dados
Ambiente Oficina
Ubuntu 12.04 PostgreSQL 9.2
Introdução
Breve Histórico Arquitetura do PostgreSQL
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
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
Arquitetura
Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com
Preparação Servidor
Instalação e Configuração Usuário ”postgres” sistema Operacional Entendendo e Trabalhando com Clusters Iniciando/Parando o Servidor PostgreSQL
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!!!!
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!!!!
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'
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
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
Iniciando/Parando Servidor PostgreSQL
Iniciando Servidor$ sudo /etc/init.d/postgresql start 9.2
Parando Servidor$ sudo /etc/init.d/postgresql stop 9.2
Reiniciando Servidor$ sudo /etc/init.d/postgresql restart 9.2
Recarregando Configurações $ sudo /etc/init.d/postgresql reload 9.2
http://www.postgresql.org/docs/9.2/static/app-pg-ctl.html
Fonte: Manoel Pimental Medeiros - visaoagil.wordpress.com
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
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
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 latino2http://www.postgresql.org/docs/9.2/static/manage-ag-templatedbs.html
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
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;
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
Algumas Referências!
Nacionaishttp://www.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Internacionaishttp://www.postgresql.org (Site oficial)
http://www.postgresql.org/community/lists/