Introdução ao PostgreSQL
Autor: Nabucodonosor Coutinho
E-mail:
[email protected] Introdução
● É um sistema de gerenciamento de banco de
dados objeto-relacional (SGBDOR)
desenvolvido no Departamento de Ciência da
Computação da Universidade da Califórnia em
Berkeley.
●
O PostgreSQL descende deste código original
de Berkeley, possuindo o código fonte aberto.
ACID
Atomicidade
Transações não podem ficar pela metade (tudo ou nada).
Consistência
As transações devem transformar um estado consistente
do banco em outro estado consistente.
Isolamento
As transações são isoladas umas das outras, elas não
“enxergam” dados gravados por transações concorrentes.
Durabilidade
Uma vez efetuada a transação os dados devem
permanecer no banco.
Funcionalidades Avançadas
No PostgreSQL você pode:
● Criar validações de dados usando qualquer das
linguagens procedurais suportadas;
● Criar validações usando restrições na coluna da
tabela
● Criar tipos de dados personalizados contendo
validações por restrição. Ex: CPF, CEP.
● Disparar stored procedures a partir de eventos
das tabelas
● Dividir o banco de dados em esquemas
● Alocar bases inteiras, esquemas ou tabelas em
locais diferentes (disco ou rede)
Funcionalidades Avançadas
●
Esquemas
●
Herança (especialização e generalização)
●
Views
●
Funções
●
Restrições
●
Gatilhos
●
Integridade da transação
●
Back-up on-line
●
Recuperação em ponto de tempo
Funcionalidades Avançadas
● Esquemas
Os esquemas são semelhantes a
pastas dos nossos sistemas de
arquivos.
Com os esquemas podemos dividir
uma base de dados para termos
mais controle sobre ela
Funcionalidades Avançadas
● Herança
CREATE TABLE pessoas (
id serial,
nome varchar(50),
email varchar(255)
);
CREATE TABLE clientes (
cpf varchar(14)
) INHERITS (pessoas);
Funcionalidades Avançadas
● Views (visualizações)
CREATE VIEW myview AS
SELECT clientes.nome, pedidos.cliente, vendedores.nome
FROM clientes
NATURAL JOIN pedidos
NATURAL JOIN vendedores
WHERE city = vendedores.id=502;
SELECT * FROM myview;
Funcionalidades Avançadas
● Funções
(PL/PgSQL)
CREATE FUNCTION populate() RETURNS integer AS $$
DECLARE
-- declarations
BEGIN
PERFORM my_function();
END;
$$ LANGUAGE plpgsql;
(PL/Python)
CREATE FUNCTION cpf(cpf) RETURNS boolean AS $$
# corpo da função
$$LANGUAGE plpythonu;
Funcionalidades Avançadas
● Restrições
CREATE TABLE produtos (
id_produto serial,
nome text,
preco numeric CHECK (preco > 0)
);
CREATE TABLE produtos (
id_produto serial,
nome text,
preco numeric CHECK (preco > 0),
com_desconto numeric CHECK (com_desconto > 0),
CHECK (preco > com_desconto)
);
Funcionalidades Avançadas
● Gatilhos
CREATE FUNCTION trigf() RETURNS trigger
AS 'papoca_tudo.c'
LANGUAGE C;
CREATE TRIGGER tbefore BEFORE INSERT OR UPDATE
OR DELETE ON pessoas
FOR EACH ROW EXECUTE PROCEDURE trigf();
Funcionalidades Avançadas
● Transações sempre atômicas
BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
SAVEPOINT my_savepoint;
UPDATE accounts SET balance = balance + 100.00
WHERE name = 'Bob';
-- oops ... não era bob era Coutinho
ROLLBACK TO my_savepoint;
UPDATE accounts SET balance = balance + 100.00
WHERE name = 'Coutinho';
COMMIT;
Portabilidade
O PostgreSQL está disponível para os
principais sistemas opracionais do mercado
● Linux
● Unix
● FreeBSD
● MacOS
● E até mesmo ele
Usabilidade
● Variedade de ferramentas
● PGAdmin 3
● PgAccess
● Zeus DD
● PDAdmin
● PhpPgAdmin
Usabilidade
● Variedade de ferramentas
● PGAdmin 3
● PgAccess
● Zeus DD
● PDAdmin
● PhpPgAdmin
Cenas do próximo capítulo
● Back-up On-line
● Recuperação em ponto de tempo
Fica para o próximo evento...
Projeto Brasil
●
Tradução de manuais
●
Tradução do PgAdmin
●
Tradução do PgInstaller
●
Tradução de versões
●
Material de apoio ao usuário brasileiro
●
Presença em eventos
●
Consultoria (O leitim das criaças)
Introdução ao PostgreSQL
Autor: Nabucodonosor Coutinho
E-mail:
[email protected]Coordenador do Projeto PostgreSQL Brasil
Este material pode ser obtido no site do
PostgreSQL Brasil
http://www.postgresql.org.br