SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
PostgreSQL


 www.postgresql.org



André Luiz Fortunato da Silva
    Analista de Sistemas
          CIRP / USP
       alf@cirp.usp.br
Características

    Licença BSD (aberto, permite uso comercial)

    Multi-plataforma (Unix, GNU/Linux, Windows...)

    Transações e “savepoints”

    Herança de tabelas

    Índices

    Tipo Serial (SEQUENCE simula auto-incremento)

    “Backup online” e “recovery”

    Tabelas temporárias

    Controle de acesso (usuário, banco e host)
Características

    Suporte a idiomas (no initdb)

    Objetos grandes (imagens, vídeos, etc.)

    Sub-consultas

    Integridade referencial

    Funções armazenadas

    Gatilhos

    Novos tipos de dados

    Esquemas (encapsula objetos em namespaces)

    Regras (rules, ações alternativas)
Características

    “Tablespaces” (outro local no sistema de arq.)

    Limpeza e otimização de consultas (VACCUM)

    Visões (é possível simular visões atualizáveis)

    Recuperação a partir de logs de transação
    (“Point in Time Recovery”)

    DB Link (contrib, comunicação entre servidores)

    Replicação (projetos Slony-I, pgPool e
    pgCluster)
Limites ???

    Tamanhos máximos:
    −   banco de dados: ilimitado
    −   tabela: 32 TB
    −   Uma linha: 1,6 TB
    −   Um campo: 1 GB

    Quantidades máximas:
    −   linhas por tabela: ilimitado
    −   colunas por tabela: de 250 a 1600 (depende
        do tipo)
    −   índices por tabela: ilimitado
Aprofundando
Apoio:
  −   www.postgresql.org/docs
  −   www.postgresql.org.br
  −   pgfoundry.org
  −   gborg.postgresql.org
Treinamento:
  −   www.centercursos.com.br (Ribeirão Preto)
  −   www.dbexperts.com.br (São Paulo)
Vamos praticar um
   pouco ??? ...
Interface modo texto psql:


psql -l (mostra os bancos)
psql template1 (acessa o banco)


Dentro do psql:
? (help dos comandos internos do psql)
h (comandos SQL disponíveis)
h create database (sintaxe de um comando SQL)
Criando um banco de dados:


create database empresa
     with encoding='LATIN1';


l
c empresa
Criando uma tabela:

create table funcs (
id serial primary key not null,
nome varchar(50) not null,
tipo varchar(20) not null default 'junior',
salario numeric(7,2) default 0
);

dt
d funcs

insert into funcs (tipo) values ('senior');
insert into funcs (nome) values ('João');
Criando uma tabela relacionada:

create table fones (
tipo char(3),
nro varchar(8) not null,
func integer references funcs (id)
  on delete restrict on update cascade
);

d fones

insert into funcs (nome) values ('Fulano');
insert into funcs (nome) values ('Beltrano');
insert into fones values ('res','12345',1);
delete from funcs where id=1;
delete from funcs where id=2;
Transação:

begin;
update funcs set nome='Juca' where id=1;
insert into funcs(nome) values ('Maria');
commit;

(Se algum erro ocorrer antes do “commit”, o
que foi feito a partir do “begin” é desfeito)
Tabela temporária:

create temporary table funcs2 as
 select nome, tipo from funcs;

dt
select * from funcs2;
q
psql empresa
dt (tabela funcs2 não existe mais)
Visões:

create view vfunc as
 select id,nome from funcs;

dv
select * from vfunc;

update vfunc set nome='Rita' where id=3;

create rule atualiza as
 on update to vfunc do instead
 update funcs set nome=new.nome
    where id=new.id;

update vfunc set nome='Rita' where id=3;
Funções armazenadas:
create language plpgsql;

create function resultado (integer) returns text as
'
begin
  if ($1 > 7) then
    return ''Aprovado'';
  else
    return ''Reprovado'';
  end if;
end;
'
LANGUAGE plpgsql;

select resultado(8);
Gatilhos:

create function insfone() returns trigger as
'
begin
  insert into fones values (''---'',''111'',new.id);
  return new;
end;
'
language plpgsql;

create trigger tr_insfone
after insert on funcs
for each row execute procedure insfone();
Backup, faxina e análise:

~postgres/.pgpass
*:*:*:postgres:senha123
(formato: hostname:port:database:username:password)


No cron:
pg_dumpall -U postgres > meubkp.sql
vacuumdb -a -f -z -U postgres
(para único banco pg_dump...)


Restauração:
psql template1 < meubkp.sql
Segurança (grant):

create group gerentes;
create group vendas;

create user fulano with password '123'
    in group gerentes;
create user siclano with password '456'
    in group vendas;

grant all on funcs to group gerentes;
grant select, insert on funcs to group vendas;

revoke all on funcs from group vendas;

