Documente Academic
Documente Profesional
Documente Cultură
Contedo
1.
POSTGRESQL.............................................................................................................................1
2.
3.
Estrutura Fsica..........................................................................................................................2
4.
Estrutura Lgica........................................................................................................................3
5.
Iniciando o Servidor..................................................................................................................4
6.
7.
8.
Transaes.................................................................................................................................5
9.
BACKUPS.................................................................................................................................6
10.
VACUUM..............................................................................................................................6
11.
ANALYZE.............................................................................................................................7
12.
VIEWS...................................................................................................................................8
13.
Herana no Postgres..................................................................................................................8
14.
15.
TRIGGERS...............................................................................................................................9
1. POSTGRESQL
O PostgreSQL um sistema de gerenciamento de banco de dados objeto-relacional
(SGBDOR) baseado no POSTGRES.
O PostgreSQL uma SGBD relacional e orientado a objetos. um software de livre
distribuio se tem seu cdigo fonte aberto. Oferece suporte a SQL de acordo com os padres
SQL92 / SQL99. Em termos de recurso pode ser comparado aos melhores bancos de dados
comerciais existentes, sendo inclusive superior em alguns aspectos, como ao introduzir conceitos do
modelo objeto-relacional que hoje esto disponveis em alguns bancos de dados comerciais.
importante que haja a compreenso de sua arquitetura bsica. Quando aberta uma sesso do
Postgres, trs processos so abertos.
um processo daemon (postmaster);
a aplicao do cliente (por exemplo, sua aplicao em PHP);
um ou mais servidores de banco de dados (processo postgres);
O Postgres usa um simples "processo por usurio" no modelo cliente/servidor. Uma sesso Postgres
consiste nos seguintes processos cooperando entre si:
FRONTEND: uma aplicao cliente que pode ser uma ferramenta no modo caractere, um aplicativo
grfico, um servidor Web, ou uma ferramenta especializada para manuteno do banco de dados;
O aplicativo cliente do usurio (frontend) que deseja executar operaes de banco de dados. Os
aplicativos cliente podem ter naturezas muito diversas: o cliente pode ser uma ferramenta no modo caractere,
um aplicativo grco, um servidor Web que acessa o banco de dados para mostrar pginas da Web, ou uma
ferramenta especializada para manuteno do banco de dados.
O servidor PostgreSQL pode tratar mltiplas conexes concorrentes dos clientes. Para esta nalidade
iniciado (fork) um novo processo para cada conexo. Deste ponto em diante, o cliente e o novo processo
servidor passam a se comunicar sem a interveno do processo original postmaster.
Portanto, o postmaster est sempre executando aguardando por novas conexes dos clientes,
enquanto os processos servidores associados aos clientes surgem e desaparecem (tudo isso, obviamente,
invisvel para o usurio sendo somente mencionado para car completo).
PARSER
REWRITER
PLANNER
EXECUTOR
Configurar o Postgres
A maioria dos parmetros podem ser configurados a partir de 2 arquivos:
A verso 9.4 do PostgreSQL adicionou uma nova clusula SQL chamada ALTER SYSTEM. Com este
comando, pode editar diretamente as configuraes do arquivo posqtgresql.conf.
3. Estrutura Fsica
A criao de um novo cluster (agrupamento) realizada pelo utilitrio initdb. Quando o programa
executado, o mesmo cria os arquivos que definem o agrupamento. O argumento mais importante do
comando initdb o pgdata, referenciado pelo argumento D.
o
o
o
o
O argumento pgdata diz ao initdb o nome do diretrio que dever conter o novo agrupamento.
Parmetros de Configurao:
4. Estrutura Lgica
Tablespaces
Uma melhorias diz respeito ao gerenciamento dos discos, permitindo assim, selecionar os sistemas
de arquivos que iro armazenar as informaes e objetos das bases de dados como esquemas, tabelas e
ndices.
O conceito segue o mesmo princpio do Oracle, com uma diferena: um tablespace no Oracle
formado por um ou mais arquivos localizados em um determinado sistema de arquivos.
J no PostgreSQL, um tablespace apenas um lugar, onde sero armazenados os objetos.
tablespaces que podem ser configurados para armazenar ndices e tabelas temporrias, bem como arquivos
temporrios utilizados pelas operaes de ordenaes de grandes quantidades de dados.
5. Iniciando o Servidor
Antes que os usurios possam acessar o banco de dados, o servidor de banco de dados deve ser colocado em
execuo. O programa servidor de banco de dados chama-se postmaster.
O postmaster precisa saber onde se encontram os dados a serem utilizados. Isto feito atravs da
opo -D.
Portanto, a maneira mais simples de colocar o servidor em execuo usando que deixa o servidor
processando em primeiro plano.
$ postmaster -D /usr/local/pgsql/data
Sem a opo -D o servidor tenta utilizar o diretrio de dados especificado na varivel de ambiente PGDATA.
Se esta varivel tambm no existir, ento a inicializao falha.
Normalmente melhor executar o postmaster em segundo plano, e neste caso a sintaxe usual para o
interpretador de comandos :
$ postmaster -D /usr/local/pgsql/data >arquivo_de_log 2>&1 &
importante armazenar as sadas stdout e stderr do servidor em algum lugar, conforme mostrado acima.
A sintaxe do interpretador de comandos pode se tornar entediante em pouco tempo. Por isso fornecido o
programa pg_ctl para simplificar algumas tarefas.
pg_ctl start -l arquivo_de_log
Inicializa o servidor em segundo plano, e envia a sada para o arquivo de log especificado. A opo -D possui
o mesmo significado para este programa que no postmaster.
Remover usurio
Alterar usurios
Alterar o nome do usurio
Criar grupo
Adicionar usurio ao grupo
Criar um ROLE
Apagar um ROLE
Por padro apenas o dono e o super-usurio pode fazer alguma coisa com o objeto.
Comando GRANT, possui duas funcionalidades bsicas: conceder privilgios para um objeto do
banco de dados (tabela, viso, seqncia, banco de dados, funo, linguagem procedural, esquema
e espao de tabelas) e conceder o privilgio de ser membro de um papel.
Comando REVOKE necessrio para revogar alguns privilgios de acesso a usurios ou grupos de
usurios.
8. Transaes
Transao - a realizao de um conjunto de comandos de uma s vez. Uma transao acontece
por completo (todas as operaes) ou nada acontece. Tambm a transao deve garantir um nvel de
isolamento das demais transaes, de maneira que as demais transaes somente enxerguem as
operaes aps a transao concluda.
O PostgreSQL trata a execuo de qualquer comando SQL como sendo executado dentro de uma
transao.
O PostgreSQL mantm a consistncia dos dados utilizando o modelo multiverso MVCC (Multiversion
Com currency Control), que permite que leitura no bloqueie escrita nem escrita bloqueie leitura.
Uma transao dita um processo atmico, o que signica que ou acontecem todas as suas
operaes ou ento nenhuma ser salva.
Isolamento de Transaes
Existe tambm o nvel serializable, mais rigoroso. Os nveis Read uncommitted e Repeatable
read so suportados, mas assumem a forma de um dos dois anteriores.
9. BACKUPS
Para efetuar backup e restore utilizamos o comando pg_dump em conjunto com o psql.
O pg_dump um utilitrio para fazer cpia de segurana de um banco de dados do
PostgreSQL. So feitas cpias de segurana consistentes mesmo que o banco de dados esteja sendo
utilizado concorrentemente. O pg_dump no bloqueia os outros usurios que esto acessando o
banco de dados (leitura ou escrita).
O pg_dump no faz backup de objetos grandes (lo) por default. Caso desejemos tambm estes
objetos no backup devemos utilizar uma sada no formato tar e utilizar a opo b.
Backup local de um nico banco:
pg_dump -U usuario -d banco > banco.sql
pg_dump -Ft banco > banco.tar
Restore de um banco local:
psql -U usuario -d banco < banco.sql
pg_restore -d banco banco.sql
pg_restore -d banco banco.tar
-a
--data-only
-b
--blobs
-c
--clean
-C
--create
-d
--inserts
-D
--columninserts
--attributeinserts
-f arquivo
--file=arquivo
-F formato
format=format
o
--p
Gera um arquivo de script SQL no formato texto-puro (padro)
--t
Gera um arquivo tar adequado para servir de entrada para o pg_restore. A
utilizao deste formato de arquivo permite reordenar e/ou excluir objetos do
banco de dados ao fazer a restaurao
--c
Gera um arquivo personalizado adequado para servir de entrada para o g_restore.
Este o formato mais flexvel, porque permite a reordenao da restaurao dos
dados, assim como das definies dos objetos. Tambm, este formato
comprimido por padro.
Exemplo: pg_dump -Ft -b trt13 > tribunal.tar Fazer a cpia do banco grande trt13 para o arquivo
em .tar chamado tribunal.tar.
10.
VACUUM
O utilitrio VACUUM recupera espao em disco ocu pado pelos registros excludos e atualizados,
atualiza os dados para as estatsticas usadas pelo planejador de consultas e tambm protege contra perda de
dados quando atingir um bilho de transaes.
O comando VACUUM do PostgreSQL deve ser executado regularmente por diversos motivos:
1. Para recuperar o espao em disco ocupado pelas linhas atualizadas e removidas.
2. Para atualizar as estatsticas dos dados utilizadas pelo planejador de comandos do PostgreSQL.
3. Para proteger contra perda de dados muito antigos devido ao recomeo do ID de transao.
A forma padro do comando VACUUM pode executar em paralelo com as operaes normais do banco de
dados (selees, inseres, atualizaes, excluses, mas sem modificao de definio de tabela).
Existem duas variaes do comando VACUUM.
Lazy vacuum
o limpeza preguiosa (lazy vacuum), ou simplesmente VACUUM, marca os dados
expirados das tabelas para reutilizao posterior; no tenta recuperar o espao utilizado pelos
dados expirados imediatamente. Portanto, o arquivo da tabela no encurtado, e o espao
no utilizado no arquivo no devolvido ao sistema operacional. Esta variante do VACUUM
pode ser executada simultaneamente com as operaes normais do banco de dados.
Vacuum Full.
o Esta forma utiliza um algoritmo mais agressivo para recuperar o espao consumido
pelas verses de linha expiradas. Todo espao liberado pelo VACUUM FULL
imediatamente devolvido ao sistema operacional. Infelizmente, esta variante do
comando VACUUM obtm um bloqueio exclusivo de cada tabela enquanto esta
processada pelo comando VACUUM FULL. Portanto, a utilizao freqente do
comando VACUUM FULL pode ter um efeito extremamente negativo sobre o
desempenho dos comandos simultneos no banco de dados.
Se for necessrio devolver espao em disco para o sistema operacional, pode ser utilizado o
comando VACUUM FULL
A prtica recomendada para a maioria das instalaes agendar o comando VACUUM para
todo o banco de dados uma vez por dia em horrio de pouca utilizao,
O comando VACUUM FULL recomendado para os casos onde se sabe que foi excluda a
maior parte das linhas da tabela e, portanto, o tamanho estvel da tabela pode ser reduzido
substancialmente pela abordagem mais agressiva do comando VACUUM FULL.
Deve ser utilizado o VACUUM SIMPLES, e no o Vacuum Full, para recuperao rotineira
de espao.
11.
ANALYZE
O Analyze coleta informaes precisas sobre o contedo das tabelas para o planejador de comandos
do PostgreSQL poder gerar bons planos para os comandos.
importante que as estatsticas estejam razoavelmente precisas, seno o desempenho do banco de
dados poder ser degradado por planos mal escolhidos.
O comando ANALYZE em tabelas especficas, e mesmo em colunas especficas da tabela. Portanto,
existe flexibilidade para atualizar algumas estatsticas com mais freqncia que outras se for
requerido pelo aplicativo.
A prtica recomendada, para a maioria das instalaes, agendar a execuo do comando ANALYZE para
todo o banco de dados uma vez por dia, em horrio de pouca utilizao; til sua combinao com a
execuo do comando VACUUM todas as noites.
12.
VIEWS
Uma View consiste de uma consulta armazenada acessvel como uma tabela virtual em um
banco de dados relacional ou um conjunto de documentos em um banco de dados orientado a
documentos composta pelo conjunto de resultados de uma consulta ou um mapa e reduzir
funes.
Em termos mais simples a vista simplesmente uma tabela lgica que conecta automaticamente
os pedaos de dados subjacentes. Na verdade, no duplicar ou persistirem os dados como o
viram em uma forma lgica.
So uma maneira simples de executar e exibir dados selecionados de consultas complexas em
bancos. Em que elas so teis? Elas economizam grande quantidade de digitao e esforo e
apresentam somente os dados que desejamos.
FROM FUNCIONARIO;
O comando criar uma VIEW nomeada de minha_view e poder ser utilizada nas buscas como uma
tabela da seguinte forma:
SELECT * FROM minha_view;
Assim, ser exibido somente o nome e o salrio para os usurios que tiverem acesso a essa VIEW.
View pg_setting
Fornece acesso aos parmetros do servidor de tempo de gerncia. essencialmente uma interface
alternativa para o show e SET comandos. Ele tambm fornece acesso a alguns fatos sobre cada parmetro
que no esto diretamente disponveis de SHOW, como valores mnimos e mximos.
A Viso pg_settings que contm dados sobre os parmetros run-time do servidor..
13.
Herana no Postgres
Herana um conceito de banco de dados orientado a objeto, que abre novas possibilidades
interessantes ao projeto de banco de dados.
Vamos criar duas tabelas: a tabela cidades e a tabela capitais. Como natural, as capitais tambm so
cidades e, portanto, deve existir alguma maneira para mostrar implicitamente as capitais quando todas as
cidades so mostradas.
CREATE TABLE cidades (
nome
text,
populacao real,
altitude int -- (em ps) );
CREATE TABLE capitais (
estado
char(2)
) INHERITS (cidades);
Neste caso, as linhas da tabela capitais herdam todas as colunas (nome, populacao e altitude) da
sua tabela ancestral cidades.
14.
Configurao Bsica de Driver ODBC para
PostgreSQL
Standard
Driver={PostgreSQL};Server=IP address;Port=5432;Database=myDataBase;
Uid=myUsername;Pwd=myPassword;
ANSI
Driver={PostgreSQL ANSI};Server=IP address;Port=5432;Database=myDataBase;
Uid=myUsername;Pwd=myPassword;
15.
TRIGGERS
TRIGGER-POR-LINHA disparada uma vez para cada registro afetado pela instruo que
disparou a trigger.
Funes de triggers so funes que no recebem nenhum parmetro e retornam o tipo trigger. Essas funes
recebem uma estrutura chamada TriggerData, e esta passada internamente para a funo pelo PostgreSQL.
O PostgreSQL disponibiliza duas variveis importantes para serem usadas em conjunto com as triggers-porlinha: NEW e OLD.
A varivel NEW, no caso do INSERT, armazena o registro que est sendo inserido.
No caso do UPDATE, armazena a nova verso do registro depois da atualizao.
A varivel OLD, no caso do DELETE, armazena o registro que est sendo excludo.
No caso do UPDATE, armazena a antiga verso do registro depois da atualizao.
Triggers recursivas
Se uma funo de trigger executar comandos SQL, estes comandos podem disparar triggers novamente. Isto
conhecido como cascatear triggers.
Nome do catlogo
pg_aggregate
funes de agregao
pg_am
pg_amop
pg_amproc
pg_attrdef
pg_attribute
pg_cast
pg_class
pg_constraint
pg_conversion
pg_database
pg_depend
pg_description
pg_group
pg_index
pg_inherits
pg_language
pg_largeobject
objetos grandes
pg_listener
pg_namespace
esquemas
pg_opclass
pg_operator
operadores
pg_proc
funes e procedimentos
pg_rewrite
pg_shadow
pg_statistic
estatsticas do planejador
Finalidade
Nome do catlogo
pg_tablespace
pg_trigger
gatilhos
pg_type
tipos de dado
pg_table_size(regclas
s)
Questes:
1. A instruo SQL em PostgreSQL est mal formulada: CREATE VIEW Vista AS SELECT Hello
Word;
a.
por padro, o tipo de dado ser considerado indefinido ( unknown ) e a coluna ir utilizar
o nome padro ?column?.
i.
2.
a.
i.
ii.
SERVER server_name
iii.
CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user 'bob', password 'secret');