Oficina PostgreSQL Básico Latinoware 2012

Preview:

DESCRIPTION

Oficina Básica de PostgreSQL ministrada no Latinoware 2012

Citation preview

Latinoware 2012Oficina PostgreSQL Básico

Fabrízio de Royes Mellofabriziomello@gmail.com

@fabriziomello

http://www.postgresql.org.brhttp://listas.postgresql.org.br

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

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)

$ add­apt­repository ppa:pitti/postgresql

$ apt­get update

$ apt­get install postgresql­9.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/postgresql­9.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/

Dúvidas/Críticas/Sugestões!!!

Fabrízio de Royes Mellofabriziomello@gmail.com

http://fabriziomello.blogspot.com