2
Inside SQL Server
Como funciona um banco de dados?
Fabricio Catae (Microsoft)
Premier Field Engineer
Microsoft Certified Master
Twitter: @fcatae
WebSite: http://blogs.msdn.com/fcatae/
PrudenteTechDay
|2010
Como comecei...
Escola Politecnica (USP)
1998-2002 – Engenharia Elétrica
Carreira(Estagiário)
1999 – Gerente de Projeto (Poli Jr)
2000 – Programador (Flexsys)
2001 – Estagiário (Microsoft Consulting Services)
2002 – Field Engineer (Microsoft Premier Support)
Certificações Microsoft Importantes
MS Certified Solution Developer (C++ for Windows)
MS Certified Database Administrator (SQL Server 2000)
PrudenteTechDay
|2010
Introdução
Database Administrator (DBA)
Comparação
Site de Busca e Banco de Dados
PrudenteTechDay
|2010
Banco de Dados (Database)
O que é um Banco de Dados?
Coleção de dados
Exemplos de Banco de Dados Relacional
Microsoft SQL Server
Oracle
DB2
Sybase
MySql
PrudenteTechDay
|2010
Busca x Consulta
Busca por palavras específicas
“Ruas Cidade Presidente Prudente”
“Empregos Diretor Salário 30000 ou mais”
Consulta por informações
Ruas (Cidade = Presidente Prudente)
Empregos (Cargo = Diretor, Salário > 30000)
PrudenteTechDay
|2010
Site de Busca
Isso é um banco de dados relacional?
Retorna resultados para a busca
Mas,
Não estruturado
Não modifica dados
Não consolida resultados
Não permite fazer consultas complexas
PrudenteTechDay
|2010
Agenda
Introdução
Parte I – Características
Escalabilidade
Alta Disponibilidade
Parte II – Inside SQL Server
Query Optimizer
Buffer Manager
Transaction Manager
PrudenteTechDay
|2010
Parte I – Visão Geral
Características
Escalabilidade
Redundância
Alta Disponibilidade
Segurança e Auditoria
Controle de Concorrência
PrudenteTechDay
|2010
Escalabilidade
Aumento de Recursos é proporcional ao
aumento de Desempenho
Exemplos:
Sistema escalável em relação ao número de CPU
Aplicação Web escala com o aumento de servidor
Existe um limite do ganho em desempenho em
relação ao aumento de recurso
PrudenteTechDay
|2010
Escalabilidade
PrudenteTechDay
|2010
Limite da Escalabilidade
PrudenteTechDay
|2010
Escalabilidade
Nome = ‘P1’, Tel = ‘555-5555’
Nome = ‘P2’, Tel = ‘555-5556’
Nome = ‘P3’, Tel = ‘555-5557’
Nome = ‘P4’, Tel = ‘555-5558’
Nome = ‘P5’, Tel = ‘555-5559’
PrudenteTechDay
|2010
Gerenciamento de Recursos
Responsabilidades
Priorizar atividades de Sistema
Distribuição de Tarefas
Alocação de Memória Dinâmica
Transferência de Disco
“Quase” um Sistema Operacional
PrudenteTechDay
|2010
Gerenciamento de Recursos
PrudenteTechDay
|2010
Recursos de Máquina
Recursos Típicos
Processador
Memória RAM
Disco
Placas HBA
Placas de Rede
PrudenteTechDay
|2010
Alta Disponibilidade
Problemas Acontecem
Implementar redundância
Identificar pontos de falha
Servidor (Hardware)
Comunicação de Rede (Network)
Armazenamento de dados (Disco)
PrudenteTechDay
|2010
Nome = ‘P1’, Tel = ‘555-5555’
Nome = ‘P2’, Tel = ‘555-5556’
Nome = ‘P3’, Tel = ‘555-5557’
Nome = ‘P4’, Tel = ‘555-5558’
Nome = ‘P5’, Tel = ‘555-5559’
Aplicação Cliente x Servidor
Consulta P5
555-5559
C++, ASP.NET,
PHP, Java
PrudenteTechDay
|2010
Múltiplos Clientes
Nome = ‘P1’, Tel = ‘555-5555’
Nome = ‘P2’, Tel = ‘555-5556’
Nome = ‘P3’, Tel = ‘555-5557’
Nome = ‘P4’, Tel = ‘555-5558’
Nome = ‘P5’, Tel = ‘555-5559’
PrudenteTechDay
|2010
Cluster de Servidores
Nome = ‘P1’, Tel = ‘555-5555’
Nome = ‘P2’, Tel = ‘555-5556’
Nome = ‘P3’, Tel = ‘555-5557’
Nome = ‘P4’, Tel = ‘555-5558’
Nome = ‘P5’, Tel = ‘555-5559’
PrudenteTechDay
|2010
Cluster Geográfico
PrudenteTechDay
|2010
Parte II - Inside SQL Server
Query Processor
Storage
Transaction
PrudenteTechDay
|2010
Componentes
Access Method Manager
Buffer Manager
Database Manager
Expression Manager
File Manager
Log Manager
Memory Manager
Metadata Manager
Query Optimizer
Security Manager
SQL Native Client
Thread Scheduler
Transaction Manager
...
PrudenteTechDay
|2010
Principais Famílias
Principais “Famílias”
Query Processor
Transaction
Storage
Storage
Query Processor
Transaction
PrudenteTechDay
|2010
Principais Famílias
Query Processor: Compilação
Linguagem SQL
Processo de Compilação
Storage
Discos e Memória
Transactions
Propriedades ACID
Processo de Rollback
Processo de Database Recovery
PrudenteTechDay
|2010
Query Processor: Compilação
Terminologia
Query (Consulta)
Linguagem SQL
Parser
Compilação
Otimização
PrudenteTechDay
|2010
Semântica da Linguagem SQL
Padrão ANSI-SQL
Independência do modelo físico
A linguagem SQL descreve:
QUAL a informação desejada
Mas não descreve COMO obter o dado
PrudenteTechDay
|2010
Linguagem SQL
Descreve QUAL informação obter:
SELECT Nomes FROM vPessoas
WHERE
Pessoas.Idade < 5 AND
Pessoas.Amigos > 100
PrudenteTechDay
|2010
Exemplo: Programação
For Each(Pessoas)
{
if( Pessoa.Idade < 5 )
if( Amigos(Pessoa) > 100 )
PRINT(‘Valido’);
}
PrudenteTechDay
|2010
Exemplo: Programação
For Each(Pessoas)
{
if( Pessoa.Idade < 60 )
if( Amigos(Pessoa) > 1000 )
PRINT(‘Valido’);
}
PrudenteTechDay
|2010
Exemplo: Programação
For Each(Pessoas)
{
if( Pessoa.Idade < 60 )
if( Amigos(Pessoa) > 1000 )
PRINT(‘Valido’);
}
PrudenteTechDay
|2010
Exemplo: Programação
For Each(Pessoas)
{
if( Amigos(Pessoa) > 1000 )
if( Pessoa.Idade < 60 )
PRINT(‘Valido’);
}
Otimização de código!!!
PrudenteTechDay
|2010
Compilador SQL
Texto
Parser Tree
Compiled Plan
Execution Plan
PrudenteTechDay
|2010
Texto Inicial
Texto
Parser Tree
Compiled Plan
Execution Plan
SELECT Nomes FROM vPessoas
WHERE
Pessoas.Idade < 60 AND
Pessoas.Amigos > 1000
PrudenteTechDay
|2010
Compilador SQL - Parser Tree
Texto
Parser Tree
Compiled Plan
Execution Plan
SELECT
FROM Pessoas
Pessoas
Amigos
WHERE
<
Idade
60
>
Amigos
1000
Nomes
PrudenteTechDay
|2010
Compilador SQL – Compiled Plan
Texto
Parser Tree
Compiled Plan
Execution Plan
For Each(Pessoas)
{
if( Amigos(Pessoa) > 1000 )
if( Pessoa.Idade < 60 )
PRINT(‘Valido’);
}
For Each(Pessoas)
{
if( Pessoa.Idade < 60 )
if( Amigos(Pessoa) > 1000 )
PRINT(‘Valido’);
}
SELECT
FROM vPessoas
Pessoas
Amigos
WHERE
< (Menor)
Idade
60
> (Maior)
Amigos
1000
Nomes
PrudenteTechDay
|2010
Compilador SQL – Execution Plan
Texto
Parser Tree
Compiled Plan
Execution Plan
Compiled Plan
(Cplan)
For Each(Pessoas)
if( Amigos(Pessoa) > 1000 )
if( Pessoa.Idade < 60 )
PRINT(‘Valido’);
Variáveis
Ambiente
CPlan
Variáveis
Ambiente
CPlan
Variáveis
Ambiente
CPlan
PrudenteTechDay
|2010
Principais Famílias
Query Processor
Linguagem SQL
Processo de Compilação
Storage: Armazenamento de Dados
Discos e Memória
Transactions
Propriedades ACID
Processo de Rollback
Processo de Database Recovery
PrudenteTechDay
|2010
Storage
Mídias de Armazenamento de Dados
Buffer Manager
PrudenteTechDay
|2010
Mídias de Armazenamento
Cache L1/L2
Memória RAM
Discos magnéticos(HD)
Mídia ótica e Fitas
PrudenteTechDay
|2010
Mundo Ideal
Sonho: Banco de Dados 100% em Memória
Crescimento do Volume de Dados
Quase impossível armazenar tudo em memória
Alto custo (compensa o benefício?)
Mídia Volátil
Perda de dados em caso de falta de energia
PrudenteTechDay
|2010
Mídia Não-Volátil
Dispositivo de armazenamento que não perde
informações ao cortar a fonte de energia
Tecnologia Atual
Magnetic Disk
Futuro
Solid State Disk
PrudenteTechDay
|2010
Dados Armazenados
PrudenteTechDay
|2010
Informação
DADOS
DADOS
DADOS
DADOS
DADOS
DADOS
DADOS
Tamanho
Fixo: 8Kb
PrudenteTechDay
|2010
Buffer Manager
CONSULTA
Buffer
Manager
Memória Disco
Query
Processor
Storage
PrudenteTechDay
|2010
Leitura da Informação
Leitura
Memória
PrudenteTechDay
|2010
Leitura da Informação
Leitura
Memória Disco
PrudenteTechDay
|2010
Buffer Manager
Cache de Dados em Memória
Dados mais acessados ficam em memória,
enquanto que o resto continua em disco
Responsável pelo gerenciamento de memória
Dilema sobre a Memória livre: quanto mais
melhor ou pior?
PrudenteTechDay
|2010
Transactions
Unidade de Operação
Pode ser composta por múltiplas operações
Ações
Commit
Rollback
PrudenteTechDay
|2010
Exemplo: Casal reformando a sala
BEGIN TRANSACTION
Pintar parede da sala de verde
Colocar um abajur marrom na mesa
Comprar um sofá creme no lugar do azul
Se não combinar, ROLLBACK TRANSACTION
COMMIT TRANSACTION
PrudenteTechDay
|2010
Propriedades ACID da Transação
Atomicity
Consistency
Isolation
Durability
PrudenteTechDay
|2010
Processo de Log
Log Table e Log Records (Blocks)
Log Table
BEGIN TRANSACTION (transaction_id = 299)
Apaga dados do usuário
Insert nova informacao
COMMIT TRAN (transaction_id = 299)
BEGIN TRANSACTION (transaction_id = 300)
Apaga tabela
COMMIT TRAN (transaction_id = 300)
PrudenteTechDay
|2010
Processo de Rollback
Atomicity/Consistency
Restaurar o estado anterior
Todas as modificações
registram o estado ANTES
e DEPOIS
As correções são
chamadas de
Compensation Record
Log Table
BEGIN TRANSACTION
Apaga registro (AAAA)
Insert registro (BBBB)
(ROLLBACK TRAN)Apaga registro (BBB)
Compensation
Insere registro (AAA)
Compensation
Rollback completo
PrudenteTechDay
|2010
Database Checkpoint
Repositório
De Dados
LOG
PrudenteTechDay
|2010
CHECKPOINT
Memória
Log Table
BEGIN TRANSACTION
INSERT
UPDATE
DELETE
COMMIT TRAN
Disco
PrudenteTechDay
|2010
Integração do Log e Buffer Manager
Todas operações devem ser escritas no LOG
antes de escrever nos BUFFERS de DADOS.
Memória
Disco
INSERT
Log Table
BEGIN TRANSACTION
INSERT
COMMIT TRAN
PrudenteTechDay
|2010
Processo de Recovery
É possível perder dados se...
Desligar o computador inesperadamente?
Faltar de energia elétrica?
Database Recovery
Processo automático
Garantia de Consistência de Dados
PrudenteTechDay
|2010
Resumo
Principais “Famílias”
Query Processor
Transaction
Storage
Storage
Query Processor
Transaction
59
PrudenteTechDay
|2010
Certificação Microsoft
Microsoft Certified Technology Specialist
Microsoft Certified IT Professional
Microsoft Certified Master
Microsoft Certified Architect
Certificação Microsoft (SQL Server)
http://www.microsoft.com/learning/pt/br/certification/cert-
sql-server.aspx
PrudenteTechDay
|2010
Parceiros
LIVETEC INFORMÁTICA
PrudenteTechDay
|2010
Apoio:
63

Como funciona um banco de dados? (Prudente TechDay 2010)

Notas do Editor

  • #2 4/22/2016 2:48 PM
  • #3 4/22/2016 2:48 PM
  • #9 4/22/2016 2:48 PM
  • #19 Pergunta: Quem já pensou em guardar essas informações em um arquivo XML?
  • #62 4/22/2016 2:48 PM
  • #63 4/22/2016 2:48 PM