1
Marília TechDay
|2010
2
Inside SQL Server
Como funciona um banco de dados?
Fabricio Catae (Microsoft)
Premier Field Engineer
Microsoft Certified Master
WebSite: http://blogs.msdn.com/fcatae/
3
MaríliaTechDay
|2010
Como comecei...
Escola Politecnica (USP)
1998-2002 – Engenharia Elétrica (Automação de Sistemas)
Carreira(Estagiário)
1999 – Poli Jr (Gerente de Projeto)
2000 – Flexsys (Integração Linux/Windows/OS2)
2001 – Estagiário Microsoft (Microsoft Consulting Services)
2002 – Field Engineer (Microsoft Premier Support)
Certificações Microsoft Importantes
Microsoft Certified Solution Developer (C++ for Windows)
Microsoft Certified Database Administrator (SQL Server 2000)
4
MaríliaTechDay
|2010
Introdução
Database Administrator (DBA)
Comparação
Site de Busca e Banco de Dados
5
MaríliaTechDay
|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
6
MaríliaTechDay
|2010
Busca x Consulta
Busca por palavras específicas
“Ruas Cidade Marília”
“Empregos Diretor Salário 20000 ou mais”
Consulta por informações
Ruas (Cidade = Marília)
Empregos (Cargo = Diretor, Salário > 20000)
7
MaríliaTechDay
|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
MaríliaTechDay
|2010
Nome = ‘P1’, Telefone = ‘555-5555’
Nome = ‘P2’, Telefone = ‘555-5556’
Nome = ‘P3’, Telefone = ‘555-5557’
Nome = ‘P4’, Telefone = ‘555-5558’
Nome = ‘P5’, Telefone = ‘555-5559’
Nome = ‘P6’, Telefone = ‘555-5560’
Nome = ‘P7’, Telefone = ‘555-5561’
Aplicação Cliente x Servidor
Consulta
Telefone(P5)
555-5559
C++, ASP.NET,
PHP, Java
9
MaríliaTechDay
|2010
Clientes Distribuídos
Nome = ‘P1’, Telefone = ‘555-5555’
Nome = ‘P2’, Telefone = ‘555-5556’
Nome = ‘P3’, Telefone = ‘555-5557’
Nome = ‘P4’, Telefone = ‘555-5558’
Nome = ‘P5’, Telefone = ‘555-5559’
Nome = ‘P6’, Telefone = ‘555-5560’
Nome = ‘P7’, Telefone = ‘555-5561’
10
MaríliaTechDay
|2010
Agenda
Introdução
Parte I – Características
Escalabilidade
Alta Disponibilidade
Parte II – Inside SQL Server
Query Optimizer
Transaction Manager
Buffer Manager
11
MaríliaTechDay
|2010
Parte I – Visão Geral
Características
Escalabilidade
Redundância
Alta Disponibilidade
Segurança e Auditoria
Controle de Concorrência
12
MaríliaTechDay
|2010
1 é pouco, 2 é bom, 3 é demais
13
MaríliaTechDay
|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
14
MaríliaTechDay
|2010
Limite da Escalabilidade
15
MaríliaTechDay
|2010
Escalabilidade
Nome = ‘P1’, Telefone = ‘555-5555’
Nome = ‘P2’, Telefone = ‘555-5556’
Nome = ‘P3’, Telefone = ‘555-5557’
Nome = ‘P4’, Telefone = ‘555-5558’
Nome = ‘P5’, Telefone = ‘555-5559’
Nome = ‘P6’, Telefone = ‘555-5560’
Nome = ‘P7’, Telefone = ‘555-5561’
16
MaríliaTechDay
|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
17
MaríliaTechDay
|2010
Recursos de Máquina
Recursos Típicos
Processador (32/64-bits, CPU Cores)
Memória RAM
Disco SATA/SCSI/FC
Placas HBA
Placas de Rede (100Mbit/1Gbit)
18
MaríliaTechDay
|2010
Gerenciamento de Recursos
19
MaríliaTechDay
|2010
Cluster de Servidores
Nome = ‘P1’, Telefone = ‘555-5555’
Nome = ‘P2’, Telefone = ‘555-5556’
Nome = ‘P3’, Telefone = ‘555-5557’
Nome = ‘P4’, Telefone = ‘555-5558’
Nome = ‘P5’, Telefone = ‘555-5559’
Nome = ‘P6’, Telefone = ‘555-5560’
Nome = ‘P7’, Telefone = ‘555-5561’
20
MaríliaTechDay
|2010
Alta Disponibilidade
e Disaster Recovery
Problemas Acontecem
Identificar pontos de falha
Servidor (Hardware)
Comunicação de Rede (Network)
Proteção do Data Center (Site Protection)
Implementar redundância
21
MaríliaTechDay
|2010
Cluster Geográfico
22
MaríliaTechDay
|2010
Parte II - Inside SQL Server
Query Optimizer
Transaction Manager
Buffer Manager
23
MaríliaTechDay
|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
...
24
MaríliaTechDay
|2010
Principais Famílias
Principais “Famílias”
Query Processor
Transaction
Storage
Storage
Query Processor
Transaction
25
MaríliaTechDay
|2010
Principais Famílias
Query Processor: Compilação
Linguagem SQL
Processo de Compilação
Transactions
Propriedades ACID
Processo de Rollback
Processo de Database Recovery
Storage: Buffer Manager
Discos, Memória e Buffers
26
MaríliaTechDay
|2010
Query Processor: Compilação
Terminologia
Query (Consulta)
Linguagem SQL
Parser
Compilação
Otimização
27
MaríliaTechDay
|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
28
MaríliaTechDay
|2010
Linguagem SQL
Descreve QUAL informação obter:
SELECT Nomes FROM vPessoas
WHERE
Pessoas.Idade < 5 AND
Pessoas.Amigos > 100
29
MaríliaTechDay
|2010
Exemplo: Programação
For Each(Pessoas)
{
if( Pessoa.Idade < 5 )
if( Amigos(Pessoa) > 100 )
PRINT(‘Valido’);
}
30
MaríliaTechDay
|2010
Exemplo: Programação
For Each(Pessoas)
{
if( Pessoa.Idade < 60 )
if( Amigos(Pessoa) > 1000 )
PRINT(‘Valido’);
}
31
MaríliaTechDay
|2010
Exemplo: Programação
For Each(Pessoas)
{
if( Pessoa.Idade < 60 )
if( Amigos(Pessoa) > 1000 )
PRINT(‘Valido’);
}
32
MaríliaTechDay
|2010
Exemplo: Programação
For Each(Pessoas)
{
if( Amigos(Pessoa) > 1000 )
if( Pessoa.Idade < 50 )
PRINT(‘Valido’);
}
Otimização de código!!!
33
MaríliaTechDay
|2010
Compilador SQL
Texto
Parser Tree
Compiled
Plan
Execution
Plan
34
MaríliaTechDay
|2010
Texto Inicial
Texto
Parser Tree
Compiled
Plan
Execution
Plan
SELECT Nomes FROM vPessoas
WHERE
Pessoas.Idade < 60 AND
Pessoas.Amigos > 1000
35
MaríliaTechDay
|2010
Compilador SQL - Parser Tree
Texto
Parser Tree
Compiled
Plan
Execution
Plan
SELECT
FROM vPessoas
Pessoas
Amigos
WHERE
< (Menor)
Idade
60
> (Maior)
Amigos
1000
Nomes
36
MaríliaTechDay
|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
37
MaríliaTechDay
|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
38
MaríliaTechDay
|2010
Transactions
Unidade de Operação
Pode ser composta por múltiplas operações
Ações
Commit
Rollback
39
MaríliaTechDay
|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
40
MaríliaTechDay
|2010
Propriedades ACID (Transação)
Atomicity
Consistency
Isolation
Durability
41
MaríliaTechDay
|2010
Processo de Log
Log Table
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)
42
MaríliaTechDay
|2010
Database Checkpoint
Repositório
De Dados
LOG
43
MaríliaTechDay
|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 TRAN
44
MaríliaTechDay
|2010
Processo de Recovery
Por que Database Recovery?
Garantia de Consistency/Durability
Inicia um Checkpoint
Como perder dados:
Desligar o computador inesperadamente?
Faltar de energia elétrica?
Pegar fogo na CPU?
Arremessar o HD contra a janela?
45
MaríliaTechDay
|2010
Pergunta
Como perder dados:
Desligar o computador inesperadamente?
Faltar de energia elétrica?
Pegar fogo na CPU?
Arremessar o HD contra a janela?
46
MaríliaTechDay
|2010
Storage: Buffer Manager
Mídias de Armazenamento de Dados
Buffer Manager
47
MaríliaTechDay
|2010
Mídias de Armazenamento de Dados
Cache L1/L2
Memória RAM
Discos magnéticos(HD)
Mídia ótica e Fitas
48
MaríliaTechDay
|2010
Performance de Acesso
Banco de Dados 100% em Memória
Vantagem: Performance
Desvantagem: Custo
Crescimento do Volume de Dados
Quase impossível armazenar tudo em memória
49
MaríliaTechDay
|2010
Buffer Manager
Query
Buffer
Manager
Memória Disco
Query
Processor
Storage
50
MaríliaTechDay
|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
51
MaríliaTechDay
|2010
Fácil?
52
MaríliaTechDay
|2010
Agenda do Evento
Horário Título Palestrante Local
12:00 - 13:00 SQL Azure Database Diego Nogare Auditório 1
12:00 - 13:00
Introdução ao desenvolvimento de Sistemas
Conectados com WCF 4.0
Evilázaro Alves Auditório 2
13:00 - 14:00 Almoço
14:00 - 15:00 Exchange 2010 - Cozinhando com o correio Rob Ranches Auditório 1
14:00 - 15:00
Automatizando Processos no SQL Server com
Powershell e SQL Server Powershell Extensions
Laerte Junior Auditório 2
15:00 - 15:45 Intervalo e Expo Parceiros
15:45 - 16:45 SharePoint 2010 - O que mudou? Rodolfo Roim Auditório 1
15:45 - 16:45 Armazenamento de dados no SQL Server Fabricio Catae Auditório 2
16:45 - 17:00 Mudança de Sessão
17:00 - 18:00 Otimizando Performance no SQL Server Rodrigo Fernandes Auditório 1
17:00 - 18:00
Conhecendo o SQL Server 2008 Express - A edição
grátis do SQL Server
Nilton Pinheiro Auditório 2
18:00 Encerramento
53
MaríliaTechDay
|2010
Parceiros
LIVETEC INFORMÁTICA
54
MaríliaTechDay
|2010
Apoio:
55