z (visualiza as permissões)
Segurança (acesso remoto):
/etc/postgresql/8.1/main/pg_hba.conf

# TYPE      DATABASE USER CIDR-ADDRESS METHOD
local       all                postgres
trust
local       all              all
      md5
host        all              all       127.0.0.1/32
md5
host        empresa      +gr1 143.10.20.0/24 md5
PostgreSQL


 www.postgresql.org

    Obrigado !!!
André Luiz Fortunato da Silva
    Analista de Sistemas
          CIRP / USP
       alf@cirp.usp.br

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Linux shell
Linux shellLinux shell
Linux shell
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
 
01 notações iniciais
01   notações iniciais01   notações iniciais
01 notações iniciais
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Resta um java
Resta um javaResta um java
Resta um java
 
Maonamassa Pga
Maonamassa PgaMaonamassa Pga
Maonamassa Pga
 
Curso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal RootCurso de Certificação Linux LPI - Terminal Root
Curso de Certificação Linux LPI - Terminal Root
 
PostgreSQL Dump e Restor - O básico
PostgreSQL Dump e Restor - O básicoPostgreSQL Dump e Restor - O básico
PostgreSQL Dump e Restor - O básico
 
Apache2+PHP5+PostgreSQL no Linux
Apache2+PHP5+PostgreSQL no LinuxApache2+PHP5+PostgreSQL no Linux
Apache2+PHP5+PostgreSQL no Linux
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
Ficha de trabalho 3
Ficha de trabalho 3Ficha de trabalho 3
Ficha de trabalho 3
 
PHP e Mysql - DELETE
PHP e Mysql - DELETEPHP e Mysql - DELETE
PHP e Mysql - DELETE
 
Let's log!
Let's log!Let's log!
Let's log!
 
Ruben carvalho 10o_h
Ruben carvalho 10o_hRuben carvalho 10o_h
Ruben carvalho 10o_h
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantes
 
Fich cristian n3
Fich cristian n3Fich cristian n3
Fich cristian n3
 
Programação em bat
Programação em batProgramação em bat
Programação em bat
 
Introdução a worker
Introdução a workerIntrodução a worker
Introdução a worker
 

Semelhante a PostgreSQL Sistema Gerenciador Banco Dados Aberto

Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018Tchelinux
 
Guia com mais de 500 comandos do linux explicados computeiro da depressão
Guia com mais de 500 comandos do linux explicados   computeiro da depressãoGuia com mais de 500 comandos do linux explicados   computeiro da depressão
Guia com mais de 500 comandos do linux explicados computeiro da depressãoJesser Martins Medeiros
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bashSérgio Silva
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2Daniel
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestEdson Celio
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 
Drupal 7 Direto das Trincheiras
Drupal 7  Direto das TrincheirasDrupal 7  Direto das Trincheiras
Drupal 7 Direto das TrincheirasRafael Caceres
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
 
Principais comandos do terminal no linux tecnologia para todos!
Principais comandos do terminal no linux   tecnologia para todos!Principais comandos do terminal no linux   tecnologia para todos!
Principais comandos do terminal no linux tecnologia para todos!Fábio Fernando
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensAlessandro Binhara
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
Fluentd/LogStash + elastic search + kibana
Fluentd/LogStash + elastic search + kibanaFluentd/LogStash + elastic search + kibana
Fluentd/LogStash + elastic search + kibanaCésar Araújo
 

Semelhante a PostgreSQL Sistema Gerenciador Banco Dados Aberto (20)

Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
 
Guia com mais de 500 comandos do linux explicados computeiro da depressão
Guia com mais de 500 comandos do linux explicados   computeiro da depressãoGuia com mais de 500 comandos do linux explicados   computeiro da depressão
Guia com mais de 500 comandos do linux explicados computeiro da depressão
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bash
 
Palestra2009
Palestra2009Palestra2009
Palestra2009
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Python
PythonPython
Python
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentest
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
Drupal 7 Direto das Trincheiras
Drupal 7  Direto das TrincheirasDrupal 7  Direto das Trincheiras
Drupal 7 Direto das Trincheiras
 
Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
 
Principais comandos do terminal no linux tecnologia para todos!
Principais comandos do terminal no linux   tecnologia para todos!Principais comandos do terminal no linux   tecnologia para todos!
Principais comandos do terminal no linux tecnologia para todos!
 
Dev Ext PHP
Dev Ext PHPDev Ext PHP
Dev Ext PHP
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Fluentd/LogStash + elastic search + kibana
Fluentd/LogStash + elastic search + kibanaFluentd/LogStash + elastic search + kibana
Fluentd/LogStash + elastic search + kibana
 
PostgreSQL 8.4
PostgreSQL 8.4PostgreSQL 8.4
PostgreSQL 8.4
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando 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
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
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
 

