O que é o PostgreSQL?
• Entendendo um banco de dados
• Banco de dados relacionais
• Banco de dados objeto-relacional
Interfaces de acesso ao PostgreSQL
• Conexão JDBC
• Conexão Delphi/ Visual Borland C++
• Introdução ao psql
• Operação do psql
• pgAdmin
• PHP pgAdmin
• Diferenças entre sistema de gerenciamento de banco de dados relacional (SGBDR) e sistema de gerenciamento de banco de dados objeto-relacional (SGBDOR)
• Instalação do PostgreSQL.
• Arquitetura do SGBDOR PostgreSQL.
Gerenciando tabelas
• Introdução
• Visualizando a estrutura de tabelas
• Colunas de sistema
• Sintaxe de criação de tabelas
• Comando Alter table
• Alterando tabelas e colunas
• Comentários em objetos
• Eliminando tabelas
Tipos de dados e operadores no PostgreSQL
• Tipos numéricos
• Tipos inteiros
• Números de ponto flutuante
• Tipos monetários
• Tipos Data e Hora
• Tipo booleano
• Strings e caracteres
• Conversões entre tipos
• Operadores
• Operadores lógicos
• Operadores de comparação
• Operadores matemáticos
• Funções matemáticas
• Funções e operações com Strings
• Expressões regulares
Selecionando Dados
• Utilizando expressões e constantes
• Ocultando linhas duplicadas
• Limitando o resultado do Select
• O comando Case
• Substituindo valores nulos
Operações de conjuntos
• União
• Intersecção
• Subtração
Restringindo a seleção de dados
• Utilizando a cláusula where
• Operador Like e Ilike
• Operador Between
• Utilizando o IN
• Comparação agrupada
• Comparações com NULL
• Cláusula Order By
Selecionando dados de várias tabelas
• Apelidos de tabelas
• Cruzando dados entre tabelas
• Tipos de Join
• CROSS JOIN
• INNER e OUTER JOINs
• NATURAL JOIN
Funções
• Introdução
• Funções matemáticas
• Funções de data e hora
• Funções de texto
• Funções de conversão de tipos
• Outras funções
• Funções de Agregação
Utilizando sub-consultas
• Operadores de sub-consultas
• Sub-consultas no From
• Sub-consultas complexas
Alterando dados
• Adicionando dados com Insert
• Adicionando dados com Select
• Inserindo dados com Copy
• Recuperando dados com Copy
• Copy no formato CSV
• Modificando dados com Update
• Removendo dados com Delete
• Removendo dados com Truncate
Controle de transações
• Transações no PostgreSQL
• Padrão ACID
• Exemplo
• Níveis de isolamento
• Read Commited
• Serializable
• Iniciando transações no PostgreSQL
• Savepoints
Outros objetos de banco de dados
• Views
• Sequences
• Índices
• Tabelas clusterizadas
• Cursores
Blobs
• Blobs no PostgreSQL
• Exemplo de utilização
• Apagando Blobs
Restrições e integridade referencial
• O que são restrições?
• Constraint Check
• Constraint Not Null
• Constraint Unique
• Constraint Primary Key
• Constraint Foreign Key
Herança entre tabelas
• Introdução
• Criando tabelas com herança
• Exemplos
• Acessando dados da tabela pai
Usando funções definidas pelo usuário
• Introdução
• Sobrecarga de funções
• Funções escritas em SQL
• Funções SQL baseadas em tabelas
• Funções internas
• Funções em linguagem C
• Linguagem procedurais suportadas
Adicionando PL/pgSQL no servidor
• Adicionando PL/pgSQL manualmente
• Gerenciando as linguagens instaladas
Linguagem procedural PL/pgSQL
• Introdução
• Vantagens de usar PL/pgSQL
• Desenvolvendo em PL/pgSQL
• Diferença entre as linguagens procedurais de outros bancos
• Características da linguagem
Estrutura da linguagem
• Declarando funções
• Otimizações de funções
• Opções de segurança
• Removendo funções
• Gerenciando funções
• Blocos de códigos
• Comentários
• Variáveis
• Chamando funções
• Argumento de funções
• Apelido de argumentos
• Atributos
• Valores de retorno
• Variável FOUND
• Conferindo a execução de comandos SQL
MÓDULO 3: ADMINISTRAÇÃO DO BANCO DE DADOS - VERSÃO 8
Arquitetura do PostgreSQL
• Conexões
• Módulos internos
• Processos
Configuração de ambiente
• Formatos de data
• Codificação
• Localização
• Variáveis de ambiente
O arquivo postgresql.conf
• Opções gerais
• Opções de manutenção
Gerenciamento de banco de dados
• Criação de cluster
• Iniciando o servidor de banco de dados
• Tablespaces
• Criando um banco de dados
• Layout físico
• Removendo um banco de dados
• Banco de dados template
Catálogo de dados
• Principais tabelas de sistema
Autenticação de clientes
• Arquivo pg_hba.conf
• Métodos de autenticação
• Arquivo pg_ident.conf
Administração de segurança lógica
• Gerenciando schema
• Gerenciando usuários e permissões (Roles)
• Gerenciando Roles de Login (usuários)
• Gerenciando Roles Contêiner (grupos)
• GRANT e REVOKE para Roles
• Controle de acesso a Objetos
• GRANT e REVOKE para Objetos
Administração de segurança física
• Backup lógico (pg_dump)
• Restauração de dump texto
• Restauração de dump binário (pg_restore)
• Backup físico offline
Manutenção de banco de dados
• A rotina de vacuum
• Atualização de estatísticas
• Prevenindo falhas no id de transação
• Verificando os ids de transação
• Habilitando o autovacuum
• Rotina de reindexação
Monitorando o PostgreSQL
• Monitoramento de espaço em disco
• Monitoramento de tamanho de objetos
• Estatísticas de uso de memória
• Estatísticas de uso de tabelas e índices
• Verificando conexões
• Configurando e entendendo o log de atividade
Write Ahead Log
• O que é o WAL
• Configuração do WAL
• Benefícios do WAL
Point-in-Time Recovery
• O que é PITR
• Configuração
• Como fazer o backup para PITR
• Como restaurar um backup de PITR
Administração do software
• Migração entre versões
Instalando o PostgreSQL no Linux
• Instalação a partir dos fontes
• Instalação a partir de pacotes
Instalando o PostgreSQL no Windows
• Instalação gráfica
Regras Gerais de Performance
• Causas de baixa performance
• Regras Gerais de Performance
• Relação Custo x Performance
• Entenda o seu tipo de aplicação
• Requisitos de Hardware
• Tuning de memória e CPU
• Tuning de I/O
Otimização de Kernel para o PostgreSQL
• Kernel
• Shared Memory
• Configurando o Kernel
Otimização de Memória
• Níveis de cache
• Mecanismo de cache
• Memória Virtual e Paginação
• Utilização de Memória
• Ferramentas de monitoramento
Monitorando o Uso de CPU
• Monitorando o uso de CPU
• Múltiplas CPUs
• Ferramentas de monitoramento
Otimização de I/O
• Modelo de I/O no Unix
• Logical Volume Manager (LVM) e RAID
• Escolhendo o dispositivo de I/O ideal
• Tuning de I/O
• Tecnologia de discos
• Tipos de File Systems
• Particionamento
• Uso de Tablespace
• Ajuste de disco IDE
• Ajuste do algoritmo de I/O
Otimização de Shared Buffers do PostgreSQL
• Uso dos caches
• Shared Buffers
• Efeitos do Tamanho do Shared Buffers
• Estimando o Shared Buffers
• Monitorando o Shared Buffers
Otimizando o I/O do PostgreSQL
• Layout físico do Banco de Dados
• Tuning do Write-Ahed Log (WAL)
Parâmetros avançados de Configuração
• WAL - Segurança x Desempenho
Registrando comandos SQL
• Como registrar os comandos SQL
• Identificando os SQL Ineficientes
• Monitorando comandos em tempo real
Utilização de Índices
• Usando índices
• Tipos de índices
• Opções avançadas
• Casos práticos
• Truques com indexação
Otimizações sintáticas
• Avaliando os planos de execução
• Gerando o plano de execução
• Comparação de custos
• Controlando o comportamento do otimizador
Populando o banco de dados
• Dicas e recomendações
- Versões do PostgreSQL
- Dicas e recomendações finais