Академический Документы
Профессиональный Документы
Культура Документы
produto em uma Nota Fiscal. Ao ser consultada, é agregada com • Modelo Estrela (Star Schema): mais simples de planejar, nesse
uma função: soma, média, mínimo, máximo, etc.; modelo todas as dimensões relacionam-se diretamente com a
• Dimensão (dimension): uma lista independente que categoriza tabela Fato. Conceitualmente, suas tabelas de dimensões não
uma informação do Fato. Exemplo: uma dimensão de categoria são normalizadas e possuem descrições repetidas e, com isso, as
de um produto, uma dimensão de qual sexo o cliente pertence, tabelas de dimensão costumam armazenar mais informações que
uma dimensão que caracteriza o tipo de um animal, etc. Uma no modelo Snow Flake;
dimensão pode ser analisada tanto como coluna quanto níveis • Modelo Floco de Neve (Snow Flake): mais complexo de pla-
com subtotais; nejar, visando normalizar as tabelas de dimensões, o modelo
• Grão: unidade de medida de um indicador de desempenho li- Floco de Neve também é constituído por tabelas dimensionais
gada a tabela Fato. Exemplo: Uma Ordem de Compra foi realizada relacionadas a uma tabela Fato, porém possui algumas tabelas
por um Comprador (grão), para uma Unidade (grão), para um de dimensão que só se relacionam com elas mesmas. As tabelas
Departamento (grão), por um fornecedor (grão), etc.; de dimensões possuem tabelas de dimensão auxiliares que
• Atributo: campo descritivo referente a uma dimensão; normalizam as descrições das tabelas de dimensões principais
• Chave Substituta (Surrogate Key): chave única da tabela no e, com isso, ajudam a reduzir também o seu tamanho de ar-
DW, ou seja, o identificador exclusivo único da informação (Fato mazenamento. Nesse modelo uma dimensão muito comum é a
ou Dimensão) não existente em nenhuma outra fonte de dados de Tempo que possui, pelo menos, as dimensões auxiliares de
originaria do DW (salvo em casos de coincidência); Ano, Mês e Dia.
• Chave de Negócio (Business Key): identificador exclusivo pro-
veniente da origem da informação. Uma entidade de dimensão Para o exemplo de modelagem dimensional, utilizaremos o
normalmente possui uma ou mais BK. Modelo Estrela (Star) em cima das tabelas relacionais de vendas
demonstradas anteriormente. Veja esse modelo na Figura 2.
Modelos conceituais da modelagem dimensional Como optamos por utilizar o modelo estrela, iremos desnorma-
Hoje, a modelagem dimensional possui dois modelos conceituais lizar as tabelas de dimensões auxiliares (em azul) para dentro da
de arquitetura: tabela de dimensão (em verde) a que ela está vinculada. Apenas
Figura 2. Tabela Fato - Vendas (de Produtos). Cenário das tabelas envolvidas
Staging Area
Embora não obrigatório para criação
de um DW, consiste em um banco de
Figura 3. Modelo final
armazenamento temporário dos dados
antes de enviá-los para o data warehouse.
Nesse local, as informações são extraídas
dos sistemas transacionais (ERP, SCM,
CRM, etc.), transformadas e consequen-
temente carregadas para o DW. Esse
conceito é altamente dependente do ETL
e serve principalmente para não com-
prometer o desempenho dos servidores
(principalmente disco e memória) onde
estão os sistemas transacionais. Portan-
to, é recomendado que tanto o staging
area quanto o DW estejam em discos
diferentes dos sistemas transacionais e,
se possível, em servidores diferentes.
É comum que determinados assuntos no
Staging Area tenham ciclos diferentes,
ou seja, as informações provenientes
das vendas podem precisar de mais Figura 4. Exemplo de Staging Area
tempo para ser processadas do que as
informações de manufatura, quando, por
exemplo, estão em mais de um sistema de • Pré-cálculo de dados agregados; cialistas de TIC voltados apenas para
vendas. O staging area também pode ser • Carga imediata da base de dados ope- utilização dessas técnicas, comumente
considerado o local ideal para se aplicar racionais; encontrados pelas funções de Analistas
técnicas de Data Quality (Qualidade de • Armazenamento de processamentos de ETL ou Consultores de ETL. Um bom
Dados), uma vez que conceitualmente programados executados em diferentes planejamento e execução de técnicas ETL
o DW só recebe a informação, ou seja, a momentos. é indispensável para a criação de um data
informação é apenas adicionada e não warehouse de sucesso.
deve ser modificada. Veja um exemplo Introdução ao ETL A sigla ETL significa Extract, Transform
na Figura 4. Um termo muito comum quando se and Load, que traduzindo de uma maneira
Funções aplicadas no Staging Area: fala de criação de um data warehouse simples nos leva ao “processo de extração,
• Data Quality; é ETL. No mercado atual, temos espe- transformação e carga” dos dados.
No cenário atual das empresas, normalmente encontramos Integration Services. Defina o nome e o local para criar o projeto
mais de um sistema transacional de controle das atividades dos e clique no botão OK. No Control Flow, adicione um componente
departamentos, além de dezenas de arquivos de texto, planilhas do tipo Tarefa Fluxo de Dados (Data Flow Task) e renomeie para
eletrônicas, PDFs, entre outros utilizados como repositório de “Dimensão Clientes”. O resultado disso pode ser visto na Figura 5.
informações. Para utilizar todos esses dados para a criação de um Dê um duplo clique em Dimensão Clientes e crie um componente
data warehouse, normalmente é utilizado um sistema especialista Origem OLE DB (Other Sources) e renomeie para Origem Clientes.
de ELT, como o SQL Server Integration Services (SSIS), que será Em seguida, dê um duplo clique no Origem Clientes e clique no
utilizado em nossos exemplos. Outro sistema especialista em ETL botão New para adicionar um novo OLE DB connection manager e
muito conhecido é o Oracle Warehouse Builder. configure conforme sua origem de dados. Agora selecione a view
Para o exem plo a seguir, utilizaremos a tabela fato e as tabelas vDimClientes, adicione o componente Comando OLE DB, reno-
dimensões e extrairemos os dados das tabelas relacionais, ambas meie para Limpar DimClientes e arraste a setinha azul do Origem
detalhadas durante o artigo. Para isso, crie views (observe que Clientes para ele e dê um duplo clique no Limpar DimClientes e
essas views apontam para o banco de dados relacional) indicadas adicione a sua conexão OLE DB.
na Listagem 1. Na aba Component Properties, adicione o comando Truncate
Agora, abra o Microsoft Visual Studio, clique em New Project, Table DimClientes para limpar toda a tabela DimClientes após o
escolha o Template Business Intelligence e clique sobre o Projeto de carregamento full das informações da vDimClientes e adicione
nando a tabela DimClientes. Em seguida, Agora, sobre o Available Lookup Columns, sendo tratada na view vFatoVendas e ligue
clique em Columns e clique com o botão clique sobre a caixa de seleção do Clien- todas as dimensões com um componente
direito no Available Input Columns e em Edit teKey e clique em Ok (vide Figura 9). de Destino OLE DB com o nome de Fato
Mappings, selecionando os campos Cliente- Repita para as demais dimensões, me- Vendas, apontando para a tabela FatoVen-
BK para Input e Lookup Columns. nos a DimDataVenda, pois a mesma já está das. Ao ligar, selecione o Output do tipo
Saída de Correspondência de Pesquisa. Caso
você queira ocultar ou mudar a descrição
das setas, selecione a seta desejada e mude
a propriedade (F4) Path Annotation para
a opção desejada, no exemplo deixamos
como Never. Dê um duplo clique sobre o
Fato Vendas e mapeie conforme a Figura 10.
Aperte o F5 e observe o resultado.
Como pudemos notar, planejar e criar
um data warehouse com qualidade e go-
vernança é algo que exige muito esforço,
estudo e uma forte arquitetura, uma vez
que a modelagem dimensional envolve
conceitos não habituais pela maioria dos
profissionais de TIC. Além dos conceitos,
vimos também exemplos básicos e simples
de como criar um DW no modelo estrela
utilizando o SQL Server e o SSIS. Obvia-
mente, para manter a escalabilidade, a in-
tegridade e a performance deve-se utilizar
muitos outros recursos que não couberam
ser abordados nesse artigo.
manipulação ou mascaramento. O AV Server é essa caixa-preta a dor escondido na rede com praticamente todas as portas fechadas
prova de fraudes que guarda os registros de auditoria. Seus as- e uma excelente política de acesso. Tanto que pode receber esse
pectos de acessos são muito bem resolvidos e possui credibilidade apelido de caixa-preta que tudo guarda e onde nada se acessa por
por parte de auditores de TI em escala mundial. parte de implantadores de projetos de auditoria e DBA´s.
O AV Server possui uma estrutura de agentes que podem ser
O Audit Vault Server é um Software Appliance instalados nos servidores para coleta de registros de auditoria.
O primeiro pré-requisito no guia oficial de instalação do AV Os registros são gerados basicamente por sistemas operacionais
Server é de que qualquer pessoa ou usuário comum pode fazer a ou por bancos de dados de forma nativa. Os agentes conhecem
instalação. É a partir daí que entramos no conceito de o AV Server alguns formatos de auditoria, como as auditorias do MySQL e do
ser um software appliance. Não é necessário instalar pacotes de Sybase, permitindo então que estes sistemas sejam suportados.
requisitos para o AV Server. Ele é o próprio sistema operacional. A configuração do que deve ser auditado depende do banco de
A própria camada de clusterware, de file system, de banco de dados, dados e da sua tecnologia de auditoria. No caso do MySQL é de
de aplicação, tudo. uma forma, no Sybase de outra, no sistema operacional Windows,
Quem instala, apenas insere a mídia no servidor, digita uma para geração de eventos de auditoria podem haver uma série de
passphrase, informa o IP e pronto, está tudo pronto, conforme configurações, como em serviços do sistema. Ou seja, o AV Server é
Figura 1. Após esses pequenos passos, o produto é instalado au- tão somente o servidor remoto que recebe os registros de auditoria
tomaticamente. Um Oracle Linux com características específicas que são enviados pelo agente do servidor alvo.
é carregado como camada de sistema operacional, sem interação No caso de um banco de dados Oracle, as configurações para ha-
alguma. Ele sai varrendo e formatando os discos disponíveis e bilitar a auditoria seriam a ativação do parâmetro AUDIT_TRAIL
configurando as áreas sem questionar. Se instalar a mídia pelo (‘XML, EXTENDED’) e a especificação de alguma auditoria no
servidor errado, tudo será perdido. Não é uma formatação ami- banco de dados, como auditar todos os comandos executados no
gável como em um desktop. banco: audit all statements. O agente instalado poderá então acessar
A passphrase criada pelo usuário, que interagiu com o console os registros gerados pelo banco de dados em um diretório especí-
após o boot da mídia, é necessária apenas no primeiro acesso fico de auditoria para envio imediato ao AV Server. Conhecendo o
para definição das senhas do ambiente. Após isso, ela perde sua formato dos dados, o sistema vai armazenar de uma forma mais
validade. Toda a infraestrutura criada na instalação demora em segura que no próprio servidor de banco de dados, onde esses
ser executada, pois além do sistema operacional, as camadas de registros poderiam estar vulneráveis. Esse é o conceito básico de
clusterware, ASM e banco de dados Oracle são criadas. Por fim, um funcionamento do AV Server.
aplicativo web baseado em APEX é disponibilizado, finalizando Além do agente, os usuários também são componentes funda-
a instalação. A partir de então, o gerenciamento pode ser feito mentais em uma arquitetura de AV Server. Os papéis de acesso
totalmente remoto através de um navegador qualquer suportado. são os seguintes:
Esse é o conceito de software appliance no AV Server, utilizando a) Root: é o root do Linux instalado no servidor;
diversos outros produtos e gerando uma estrutura única e conso- b) Support: também é um usuário de sistema operacional liberado
lidada, do sistema operacional à aplicação. Uma característica im- para acesso SSH remoto, ou seja, é sempre necessário acessar com
portante da arquitetura de software appliance é que o gerenciamento ele para passar ao root. Ele é utilizado para operações sugeridas
deve ser realizado sempre baseado no ambiente consolidado, como pela equipe de suporte da Oracle;
ajustes de suporte e aplicação de patches. c) Administrador: é um usuário que mantém a estrutura do Audit
Vault, realiza a administração da ferramenta, implantação de agen-
Os componentes da caixa-preta tes, configura rede, etc. Não tem acesso aos dados de auditoria.
Na aviação a caixa-preta não interfere no trabalho dos equi- Comumente fica a cargo de um DBA;
pamentos, é um produto inviolável, absolutamente resistente a d) Auditor: é o usuário final da ferramenta que se beneficia dos
ataques e acidentes de forte impacto, e muitos não fazem ideia recursos de análise dos registros de auditoria, elabora relatórios,
de como o conteúdo está armazenado, exceto especialistas. Essas programa geração de alertas em casos de incidentes e tudo mais.
características descrevem muito bem o AV Server, que é um servi-
Um administrador pode ser um super ad-
ministrador, que possui acesso irrestrito na
administração do ambiente. No caso de ser um
administrador comum, pode ter acesso a determi-
nado alvo de auditoria, como, somente servidores
de homologação. Um auditor também possui
o mesmo conceito de poder ser super auditor.
É importante salientar aqui, que independente
Figura 1. Instalação do AV Server de ser super auditor ou super administrador,
Da mesma forma, pode ser realizada essa configuração para os Brasil/Brasília: GMT-3), bem como validar que o servidor pode
serviços de SSH e SNMP, como mostra a Figura 5. A recomendação sincronizar seu relógio com um servidor de tempo (protocolo
é de que fique habilitada somente a interface web para clientes NTP), como mostra a Figura 7. Até três servidores NTP podem
específicos de administração e auditoria e que, apenas quando ser especificados. Uma configuração inadequada pode distorcer
necessário seja habilitado o serviço SSH para uma eventual as informações de auditoria e gerar embaraços com auditores
manutenção. externos, bem como outros tipos de confusão em registros de
auditoria e alertas.
Essa arquitetura permite que futuras edições do Audit Vault de uma arquitetura de auditoria baseada no Oracle Audit Vault
possam suportar cada vez mais tipos de alvos. Server, como mostra a Figura 13.
Com um agente instalado e em pleno funcionamento, o adminis- No AV Server, podem ser criadas políticas de retenção que poste-
trador tem o papel de configurar alvos (Secured Target), conforme riormente são utilizadas pelo auditor em cada alvo. O administrador
Figura 11. Um mesmo servidor pode suportar diversos bancos de cria as políticas baseadas em um conceito de informação on-line,
dados, podendo ser cadastrados pelo administrador. Os dados de que estará disponível para filtro, sendo registros no banco de da-
conexão para alvos do tipo banco de dados Oracle são fornecidos dos do próprio software appliance e um período de arquivamento,
como em qualquer aplicação que deseja conectar no ambiente, ou seja, um arquivo morto, onde os registros são movimentados
como porta do listener e usuário. Caso o tipo de alvo fosse outro, do banco de dados para diretórios externos, via NFS, para outro
informações diferentes seriam solicitadas. servidor, podendo ser restaurados por demanda. Esse conceito
permite elaborar rotinas, por exemplo, de um ano on-line com dez
anos arquivados. Diversas políticas de retenção podem conviver,
sendo aplicadas para alvos distintos. Uma política adequada de
período on-line garante maior desempenho do ambiente.
Figura 13. Política de retenção com 180 dias online, sem arquivamento
Figura 15. Exemplo de definição do que deve ser auditado no banco de dados
Acompanhamento de privilégios
Com as modificações em sistemas e im-
plantação de novas aplicações, a tendência
comum é de que os privilégios em um
banco de dados sofram mudanças. Poder
comparar a situação de privilégios com o
passado é um ótimo recurso para auditores
especializados em bancos de dados Oracle.
Analisar a diferença entre o início e o final
do mês fornece uma relação completa das
modificações de privilégios, o que dá uma
Figura 17. Criando uma regra para geração de alerta visão apurada sobre as mudanças que
ameaçam o ambiente em termos de novas
vulnerabilidades (Figura 19).
O AV Server possui esse recurso, sendo
bem prático de ser utilizado. Basta gerar
um snapshot da situação atual, fornecendo
um nome para que fique armazenado. Es-
sas fotos de status podem ser comparadas
entre si, gerando um relatório detalhado
de privilégios adicionados ou removidos
em um período. Por exemplo, um snapshot
do mês de Março pode ser comparado com
um snapshot gerado em Janeiro, possibili-
tando ser verificado pelo auditor que um
usuário no Oracle Database adquiriu, nesse
meio tempo, privilégio de DBA. Esse item
pode ser trabalhado então pelo auditor
Figura 18. Definindo um relatório para envio por e-mail diariamente dentro da organização, no sentido de
avaliar se foi algo temporário, para teste,
sem aprovação, ou se realmente foi uma
mudança aprovada.
E
stimar um subsistema de I/O é parte essencial na as métricas e SLAs do ambiente. Neste artigo, veremos como o IOPS
construção da infraestrutura do desenvolvimen- pode nos ajudar e como podemos mensurá-lo. Através de exemplos,
to de uma aplicação. Segundo as boas práticas conheceremos as sintaxes, configurações, pré-requisitos e analisare-
de mercado, recomenda-se que antes da implantação, mos os resultados das ferramentas Oracle CALIBRATE_IO e Oracle Orion.
desenvolvimento e liberação de uma funcionalidade O conteúdo apresentado neste artigo auxiliará administradores de
ou até mesmo de um sistema para produção, todos os banco de dados a mensurar o throughput de dispositivos de armaze-
elementos da arquitetura sejam analisados para garantir namento. Esse conhecimento será útil em situações que demandam a
que os acordos de SLAs sejam satisfatórios. implantação de um novo sistema, atualização ou migração de platafor-
O SLA - Service Level Agreement, ou, ANS – Acordo de ma e até mesmo contribuir na análise de problemas de desempenho.
Nível de Serviço, é muito importante para os contratos
de prestação de serviços em tecnologia. Trata-se de
uma especificação dos serviços que o contratante pode restringem-se à IOPS (Input/Output per second) dos dispositivos
esperar do contratado baseado nos resultados. Temos de armazenamento.
como exemplo os prazos contratuais, termos de compro- No mercado existem várias ferramentas para tais tarefas, como
misso, metas de nível e serviço, suporte técnico, entre Iometer, Iozone, SLOB, entre outras. Apesar de serem boas, a
outros. Através do SLM – Service Level Management Oracle já disponibiliza algumas, até mais adequadas ao analisar-
– os SLAs são gerenciados, e para que tal atividade seja mos o I/O em conjunto com o banco de dados, com a vantagem
eficaz, é necessário obter indicadores que possibilitem da facilidade/mobilidade. A partir da versão 11g, temos como
a transparência entre as empresas e seus clientes. Al- opções o Oracle RAT (ver BOX 1) e uma outra novidade, a função
guns exemplos de indicadores são: de disponibilidade, CALIBRATE_IO, tema principal do artigo.
de custos, de incidências de falhas, tempo de resposta, Presente no package DBMS_RESOURCE_MANAGER, podemos
documentações, backlog, entre outros. de maneira simples realizar uma análise confiável. Tal função
Nos ambientes, independente do grau de complexi- permite aos usuários analisar o desempenho dos dispositivos de
dade, faz-se necessário o entendimento da demanda armazenamento de dados e avaliar se a possível degradação na
por operações de leitura e escrita. De certo, essa nunca performance resulta do banco de dados ou storage.
é estática e sofre constantes variações. Assistir a essas Esse package auxilia administradores a controlar os recursos de
mudanças de maneira pró ativa, entendê-las e principal- hardware, pois em ambientes com um número considerado de
mente conhecer os picos de I/O (Input/Ouput), é garantir usuários simultâneos, diferentes cargas e rotinas são processadas
um bom desempenho como um todo. com níveis de prioridade variados.
Uma ação fundamental e até desafiadora para admi- Através do Resource Manager, você é capaz de configurar ses-
nistradores de banco de dados é justamente mensurar sões de usuários em grupos baseados em seus atributos e alocar
a capacidade de throughput (taxa de transferência) do recursos de maneira otimizada quanto a utilização de hardware
ambiente e confrontá-lo com comportamentos e reações no ambiente das aplicações. Algumas possibilidades ao utilizá-la
dos sistemas, pois a performance de muitas aplicações são: limitar a utilização de CPU, limitar graus de paralelismo de
Database Replay: fornece aos DBAs a capacidade de capturar e simular com precisão e de forma
O RAID é classificado em níveis e a implementação desses corresponde às necessidades do
realista as cargas de trabalho de produção em ambientes de teste. Com o Database Replay, você pode
ambiente. Alguns exemplos são: RAID 0 (não há redundância; dados distribuídos; muito utilizado
testar upgrades das bases de dados, aplicação de patches, alterações de parâmetros, alterações em
para performance;), RAID 1 (utilizado para redundância/espelhamento), RAID 5 (mínimo três
schemas, conversão de single instance para Oracle RAC (alta disponibilidade), discos, rede, alterações
discos; espelhamento/paridade). RAID 10 ou RAID 1+0 (mínimo quatro discos; combinação de
de hardware, entre várias outras, tudo isso com baixo custo e rápida construção dos testes.
redundância e performance).
SQL Performance Analyzer: pode prevenir e evitar problemas na execução de instruções SQL causados
por mudanças no ambiente, fornecendo uma visão do impacto dessas alterações nos planos de soluções faz parte do dia a dia de muitos administradores de banco
execução e nas estatísticas. O SPA identifica divergências no desempenho para cada instrução SQL de dados. Além desse relatório, podemos identificar o IOPS da
gerando um relatório de impacto quanto ao desempenho nas cargas de trabalho. Para as instruções base de dados através do statspack (para aqueles que não possuem
ineficientes, ou seja, aquelas que tiveram alterações negativas em seu plano de execução, o SPA o licenciamento do Diagnostics Pack) e instruções SQL.
também faz recomendações de tuning. Exemplificando com o relatório AWR, na sessão Instance Activity
Stats, você pode encontrar informações de IOPS conforme indicado
na Listagem 1.
Porque IOPS?
Indicadores de desempenho são importantes para o monitora- Listagem 1. Trecho relatório AWR – Instance Activity Stats
mento e funcionamento adequado da infraestrutura. Uma dessas
01 IOPS = “physical read total I/O requests” + “physical write total I/O requests”
métricas, o IOPS, possui grande importância em TI, pois tem relação 02 MBytes/s = “physical read total bytes” + “physical write total bytes”
direta com o desempenho das aplicações (ver BOX 2). Além disso, 03 physical read total IO requests = 124,594.000
04 physical write total IO requests = 13,313.041
auxilia gestores e colaboradores a avaliar o comportamento atual e a
05 physical read total bytes = 19,285,444.47
tomar melhores decisões durante a implantação de novos sistemas. 06 physical write total bytes = 2,904,587.09
IOPS é a sigla para Input/Output per Second, ou seja, representa as
operações de entrada e saída por segundo, aplicada sobre disposi-
tivos de armazenamento. Sua principal importância é evidenciar A linha 01 representa o somatório das requisições de leitura e
a capacidade que um dispositivo possui em realizar operações de escrita. A linha 02 representa o somatório em Mbytes/s resultante
leitura e escrita, o que favorece a avaliação do funcionamento dos das operações de leitura e escrita. Em seguida, o total das requisi-
sistemas antes mesmo da implementação deles. ções de leitura e escrita é representado, respectivamente. Por fim,
Essa métrica também pode ser utilizada para mensurar a quan- tem-se o total de dados em Mbytes/s transmitidos/utilizados nas
tidade de discos necessários para o funcionamento saudável do operações de leitura e escrita, respectivamente. Com os dados,
sistema com base na relação de usuários previstos. Existem hoje podemos concluir que no período selecionado, obtemos:
ferramentas e sites que calculam o número de IOPS e discos
exigidos por um sistema, levando em conta até mesmo o uso de IOPS ~ 137.907
soluções como RAID (ver BOX 3). Mbytes/s ~ 21
Calculando IOPS utilizando o banco de dados Oracle Essas informações podem ser utilizadas após alterações de har-
Como muitos conhecem, relatórios AWR são úteis na identifi- dware, alterações na aplicação e até mesmo para identificar garga-
cação de problemas, e passar horas identificando-os e propondo los no ambiente, proporcionando assim informações conclusivas.
Caso não possua o licenciamento adequado para a utilização do denominado disk group, o que nada mais é do que um conjunto
relatório mencionado, temos as opções do statspack e SQL. Como de discos gerenciados como uma única unidade. Os dados são
já visualizamos um exemplo baseado em relatório, observe agora distribuídos uniformemente e sua performance é comparada com
a Listagem 2. raw devices.
O Oracle ASM também trabalha com redundâncias e possui três
Listagem 2. Seleção V$SYSMETRIC_SUMMARY níveis de configuração:
• External: não utiliza espelhamento, sendo recomendada a con-
1. SELECT
2. CASE figuração de RAIDs;
3. WHEN metric_name = ‘Physical Read Total Bytes Per Sec’ THEN ‘PR_BPS’ • Normal: os dados possuem uma cópia espelhada fornecendo
4. WHEN metric_name = ‘Physical Read Total IO Requests Per Sec’ THEN ‘PR_IOPS’ uma proteção contra, pelo menos, uma falha de disco;
5. WHEN metric_name = ‘Physical Write Total Bytes Per Sec’ THEN ‘PW_BPS’
6. WHEN metric_name = ‘Physical Write Total IO Requests Per Sec’ THEN ‘PW_IOPS’ • High: os dados possuem duas cópias espelhadas, ou seja, os extents
7. END METRIC, possuem uma disponibilidade primária e outras duas secundárias,
8. ROUND(AVERAGE,2) as AVERAGE
fornecendo uma proteção de pelo menos duas falhas de disco.
9. --MAXVAL,
10. --MINVAL,
11. --STANDARD_DEVIATION Enquanto o ASM gerencia a distribuição dos dados nos datafiles,
12. FROM V$SYSMETRIC_SUMMARY
a procedure CALIBRATE_IO utiliza-os para acessar os discos e
13. WHERE metric_name IN
14. ( produz resultados muito parecidos com a performance real da
15. ‘Physical Read Total Bytes Per Sec’, base, pois utiliza um código próprio. Através de cargas intensivas
16. ‘Physical Write Total Bytes Per Sec’,
17. ‘Physical Write Total IO Requests Per Sec’,
de leituras nos arquivos de dados, a primeira fase utilizando o
18. ‘Physical Read Total IO Requests Per Sec’ valor do parâmetro db_block_size, e uma segunda utilizando blocos
19. ) de 1Mb, é determinada a quantidade máxima de operações de
20. ORDER BY metric_name;
leitura e escrita por segundo e a quantidade de megabytes que
os discos podem suportar. Para Oracle RACs, a carga é gerada
Da linha 02 a 07 temos a formatação das métricas para a seleção. simultaneamente de todas as instâncias.
Da linha 08 a 11 temos colunas da seleção. As colunas que estão
comentadas referem-se aos valores observados no intervalo de 60 Sintaxe e parâmetros
minutos. Na linha 12, a view V$SYSMETRIC_SUMMARY exibe um Devido à sobrecarga aplicada no ambiente, a procedure CALIBRA-
resumo de todos os valores das métricas de sistema dos últimos TE_IO (ler BOX 4) deve ser utilizada quando o banco de dados
60 minutos. Já a 13 exibe o filtro das métricas. Por fim, mostra a estiver com pouca atividade ou nenhuma, mas principalmente
ordenação através do nome das métricas. deve ser executada fora dos horários de pico, minimizando assim o
Uma desvantagem do não licenciamento do Diagnostic Pack é impacto de I/O na aplicação. Para executá-la e avaliar a capacidade
que essas informações se limitam aos últimos 60 minutos, ou seja, de I/O utilizada pelo banco de dados, utilize o exemplo conforme
não temos acesso a um histórico abrangente. a Listagem 3 e a Tabela 1.
Oracle Orion- • Apenas realize um teste por vez em bases que utilizem o mesmo storage, caso contrário, o teste
Após a explanação dos termos mencionados no início do artigo, falhará;
daremos sequência a sua parte principal. Nesta sessão veremos • Para Oracle RACs, a carga de trabalho é simultaneamente gerada de todas as instâncias. Garanta
como a função CALIBRATE_IO funciona, como é composta sua que todas elas estejam em modo open;
sintaxe, quais configurações utilizar e, principalmente, como • O parâmetro disks é opcional, no entanto é aconselhável configurá-lo para que o teste seja mais
entender seus resultados. Para os exemplos a seguir, utilizaremos rápido e mais assertivo.
dois casos de teste: um com dois discos configurados em ASM
(Automatic Storage Management) e outro com quatro discos também Listagem 3. DBMS_RESOURCE_MANAGER.CALIBRATE_IO
em ASM. Após realizá-los, será apresentada a ferramenta Oracle 01 SET SERVEROUTPUT ON
Orion, a qual possui finalidade semelhante à função exibida nos 02 DECLARE
testes, com a vantagem de não necessitarmos de um banco de 03 lat INTEGER;
04 iops INTEGER;
dados Oracle instalado e configurado. 05 mbps INTEGER;
Para entendermos a procedure em questão, vamos primeiramen- 06 BEGIN
07 --DBMS_RESOURCE_MANAGER.CALIBRATE_IO
te entender como os discos são gerenciados pelo ASM. O ASM (<disks>, <max_latency>, max_iops, max_mbps, actual_lat);
é um gerenciador de volume e sistema de arquivos para banco 08 DBMS_RESOURCE_MANAGER.CALIBRATE_IO (2, 10, iops, mbps, lat);
09 DBMS_OUTPUT.PUT_LINE (‘max_iops = ‘ || iops);
de dados Oracle que pode ser utilizado tanto em single-instance 10 DBMS_OUTPUT.PUT_LINE (‘latency = ‘ || lat);
quanto em Oracle RACs. Para armazenar os arquivos de dados 11 DBMS_OUTPUT.PUT_LINE (‘max_mbps = ‘ || mbps);
do banco (conhecidos como datafiles), o ASM utiliza um conceito 12 end;
13 /
Execução e resultados do segundo teste madamente seis minutos, obtendo um à uma configuração adequada, já que hou-
Para o segundo teste, utilizaremos o throughput máximo de 46 Mbytes/s, 79 ve uma redução de IOPS para 79.
mesmo sistema exceto quanto ao número requisições de I/O por segundo e latência
de discos, no qual foram adicionados mais de 11 milissegundos, tempo 10% acima Comparações
dois ao ASM, totalizando quatro, como do tolerável. Observando os resultados, já compreen-
mostram as Figuras 4 e 5. Podemos entender que, ao duplicarmos demos que uma configuração com quatro
Com base nas informações obtidas, os discos, nenhuma melhoria foi encon- discos não é a ideal para o sistema em
podemos entender que nesse cenário trada. Assim, a utilização de quatro discos questão e que a utilização de dois discos
o tempo do teste resultou em aproxi- para o sistema em questão não corresponde com latência de 10 milissegundos repre-
senta o melhor cenário.
A fim de estabelecer um padrão de
comportamento e melhor entendermos
as configurações, foram realizados outros
testes. Nesses testes, a latência foi duplica-
Figura 3. Resultados da primeira execução
da para 20 e 40. Desse modo, os testes totais
apresentados no artigo contemplam casos
com dois e quatro discos e latências de 10,
20 e 40, conforme as Tabelas 2 e 3.
Analisando os dados obtidos, podemos
concluir que a média de throughput obtido
para o sistema, seja configurado com dois
ou quatro discos, foi de 48,5 Mbps/s. Agora
vejamos as relações e comportamento
entre as requisições de I/O e latências
conforme evidenciado nas Figuras 6 e 7.
Com base nos resultados obtidos, podemos
entender que o acréscimo na tolerância da
latência tem relação direta com o aumento
das requisições de I/O.
É importante lembrar que as latências
testadas foram utilizadas apenas para
Figura 4. Segunda execução CALIBRATE_IO evidenciar a relação de progressão das
requisições e que bases de dados que su-
portam sistemas OLTP (Online Transaction
Processing) devem manter esse tempo abai-
xo de 10 milissegundos como boa prática
Figura 5. Resultados da segunda execução e métrica de desempenho.
a. teste1.lun:
1. /dev/oracleasm/disks/DISK1 -- > linha 1
2. /dev/oracleasm/disks/DISK2 -- > linha 2
3. … -- > linha n
B
anco de dados, por definição, é um conjunto de Fique por dentro
arquivos relacionados entre si, com diferentes
registros sobre diferentes assuntos. Porém, hoje O artigo traz informações sobre a arquitetura do Microsoft SQL Server
em dia, os bancos de dados são muito mais que isso. Database Engine. Ele discute, em linhas gerais, o seu funcionamento
No momento em que estamos, num mundo cada vez em duas etapas: fluxo de processo e de funcionamento. Também
mais globalizado, ele se tornou vital para uma empresa conheceremos uma das opções na criação de índices, a FILL FACTOR.
funcionar e prosperar. A necessidade por informações o Este artigo é importante no desenvolvimento de aplicações que irão
tempo todo se tornou habitual e quando algo ou alguém utilizar a base de dados SQL Server, no entendimento de problemas
não consegue fornecer esse tipo de serviço, ele acaba de performance e na criação de cenários de alta disponibilidade.
ficando obsoleto e perdendo espaço. Auxilia também projetistas nas análises de funcionamento, buscando
Dentro do universo de banco de dados, temos inú- maior utilização de recursos do próprio SQL Server Database Engine
meras opções de Sistemas Gerenciadores de Bancos de a fim de trazer mais estabilidade, performance e robustez do software
Dados (SGBD) para atender diferentes casos e cenários, desenvolvido ou em desenvolvimento.
dos quais alguns se destacam no mercado. Neste artigo
traremos informações e detalhes sobre o Microsoft SQL
Server, mais precisamente sobre o módulo de Database A primeira etapa fornece uma visão geral do funcionamento do
Engine (funcionamento do banco de dados). O SQL Ser- SQL Server, estando muitas vezes focada em parametrizações para
ver foi criado em 1988 e vem evoluindo e desenvolvendo um melhor funcionamento do software, além de definir locais de
novas soluções para usuários finais, desenvolvedores e armazenamento dos diferentes arquivos (dados, log, binários). A
administradores. Hoje é um dos líderes de mercado e segunda etapa provê detalhes mais ricos de como o SQL Server
possui grande importância no cenário de banco de da- opera em uma camada transparente para usuários finais, além
dos, facilitado pela sua grande integração com demais de ser importantíssimo aos desenvolvedores, administradores e
softwares Microsoft e de terceiros. Desde sua criação projetistas de software. Saber como os arquivos de dados, memó-
em 1988, já foram desenvolvidas 16 versões sólidas, sem ria, índices, arquivos de log e de paginação funcionam, auxilia na
contar algumas derivações com ferramentas e opções estruturação à nível de hardware, separação de discos, reservas
extras. A versão mais recente é o SQL Server 2016. de espaço e memória, identificação de lentidão de sistema, entre
Podemos entender sua arquitetura considerando duas outras atividades.
etapas: a primeira seria uma visão de fluxo e a segunda O entendimento das duas etapas por completo culmina com
de funcionamento. Dentro dessas etapas temos mais a visão geral da arquitetura do SQL Server Database Engine e
subdivisões, e para o fluxo de processo temos: potencializa-nos a administrar e desenvolver melhor soluções
• Mecânica de fluxo relacional; que utilizam como base esse software. Obter o conhecimento da
• Mecânica de armazenamento; arquitetura de um software de apoio, como acaba sendo os sof-
• SQL Server SO. twares de banco de dados, é importantíssimo para as aplicações
extraírem seu máximo potencial. Um banco de dados bem confi-
Já para o fluxo de funcionamento temos: gurado acaba eliminando diversos problemas que seus aplicativos
• Arquitetura de log; podem estar passando.
• Arquitetura de dados;
• Arquitetura de paginação e extensão; Etapa de Fluxo de Processo
• Arquitetura de índices; Essa etapa compreende três itens: SQL OS, mecânica de fluxo e
• Arquitetura de memória. mecânica de armazenamento.
Eles são compostos por blocos da etapa de funcionamento, que realiza alterações no banco de dados, o fluxo é direcionado para
abordaremos na próxima seção. o buffer manager. Porém, se for alguma operação de insert, update,
delete, os quais realizam alterações no banco de dados (comandos
SQL Server OS (Sistema Operacional SQL Server) de escrita/alteração/remoção de dados), o comando é direcionado
O SQL Server OS tem como objetivo fazer a comunicação entre ao gerente de transação (Transaction Manager).
o ambiente em que a Database Engine está instalada e o próprio
banco de dados, sendo responsável por interpretar comandos em
nível de sistema operacional, rede e processamento.
Uma das funções que ele desempenha é a reserva de memória
para uso exclusivo do banco de dados, controle do nível de pa-
ralelismo e sua execução, mantendo sempre o banco de dados
íntegro e trazendo o resultado esperado pelo usuário final.
Além de controle de I/O (leitura e escrita), ele também realiza
agendamentos de tarefas, controle de locks e sincronização
com demais serviços do próprio SQL Server ou que possuem
integração com o mesmo.
Figura 1. Imagem demonstrativa da mecânica de fluxo. Fonte: Microsoft
Mecânica de Fluxo
Mecânica de fluxo é por onde começa o processo de execução O gerente de transação (Transaction Manager) realiza, conforme
do comando informado pelo usuário. É nesta etapa que ocorre o próprio nome diz, o controle de transações. Nessa etapa ele
a comunicação com o client (software utilizado para realizar a trabalha juntamente do gerenciador de lock (Lock Manager), que
comunicação com o banco de dados). O banco de dados recebe a gerencia os locks do banco de dados, e o gerenciador de log (Log
instrução SQL do usuário no bloco CMD PARSE (analisador de Manager) a fim de manter as propriedades ACID (Atomicidade,
comandos). Consistência, Isolamento e Durabilidade) do banco de dados, garan-
Nesta etapa do fluxo, primeiramente há uma verificação de sin- tindo a integridade das informações. Realizada a gravação dos
taxe e collation (conjunto de caracteres aceito pelo banco de dados comandos necessários no log de transação (Transaction Log) e,
que é configurado no momento de instalação do software). Após após os processos serem finalizados, repassa-os ao arquivo de
a validação ter ocorrido com sucesso, é realizado um segundo dados (data file).
processo, o qual desenvolve uma sequência de etapas a serem O log de transação (Transaction Log) é um arquivo de log que
seguidas, similares a uma árvore de execução. Apenas após essas possui um identificador único e incremental, chamado LSN (Log
duas etapas do CMD PARSE é que o fluxo segue até o próximo Sequence Numbers/ Números de sequência de log). Após a transação ser
bloco, o otimizador (optimizer). gravada e iniciada no arquivo de log, um lock é criado, evitando
O otimizador observa a estrutura gerada pelo CMD PARSE e que outras operações acessem esses dados que estão sendo alte-
realiza otimizações a fim de trazer o resultado da maneira mais rados. O lock permanece até que a transação seja finalizada e as
rápida possível, utilizando índices e estatísticas da tabela como alterações sejam salvas no data file. Este é o arquivo que contém
base. E, caso a consulta já tenha sido executada anteriormente, o as informações e dados do seu banco de dados.
mesmo economiza tempo com estes cálculos e reutiliza o plano Com a transação finalizada, armazenada nos arquivos de log e
gerado previamente. Com o plano de execução montado e otimi- dados, o fluxo volto ao bloco métodos de acesso, o qual repassa
zado, o processo é repassado ao responsável pela sua execução os dados da transação SQL ao buffer manager. Este, por sua vez,
(query executor). guarda informações como transação executada, dados alterados,
O responsável pela execução da consulta é quem de fato planos de execução criados, otimizações realizadas e inclusive
executa as tarefas solicitadas pelo usuário. Ele executa o plano o resultado das ações. Isso fica salvo em memória até que não
montado pelo bloco otimizador e com os resultados em mãos, haja mais espaço disponível, havendo então o descarte de dados
envia-os ao usuário através da comunicação estabelecida pelo mais antigos e substituição por dados novos gerados pela última
client no início do processo. A Figura 1 demonstra claramente transação.
essa mecânica de fluxo. Na Figura 2 temos uma visão geral da etapa de fluxo de processo.
Podemos notar claramente na parte superior a mecânica de fluxo
Mecânica de Armazenamento abordada e na inferior a mecânica de armazenamento.
A mecânica de armazenamento começa a aparecer no momento
em que o fluxo chega ao bloco executador (Query Executor). Nesta Etapa de funcionamento
etapa há uma comunicação com a etapa de método de acesso. É ele Como informado previamente, nesta etapa temos uma subdivi-
quem controla o tipo de acesso requisitado pela instrução. Caso a são de cinco itens, a qual provê um entendimento dos diferentes
consulta seja um select (comando de leitura de dados), o qual não processos seguidos internamente no SQL Server:
• Texto/Imagem: tipos de dados de objeto grande (text, ntext, Um buffer é uma página de 8 kb da memória, mesmo tamanho
image, nvarchar(max), varchar(max), varbinary(max) e xml). Colunas de uma página de dados ou de índice como mencionado na ar-
de comprimento variável quando a linha de dados excede 8 KB: quitetura de páginas e extensões. Portanto, o cache do buffer é
varchar, nvarchar, varbinary e sql_variant; dividido em páginas de 8 kb. O gerenciador de buffer gerencia
• Global Allocation Map, Shared Global Allocation Map: informações as funções lendo páginas de dados ou de índice dos arquivos do
sobre alocação de extensões; disco de banco de dados no cache do buffer e gravando páginas
• Page Free Space: informações sobre alocação de página e espaço modificadas de volta no disco. Uma página permanece no cache
livre disponível em páginas; do buffer até que o gerenciador de buffer precise da área para ler
• Index Allocation Map: informações sobre extensões usadas por mais dados. Os dados serão gravados no disco apenas se forem
uma tabela ou índice por unidade de alocação; modificados. Os dados podem ser modificados no cache do buffer
• Bulk Changed Map: informações sobre extensões modificadas várias vezes antes de serem gravados no disco.
pelas operações em massa desde a última instrução BACKUP Como o gerenciador de buffer usa a maior parte da memória no
LOG por unidade de alocação; processo do SQL Server, ele coopera com o gerenciador de memó-
• Differential Changed Map: informações sobre extensões modifica- ria para permitir que outros componentes usem seus buffers. O
das desde a última instrução BACKUP DATABASE por unidade gerenciador de buffer interage principalmente com os seguintes
de alocação. componentes:
• Gerenciador de recurso para controlar o uso de memória global
Extensões e, em plataformas de 32 bits, controlar o uso de espaço de endereço;
Extensões são coleções das páginas, no caso do SQL Server • Gerenciador de banco de dados e SQLOS (SQL Server Sistema
limitado a oito páginas por extensão, assim limitando a 64 kb de Operacional) para operações de E/S de arquivo de nível baixo;
dados contínuos. A fim de manter as extensões eficientes, foram • Gerenciador de log para log write-ahead.
desenvolvida duas políticas de extensões:
• Extensão mista: páginas compartilhadas por até oito objetos Sendo ‘log write-ahead’ um mecanismo do SQL Server que ga-
diferentes (uma página por objeto), utilizado em objetos recém- rante que nenhuma modificação de dados seja gravada no disco
-criados e/ou de baixo uso; antes de o registro de log associado ser gravado no disco. Isso
• Extensão uniforme: páginas que pertencem a um único objeto, mantém as propriedades ACID de uma transação.
sendo utilizado em objetos grandes e de muito uso, obtendo como
resultado mais performance. Arquitetura de índices
Um índice é uma estrutura de pesquisa criada em uma tabela
Arquitetura de Memória para otimizar, classificar e melhorar o desempenho de uma con-
Por natureza, o SQL Server utiliza e libera memória dinami- sulta. Índices são criados em uma coluna ou colunas particulares
camente conforme necessário. Porém, existem parâmetros para e armazenam os valores de dados dessas colunas em ordem. No
tornar tais configurações fixas, os quais são recomendados em SQL Server, projetar, gerenciar e manter índices eficientes são sem
ambientes mais críticos. sombra de dúvida a maneira mais eficaz de se consultar dados
Normalmente, se tratando de banco de dados, temos por regra armazenados e garantir o máximo desempenho. Os índices são
que: quanto mais memória melhor. Quanto mais informações projetados para facilitar a busca da informação em um grande
puderem ser armazenadas em memória, maior será a velocidade volume de dados usando a menor quantidade de recursos de
de retorno. Entretanto, há limitações que devemos respeitar. Em leitura. O índice correto, criado para a consulta correta, pode
ambientes de 32 bits, o máximo de memória que o SQL Server reduzir o tempo de execução da consulta de horas para segundos.
suporta seriam aproximadamente 4GB e em ambientes 64 bits Um banco de dados não necessariamente precisa ter índices para
ficamos limitados de 7 a 8 TB de memória (dependendo da ar- obter os dados, uma tabela pode ser varrida até que se encontrem
quitetura do sistema). os dados necessários, contudo, quanto mais dados há na tabela,
Uma das principais metas de design de todo o software de maior será o tempo de recuperação desses dados.
banco de dados é minimizar acesso ao disco, visto que este é o Para que a consulta aos dados de uma tabela atinja uma perfor-
maior gargalo em nível de hardware. O SQL Server cria um pool mance satisfatória, devemos primeiramente elaborar um projeto
de buffers na memória para manter o máximo de dados nela. de índices. Os índices podem ser adicionados ou retirados de
Grande parte do código do SQL Server é dedicado a minimizar uma tabela quando necessário sem comprometer o esquema do
o número de leituras e gravações físicas entre o disco e o pool de banco de dados, uma vez que não fazem parte do projeto lógico
buffers, tentando encontrar um equilíbrio entre os dois objetivos: da tabela. Mas cuidado, o excesso de índices pode ser pior do que
• Evitar que o pool de buffers consuma toda memória do sistema, uma quantidade pequena de índices na tabela.
afetando a performance; Imagine um livro onde você precisa encontrar um determinado
• Minimizar a E/S física aos arquivos, maximizando o tamanho assunto, você poderá chegar ao seu objetivo passando página
do pool de buffers. por página até encontrar o assunto ou poderá consultar o índice
basta pegar 8.060 bytes e dividir pelo valor da chave do índice diário a que esse valor se refere. No nível intermediário inicia-se
determinado pelo seu tipo de dados. novamente a busca até encontrar o valor e, novamente através
Se for construído um índice em uma coluna “datetime”, cada do ponteiro, inicia a busca no nível folha corresponde àquele
linha terá 8 bytes de armazenamento no índice. Se uma tabela valor. No nível folha inicia-se novamente a busca até encontrar
contém 504 linhas de dados, serão necessários 4032 bytes de o valor desejado e então os dados são localizados e retornados.
armazenamento. Sendo assim, todos os seus dados caberiam em A seguir falaremos de duas estruturas de índices que podem
uma única página de dados e seu índice teria apenas uma página ser usadas.
representando então os níveis raiz e folha, então você poderia
armazenar até 1.007 linhas utilizando a mesma página. Clustered
Nessa estrutura a tabela é ordenada fisicamente. Podemos dizer
que o índice clustered ou índice agrupado é a própria tabela, pois
através dele podemos recuperar todos os dados da tabela, com isso
o SQL Server precisa apenas de uma operação para percorrer e
encontrar os dados. Quando um índice cluster é criado, os dados
da tabela são o nível folha. No momento em que o índice cluster
é criado, os dados da tabela são copiados e ordenados pela chave
de cluster. Pode existir apenas um índice clustered por tabela,
uma vez que as linhas de dados só podem ser ordenadas de uma
maneira. Geralmente ele é criado em uma coluna designada como
PRIMARY KEY ou chave primária.
As páginas de dados desse índice se encontram no nível folha.
Ele deve sempre ser criado antes dos índices nonclustered já que
podem alterar a ordem física das linhas de dados. Isso evitará a
reconstrução dos índices nonclustered.
Figura 3. Página de dados
NonClustered
Nessa estrutura, os dados são ordenados logicamente: índices
nonclustered ou índices não agrupados possuem os dados defi-
nidos pelo índice, os dados definidos pelo comando INCLUDE
juntamente com um “ponteiro” para a linha de dados. Se a página
de dados estiver em uma tabela com índice clustered, esse “pontei-
ro” será a chave do índice cluster, caso contrário se ela estiver em
uma heap (BOX 1), será um apontador de linha. Nessa estrutura,
quando o SQL Server percorre o índice até o nível folha, mais uma
operação é necessária para localizar os dados. Podem existir até
Figura 4. Estrutura B-tree 1.000 índices nonclustered por tabela, mas vale lembrar que a cada
inclusão, alteração ou exclusão de dados, esse índice precisa ser
reconstruído, portanto use com moderação.
Porém, ao armazenar a 1.008ª linha, os seus dados não mais
caberiam em uma única página e o SQL Server alocaria mais duas BOX 1. Heap (pilha)
páginas para o índice em um processo conhecido no SQL Server
Quando uma linha de dados de uma tabela é armazenada sem uma determinada ordem, essa
como “Page split” ou divisão de página.
situação é conhecida como heap (pilha). Uma heap é composta de múltiplas páginas e cada página
Uma das páginas alocadas assume a função de raiz e empurra
contém múltiplas linhas de dados. Toda tabela sem um índice clustered é, portanto, uma heap.
a antiga página para o nível folha e divide a metade dos dados
com a outra página alocada. O próximo passo será preencher a
nova página raiz com os dados da primeira entrada das duas Page Split
outras páginas. Com isso, seu índice agora tem uma página raiz Uma page split ou divisão de página ocorre quando o SQL Ser-
e duas páginas no nível folha. Nesse caso não foi necessário um ver identifica que uma página de dados está cheia e não há mais
nível intermediário, pois o nível raiz pode conter todos os dados lugar para alocar uma nova linha de dados, então ele cria uma
do início das páginas no nível folha. nova página de dados e divide os dados da página cheia pela
Para obter um dado através da busca na B-tree, o SQL Server metade, deixando 50% na página atual e os outros 50% na nova
inicia sua busca pelo nó raiz, verificando onde o valor passado página. Essa nova página não necessariamente estará próxima
se encontra e através do ponteiro inicia a busca no nível interme- da antiga, mas o SQL Server mantém uma ligação entre elas para
defini-lo no nível do servidor. O fator de preenchimento também Listagem 1. Criando um índice com fator de preenchimento informado
não se aplica quando as novas páginas são inseridas no final do CREATE NONCLUSTERED INDEX [Index Name] ON [dbo].[Table Name]
índice, por exemplo, um campo com um valor identity. Assim (
como também não se aplica em páginas LOB (Large Object) que [Column Name] ASC
)WITH ( DROP_EXISTING = ON, FILLFACTOR = 80) ON [Filegroup Name]
armazenam dados do tipo varchar (max), varbinary (max), entre GO
outros.
Mesmo com uma boa definição de FILL FACTOR, você precisa ter
uma boa rotina de manutenção do banco de dados, já que com o
tempo os espaços livres deixados nas páginas para inserções futu-
ras também serão ocupados. Assim, pode ser necessária a divisão
de páginas e a intervenção manual do DBA para reconstruir esses
índices e informar um novo valor para o fator de preenchimento
evitando assim sua fragmentação.
Você pode configurar o FILL FACTOR utilizando o SQL Server
Management Studio ou o Transact-SQL. Na Figura 5, que pode ser
acessada clicando-se com o botão direito no item Server dentro do
Object Explorer e em seguida em Properties, podemos ver a con-
figuração do fator de preenchimento com o valor padrão através
das propriedades do servidor SQL Server no SSMS.
A
s informações chegam a grandes quantidades
e mudam numa velocidade muito rápida. É
Fique por dentro
importante armazenar essas informações em As técnicas de mineração de dados tem ganhado bastante espaço
grandes bases para filtrá-las, estudá-las e transformá-las nos últimos anos, sendo processos essenciais para a descoberta de co-
em conhecimento afim de que possam ser úteis ao traçar nhecimento em bases de dados. Essas técnicas visam explorar grandes
estratégias e tomar decisões. O uso de ferramentas de quantidades de dados com o intuito de encontrar padrões consistentes
extração do conhecimento possibilita tratar as informa- de relacionamentos entre os atributos das bases de dados. Isso pode
ções e apresentá-las numa forma clara, precisa e de fácil ser utilizado, por exemplo, para auxiliar na tomada de decisões sobre
compreensão aos tomadores de decisões e gestores, au- estratégias e vantagens competitivas na gestão de pizzaria. Por meio
xiliando-os no planejamento de ações de marketing e nas da aplicação de algoritmos específicos de mineração de dados em
mais diversas atividades que requerem ações decisivas. uma base de dados de pizzaria, o resultado dessas análises pode ser
Os avanços contínuos na área da Tecnologia da Infor- utilizado para planejamento estratégico. Por exemplo, a previsão de
mação têm gerado grandes quantidades de informações, vendas pode ser utilizada para planejamento de compra de matéria
que são consequentemente armazenadas em grandes prima, a identificação dos sabores das pizzas pode levar a empresa a
bases de dados. As diversas tecnologias existentes, como realizar algum tipo de promoção de vendas, enquanto que a identi-
computadores, celulares, leitores de códigos de barras, ficação de grupos de clientes pode levar a empresa a planejar uma
sistemas gerenciadores de banco de dados viabilizam estratégia de marketing para recomendação de produtos similares.
a proliferação de inúmeras bases de informações, que Ou seja, a aplicação de técnicas de mineração de dados pode ser
precisam ser trabalhadas, analisadas e transformadas considerada como um diferencial competitivo para as empresas, já
em informações úteis, que possam gerar conhecimento. que este tipo de conhecimento não pode ser obtido pela utilização
É impossível ao ser humano tratar todas essas informa- de softwares tradicionais.
ções sem o auxílio de ferramentas apropriadas, daí a ne-
cessidade do desenvolvimento de técnicas de mineração
de dados, que auxiliem o homem a selecionar, analisar,
interpretar e relacionar os dados para desenvolver es- Para trabalhar com o processo de KDD, faz-se necessário ter
tratégias de ação em cada contexto. objetivos definidos, saber quais resultados deseja-se atingir e
O processo de KDD (Knowledge Discovery in Databa- ter conhecimento do domínio da aplicação. Nesse processo, três
ses) foi formalizado em 1989 em referência a procura de profissionais são envolvidos:
conhecimento a partir de bases de dados. Seu objetivo Analista de dados: conhece as ferramentas aplicadas ao processo,
principal é extrair conhecimento de grandes bases da- como algoritmos e inteligência computacional, mas nem sempre
dos. A descoberta do conhecimento envolve uma sequ- conhece o domínio ao qual os dados pertencem;
ência de fases que devem ser obedecidas, iniciando-se Especialista no domínio: tem conhecimento do domínio dos
com a coleta de informações, passando pelo tratamento dados e sabe onde aplicá-los;
e, por fim, a apresentação do resultado final da extração Usuário (pessoa ou empresa): quem fará uso das informações
do conhecimento. resultantes do processo de KDD.
entre outros. Essas deformidades nos dados devem ser corrigidas de dados, poderá determinar com autoridade quais dados podem
para que não comprometam a qualidade final do processo de ser de fato aproveitados e quais poderão ser descartados.
mineração. Transformação dos dados
As operações de correções de ruídos dos dados no Pré-proces- A transformação consiste em formatar os dados de um estado
samento compreendem: bruto para um estado mais “limpo”. Esse processo demanda a
• Padronização dos valores dos atributos: em uma base de dados combinação de diferentes bases de dados modificando o formato e
formada por diferentes fontes, pode ocorrer que uma informação enriquecendo as informações. Após a fase do pré-processamento,
possua diferentes valores e tipos com o mesmo significado, por os dados precisam ser formatados e armazenados para que os
exemplo, “Unidade da Federação” pode assumir valores como: algoritmos possam ser aplicados.
“Paraná”, “PR”. Em uma base de dados, é comum encontrar os dados dispersos.
• Remoção de registros duplicados: pode ocorrer que na base de dados Após passar pela filtragem inicial, eles devem ser agrupados
apareçam dados iguais em diferentes registros, por exemplo, o observando a uniformidade dos dados e corrigindo eventuais
nome de um cliente pode em um momento aparecer por completo falhas, como informações incompletas.
e em outro abreviado; Na transformação dos dados, deve-se levar em consideração os
• Tratamento e eliminação de ruídos: são comuns em uma base de tipos de algoritmos que irão ser trabalhados e preparar os dados
dados ocorrerem erros ocasionados por diversos fatores, como para o formato adequado ao algoritmo a ser aplicado, por exemplo,
perda parcial de dados de um campo por uma interferência exter- alguns tipos de algoritmos só trabalham com valores numéricos.
na como a falta de energia. Nesses casos, os campos que contêm Diversas técnicas podem ser usadas na transformação de dados,
esses ruídos devem ser corrigidos ou as informações eliminadas; tais como: suavização (remove valores errados dos dados), agru-
• Tratamento de valores ausentes: quase sempre a base que recebe pamento (agrupa valores em faixas sumarizadas), generalização
a entrada de informações tem valores ausentes. Essas falhas são (converte valores específicos para valores mais genéricos), nor-
comuns por diversos fatores, principalmente pelo erro humano, malização (organiza variáveis em uma mesma escala e criação de
pois no momento em que um operador estiver cadastrando infor- novos atributos gerados a partir de outros já existentes).
mações pode acontecer de ignorar alguns campos;
• Exclusão de Casos: Trata-se de um método de limpeza simples que Mineração de dados
consiste em excluir do conjunto de dados sequências que tenham Nessa etapa os dados estão com alto padrão de qualidade e aptos
pelo menos um atributo não preenchido; a receber aplicações de ferramentas de extração do conhecimento,
• Preenchimento Manual de Valores: nesse método, os dados pesqui- como algoritmos de mineração. Trata-se da fase mais importante
sados devem ser complementados via digitação, o que demanda do processo de KDD, sendo comparados grandes volumes de
alto consumo de tempo e recursos, sendo muitas vezes inviável dados com o objetivo de extrair padrões a partir de dados, usando
na prática; técnicas de inteligência computacional.
• Preenchimento com Valores Globais Constantes: método que con- As principais tarefas da mineração de dados são:
siste em substituir valores ausentes de um atributo por um valor • Associação: tem por objetivo encontrar padrões frequentes que
padrão, por exemplo, valor “null”. ocorrem em um conjunto de dados. Consiste em identificar asso-
• Preenchimento com Medidas Estatísticas: medidas estatísticas são ciações entre variáveis no mesmo elemento ou associações entre
empregadas como alternativa à utilização de constantes padrões elementos diferentes que ocorram simultaneamente, de forma
no processo de preenchimento de valores ausentes. Como exem- frequente em uma base de dados. É também comum a procura
plo, podemos citar média para atributos numéricos; de associações entre elementos durante um intervalo temporal.
• Preenchimento com Métodos de Mineração de dados: nesse método, Algoritmos como o Apriori, GSP, DHP, entre outras ferramentas
valores ausentes podem ser substituídos por valores sugeridos são responsáveis por descoberta de associações;
através de modelos preditivos. Redes neurais, modelos bayesianos • Classificação: a classificação consiste em predizer um deter-
e árvores de decisão são alternativas na construção de modelos minado resultado com base em um conjunto de informações,
preditivos. baseando-se em árvores de decisão, regras de decisão e análises.
Essa tarefa pode ser compreendida como a busca por uma função
Além da preocupação com a limpeza dos dados, outro fator que permita associar corretamente cada registro;
que deve ser levado em consideração no pré-processamento é o • Sumarização: a sumarização, também chamada descrição de
tamanho do conjunto de dados, pois alguns algoritmos usados conceitos, consiste em identificar e apresentar, de maneira com-
na mineração de dados conseguem tratar apenas um número preensível, as principais características dos dados contidos em
limitado de registros, daí a necessidade de se utilizar técnicas um conjunto de dados;
que reduzam o tamanho do conjunto de dados. • Clusterização: a clusterização, também denominada de agru-
É interessante que essa fase do processo de extração do conhe- pamento, é responsável por particionar as informações de uma
cimento seja feita com o acompanhamento do especialista do base de dados em clusters ou subconjuntos, de maneira que esses
domínio, pois devido ao seu amplo conhecimento sobre o domínio clusters compartilhem um conjunto de propriedades comuns.
Dessa forma, podemos resumir e visua- • Número de classes: define a quantidade sentados em porcentagens. Para encontrar
lizar um conjunto de dados sem precisar de classes a serem trabalhadas. Esse valor os valores da frequência relativa é aplicada
levar em conta os valores individuais. é encontrado através da aplicação da fór- a fórmula .
Quando um conjunto de dados é for- mula de Sturges i = 1 + 3,3 . log n.
mado por um grande número de dados, • Amplitude do intervalo: determina a Aplicação do método de distribuição de frequência
recomenda-se colocá-los em uma tabela amplitude do intervalo de classe. Para en- sobre a data do pedido
de distribuição de frequência ou tabela contrar a amplitude do intervalo é aplicada O primeiro passo para análise da distri-
de frequência. Os dados nessa tabela são a formula . buição de frequência do pedido demanda
organizados em classes pré-organizadas, • Frequência Simples (fi): identifica no rol alguns processamentos na coluna da data
observando-se a frequência de cada classe. de valores a ser trabalhado a quantidade do pedido. A motivação para essa análise é
Podemos dizer que uma tabela de frequ- de elementos em cada classe; obter um entendimento sobre a frequência
ência é um arranjo tabular dos dados com • Ponto médio (Xi): o ponto médio de uma em que os pedidos são feitos de acordo
frequências parecidas. classe é o ponto que divide o intervalo com a data.
O método de distribuição de frequência de classe em duas partes iguais. O ponto Para aplicar o método de distribuição
foi aplicado sobre o dia do pedido, a hora médio é obtido pela fórmula , sendo de frequência sobre os valores da coluna
do pedido e o valor total vendido, com o li igual a limite inferior e Li igual a limite data do pedido, devemos seguir os pro-
objetivo de encontrar padrões. Por exem- superior; cedimentos:
plo, qual dia do mês mais vendeu pizza, • Frequência Acumulada (Fi): é a soma 1 –Definir o rol de valores. Nesse caso, o rol
em quais horários foram mais recebidos dos valores das frequências simples (Fi); de valores selecionados para a aplicação
pedidos e qual valor de pizza foi mais • Frequência Relativa (Fr): a frequência foram os valores da coluna Data do Pedido;
vendido. Assim, os elementos definidos relativa é obtida trabalhando com os 2 – Organizar todos os valores da planilha
foram: valores da frequência simples e são repre- Pedidos de Clientes em ordem crescente
por Data do Pedido.
3 – Acrescentar novas colunas à planilha
Pedido de Clientes e em cada uma das
novas colunas colocar um dos valores que
compõe a Data do Pedido, como mostra o
exemplo da Figura 2.
4 – Abrir uma nova planilha e nomeá-la
para DF Data do Pedido (Distribuição de
Frequência por Data do Pedido);
5 – Na nova planilha DF Data do Pedido,
efetuar os cálculos do número de classes,
da amplitude do intervalo, da frequência
simples, do ponto médio, da frequência
acumulada e da frequência relativa.
A Figura 3 apresenta a planilha DF Data
do Pedido com todos os elementos da
distribuição de frequência já calculados.
Cálculo da Amplitude do Intervalo A contagem dos elementos foi feita através da fórmula CONT.
Cada classe é associada a uma amplitude de intervalo de forma NÚM(‘Pedidos de Clientes’!1:3).
a distribuir os dados de forma representativa dentre as possíveis
classes, como pode ser observado na Figura 3. Cálculo do Ponto Médio
Para encontrar a amplitude do intervalo, representada na Para encontrar o ponto médio (Xi), foram somados os valores da
Figura 5, foi aplicada a fórmula= 31 - 1 = 30 / 14,43 = 2,07, sobre os amplitude do intervalo e o resultado foi divido por 2. Por exemplo,
valores da coluna Dia da Data do Pedido. O número 31 é o maior como representado na Figura 7, na primeira classe foi aplicada a
valor e o número 1 é o menor valor encontrado na coluna Dia. fórmula = 1 + 3 / 2, obtendo o resultado igual a 2, e dessa maneira
O resultado da subtração foi dividido pelo número total de classes foram feitos os demais cálculos com relação ao ponto médio. Esse
encontradas,14,43, chegando ao resultado 2,07. cálculo, por mais que não seja utilizado diretamente em nossos
A amplitude do intervalo deve ser sempre arredondada para exemplos, é importante posteriormente para cálculos de desvio
cima, neste caso o valor encontrado 2,07 foi arredondado para o padrão que podem vir a serem realizados.
valor 3. A amplitude do intervalo na primeira classe iniciou-se
com o número 1 e foi até o número 3, e seguiu essa sequência até
fechar com o valor 33 na última classe.
Com base nos cálculos apresentados, podemos concluir que O motivo para essa análise complementar é aumentar a
entre os dias 03 a 06 e 18 a 21 de cada mês, foram os dias que mais granularidade dos resultados, de forma que seja possível
receberam pedidos de pizza. identificar a concentração dos pedidos também em relação ao
horário em que foram realizados. Para calcular a distribuição
Aplicação da distribuição de frequência sobre Hora do Pedido, Total Valores de frequência sobre a hora do pedido, os valores que compõem
Fixos e Valor Total da Pizza a hora do pedido foram separados, ficando cada valor em uma
Os mesmos cálculos descritos anteriormente no cálculo da dis- coluna diferente, conforme mostra a Figura 9. Em seguida, foi
tribuição de frequência sobre a data do pedido, também foram criada uma nova planilha, nomeada para DF Hora do Pedido,
aplicados sobre a hora do pedido, total de valores fixos e valor e foi então calculada a distribuição de frequência.
total da pizza. Além da quantidade de pedidos, também é importante
analisar os valores totais desses, de forma que seja possível
perceber se os pedidos variam nesse quesito devido aos
elementos que os compõe. O total de valores fixos originou-
-se da soma do valor da borda, valor do refrigerante e valor
da entrega. Conforme mostra a Figura 10, foi criada uma
nova coluna e foi feita a soma desses três itens, calculando
a distribuição de frequência em uma nova planilha que foi
chamada DF Total Valores Fixos.
Para o cálculo da distribuição de frequência do valor total
da pizza, foi criada uma nova planilha e aplicada sobre os
valores da coluna valor total da pizza a mesma sequência de
cálculos descritos no cálculo da distribuição de frequência
Figura 8. Frequência relativa da planilha DF Data do Pedido sobre a data do pedido.