PostgreSQL Sistema Gerenciador Banco Dados Aberto

  • 1. PostgreSQL www.postgresql.org André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br
  • 2. Características  Licença BSD (aberto, permite uso comercial)  Multi-plataforma (Unix, GNU/Linux, Windows...)  Transações e “savepoints”  Herança de tabelas  Índices  Tipo Serial (SEQUENCE simula auto-incremento)  “Backup online” e “recovery”  Tabelas temporárias  Controle de acesso (usuário, banco e host)
  • 3. Características  Suporte a idiomas (no initdb)  Objetos grandes (imagens, vídeos, etc.)  Sub-consultas  Integridade referencial  Funções armazenadas  Gatilhos  Novos tipos de dados  Esquemas (encapsula objetos em namespaces)  Regras (rules, ações alternativas)
  • 4. Características  “Tablespaces” (outro local no sistema de arq.)  Limpeza e otimização de consultas (VACCUM)  Visões (é possível simular visões atualizáveis)  Recuperação a partir de logs de transação (“Point in Time Recovery”)  DB Link (contrib, comunicação entre servidores)  Replicação (projetos Slony-I, pgPool e pgCluster)
  • 5. Limites ???  Tamanhos máximos: − banco de dados: ilimitado − tabela: 32 TB − Uma linha: 1,6 TB − Um campo: 1 GB  Quantidades máximas: − linhas por tabela: ilimitado − colunas por tabela: de 250 a 1600 (depende do tipo) − índices por tabela: ilimitado
  • 6. Aprofundando Apoio: − www.postgresql.org/docs − www.postgresql.org.br − pgfoundry.org − gborg.postgresql.org Treinamento: − www.centercursos.com.br (Ribeirão Preto) − www.dbexperts.com.br (São Paulo)
  • 7. Vamos praticar um pouco ??? ...
  • 8. Interface modo texto psql: psql -l (mostra os bancos) psql template1 (acessa o banco) Dentro do psql: ? (help dos comandos internos do psql) h (comandos SQL disponíveis) h create database (sintaxe de um comando SQL)
  • 9. Criando um banco de dados: create database empresa with encoding='LATIN1'; l c empresa
  • 10. Criando uma tabela: create table funcs ( id serial primary key not null, nome varchar(50) not null, tipo varchar(20) not null default 'junior', salario numeric(7,2) default 0 ); dt d funcs insert into funcs (tipo) values ('senior'); insert into funcs (nome) values ('João');
  • 11. Criando uma tabela relacionada: create table fones ( tipo char(3), nro varchar(8) not null, func integer references funcs (id) on delete restrict on update cascade ); d fones insert into funcs (nome) values ('Fulano'); insert into funcs (nome) values ('Beltrano'); insert into fones values ('res','12345',1); delete from funcs where id=1; delete from funcs where id=2;
  • 12. Transação: begin; update funcs set nome='Juca' where id=1; insert into funcs(nome) values ('Maria'); commit; (Se algum erro ocorrer antes do “commit”, o que foi feito a partir do “begin” é desfeito)
  • 13. Tabela temporária: create temporary table funcs2 as select nome, tipo from funcs; dt select * from funcs2; q psql empresa dt (tabela funcs2 não existe mais)
  • 14. Visões: create view vfunc as select id,nome from funcs; dv select * from vfunc; update vfunc set nome='Rita' where id=3; create rule atualiza as on update to vfunc do instead update funcs set nome=new.nome where id=new.id; update vfunc set nome='Rita' where id=3;
  • 15. Funções armazenadas: create language plpgsql; create function resultado (integer) returns text as ' begin if ($1 > 7) then return ''Aprovado''; else return ''Reprovado''; end if; end; ' LANGUAGE plpgsql; select resultado(8);
  • 16. Gatilhos: create function insfone() returns trigger as ' begin insert into fones values (''---'',''111'',new.id); return new; end; ' language plpgsql; create trigger tr_insfone after insert on funcs for each row execute procedure insfone();
  • 17. Backup, faxina e análise: ~postgres/.pgpass *:*:*:postgres:senha123 (formato: hostname:port:database:username:password) No cron: pg_dumpall -U postgres > meubkp.sql vacuumdb -a -f -z -U postgres (para único banco pg_dump...) Restauração: psql template1 < meubkp.sql
  • 18. Segurança (grant): create group gerentes; create group vendas; create user fulano with password '123' in group gerentes; create user siclano with password '456' in group vendas; grant all on funcs to group gerentes; grant select, insert on funcs to group vendas; revoke all on funcs from group vendas; z (visualiza as permissões)
  • 19. Segurança (acesso remoto): /etc/postgresql/8.1/main/pg_hba.conf # TYPE DATABASE USER CIDR-ADDRESS METHOD local all postgres trust local all all md5 host all all 127.0.0.1/32 md5 host empresa +gr1 143.10.20.0/24 md5
  • 20. PostgreSQL www.postgresql.org Obrigado !!! André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br