PostgreSQL - Visão Geral
Pedro Fernandes Vieira
http://pt.scribd.com/pedrofvieira
Salvador - Bahia - Brasil
Julho/2014
PostgreSQL - Visão Geral
PostgreSQL: Introdução e Conceitos
● Sistema de Gerenciamento de Banco de Dados Relacional;
● Cód...
Sistema de Gerenciamento de Banco de Dados Relacional
Implementa a maior parte do padrão SQL: 2011
PostgreSQL - Visão Gera...
PostgreSQL: Instalação do servidor
● O “Core” do PostgreSQL está disponível de várias formas
○ Pacotes binários pré-constr...
PostgreSQL: Instalação do servidor
● Instalações com pacotes binários ou
distribuições de terceiros
○ Prós: fácil e rápida...
PostgreSQL: Arquitetura multiprocessos
PostgreSQL - Visão Geral
http://pt.scribd.com/pedrofvieira
PostgreSQL: Organização Física dos Dados
● Por padrão o PostgreSQL armazena e organiza os
dados e informações de controle ...
PostgreSQL: Organização Física dos Dados
● Tablespaces são locais no sistema de
arquivos onde se armazena os
arquivos de d...
PostgreSQL: Organização Física dos Dados
● Se a instalação for feita através de código fonte, pode-se iniciar a área de da...
PostgreSQL: Organização Lógica dos Dados
● Um servidor ou instância do PostgreSQL pode conter diversas Bases de Dados. Est...
PostgreSQL: Organização Lógica e Física dos Dados
● Um mesmo servidor poderá ter 2 ou mais instâncias de PostgreSQL, geral...
PostgreSQL: Modelo cliente-servidor para interagir com usuários/sistemas
PostgreSQL - Visão Geral
http://pt.scribd.com/ped...
PostgreSQL: Modelo cliente-servidor para interagir com usuários/sistemas
● Ao efetuar uma conexão com o PostgreSQL (local ...
PostgreSQL: Log de transação (Write Ahead Log - WAL)
Arquivos de WAL (no
diretório PGDATA/pg_xlog)
Arquivos de Dados (nos
...
PostgreSQL: Multiversion Concurrency Control (MVCC)
● O PostgreSQL gerencia a
concorrência entre transações
através de um ...
PostgreSQL: Backup e Recuperação
● Existem duas abordagens diferentes para fazer backup de dados PostgreSQL:
Dump ou Backu...
PostgreSQL: Replicação
● Existem uma série de ferramentas que implementam replicação mas o PostgreSQL possui
duas formas n...
PostgreSQL: Monitoramento e Desempenho
● Muitas ferramentas usadas para monitoramento de serviços
PostgreSQL são as mesmas...
PostgreSQL: Boas Práticas
● Efetuar instalação a partir de código-fonte;
● Utilize uma base de dados e diversos schemas pa...
PostgreSQL: Links úteis
Página oficial do projeto PostgreSQL
www.postgresql.org
Wiki oficial
https://wiki.postgresql.org/w...
Este material não é um curso ou parte de nenhum curso ou treinamento. Foi elaborado com o único
objetivo de transferir con...
Próximos SlideShares
Carregando em…5
×

PostgreSQL - Visão Geral - Pedro Vieira

729 visualizações

Publicada em

Este material não é um curso ou parte de nenhum curso ou treinamento. Foi elaborado com o único objetivo de transferir conhecimentos adquiridos em estudos autônomos e também adquiridos durante o curso Administração de Banco de Dados com PostgreSQL ministrado por Fábio da Luz Caiut na Escola Superior de Redes (ESR) da Rede Nacional de Pesquisa (RNP) em Brasília/DF.

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
729
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
18
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

PostgreSQL - Visão Geral - Pedro Vieira

  1. 1. PostgreSQL - Visão Geral Pedro Fernandes Vieira http://pt.scribd.com/pedrofvieira Salvador - Bahia - Brasil Julho/2014
  2. 2. PostgreSQL - Visão Geral PostgreSQL: Introdução e Conceitos ● Sistema de Gerenciamento de Banco de Dados Relacional; ● Código aberto; Multi-plataforma; Bom desempenho; ● Instalação do Servidor; ● Arquitetura multiprocessos (Postmaster, Checkpointer, Writer, WAL Writer, Backends); ● Organização Lógica e Física dos Dados; ● Utiliza o modelo cliente-servidor para interagir com usuários/sistemas; ● Log de transação (Write Ahead Log - WAL) X Log de erros/informações (Logger); ● Multiversion Concurrency Control (MVCC); ● Backup com possibilidade de Point-in-Time recovery PITR; ● Replicação; ● Monitoramento e Desempenho; ● Boa práticas. http://pt.scribd.com/pedrofvieira
  3. 3. Sistema de Gerenciamento de Banco de Dados Relacional Implementa a maior parte do padrão SQL: 2011 PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  4. 4. PostgreSQL: Instalação do servidor ● O “Core” do PostgreSQL está disponível de várias formas ○ Pacotes binários pré-construídos (packages) estão disponíveis para vários sistemas operacionais (BSD, FreeBSD, OpenBSD, Red Hat, CentOS, Debian, Ubuntu, SuSE, OpenSuSE, Mac OS X, Solaris, Windows) e arquiteturas (x86_64 bits, x86 32 bits, ■ pode-se baixar e instalar pacotes binários específicos para o sistema operacional/arquitetura a partir repositórios acessados através de APT-GET (Ubuntu, Debian) ou YUM(Red Hat, centOS) ■ ou baixar arquivos binários RPM ou Deb preparados especificamente para cada distribuição; ■ Para WIndows e Mac OS X existem instaladores gráficos específicos. ○ Existem versões montadas por terceiros (third party builds) que incluem o Postgres: BigSQL, PostgreSQL Live CD, Turnkey PostgreSQL, BitNami LAPP, MAPP ou WAPP; ○ Para usuários mais experientes pode-se também fazer a instalação através da compilação do código fonte que pode ser baixado no FTP ou GIT do projeto; PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  5. 5. PostgreSQL: Instalação do servidor ● Instalações com pacotes binários ou distribuições de terceiros ○ Prós: fácil e rápida instalação; ○ Contras: utilizada uma configuração pre-definida que pode não ser a desejada; # apt-get install postgresql # modificar arquivos de configuração (postgresql. conf e pg_hba.conf) ● Instalações a partir do código fonte ○ Prós: configuração pode ser customizada conforme desejado; Utilização melhor dos recursos disponíveis; ○ Contras: mais complexa. # baixar código fonte e dependências # configurar, compilar e instalar # criar usuário postgres (sistema operacional) e conceder permissões # criar área de dados PG_DATA # modificar arquivos de configuração (postgresql. conf e pg_hba.conf) # configurar inicialização automática do PostgreSQL PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  6. 6. PostgreSQL: Arquitetura multiprocessos PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  7. 7. PostgreSQL: Organização Física dos Dados ● Por padrão o PostgreSQL armazena e organiza os dados e informações de controle (log de transações WAL, logs de erros e arquivos de configuração) sob o PGDATA, a área de dados; PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  8. 8. PostgreSQL: Organização Física dos Dados ● Tablespaces são locais no sistema de arquivos onde se armazena os arquivos de dados, ou seja, tablespace é um diretório. ● Por padrão são criados dois tablespaces: ○ pg_default (no diretório PGDATA/base) - destino default de todas as bases de dados criadas; ○ pg_global (no diretório PGDATA/global) - contém os objetos que são compartilhados entre todas as bases, incluindo o catálogo de sistema; PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  9. 9. PostgreSQL: Organização Física dos Dados ● Se a instalação for feita através de código fonte, pode-se iniciar a área de dados PGDATA em um disco diferente do disco do sistema operacional e do Core do PostgreSQL; ● As bases de dados podem ser armazenadas em outros discos através do uso de TABLESPACES, porém as referências a elas continuarão sob a área de dados PGDATA; ● Os arquivos de logs de transações WAL podem ser armazenados fora da PGDATA através do uso de links simbólicos sob a área de dados PGDATA; ● Os arquivos de logs de erros e informações podem ser armazenados fora da PGDATA apenas modificando o arquivo de configurações postgresql.conf; ● Dependendo da versão ou da forma de instalação os arquivos de configurações () podem estar dentro ou fora da PGDATA; Mesmo que se tenha uma instalação com dados/logs/configurações em locais diferentes o PGDATA é o coração do PostgreSQL PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  10. 10. PostgreSQL: Organização Lógica dos Dados ● Um servidor ou instância do PostgreSQL pode conter diversas Bases de Dados. Estas Bases de Dados podem conter schemas que conterão os objetos de banco de dados (tabelas, índices, etc). PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  11. 11. PostgreSQL: Organização Lógica e Física dos Dados ● Um mesmo servidor poderá ter 2 ou mais instâncias de PostgreSQL, geralmente de versões diferentes, que são consideradas como instalações diferentes (Core, PGDATA, etc); ● Em uma instalação típica, no momento da criação da PGDATA, três bases de dados são criadas: ○ template0, usado para recuperação pelo próprio PostgreSQL; ○ template1, serve como modelo para novas bases de dados; ○ postgres, criada para conectar-se por padrão (não obrigatório mas pode ser necessário em algumas ferramentas); ● Na criação de nova base de dados as principais opções são: ○ OWNER, o usuário que pode criar schemas e objetos além de poder dar permissões; ○ TEMPLATE, por padrão é o template1 mas pode ser utilizada outra; ○ ENCODING, define o conjunto de caracteres utilizado no armazenamento; ○ TABLESPACE, por padrão é o pg_default mas pode ser definido outro; ● Uma nova base de dados pode ser criada através da instrução CREATE DATABASE (DDL) ou através de um utilitário de linha de comando createdb; PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  12. 12. PostgreSQL: Modelo cliente-servidor para interagir com usuários/sistemas PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  13. 13. PostgreSQL: Modelo cliente-servidor para interagir com usuários/sistemas ● Ao efetuar uma conexão com o PostgreSQL (local ou remotamente) serão verificadas as configurações do arquivo pg_hba.conf; Este arquivo controla: quais hosts têm permissão de conectar, como os clientes são autenticados, nomes dos usuários que podem se conectar e quais bancos eles podem acessar. # TYPE DATABASE USER ADDRESS METHOD local all all peer host all all IP_DO_SERVIDOR_GLASSFISH/32 md5 host all all MASCARA_DA_SUBREDE/24 md5 host all all MASCARA_DE_OUTRA_SUBREDE/16 md5 TYPE é o tipo de conexão: "local" para Unix-domain socket, "host" para plain ou SSL-encrypted TCP/IP socket, "hostssl" somente SSL- encrypted TCP/IP socket, e "hostnossl somente plain TCP/IP socket. METHOD é o método de autenticação: “trust” não necessita senha, “password” envia a senha no formato texto, “md5” envia a senha encriptada. “ident” obtém o nome do usuário do sistema operacional. Para conexões TCP/IP contacta o servidor ident no cliente. Para conexões locais, recebendo este do sistema operacional. “peer” comparando o usuário do SO com o usuário do banco de dados. ● Ao efetuar uma conexão com uma base de dados não será possível acessar os objetos de outras base de dados do servidor ou instância. PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  14. 14. PostgreSQL: Log de transação (Write Ahead Log - WAL) Arquivos de WAL (no diretório PGDATA/pg_xlog) Arquivos de Dados (nos diretórios das tablespaces: PGDATA/base, PGDATA/global, etc) PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  15. 15. PostgreSQL: Multiversion Concurrency Control (MVCC) ● O PostgreSQL gerencia a concorrência entre transações através de um método conhecido como Multiversion Concurrency Control (MVCC), que dá a cada transação um "snashot" do banco de dados, permitindo que alterações sejam feitas sem ser visíveis para outras transações até que as alterações sejam confirmadas. MVCC não é exclusivo do PostgreSQL, é uma técnica utilizada em outros SGBDs. PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  16. 16. PostgreSQL: Backup e Recuperação ● Existem duas abordagens diferentes para fazer backup de dados PostgreSQL: Dump ou Backup Lógico ● Snapshot no início do backup e não considera as alterações durante o processo; ● Não precisa parar o servidor; ● Portáveis podendo ser restaurado em versões diferentes ● Formato binário ou script SQL; ● Possível especificar base de dados, schema e tabelas que devem ser feitas backup. Backup Contínuo ou Backup Físico ● Backup da instância inteira; ● Backup Base + Arquivamento de WALs; ● Permite Point-in-Time Recovery; ● Permite replicação por Log Shipping; PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  17. 17. PostgreSQL: Replicação ● Existem uma série de ferramentas que implementam replicação mas o PostgreSQL possui duas formas nativas de replicações assíncronas: Log Shipping (desde a versão 8.2) ● Envio dos arquivos de logs de transações WALs para serem aplicados em outro servidor (réplica); ● Nível de replicação Warm Standby onde a réplica (slave) não pode ser acessado ficando apenas para contigência em caso de falha do servidor principal (master); ● Tempo de atraso maior (processo de cópia, etc). Streaming Replication (desde a versão 9) ● Os dados são replicados logo que são comitados; ● Nível de replicação Hot Standby onde a réplica pode ser utilizada em operações de leitura; ● Menor atraso na propagação dos dados; ● Comunicação entre serviços do próprio PostgreSQL; ● Simplicidade de configuração; PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  18. 18. PostgreSQL: Monitoramento e Desempenho ● Muitas ferramentas usadas para monitoramento de serviços PostgreSQL são as mesmas utilizadas para monitoramento de ambientes unix/linux/windows (nagios, cacti, zabbix); ● Devemos monitorar como andam os processos do SO relacionados ao PostgreSQL, analisar situações de tráfego de I/O, e também outros recursos disponibilizados no servidor como CPU, memória, disco, etc; ● Devemos monitorar também como andam as transações de banco de dados e possíveis processos bloqueados (por outro processos ou por operações de I/O); ● A partir do acompanhamento dessas informações devemos fazer ajustes algumas vezes na infraestrutura do servidor (recursos e sistema operacional) outras vezes em configurações do postgres ou sistema operacional e até mesmo na modificação das aplicações. Ciclo de Tunning PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  19. 19. PostgreSQL: Boas Práticas ● Efetuar instalação a partir de código-fonte; ● Utilize uma base de dados e diversos schemas para organizar os dados mas permitindo o acesso durante uma mesma conexão; ● Conceder permissões para grupos (ROLE); ● Forneça acesso somente o que for necessário tanto para os objetos de dados quanto para as configurações de conexão (pg_hba.conf); ● Fazer backup de arquivos de configuração; ● Ao fazer atualização da versão do PostgreSQL: ○ Minor version: novos programas compilados; ○ Major version: backup -> atualização -> restore; ● Mantenha o Autovacuum habilitado; ● Faça Backup Contínuo que possibilita o Point-inTime Recovery; ● Configure o ambiente para replicação do tipo Streaming Replication e implemente balanceamento de carga: ○ Servidor Master - todo o tipo de operações; ○ Servidor Slave - operações de leitura. PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  20. 20. PostgreSQL: Links úteis Página oficial do projeto PostgreSQL www.postgresql.org Wiki oficial https://wiki.postgresql.org/wiki/Main_Page Blogs http://planet.postgresql.org/ www.postgresqltutorial.com Obrigado!! PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  21. 21. Este material não é um curso ou parte de nenhum curso ou treinamento. Foi elaborado com o único objetivo de transferir conhecimentos adquiridos em estudos autônomos e também adquiridos durante o curso Administração de Banco de Dados com PostgreSQL ministrado por Fábio da Luz Caiut na Escola Superior de Redes (ESR) da Rede Nacional de Pesquisa (RNP) em Brasília/DF. Para maiores informações sobre o curso citado pesquise no endereço eletrônico http://esr.rnp. br/des6 PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira

×