Escolar Documentos
Profissional Documentos
Cultura Documentos
Grupo:
Thiago de A. Lima
Daniel Fonseca
Wlysses Chaves
PostGreSQL
OPEN SOURCE
Foi criado pela OSI (Open Source Initiative) e refere-se a
software tambm conhecido por software livre.
Genericamente trata-se de software que respeita as
quatro liberdades definidas pela Free Software
Foundation.
COMPARANDO LICENAS
GPL
BSD
Express
Informix
Administrao e Segurana
Atualizao in Loco (Upgrade-in-Place) Integrada (pg_upgrade)
Autenticao RADIUS
Verificao de Fora de Senha (passwordcheck)
Comandos de Gesto de Permisses de Banco de Dados Facilitados (GRANT ON ALL e DEFAULT
PERMISSIONS)
COMO PARTICIPAR ?
COMO PARTICIPAR ?
Voluntrios interessados em contribuir com o projeto tambm podem consultar as
sugestes de tarefas de desenvolvimento de novas funes e de correes de
erros que so publicadas ou apresentar suas prprias sugestes. O cdigo
desenvolvido submetido equipe do projeto que pode aceit-lo e inclu-lo nas
novas verses ou recus-lo. Voluntrios tambm podem colaborar gerando
documentao ou realizando tradues!
LICENA
O PostgreSQL usa a licena BSD, que requer apenas que o cdigo fonte
licenciado mantenha seu direito de cpia e informao da licena. Esta licena
certificada pela OSI amplamente vista como flexvel e amigvel empresas, j
que ela no restringe o uso do PostgreSQL com aplicaes comerciais e
proprietrias. Juntamente com suporte de mltiplas empresas e propriedade
pblica do cdigo, a licena BSD torna o PostgreSQL muito popular com
fabricantes que querem anexar um banco de dados com seus prprios produtos
sem medo de nus financeiro, priso um s fabricante, ou mudanas nos termos
de licenas.
LINGUAGEM
A principal linguagem de programao utilizada no desenvolvimento do
PostgreSQL 8.3.0 o ANSI C. Entretanto, tambm so utilizadas minoritariamente
outras linguagens conforme mostra a tabela.
Linguagens de Programao utilizadas no PostgreSQL 8.3.0
Linguagem
Linhas de cdigo
ANSI C
541.312
94,66
yacc
15.527
2,72
lex
5.580
0,98
sh
5.412
0,95
perl
3.913
0,68
asm
65
0,01
python
12
0,00
LIMITES DO POSTGRES
Ilimitado
32 TB
1.6 TB
1 GB
Ilimitado
2501600 dependendo do tipo de coluna
Ilimitado
ESTADO ATUAL
Alm de doaes, o projeto PostgreSQL se sustenta pelo patrocnio de diversas
empresas, entre as quais se destacam: Fujitsu, Hub.Org, NTT Group, Red Hat,
Skype, SRA e Sun Microsystems.
O software tem adquirido prestgio na comunidade Linux, tendo recebido diversas
vezes o prmio Linux Journal Editor's Choice de melhor sistema de gerenciamento
de banco de dados (SGBD).
CASOS DE SUCESSO
CASOS DE SUCESSO
Quais foram as principais dificuldades encontradas?
A principal dificuldade era que a equipe estava ocupada com as tarefas
dirias de manuteno e desenvolvimento de novas ferramentas para o
rgo. Alm disso, a base de dados era muito complexa e utilizava muitos
recursos que at ento estavam disponveis apenas no Oracle. Outro fator
negativo foi que poucos tcnicos tinham conhecimento em PostgreSQL.
Como a arquitetura do banco hoje?
Agora o servidor de aplicao ligado diretamente a um balanceador de
carga, que ligado a dois servidores do banco de dados.
Alm da economia com as licenas, quais outros resultados positivos a
nova arquitetura trouxe?
As consultas ficaram mais rpidas. Tem uma que levava 2 horas e,
depois da migrao, passou a ser realizada em 6 minutos. Na primeira
vez, o responsvel do Detran no acreditou e acabamos gastando as 2
horas tentando convencer que a consulta tinha sido mesmo realizada
em 6 minutos.
CASOS DE SUCESSO
CASOS DE SUCESSO
CARACTERSTICAS
Licenciamento BSD. Esta licena garante total liberdade de uso, alterao, modificao e
distribuio do sistema. Ela tambm permite, inclusive, que verses proprietrias e comerciais
sejam criadas a partir do sistema licenciado nestes termos.
SGBD Objeto-Relacional (classes e hierarquia). O PostgreSQL est na mesma categoria de
outros SGBD's, tais como Oracle, Microsoft SQL Server e IBM DB2, que evoluram da
arquitetura de relacional para objeto-relacional,
Modularidade. Este recurso tem facilitado o trabalho dos desenvolvedores que desejam
implementar novas funcionalidades. Um exemplo disso, foi a criao do mdulo PostGIS,
contendo inmeras funcionalidades para o desenvolvimento de aplicaes que tratam a
geoinformao.
Inmeras interfaces nativas. O PostgreSQL pode ser acessado atravs das seguintes
interfaces: ODBC, JDBC, C, C++, PHP, Perl, TCL, ECPG, Python e Ruby. Neste quesito, o
PostgreSQL supera todos os demais SGBD's, pois nenhum outro possui tanta flexibilidade.
Flexibilidade: roda em vrias plataformas (BSD, Linux, Windows, mac, etc.)
Robusto: criado para suportar grande volume de dados e transaes concorrentes (Existem
sistemas ativos com o PostgreSQL em ambiente de produo que gerenciam mais de 4TB de
dados);
Funes em SQL, C, C++, PLpg/SQL, PL/Perl, PL/Python, PL/TCL suportadas nativamente alm
de PL/Java, PL/PHP, PL/R, PL/Ruby, PL/sh, PL/Mono.
TOTALMENTE ACID
ACID (acrnimo de Atomicidade, Consistncia, Isolamento e Durabilidade)
ADMINISTRAO SERVIDOR
Rotina de Limpeza: Na operao normal do PostgreSQL, um
comando UPDATE ou DELETE em uma linha no remove imediatamente a
verso antiga da linha. Esta abordagem necessria para obter os benefcios do
controle de simultaneidade multi-verso a verso da linha no pode ser removida
enquanto houver possibilidade de ser acessada por outras transaes. Mas no
final, uma verso de linha desatualizada ou excluda no ter mais interesse para
nenhuma transao. O espao ocupado deve ser recuperado para ser reutilizado
pelas novas linhas, evitando um crescimento sem fim da necessidade de espao
em disco. Isto feito executando o comando VACUUM.
Arquitetura do PostGres
CLIENTE
SERVIDOR
Conexo inicial e autenticao
Aplicao
Cliente
postmaster
(daemon)
Buffer
Kernel
buffer
Fork
Conector
PostGre
postgre
postgre
(backend)
postgre
(backend)
(backend)
Tabelas
BD Fsico
Disco
ARQUITETURA DO POSTGRESQL
No jargo de banco de dados, o PostgreSQL utiliza o modelo cliente-servidor.
Uma sesso do PostgreSQL consiste nos seguintes processos:
Postmaster um processo servidor, que gerencia os arquivos de banco de dados,
recebe conexes dos aplicativos cliente com o banco de dados, e executa aes no
banco de dados em nome dos clientes.
Cliente pode ser uma ferramenta no modo caractere, um aplicativo grfico, um
servidor Web que acessa o banco de dados para mostrar pginas Web, ou uma
ferramenta especializada para manuteno do banco de dados.
O servidor PostgreSQL pode tratar vrias conexes simultneas de clientes. Para
esta finalidade iniciado um novo processo (fork) para cada conexo. Deste ponto em
diante, o cliente e o novo processo servidor se comunicam sem
interveno do processo postmaster original. Portanto, o postmaster est sempre
executando aguardando por novas conexes dos clientes.
Chamada de Sistema (Fork), Para criar um novo processo, o processo copia a si
prprio atravs da chamada de sistema fork. O fork cria uma cpia do processo original
que em grande parte idntica ancestral. O novo processo possui um PID
(identificador de processo) prprio, e suas prprias informaes de contabilizao.
ALGUMAS VANTAGENS
O PostgreSQL um banco maduro, com um histrico de desenvolvimento
iniciado em 1977.
Tem as principais caractersticas desejadas em um banco de dados:
Recuperao automtica aps crash de sistema (WAL);
MVCC (controle de concorrncia de multi-verso). Neste mecanismo, processos de
leitura no bloqueiam processos de escrita e vice-versa, reduzindo
drasticamente (s vezes,eliminando) a conteno entre transaes
concorrentes e paralisao parcial ou completa (deadlock);
Logging de transaes;
Commit / Rollback / Checkpoints;
ALGUMAS VANTAGENS
Algumas mudanas da verso mais recente
Replicao e Escalabilidade: Hot Standby, Replicao em Fluxo
Administrao e Segurana: Atualizao in Loco (Upgrade-in-Place) Integrada
(pg_upgrade), Autenticao RADIUS, Verificao de Fora de Senha (passwordcheck)
Comandos de Gesto de Permisses de Banco de Dados Facilitados (GRANT ON ALL
e DEFAULT PERMISSIONS)
Projeto de Bancos de Dados e SQL: Restries de Unicidade Postergveis, Gatilhos
Condicionais. Gatilhos por Colunas, Ordenamento em Agregaes, Novas "Windowing
Functions" (RANGE PRECEEDING e FOLLOWING).
FERRAMENTAS
PGAccess: esta a interface grfica para usurio (GUI) original do PostgreSQL,
no estilo do navegador de banco de dados do MS Access, escrito em Tcl/Tk.
phpPgAdmin: um clone do popular phpMyAdmin, otimizado para o PostgreSQL.
Esta uma ferramenta administrativa muito boa, robusta, e existe uma verso
totalmente em portugus. Funciona muito bem, tem muitas funcionalidades e
cdigo livre.
PGAdmin III: uma interface completa de administrao do PostgreSQL,
praticamente o cliente oficial.
OpenOffice.org: o OpenOffice.org 2 traz o aplicativo Base que via JDBC permite
uma manipulao bem avanada de bases de dados possibilitando o
desenvolvimento de formulrios e relatrios bem complexos.
Xpg: interface de administrao do banco de dados PostgreSQL baseado em
Java, com acesso a tabelas e entrada de dados, interface para consultas e
habilidade para exportar o resultado das mesmas para relatrios em HTML.
Porm tem algumas limitaes, algumas funes como criao de ndices no
podem ser feitas visualmente. de cdigo livre e tem um instalador RPM.
FERRAMENTAS
Dump
Realiza dump consistente com o banco de dados on-line sem bloquear usurios
Podem ser selecionados parte dos objetos na exportao ou importao como
permisses, dados, esquemas, etc.
um dump pode ser exportado ou compactado diretamente para outro banco utilizando
pipe!
Iniciando no PostGreSQL
CONECTANDO AO BANCO
CRIANDO TABELAS
CREATE TABLE nome_do_schema.nome_da_tabela (
nome_da_coluna
tipo_de_dado [restrio_de_coluna]
) INHERITS (tabela_ancestral)
TABLESPACE espao_de_tabela
Tipo de dados:
Tipo Base:
RESTRIO DE COLUNA
CHECK
CREATE TABLE produtos (
cod_prod integer,
nome
text,
preco
numeric CHECK (preco > 0)
);
UNIQUE
CREATE TABLE exemplo (
a integer UNIQUE,
b integer,
c integer,
);
PRIMARY KEY
CREATE TABLE produtos (
cod_prod integer PRIMARY KEY,
nome
text,
preco numeric
RESTRIO DE TABELA
CREATE TABLE produtos (
cod_prod integer,
nome
text,
preco
numeric,
CONSTRAINT CK_preco CHECK(preco>0)
);
CREATE TABLE exemplo (
a integer,
b integer,
c integer,
CONSTRAINT U_exemplo UNIQUE(a)
);
CREATE TABLE produtos (
cod_prod integer,
nome
text,
preco numeric,
CONSTRAINT PK_produtos PRIMARY KEY(cod_prod)
);
);
FOREIGN KEY
CREATE TABLE pedidos (
cod_pedido integer PRIMARY KEY,
cod_prod integer REFERENCES produtos (cod_prod),
quantidade integer
);
SEQUENCE E AUTO-INCREMENTO
CREATE SEQUENCE nome
INCREMENT BY incremento
MINVALUE valor_mnimo
MAXVALUE valor_mximo
START WITH incio
Ver estado atual da sequence:
SELECT * FROM nome_da_sequence;
SEQUENCE E AUTO-INCREMENTO
Modos de se obter colunas de auto-incremento:
Usando uma sequence:
CREATE SEQUENCE seq_teste INCREMENT BY 1 MINVALUE 1 START WITH 1;
CREATE TABLE testesequence(
id integer DEFAULT nextval('seq_teste') NOT NULL,
nome varchar(50)
)
Exemplo:
CREATE TABLE tabelaPai (
id serial PRIMARY KEY,
nome varchar(40)
)
CREATE TABLE tabelaFilho(
sobrenome varchar(40)
)INHERITS(tabelaPai)
Problema com o
OBJETO RELACIONAL
Tipos de Dados:
Uso em tabela:
Inserindo:
INTRODUO
PL/pgSQL uma linguagem procedural carregvel desenvolvida para o
sistema de banco de dados PostgreSQL. Os objetivos de projeto da
linguagem PL/pgSQL foram no sentido de criar uma linguagem
procedural carregvel que pudesse:
TIPOS EM PL/PGSQL
Copiando Tipo: tabela.coluna%TYPE;
Tipo de Linha: tabela%ROWTYPE;
Tipo Registro: As variveis registro so semelhantes s variveis tipolinha, mas no possuem uma estrutura pr-definida.
Declarao:
DECLARE
registro_usuario RECORD;
BEGIN
SELECT INTO registro_usuario * FROM usuarios WHERE id_usuario=3;
Tipo CURSOR: Em vez de executar toda a consulta de uma vez,
possvel definir um cursor encapsulando a consulta e, depois, ler umas
poucas linhas do resultado da consulta de cada vez.
Declarao:
curs1 refcursor;
curs2 CURSOR FOR SELECT * FROM tenk1;
DOMNIO
Domnios so teis para abstrair campos comuns entre tabelas
em um nico local para manuteno. Por exemplo, uma coluna de
endereo de correio eletrnico pode ser usada em vrias tabelas, todas
com as mesmas propriedades. Em vez de definir as restries em cada
tabela individualmente, deve ser definido e utilizado um domnio.
DOMNIO
Exemplo:
--Criao da funo que valida tipo sanguineo
Tem suporte ?
Seguro ?
Tem Atualizaes?
Rapido?
REFERNCIAS BIBLIOGRFICAS
Fim