O que é PostgreSQL: história, características e peculiaridades do banco de dados de código aberto
1.
2. História
O Postgres, desenvolvido originalmente no Departamento de Ciência de
Computação da Universidade de Berkeley, foi pioneiro em muitos dos
conceitos objeto-relacionais que agora estão disponíveis em alguns bancos
de dados comerciais. Fornece suporte a linguagem SQL92/SQL99,
integridade de transações e extensibilidade de tipos. O PostgreSQL é um
descendente com código aberto do código original desenvolvido em
Berkeley.
3. Características
O PostgreSQL é um poderoso sistema gerenciador de banco de dados
objeto-relacional de código aberto. Tem mais de 15 anos de
desenvolvimento ativo e uma arquitetura que comprovadamente
ganhou forte reputação de confiabilidade, integridade de dados e
conformidade a padrões. Roda em todos os grandes sistemas
operacionais:
GNU/Linux,
Unix
AIX,
BSD,
HP-UX,
SGI IRIX,
Mac OS X,
Solaris,
Tru64,
e MS Windows
4. Características
É totalmente compatível com ACID, tem suporte completo a chaves
estrangeiras, junções (JOINs), visões, gatilhos e procedimentos
armazenados (em múltiplas linguagens). Inclui a maior parte dos tipos
de dados do ISO SQL:1999, incluindo INTEGER, NUMERIC, BOOLEAN,
CHAR, VARCHAR, DATE, INTERVAL, e TIMESTAMP. Suporta também o
armazenamento de objetos binários, incluindo figuras, sons ou vídeos.
Possui interfaces nativas de programação para:
C/C++,
Java,
.Net,
Perl,
Python,
Ruby,
Tcl,
ODBC
5. Características
Como um banco de dados de nível corporativo, o PostgreSQL possui
funcionalidades sofisticadas como:
o controle de concorrência multiversionado (MVCC),
recuperação em um ponto no tempo (PITR),
tablespaces,
replicação assíncrona,
transações agrupadas (savepoints),
cópias de segurança
(online/hot backup),
planejador de consultas (otimizador),
registrador de transações sequencial
(WAL) para tolerância a falhas.
6. Características
Suporta conjuntos de caracteres internacionais,
codificação de caracteres multibyte,
Unicode e sua ordenação por localização,
sensibilidade a caixa (maiúsculas e minúsculas) e formatação.
7. Características
É altamente escalável, tanto na quantidade enorme de
dados que pode gerenciar, quanto no número de
usuários concorrentes que pode acomodar. Existem
sistemas ativos com o PostgreSQL em ambiente de
produção que gerenciam mais de 4TB de dados.
Alguns limites do PostgreSQL estão incluídos na tabela
abaixo:
Tamanho Máximo do Banco de Dados Ilimitado
Tamanho máximo de uma Tabela 32 TB
Tamanho Máximo de uma Linha 1.6 TB
Tamanho Máximo de um Campo 1 GB
Máximo de Linhas por Tabela Ilimitado
Máximo de Colunas por Tabela 250–1600
Máximo de Índices por Tabela Ilimitado
8. Peculiaridades
PostgreSQL automaticamente converte todos identificadores (tipo
nomes de tabela/coluna) para minúsculo na criação do objeto e na
query. Para força o uso misto de maiúsculo ou minúsculo, você precisa
usar escape no identificador usando aspas dupla ("").
9. Peculiaridades
PostgreSQL não tem comandos especiais para obter informação dos
dados do banco de dados (dicionário de dados) (tipo todas as tabelas do
banco de dados atual). Ao invés, há um schema padrão chamado
information_schema no PostgreSQL 7.4 e superior contendo views do
sistema com todas as informações necessárias, em um form fácil de
acessá-las.
10. pSQL
O psql é um cliente no modo terminal do PostgreSQL.
Permite digitar comandos interativamente, submetê-
los para o PostgreSQL e ver os resultados. Como
alternativa, a entrada pode vir de um arquivo. Além
disso, disponibiliza vários meta-comandos e diversas
funcionalidades semelhantes às do interpretador de
comandos (shell) para facilitar a criação de scripts e
automatizar um grande número de tarefas.
11. PGADMIN
Existem várias ferramentas de administração disponíveis
para o PostgreSQL. A mais popular é a pgAdmin, e
existem várias outras ferramentas comerciais disponíveis.
12. Criação de banco
ADD SERVER
ADDRESS 127.0.0.1
DESCRIPTION CDTeste
SERVICE Teste
PORT 5432
MAINTENANCE DB Postgres
USERNAME Postgres
SENHA system
13. Criação de tabelas
create table cd (
codigo_cd int not null,
codigo_gravadora int not null,
nome_cd varchar(50) not null,
preco_venda decimal (5,2) not null,
data_lancamento smalldatetime not null,
cd_indicado int not null);
create table cd (
codigo_cd integer UNIQUE NOT NULL,
codigo_gravadora integer not null,
nome_cd varchar(50) not null,
preco_venda numeric (5,2) not null,
data_lancamento timestamp not null,
cd_indicado integer not null);
14. Criação de tabelas – Chaves PK e FK
alter table cd add primary key (codigo_cd);
alter table cd ADD CONSTRAINT cd_codigo_cd_pkey PRIMARY KEY
(codigo_cd);
alter table cd add foreign key (cd_indicado) references cd;
alter table cd
add constraint fk_cd_cd
foreign key (codigo_cd)
references cd (codigo_cd);
15. Criação de tabelas - Inserções
insert into estado values('AC', 'Acre');
insert into estado values('AL', 'Alagoas');
insert into estado values('AP', 'Amapá');
insert into estado (id, title, author_id, subject_id)
VALUES (41472, 'Practical PostgreSQL', 1212, 4);
16. Restrições
Constrain CHECK
Ao criar uma tabela podemos prever que o banco exija que o valor de um campo satisfaça
uma expressão
--Restrição de verificação
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0)
);
--Restrição de valor não nulo
CREATE TABLE products (
product_no integer NOT NULL,
name text NOT NULL,
price numeric NOT NULL CHECK (price > 0)
);
17. Restrições
Constrain UNIQUE
Garante que os dados contidos em uma coluna ou um grupo de colunas, é único no que diz
respeito a todas as linhas na tabela.
CREATE TABLE products (
product_no integer UNIQUE,
name text,
price numeric
);
18. Herança
CREATE TABLE cidades (
nome text,
populacao real,
altitude int -- (em pés)
);
CREATE TABLE capitais (
estado char(2)
) INHERITS (cidades);
19. Esquemas
Um banco de dados pode conter vários esquemas e dentro de cada um desses
podemos criar várias tabelas. Ao invés de criar vários bancos de dados, criamos
um e criamos esquemas dentro desse. Isso permite uma maior flexibilidade, pois
uma única conexão ao banco permite acessar todos os esquemas e suas tabelas.
Portanto devemos planejar bem para saber quantos bancos precisaremos,
quantos esquemas em cada banco e quantas tabelas em cada esquema.
20. Regras
O comando CREATE RULE cria uma regra aplicada à tabela ou visão especificada.
Uma regra faz com que comandos adicionais sejam executados quando um
determinado comando é executado em uma determinada tabela.
É importante perceber que a regra é, na realidade, um mecanismo de
transformação de comando, ou uma macro de comando.
As RULES (regras) permitem executar uma
ação alternativa em: inclusão, alteração,
exclusão e seleção (somente em caso de
visões).
Em outras palavras, uma regra faz com
que sejam executados comandos
adicionais quando é executado um
determinado comando em uma tabela.
Diferentemente das regras, os TRIGGERS
(gatilhos) podem ser acionados antes
(before) ou depois (after) de alguma ação
de insert, update e delete.
21. Diferenças entre o SQL Server e PostgreSQL
Escolhendo um servidor de banco de dados não é simples. SQL Server,
PostgreSQL e todos oferecem uma forma de organizar e armazenar
dados, mas cada um tem seus próprios benefícios exclusivos. Escolha a
que melhor atenda às suas necessidades começa com a compreensão
das diferenças entre essas opções.
22. Diferenças entre o SQL Server e PostgreSQL
Sistema Operacional
Nem todos os servidores de banco de dados podem ser executados em
qualquer sistema operacional. O programa de banco de dados
PostgreSQL pode ser executado em Windows 2000 ou superior, Mac,
Unix e Linux.
SQL Server só roda em Windows XP ou qualquer versão do Windows
2000 ou superior.
23. Diferenças entre o SQL Server e PostgreSQL
Instalação e Manutenção
Instalação e manutenção de banco de dados é o que vai gastar a maior
parte do seu tempo depois de baixá-lo. SQL Server é bem mais
complicado que o PostgreSQL. Independentemente disso, em ambos
será necessário algum treino para entender e administrar se a pessoa
encarregada de bases de dados da organização é nova para a tecnologia.
24. Diferenças entre o SQL Server e PostgreSQL
Vistas
Os programas variam um pouco na forma como você pode usar views. O
SQL Server permite views atualizáveis, materializaveis, e intercambiáveis.
O PostgreSQL também suporta exibições atualizáveis, mas o designer
tem que escrever regras contra views ordenadas para atualizá-las.
25. Diferenças entre o SQL Server e PostgreSQL
Recursos disponíveis apenas no PostgreSQL
O banco de dados PostgreSLQ tem mais recursos internos. Por exemplo,
permite que o SQL dinâmico e ação em funções. Em outras palavras,
você pode usar funções de ação dentro de declarações SELECT. Suporta
índices funcionais e parciais e é o único que pode definir funções
personalizadas agregadas em C, SQL, plpgsql, e qualquer linguagem PL.
26. Recursos disponíveis apenas no PostgreSQL
O banco de dados PostgreSLQ tem mais recursos internos. Por exemplo,
permite que o SQL dinâmico e ação em funções. Em outras palavras,
você pode usar funções de ação dentro de declarações SELECT. Suporta
índices funcionais e parciais e é o único que pode definir funções
personalizadas agregadas em C, SQL, plpgsql, e qualquer linguagem PL.
Diferenças entre o SQL Server e PostgreSQL