SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
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ó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
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
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
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
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 (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
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
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
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
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
PostgreSQL: Modelo cliente-servidor para interagir com usuários/sistemas
PostgreSQL - Visão Geral
http://pt.scribd.com/pedrofvieira
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
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
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
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
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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Postgre S Q L Apresentacao U F C
Postgre S Q L Apresentacao U F CPostgre S Q L Apresentacao U F C
Postgre S Q L Apresentacao U F CRibamar Sousa
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universoelliando dias
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
Oracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseOracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseDouglas Paiva de Sousa
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?Rodrigo Almeida
 
Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataRodrigo Almeida
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open sourceMatheus Espanhol
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosRodrigo Almeida
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLMatheus Espanhol
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recoveryRodrigo Crespi
 

Mais procurados (20)

Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Postgre S Q L Apresentacao U F C
Postgre S Q L Apresentacao U F CPostgre S Q L Apresentacao U F C
Postgre S Q L Apresentacao U F C
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universo
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
Oracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseOracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & Database
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para Exadata
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 
Postgre sql
Postgre sqlPostgre sql
Postgre sql
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dados
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
 
Treinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19cTreinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19c
 
Cacti
CactiCacti
Cacti
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recovery
 

Semelhante a PostgreSQL - Visão Geral - Pedro Vieira

Fazendo Um Elefante Passar Debaixo da Porta - FISL
Fazendo Um Elefante Passar Debaixo da Porta - FISLFazendo Um Elefante Passar Debaixo da Porta - FISL
Fazendo Um Elefante Passar Debaixo da Porta - FISLFabio Telles Rodriguez
 
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGIFazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGIFabio Telles Rodriguez
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceSaveincloud
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLRaul Oliveira
 
Palestra ferramentas de administraao sgbd
Palestra   ferramentas de administraao sgbdPalestra   ferramentas de administraao sgbd
Palestra ferramentas de administraao sgbdDiego Rivera Tavares
 
PostgreSQL Conceitos e aplicações - FSA
PostgreSQL  Conceitos e aplicações - FSAPostgreSQL  Conceitos e aplicações - FSA
PostgreSQL Conceitos e aplicações - FSAFabio Telles Rodriguez
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
 
Apresentação PGDAY - instalação e configuração - PostgreSQL
Apresentação PGDAY - instalação e configuração - PostgreSQLApresentação PGDAY - instalação e configuração - PostgreSQL
Apresentação PGDAY - instalação e configuração - PostgreSQLJohnes Castro
 
Skytools, pgbouncer e plproxy
Skytools, pgbouncer e plproxySkytools, pgbouncer e plproxy
Skytools, pgbouncer e plproxyFernando Ike
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIMatheus Espanhol
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQLDiogo Biazus
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlLeonardo Medeiros Martins
 

Semelhante a PostgreSQL - Visão Geral - Pedro Vieira (20)

Fazendo Um Elefante Passar Debaixo da Porta - FISL
Fazendo Um Elefante Passar Debaixo da Porta - FISLFazendo Um Elefante Passar Debaixo da Porta - FISL
Fazendo Um Elefante Passar Debaixo da Porta - FISL
 
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGIFazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performance
 
Por que PostgreSQL?
Por que PostgreSQL?Por que PostgreSQL?
Por que PostgreSQL?
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQL
 
Palestra ferramentas de administraao sgbd
Palestra   ferramentas de administraao sgbdPalestra   ferramentas de administraao sgbd
Palestra ferramentas de administraao sgbd
 
PostgreSQL Conceitos e aplicações - FSA
PostgreSQL  Conceitos e aplicações - FSAPostgreSQL  Conceitos e aplicações - FSA
PostgreSQL Conceitos e aplicações - FSA
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
Apresentação PGDAY - instalação e configuração - PostgreSQL
Apresentação PGDAY - instalação e configuração - PostgreSQLApresentação PGDAY - instalação e configuração - PostgreSQL
Apresentação PGDAY - instalação e configuração - PostgreSQL
 
Skytools, pgbouncer e plproxy
Skytools, pgbouncer e plproxySkytools, pgbouncer e plproxy
Skytools, pgbouncer e plproxy
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool II
 
CouchDB Presentation
CouchDB PresentationCouchDB Presentation
CouchDB Presentation
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
 
Collectd
CollectdCollectd
Collectd
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Banco aula 01
Banco aula 01Banco aula 01
Banco aula 01
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
BDD
BDDBDD
BDD
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para Postgresql
 

Mais de Pedro Fernandes Vieira

Como desenvolver uma aplicação Web com django 2.2.13 (Parte 2 de 2)
Como desenvolver uma aplicação Web com django 2.2.13 (Parte 2 de 2)Como desenvolver uma aplicação Web com django 2.2.13 (Parte 2 de 2)
Como desenvolver uma aplicação Web com django 2.2.13 (Parte 2 de 2)Pedro Fernandes Vieira
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvPedro Fernandes Vieira
 
Lab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrantLab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrantPedro Fernandes Vieira
 
Automatizando o Preenchimento de Formulários Web Utilizando IMacros for Firefox
Automatizando o Preenchimento de Formulários Web Utilizando IMacros for FirefoxAutomatizando o Preenchimento de Formulários Web Utilizando IMacros for Firefox
Automatizando o Preenchimento de Formulários Web Utilizando IMacros for FirefoxPedro Fernandes Vieira
 

Mais de Pedro Fernandes Vieira (6)

Testando API Rest com Insomnia Core
Testando API Rest com Insomnia CoreTestando API Rest com Insomnia Core
Testando API Rest com Insomnia Core
 
Como desenvolver uma aplicação Web com django 2.2.13 (Parte 2 de 2)
Como desenvolver uma aplicação Web com django 2.2.13 (Parte 2 de 2)Como desenvolver uma aplicação Web com django 2.2.13 (Parte 2 de 2)
Como desenvolver uma aplicação Web com django 2.2.13 (Parte 2 de 2)
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenv
 
Lab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrantLab python django - parte 1 - windows e vagrant
Lab python django - parte 1 - windows e vagrant
 
Internet of Things - Overview
Internet of Things - OverviewInternet of Things - Overview
Internet of Things - Overview
 
Automatizando o Preenchimento de Formulários Web Utilizando IMacros for Firefox
Automatizando o Preenchimento de Formulários Web Utilizando IMacros for FirefoxAutomatizando o Preenchimento de Formulários Web Utilizando IMacros for Firefox
Automatizando o Preenchimento de Formulários Web Utilizando IMacros for Firefox
 

PostgreSQL - Visão Geral - Pedro Vieira

  • 1. PostgreSQL - Visão Geral Pedro Fernandes Vieira http://pt.scribd.com/pedrofvieira Salvador - Bahia - Brasil Julho/2014
  • 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. 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. 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. 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. PostgreSQL: Arquitetura multiprocessos PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  • 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. 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. 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. 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. 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. PostgreSQL: Modelo cliente-servidor para interagir com usuários/sistemas PostgreSQL - Visão Geral http://pt.scribd.com/pedrofvieira
  • 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. 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. 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. 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. 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. 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. 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. 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. 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