Inside SQL Server: Como funciona um banco de dados?

Notas do Editor

  • #2 4/19/2016 4:43 PM
  • #3 4/19/2016 4:43 PM
  • #8 Mas, gostaria de compartilhar com o público de TI que Site de Busca não é um banco de dados. Afinal, o que seria um banco de dados?
  • #9 Pergunta: Quem já pensou em guardar essas informações em um arquivo XML?
  • #11 4/19/2016 4:43 PM
  • #14 Exemplo do SQL6.5 Exemplo do trabalho em Grupo
  • #15 SQL6.5 (1990)
  • #16 A aplicação pode escalar em relação ao número de servidores. Entretanto, o que ocorreria se o servidor de banco de dados, que é o repositório central, ficasse congestionado?
  • #22 World Trade Center Terremoto do Haiti Terremoto do Chile Caixa Economica Federal – Se cair, nunca mais vai existir a Mega Sena!
  • #30 O programa pode ser escrito através de uma linguagem imaginária usando a estrutura do slide. Em seguida: Mas vamos mudar o exemplo: o que aconteceria se mudarmos a idade para 50/60 anos? Vamos mudar também o número de amigos para 1000.
  • #31 O programa continua funcionando.
  • #32 Mas preste atenção no número de pessoas que tem mais de 1000 amigos. Pelo menos no Orkut, essas são minorias. Por outro lado, o número de pessoas com até 60 anos corresponde a maioria.
  • #33 Por que não começar a pesquisa, verificando se a pessoa tem mais de 1000 amigos e somente depois validar a idade? Isso é mais eficiente!
  • #35 Iniciamos com a linguagem SQL, que define QUAL a informação necessária.
  • #37 O próximo passo é fazer a compilação do Parse Tree, que poderia resultar em duas possibilidades. Os exemplos anteriores não foram a toas. O compilador inicia o processo de “Otimização” de acordo com análises sobre o próprio repositório de dados.
  • #54 4/19/2016 4:43 PM
  • #55 4/19/2016 4:43 PM