Como funciona um banco de dados? (Prudente TechDay 2010)
1. 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/
2. 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)
4. 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
5. 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)
6. 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
8. PrudenteTechDay
|2010
Parte I – Visão Geral
Características
Escalabilidade
Redundância
Alta Disponibilidade
Segurança e Auditoria
Controle de Concorrência
9. 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
17. 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
18. 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’
19. 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’
26. 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
34. PrudenteTechDay
|2010
Compilador SQL - Parser Tree
Texto
Parser Tree
Compiled Plan
Execution Plan
SELECT
FROM Pessoas
Pessoas
Amigos
WHERE
<
Idade
60
>
Amigos
1000
Nomes
35. 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
36. 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
40. 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
47. 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?
49. 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
51. 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)
52. 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
55. 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
56. 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
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