Вы находитесь на странице: 1из 46

ISSN 1677918-5

9 771677 918004 00149


Assine agora e tenha acesso a
todo o conteúdo da DevMedia:
www.devmedia.com.br/mvp

149ª Edição - 2017 - ISSN 1677918-5

EXPEDIENTE Fale com o Editor!

É muito importante para a equipe saber o que você está achando da


revista: que tipo de artigo você gostaria de ler, que artigo você mais
gostou e qual artigo você menos gostou. Fique a vontade para entrar
Editor Atendimento ao leitor em contato com os editores e dar a sua sugestão!
Se você estiver interessado em publicar um artigo na revista ou no site
Rodrigo Oliveira Spínola (rodrigo.devmedia@gmail.com) A DevMedia possui uma Central de Atendimento on-line, onde você SQL Magazine, entre em contato com os editores, informando o título e
pode tirar suas dúvidas sobre serviços, enviar críticas e sugestões e mini-resumo do tema que você gostaria de publicar:
Subeditor
falar com um de nossos atendentes. Através da nossa central também
Eduardo Oliveira Spínola Rodrigo Oliveira Spínola - Editor da Revista
é possível alterar dados cadastrais, consultar o status de assinaturas rodrigo.devmedia@gmail.com
Consultora Técnica e conferir a data de envio de suas revistas. Acesse www.devmedia
Anny Caroline (annycarolinegnr@gmail.com) .com.br/central, ou se preferir entre em contato conosco através do
telefone 21 3382-5038.
Jornalista Responsável
RODRIGO OLIVEIRA SPÍNOLA
Kaline Dolabella - JP24185 Publicidade Editor Chefe da SQL Magazine, Mobile
publicidade@devmedia.com.br – 21 3382-5038 e Engenharia de Software Magazine.
Capa e Diagramação
Professor da Faculdade Ruy Barbosa,
Romulo Araujo
Anúncios – Anunciando nas publicações e nos sites do Grupo DevMedia, uma instituição parte do Grupo DeVry.
você divulga sua marca ou produto para mais de 100 mil desenvolvedores
Doutor e Mestre em Engenharia de
de todo o Brasil, em mais de 200 cidades. Solicite nossos Media Kits, com
detalhes sobre preços e formatos de anúncios. Software pela COPPE/UFRJ.

Conteúdo sobre Boas Práticas

04 – Planejamento e governança em Data Warehouses


[ Rodrigo Diniz ]
Sumário
Conteúdo sobre Boas Práticas

13 – Oracle Audit Vault Server


[ Darlan Bastos ]

Artigo no estilo Mentoring

22 – IOPS: determinando o throughput no Oracle


[ Renato Rosa Peres ]

Conteúdo sobre Boas Práticas

29 – Arquitetura do SQL Server Database Engine


[ Henrique Ribeiro ]

Conteúdo sobre Boas Práticas

38 – Descoberta de conhecimento utilizando o processo KDD


[ José Adair Fabricio, Jones Granatyr e Heitor Murilo Gomes ]
Planejamento e
governança em Data
Warehouses
Conhecendo melhor os conceitos de arquitetura,
qualidade e modelagem de um Data Warehouse

N Fique por dentro


os dias atuais, que muitos autores classificam
como “Era do Conhecimento”, estamos em
um momento em que a corrida frenética por Data warehouses permitem o armazenamento e análise de grande
tecnologia e informação alcança proporções grandiosas quantidade de informação, e têm sido um recurso muito utilizado
e direciona a atenção das organizações para as técnicas por organizações com o objetivo de auxiliar o processo de tomada de
de BI (Business Intelligence) e em contratações de pro- decisão. Este artigo é destinado a quem queria adquirir uma forte base
fissionais que possam executá-las. Esses profissionais conceitual sobre Data Warehouses, desde sua modelagem dimensional
provêm tanto da área de Tecnologia da Informação aos passos necessários para a implantação de conceitos de governança
e Comunicação (TIC) quanto de outras áreas, como da qualidade da informação. Também serão abordados os conceitos
analistas de marketing, analistas comerciais, analistas de uma arquitetura em um Data Warehouse, Staging Area e ETL, com
financeiro, etc. exemplos em SQL Server e SSIS.
Esses profissionais, principalmente os de TIC, normal-
mente são encarregados tanto da extração quanto na
disponibilização da informação em relatórios, painéis certas práticas para manter o BI altamente disponível e com quali-
ou dashboards. A informação disponibilizada será dade (governança). Devemos ter em mente para que para obtermos
considerada íntegra, parcialmente íntegra ou inválida maturidade dos processos, devemos adotar certos policiamentos
pelos administradores, dependendo de sua expertise sob os seguintes conjunto de fatores:
no negócio. Quando aceitas, as tomadas de decisão da 1. Preocupação Organizacional: preocupação da organização
organização serão realizadas sobre essas informações e desde a segurança à qualidade dos dados, sendo estratégico ou
todo seu resultado acarretará em lucros ou prejuízos à exigências regulatórias (leis, por exemplo);
empresa. Destacado a importância desse cenário, vere- 2. Definição de Papeis: definição dos papéis sob os recursos de da-
mos neste artigo conceitos e técnicas de como montar dos. Exemplo: Financeiro, Gerência, Produtores, Mantenedores, etc.;
um Data Warehouse e uma introdução a governança e 3. Definição das Políticas: regras, diretrizes e orientações de
qualidade nas informações antes que virem dados analí- alto nível que apontem os caminhos para a implementação da
ticos, adicionando conceitos de integridade e qualidade governança de dados. Esses devem ser revistos periodicamente
e as principais formas de disponibilizar a informação, e ser definidos pela alta direção da empresa;
tanto no armazenamento quanto no compartilhamento. 4. Definição de Métricas: os custos de manter a governança de
dados normalmente tornam-se o grande empecilho para a manu-
Conceitos para implantação de Governança da Quali- tenção da qualidade. Para isso, é necessário definir métricas que
dade da Informação justifiquem tais investimentos;
A implantação de BI normalmente está acompanhada 5. Gerência de Riscos: quais os riscos de manter os dados sem
de uma grande mudança na cultura da organização e, qualidade? É necessário ter um mapeamento sobre os riscos de
com isso, é importantíssimo o conhecimento e uso de possuir determinados tipos de dados fora da zona de auditoria

4 SQL Magazine • Edição 149


da qualidade. Esses planos devem constar classificações, prio- elaboradas e as informações são vistas com enorme valor para
rizações e ações de monitoramento; as definições estratégicas da empresa. Aqui é possível implantar
6. Segurança, Privacidade e Aderência: aspectos que controlam conceitos de Self BI;
o uso dos dados, associadas à gerência de riscos. A segurança • Nível 4 - Managed (Gerenciado): os recursos críticos ganham
deve ser tanto física (arquivos e backups) quanto lógica (segu- evidencia e são definidas as políticas, padrões e procedimentos
rança, acesso, etc.). A privacidade deve estar alinhada às per- aceitos por toda a empresa. O monitoramento das informações
missões por papéis. Já os aspectos de aderência são baseados passa a ser algo crítico também e normalmente é necessária a
as normas regulatórias (ITIL, Cobit, Sox, etc.); criação de um departamento para controle delas;
7. Arquitetura de Dados: definição da arquitetura de acordo • Nível 5 - Effective (Efetivo): a cadeia de suprimentos da infor-
com os ambientes coorporativos, devendo ser adequado aos mação é criada e a informação passa a ser vista com enorme valor
processos transacionais (vendas, operações financeiras, opera- para a alta gestão. Recursos de hardware e sistemas especialistas
ções de RH, etc.) e aos processos informacionais (inteligência em extração de dados e criação de painéis, dashboards, cockpits,
de negócio, DW, Data Marts, etc.); report history entre outros recursos de BI são indispensáveis
8. Qualidade dos Dados: adoção de processos para garantir a para a manutenção e disponibilização da informação com valor.
qualidade dos dados; Nesse nível, a informação traz reais vantagens competitivas para
9. Classificação dos Dados e definição dos metadados: este a organização.
ponto é fundamental no quesito maturidade da governança
de dados, consistindo em uma catalogação de todos os dados Escopo da informação
da empresa, classificando e enriquecendo o seu conteúdo. Uma das quinze dimensões da qualidade da informação é a
Pode ser definido como dicionário ou repositório de dados, dimensão da abrangência/escopo da informação. Vamos imaginar
podendo ser aplicado conceitos de gestão de conhecimento, um cenário no qual somos analistas de sistemas do departamento
dando autonomia aos dashboards ou painéis da área de TI de tecnologia da informação de uma rede varejista de venda de
aplicando, por exemplo, novas metas de vendas aos relatórios camisas esportivas e um gerente regional (cliente interno) faz o
correlacionados às vendas; seguinte pedido: “preciso das vendas de nossas lojas, por mês, em
10. Gerência do Ciclo de Vida da informação: assunto pouco que eu saiba qual é o melhor vendedor...”. Logo, podemos con-
abordado na implantação do BI em uma empresa, consiste em cluir os requisitos que ele precisa: um ranking mensal por valor
definir até quando a informação pode ou deve ser utilizada; de vendas dos vendedores das unidades de negócios (business
11. Auditoria: define a auditoria nos processos ETL, garantindo units, termo muito comum em ERPs). Ao desenvolver, utilizando
assim sua qualidade (principalmente integridade) e medições nossos conhecimentos de extração, extraímos um relatório no qual
(por exemplo, volume de acesso). apresentamos as colunas indicadas na Tabela 1.
 
Para medir o nível de maturidade da governança de dados, a
Mês Unidade Vendedor Total em Vendas
empresa de consultoria Gardner Group (empresa de consulto-
ria e análise de tendências em TI) definiu o modelo Enterprise Tabela 1. Relatório extraído a partir do desenvolvimento
Information Management (EIM) com seis níveis de maturidade:
• Nível 0 - Unaware (Ausente): nesse nível as extrações das E disponibilizamos uma planilha na qual ele pode fazer os
informações estratégicas normalmente são definidas pela ne- filtros de ano, mês e unidade de negócios. Ao apresentarmos ele
cessidade x prazo curto e, com isso, a qualidade fica de lado. pergunta: “Posso ordenar por quantidade vendida de um de-
Normalmente a informação é utilizada apenas por uma área, terminado Grupo de Itens?”. Obviamente não! Nosso relatório é
não existindo compartilhamento; simples e direcionado aos requisitos iniciais. A partir desse ponto
• Nível 1 - Aware (Consciente): a informação já é vista como começam só as lamentações por parte do cliente: “A TI nunca
um ativo e, com isso, começam as estratégias de definição dos entrega o que eu quero...”, “Eu imaginei que estava implícito o
primeiros padrões básicos de qualidade, evidenciando os riscos que eu queria...”, como também pela parte da TI: “O cliente não
da informação advinda de algumas fontes; sabe pedir...”, “não estava no escopo...”, entre outras frases clichês
• Nível 2 - Reactive (Reativo): com a consciência da informação que servem apenas para criar um clima de perda de credibilidade
como ativo, nesse nível ela passa a ser utilizado em áreas dife- geral de ambas as partes. Extrair o que o cliente deseja não é uma
rentes. Nesse nível é importantíssimo deixar claro a(s) real(is) tarefa fácil, porém tentar adivinhar o que o cliente quer também
utilidade da informação, por exemplo, se a informação foi criada não é um bom caminho. Extração de dados sem no mínimo duas
para o departamento de Marketing para extrair estratégias para interações normalmente não terminam em sucesso, e por não
atividades “A” e “B”, pode fornecer um falso resultado quando existir uma técnica precisa para o processo de levantamento de
utilizado pelo departamento Comercial para atividades “C”; requisitos, um bom caminho é uma abordagem simples seguida
• Nível 3 - Proactive (Proativo): a arquitetura da informação de um protótipo (modelo). Mais à frente veremos mais exemplos
é criada e passa a ser mantida, as definições do papeis são de como obter essas informações.

Edição 149 • SQL Magazine 5


Planejamento e governança em Data Warehouses

Arquitetura de um Data Warehouse - Desnormalizado;


O Data Warehouse (DW) é um repositório de dados que normal- - Integrador de dados, sendo que a origem das informações pode
mente armazena uma grande quantidade de informações para provir de várias fontes;
tomadas de decisões e é utilizado somente leitura, não sendo reco- - Informações históricas e consolidadas;
mendado que exista inserção de dados por parte de seus usuários.  - Seus dados não devem sofrer alterações não divulgadas;
Considerado por muitos como o inventor do DW, o cientista de - Serviço voltado no desempenho de retorno das agregações.
dados Bill Inmon o define como “uma coleção de dados orientados  
por assuntos, integrados, variáveis com o tempo e não voláteis, Para os exemplos a seguir, utilizaremos uma base relacional
para dar suporte ao processo de tomada de decisão”. Para ele, trata- simulando um sistema de vendas utilizado por uma distribuidora,
-se de um processo em andamento que aglutina dados de fontes mantida no MS SQL Server 2014, como mostra a Figura 1.
heterogêneas (de naturezas distintas), incluindo dados históricos. 
Portanto, a primeira e marcante característica de um DW é Diagrama do banco de dados relacional
ser “orientado a assuntos”, sendo utilizado para analisar um Observe que utilizamos conceitos de Pascal Case para o nome
assunto particular do negócio. Exemplo: Vendas canceladas para das tabelas e suas colunas, além de pluralizar o nome das tabelas
clientes com determinadas características, rotação de estoque por e singularizar o nome das colunas, técnica muito eficiente para
trimestres, tributações relacionadas a determinadas atividades, padronização dos metadados.
etc. Além dessa característica, podemos citar:  Dentro de um DW, é comum encontrarmos vários Data Marts,
• Centralizador de assuntos: um DW provém de integração de que nada mais são que grupos de assuntos separados logicamen-
dados de fontes de naturezas distintas, orientados a um assunto. te, ou seja, enquanto o DW possui uma visão mais abrangente
Por exemplo: uma parte da venda estar no sistema ERP, algumas do negócio, os Data Marts possuem uma visão mais focada por
informações dos clientes estar no sistema CRM e outras estarem setor. Alguns especialistas acreditam que para a formação de um
em uma planilha de dados; DW é necessário minerar as informações de cada área especifica
• Variáveis com o tempo: quando implantado, um DW pode ficar via Data Mart, porém isso não é uma regra geral. Como um DW
com as informações históricas de determinadas atividades da deve ser elaborado conforme a necessidade das áreas de negócio,
empresa, liberando dos sistemas transacionais essas informações. ele precisa dar condições de navegações para chegar a níveis de
Com isso, esses sistemas podem ganhar performance por não ter granularidade extremos. Para isso, existem os conceitos de arqui-
que lidar mais com informações muito antigas, guardando apenas tetura Top-down (navegação consolidada para o nível granular) e
os dados mais recentes; Bottom-UP (navegação granular para o nível consolidado).
• Não voláteis: um DW não deve alterar seus dados históricos. Uma das características principais do Data Warehouse é a mode-
Quando identificada uma necessidade, deve ser feito um comuni- lagem dimensional, que segundo Kimball, é a única técnica viável
cado avisando as áreas que trabalham com essas informações. De- para bancos de dados que devem responder consultas em um DW.
pendendo da criticidade da alteração, ela pode afetar todas as Esse assunto muitas vezes confunde os desenvolvedores de siste-
tomadas de decisões realizadas até então.  mas que, devido a conceitos diferentes da modelagem relacional
  (normalmente utilizada para criação de sistemas transacionais),
Ralph Kimball, um pioneiro quanto às definições de DW, desta- está relacionado a termos como “Cubo”, “Tabelas Fato”, “Dimen-
cou que para se construir um DW é necessário aplicar às necessi- sões”, “Medidas”, entre outros. Para que possamos adentrar em
dades específicas dos usuários e aos bancos de dados específicos, exemplos práticos de modelagem de dados, é necessário maior
um conjunto de ferramentas e técnicas de projeto. Com base nisso, conhecimento na modelagem dimensional que veremos a seguir.
explicaremos dois importantes estágios que devem ser aplicados
entre as fontes de dados e o DW: Staging Area e ETL. Modelagem Dimensional
Um DW possui características e conceitos diferentes de um banco A modelagem dimensional é uma técnica que permite uma
relacional, como destacado a seguir: visão consolidada para um ou mais grupos de informações/ca-
• Banco relacional: racterísticas (chamadas de dimensões) que facilita a investigação,
- Geralmente utilizados para suportar as atividades operacionais; o resumo e a organização de dados para a análise de negócios. Ela
- Utiliza conceitos de modelagem relacional; normalmente é usada para DW relativo às ações (fatos) das ativi-
- Normalizado; dades históricas da organização (proprietária da fonte de dados
- É utilizado por uma ou mais aplicações específicas; a ser analisada). Formado por relações entre dimensões e fatos,
- Preocupação com a informação atual; visa uma alta performance para execução de consultas analíticas.
- Seus dados podem sofrer alterações a qualquer momento; O modelo dimensional oferece, clara e diretamente, os elementos
- Serviço voltado no desempenho de retorno dos detalhes. de que se precisa para buscar as informações (“fato”) via dimensões
• Data warehouse: de referências.
- Os dados são voltados ao planejamento e relatórios; Uma modelagem dimensional deve ser planejada de forma
- Utiliza conceitos de modelagem multidimensional; atômica, ou seja, deve suportar filtros, consultas agrupadas, cate-

6 SQL Magazine • Edição 149


Figura 1. Modelo da base de dados

gorizadas e satisfazer as regras de negócio. Os usuários Pergunta Atributo Tipo


devem poder analisar tanto a informação totalizada What (o quê?) Produto, Categoria Dimensão Produtos, Dimensão Categorias
quando chegar aos detalhes mínimos desejados. When (quando?) Data de Entrega Dimensão Tempo
Para armazenar a informação, como em um modelo
Dimensão Clientes, Dimensão Represen-
relacional, é necessária a criação de entidades (tabelas) Who (quem?) Cliente, Representante
tantes
com atributos (colunas). A base para a modelagem Dimensão Endereços, Dimensão CEPs,
Where (onde?) Local de Entrega
dimensional são as tabelas de fatos, que possuem Dimensão Cidades, Dimensão Estados
uma história de uma ação relacionada diretamente Why (por quê?) Necessidade do Cliente Não se aplica neste exemplo
com os indicadores numéricos da mesma (medidas): How (como?) Tipo de Venda Dimensão TipoVendas
• Tabela Fato: principal tabela no DW, onde são en- How Much
contradas as informações de um “fato” ocorrido, ou Preço de Custo Medida PrecoCusto
(quanto custa?)
seja, o histórico de uma ação armazenada. Uma tabela How Many (quanto?) Quantidade Medida Quantidade
fato deve possuir grãos únicos (possuindo ligação
com as tabelas de dimensão) com suas respectivas Tabela 2. Fato – Vendas (de Produto)
medidas (números calculáveis). Outra característica
importante da tabela Fato é garantir que a granularidade da É recomendado que a tabela Fato, junto às tabelas de Dimensão,
informação deve ter, exatamente, o mesmo nível de detalhe. Não possua em suas informações a resposta para o 5W3H (“What?”,
é recomendado que em uma linha pudesse se ver o tipo de um “Who?”, “When?”, “Where?”, “Why?”, “How?”, “How Much?” e
produto e na outra não; “How Many?”), como exemplificado na Tabela 2.
• Tabela Dimensão: contém as informações descritivas e quali-
ficadoras do negócio. Exemplo: Raças, Categorias, Cores, Produ- Além das tabelas Fato e Dimensão, a modelagem dimensional
tos, Cidades, Tempo, etc. Quando a ausência de informação na possui outros termos comuns, como:
tabela Fato for constatada, a mesma deve ser corrigida em suas • Medidas (measures): um valor numérico, encontrado nas Tabe-
dimensões através de uma nova categoria. Porém, essa ausência las Fato, que representam a contabilização de uma ação armaze-
pode diminuir a confiabilidade na informação. nada. Exemplo: Quantidade, Valor Unitário e Valor Total de um

Edição 149 • SQL Magazine 7


Planejamento e governança em Data Warehouses

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

8 SQL Magazine • Edição 149


no caso do endereço precisaremos também
descentralizar para dentro da dimensão
clientes. Como a tabela fato é o assunto a
ser extraído, e o assunto definido foi venda
de produtos, utilizaremos as duas tabelas
de vendas (em vermelho) como base da
tabela fato. O resultado é apresentado na
Figura 3.
Caso a fonte de dados seja pequena ou
não possua colunas de auditoria do tipo
data criação e data modificação, recomen-
damos o Modelo Estrela (Star). Alguns
especialistas gostam de controlar as sur-
rogate keys manualmente, nesse exemplo,
até pela baixa complexidade optamos em
utilizar a função de auto incremento do
SQL Server (identity).

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.

Edição 149 • SQL Magazine 9


Planejamento e governança em Data Warehouses

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

Listagem 1. Script de criação das views

Create View vFatoVendas ,        produto.NomeProduto                as ProdutoNome


as  ,        categoria.Categoria                as ProdutoCategoriaNome
Select    
venda.VendaId                        as VendaBK From Distribuidora_OLTP.dbo.Produtos produto
,        vendaItem.VendaItemId        as VendaItemBk Join Distribuidora_OLTP.dbo.Categorias categoria on produto.CategoriaId = categoria.
,        dataVenda.DataVendaKey        as VendaDataKey CategoriaId 
,        venda.TipoVendaId                as VendaTipoBk Go
,        venda.RepresentanteId        as VendaRepresentanteBk  
,        venda.ClienteId                        as ClienteBk Create View vDimRepresentantes
,        vendaItem.ProdutoId                as ProdutoBk As 
,        vendaItem.Quantidade        as Quantidade Select
,        vendaItem.Preco                        as Preco representante.RepresentanteId        as RepresentanteBK
  ,        representante.Nome                                as RepresentanteNome
From Distribuidora_OLTP.dbo.Vendas venda  
Join Distribuidora_OLTP.dbo.VendasItens vendaItem on venda.VendaId = vendaItem. From Distribuidora_OLTP.dbo.Representantes representante
VendaId Go
Join Distribuidora_DWStar.dbo.DimDatasVendas dataVenda on venda.DataVenda =  
datavenda.DataVenda  Create View VDimVendasTipo
Go As 
   Select 
Create View vDimClientes tipoVenda.TipoVendaId        as VendaTipoBK
as  ,        tipoVenda.TipoVenda                as VendaTipo
Select  
cliente.ClienteId                        as ClienteBK From Distribuidora_OLTP.dbo.TipoVendas tipoVenda 
,        cliente.Nome                                as ClienteNome Go
,        tipocliente.TipoCliente                as ClienteTipo  
,        endereco.Logradouro                        as ClienteLogradouro Create View vDimDatasVendas
,        cep.CEP                                                as ClienteCEP As 
,        cidade.Cidade                                as ClienteCidade Select
,        estado.Estado                                as ClienteEstado Distinct 
  venda.DataVenda                                        as DataVenda 
From Distribuidora_OLTP.dbo.Clientes cliente ,        YEAR( venda.DataVenda )                        as AnoVenda
Join Distribuidora_OLTP.dbo.TipoClientes tipocliente on cliente.TipoClienteId = tipo- ,        Month ( venda.DataVenda )                as MesVenda 
cliente.TipoClienteId ,        Convert(
Join Distribuidora_OLTP.dbo.Enderecos endereco on cliente.EnderecoId = endereco. varchar(10)
EnderecoId ,        DateName (
Join Distribuidora_OLTP.dbo.CEPs cep on endereco.CepId = cep.CepId month
Join Distribuidora_OLTP.dbo.Cidades cidade on cep.CidadeId = cidade.CidadeId ,        venda.DataVenda
Join Distribuidora_OLTP.dbo.Estados estado on cidade.EstadoId = estado.EstadoId   
Go )
  )                                                                as MesDescricaoVenda 
Create View vDimProdutos ,        Day ( venda.DataVenda )                        as DiaVenda
as  From Distribuidora_OLTP.dbo.Vendas venda 
Select Go
produto.Produtoid                as ProdutoBK

10 SQL Magazine • Edição 149


o componente Destino OLE DB (Other
Destinations), renomeie para Destino
DimClientes e arraste a setinha azul do
Limpar DimClientes para ele, conforme
mostra a Figura 6.
Feito isso, dê um duplo clique em Destino
DimClientes, adicione a conexão OLE DB
e selecione a tabela DimClientes e clique
em Mappings para criar o relacionamento
entre as colunas. Por utilizarmos o nome
das colunas nas views iguais aos nomes
das colunas nas tabelas de dimensões, o
mapeamento é automático (vide Figura 7).
Caso você tenha optado por utilizar outro
nome, você pode realizar o mapeamento
Figura 5. Criando a dimensão Clientes manualmente.
Agora aperte o F5 e observe o resultado.
Refaça as operações em todas as outras
dimensões, ligando cada uma das dimen-
sões na sequência. Após isso, adicione um
novo componente Tarefa Fluxo de Dados
(Data Flow Task) e renomeie para Fato Ven-
das, como demonstra a Figura 8.
O próximo passo é adicionar um com-
ponente Origem OLE DB (Other Sources)
e renomear para Origem Fato Vendas.
A origem das informações de Fato será a
view vFatoVendas. Após isso, adicione um
componente de Pesquisa e renomeie para
Lookup Clientes e ligue a seta da origem
Fato Vendas, dê um duplo cliente no Lookup
Figura 6. Criando o fluxo de dados Clientes e clique em Connection, adicio-

Figura 7. Mapeamento das colunas Figura 8. Configurando o fluxo de controle

Edição 149 • SQL Magazine 11


Planejamento e governança em Data Warehouses

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.

Figura 9. Lookup Transformation Editor


Autor
Rodrigo Diniz
rodrigo.bdiniz@hotmail.com
MBA em Gestão da Informa-
ção, possuo mais de 12 anos
de experiência em desenvolvimento de
Sistemas .NET em vários seguimentos
distintos. Possuo certificação MCPD em ASP.NET e MCITP
MS SQL Server. Há 3 anos venho atuando em Business
Intelligence e Auditoria/Qualidade da informação no
Sistema Poliedro de Ensino.

Figura 10. Conclusão do mapeamento

12 SQL Magazine • Edição 149


corOracle Audit Vault
Server
Credibilidade em TI com auditoria centralizada e
inviolável

N Fique por dentro


as camadas mais críticas dos ambientes de
infraestrutura de TI (por exemplo, bancos
de dados, firewall, sistemas operacionais e Para atender as exigências de padrões internacionais de segurança
controladores de identidade) há recursos voltados para da informação, como a norma ISO 17799, e de padrões de prevenção
auditoria das operações. Essas ferramentas são indispen- de fraudes, como a legislação norte-americana Sarbanes-Oxley, os
savelmente utilizadas quando as organizações mantêm registros de auditoria em sistemas operacionais e em bancos de dados
políticas de segurança interna ou por força de lei, visan- precisam de um armazenamento inviolável. Ao receber processos de
do ter capacidade de auditar acesso e modificações de auditagem, as organizações que possuem ferramentas de software
informações sigilosas, sensíveis, de segredo de estado para a proteção de dados de auditoria têm mais credibilidade acerca
ou simplesmente estratégicas no mercado. São nesses das informações históricas. O Oracle Audit Vault Server (AV Server) é um
momentos que a TI precisa responder adequadamente desses produtos disponíveis no mercado. Ele é desenvolvido pela Ora-
à área de negócio com soluções aprimoradas de segu- cle Corporation com excelente integração ao SGBD Oracle Database.
rança, demonstrando preparo e não dando nem mesmo O AV Server é capaz centralizar registros de auditoria em um ambiente
a impressão de possuir alguma vulnerabilidade. seguro, gerar alertas sobre incidentes de segurança e também dispo-
De qualquer forma, a heterogeneidade das camadas nibilizar uma base para consulta e análise de relatórios. Neste artigo, o
de TI coloca dúvidas sobre a autenticidade dos registros AV Server é contextualizado e abordado em seus aspectos essenciais.
antigos de auditorias automáticas. Por exemplo, em
bancos de dados, há risco de uma consulta ser realizada
sem deixar vestígios ao acessar informações sensíveis?
Os registros de auditoria armazenados pelo banco de Qualquer um pode executar a instalação de um AV Server, sendo
dados estão protegidos de remoção intencional? Ao possível ter um AV Server sem precisar instalar um Oracle Data-
ocorrer alguma modificação na estrutura de tabelas base Firewall, o contrário não. Não é possível instalar o AV Server
ou mesmo manipulação de dados em massa, como a (versões recentes) em um sistema operacional, pois ele é o próprio
organização é alertada preventivamente? sistema operacional. Essas são respostas comuns de um consultor
O Oracle Audit Vault Server (AV Server) é capaz de dessa solução para as perguntas que surgem com frequência por
responder essas questões estratégicas para a segurança administradores de bancos de dados e de sistemas operacionais.
dos ambientes de TI, pois coleta as auditorias de diversos Algumas até assustam quem adquire o produto por pressão de
sistemas operacionais e bancos de dados, guardando de áreas de segurança ou auditores externos, sem ater-se a muitos
uma forma segura e com papéis específicos de adminis- detalhes técnicos.
tração da ferramenta, sendo viável que administradores O uso do AV Server é recomendado para ambientes de TI com
de bancos de dados possam gerenciar o ambiente em missão crítica nas áreas que envolvem idoneidade absoluta, como
nível de infraestrutura e que as responsabilidades das bancos de dados da área financeira. A utilização de sistemas que
informações fiquem a cargo de auditores, que podem blindam as auditorias realizadas em nível de sistema operacional
ser avisados sobre incidentes auditados, como quando e bancos de dados é fundamental para a rastreabilidade de opera-
algum comando SQL/DDL é executado em ambiente de ções críticas. Por exemplo, a leitura de dados altamente sigilosos
produção indevidamente. de uma organização precisa gerar registro com os detalhes do
O AV Server não audita, ele não tem relação direta com observador, possuindo validade se, e somente se, for utilizado
o Oracle Database Vault. um armazenamento seguro, a sete chaves, a prova de qualquer

Edição 149 • SQL Magazine 13


corOracle Audit Vault Server

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,

14 SQL Magazine • Edição 149


auditores não interferem nas questões de
administradores e vice-versa. É um traba-
lho em conjunto, mas sem interferências.
Cada um cumpre o seu papel, então se
o super administrador desejar remover
um usuário auditor, não vai conseguir.
Os nomes dos primeiros super usuários
são definidos na primeira vez que o siste-
ma é acessado e informado a passphrase da
instalação, conforme Figura 2.
Após configurar os nomes e senhas dos
super usuários, é possível fazer login no
sistema web e explorar os recursos, lem-
brando que as opções disponíveis vão se
moldar conforme o usuário for um admi-
nistrador ou um auditor, embora a tela de
acesso seja unificada.
A Oracle também disponibiliza um
executável nativo para a administração Figura 2. Definição de usuários
do AV Server, assim como existe o EMCLI
para o Oracle Enterprise Manager, os re-
cursos disponíveis na interface gráfica
podem ser realizados por linha de co-
mando, através de um utilitário chamado
AVCLI. Uma opção muito útil é definir o
nível log de erros para os servidores que
possuem agentes registrados, conforme
Figura 3. Essa é uma opção que atual-
Figura 3. AVCLI
mente não consta na interface gráfica,
sendo feita somente pelo AVCLI. Para
determinadas situações, é importante
saber que esse utilitário existe e que se
beneficia dos paradigmas de linha de co-
mando, como a interpretação de scripts.
Ainda outro item que pode ser citado
como componente do AV Server é o Oracle
Database Firewall, que será abordado em
um artigo futuro.

Administração no Audit Vault Server


Figura 4. Definição da rede
O papel de um usuário do tipo admi-
nistrador no AV Server é exclusivamente
de manter o ambiente em nível de infra- Configurações de rede reboot imediato para efetivação da modifi-
estrutura e também de executar a confi- Como em qualquer servidor, em alguma cação. A interface web ainda não alerta de
guração de agentes e alvos de auditoria, manutenção pode ser necessário realizar a forma clara sobre o reboot. A reinicializa-
permitindo assim que tudo funcione troca do IP, máscara de rede, gateway ou o ção total, até a disponibilização do serviço
adequadamente para que o auditor possa hostname do AV Server. É possível realizar web, pode demorar bastante dependendo
focar exclusivamente nas suas respectivas esses ajustes de forma bem simplificada do servidor.
atividades. Em linhas gerais, o adminis- através da console do servidor ou pela O acesso à interface gráfica web (camada
trador configura e mantém o ambiente interface gráfica web. em APEX) pode ser restringida para um
para o auditor. O administrador é res- É interessante saber que essa configura- conjunto de clientes limitados, através
ponsável por dezenas de configurações, ção está disponível por interface gráfica, da definição de um conjunto restrito de
sendo as principais delas: conforme Figura 4, mas que envolve um endereços IP.

Edição 149 • SQL Magazine 15


corOracle Audit Vault Server

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.

Figura 5. Liberação de acessos

Mensagens por e-mail são o principal método de o AV Server


alertar os auditores sobre ocorrências em tempo real. Por exemplo,
uma movimentação financeira fora de padrão precisa ser verifica-
da no mesmo dia e o quanto antes possível, todavia, para o alerta
ser emitido, a infraestrutura de comunicação entre o AV Server e
o servidor de e-mail precisa ser estável e bem testada.
Também é papel do administrador certificar-se de que o AV
Server é capaz de enviar e-mails através de um servidor SMTP.
Esse recurso é muito útil para os auditores serem alertados sobre
incidentes de segurança. Os dados fornecidos podem ser validados Figura 7. Timezone e servidor de NTP
com um teste, disponível na própria tela de configuração, como
mostra a Figura 6. Avaliação de espaço em disco
Obter a visibilidade do espaço em disco usado é um item aprovei-
tado da linha de comando do sistema operacional para a facilitada
e simplificada interface gráfica web do AV Server.
Os discos formatados na instalação do AV Server são dis-
tribuídos em formato de pontos de montagens do sistema
operacional (Oracle Linux), bem como grupos de discos do ASM
para o banco de dados que armazena os registros de auditoria.
O administrador pode então acompanhar o espaço, conforme
Figura 8 e, se necessário, realizar manutenções baseadas no
suporte do produto.

Figura 6. Apontamento para servidor de e-mail

Resumidamente, um registro de auditoria contém o que foi


executado, quem executou e quando. Se uma dessas informações
essenciais está distorcida, a análise e a confiabilidade ficam to-
talmente comprometidas. Informações com data errada podem
gerar confusão, por isso é muito importante que o AV Server
esteja adequadamente configurado de acordo com os ambientes
dos quais recebe logs de auditoria. Como em qualquer sistema
operacional, a definição do timezone e uma correta configuração
do serviço de NTP são as configurações suficientes para manter
o relógio sempre correto.
Utilizando a interface do sistema web, o administrador do AV
Server pode configurar de forma correta o timezone (no caso do Figura 8. Espaço em disco no ASM e file system

16 SQL Magazine • Edição 149


Publicação de agentes No servidor que será auditado, independente do objetivo da
Finalizadas as configurações de rede e análise dos discos cria- auditoria ser sistema operacional ou banco de dados, um agente
dos, o primeiro passo de fato para colocar esse grande software (AVAGENT) precisa ser instalado. Ele será o processo do sistema
appliance em funcionamento é cadastrar um servidor que deve operacional responsável pela coleta dos logs de auditoria e envio
ser auditado, como mostra a Figura 9. Dessa forma, será possível para o AV Server. O instalador do agente é um pacote Java (JAR).
que o AV Server receba os registros de auditoria através da coleta É importante certificar-se na documentação do produto a versão
realizada por um agente, que é um executável em Java. de JRE necessária para execução do processo, conforme exemplo
da Figura 10.
O download do arquivo JAR que corresponde ao agente é rea-
lizado na própria interface do AV Server. Ele deve ser transferido
para os servidores alvos de auditoria, como os nodes de um banco
de dados em cluster Oracle RAC. O processo de instalação é bem
simples, sendo necessário somente ter uma versão suportada de
JRE instalada no servidor e informar a chave de ativação criada
no cadastro do servidor. A Figura 10 demonstra detalhes da ins-
talação do agente, incluindo variáveis de ambiente.

Figura 9. Cadastro de agente do AV Server Gerenciamento de alvos


Um alvo (Secured Target) no AV Server corresponde ao recurso que
O cadastro consiste tão somente no nome completo da má- está sendo auditado, o qual sempre está vinculado a um servidor e
quina e seu IP. Uma chave de ativação é imediatamente gerada seu respectivo agente. Por exemplo, um host Windows pode conter
e fica disponível para visualização. Ela é o elo de confiança alvos do tipo Microsoft Active Directory, Oracle Database, MySQL
com a instalação do agente, a qual é feita manualmente no e SQL Server. O agente e o AV Server possuem uma camada de
servidor alvo. plugin para cada tipo de alvo.

Figura 10. Instalação de agente do AV Server

Edição 149 • SQL Magazine 17


corOracle Audit Vault Server

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

Auditoria no Audit Vault Server


Figura 11. Inclusão de alvo para auditoria O papel de um usuário do tipo auditor no AV Server é analisar os
dados coletados através de pesquisas e relatórios, podendo reali-
Para cada alvo (ou seja, cada banco de dados), precisa ser zar tarefas adicionais de avaliação de segurança, como a geração
configurada a coleta de informações, chamada de trilha de de snapshot sobre privilégios em um banco de dados. O auditor
auditoria (Audit Trail), conforme Figura 12. Essa é a definição pode ser proativo com a segurança do ambiente por programar
de um local onde o agente pode ficar monitorando, coletando geração automática de relatórios e o recebimento de alertas sobre
e sincronizando as informações com o servidor. No caso do incidentes de segurança. Vamos descrever as principais funções
Oracle Database, pode ser uma tabela de auditoria (AUD$) do auditor utilizando algumas telas de exemplo.
ou também um diretório contendo arquivos em XML com os
dados de auditoria. Aplicação de política de retenção em um alvo
O tipo da trilha (Audit Trail Type) depende muito de como o alvo As políticas de retenção definidas pelos administradores podem
realiza a auditoria. No Oracle Database é definido através do pa- ser aplicadas pelo auditor em determinados alvos, conforme
râmetro de instância AUDIT_TRAIL. Isso vai sempre depender desejar. Dessa forma, o banco de dados vai manter nas tabelas
do tipo de alvo auditado, pois o agente não audita, ele apenas internas do AV Server menos registros, conforme definido pela
coleta e sincroniza. política de retenção.
Embora o desempenho da base de dados seja muito satisfatório
para os filtros que podem ser realizados, ter a política de expurgo
definida, mantendo somente os registros necessários, melhora o
desempenho em longo prazo.

Visualização de registros de auditoria


A visualização de registros de auditoria é a função mais básica
Figura 12. Trilhas de auditoria de dois alvos no AV Server. É possível utilizar a interface gráfica da aplicação
em layout do APEX para elaborar filtros avançados, até mesmo
Há ambientes que são massivamente auditados e uma quantida- agrupando registros e gerando gráficos em algumas telas.
de elevada de registros é armazenada no AV Server. A definição O exemplo da Figura 14 é um filtro baseado no nome de uma
de uma política de expurgo é fundamental para a continuidade tabela do owner AVDF em um banco de dados específico.

18 SQL Magazine • Edição 149


Ele retorna todas as operações que foram auditadas pelo banco executado em uma tabela do usuário SCOTT. O layout é baseado
de dados nesse objeto e que foram também coletadas pelo agente em um modelo criado previamente.
e enviadas ao servidor de auditoria.

Figura 15. Exemplo de definição do que deve ser auditado no banco de dados

Figura 14. Filtrando registros de auditoria

Definição do que deve ser auditado


O administrador precisa deixar as trilhas de auditoria em per-
feito funcionamento para que o auditor visualize o status das
auditorias de cada alvo. No caso de banco de dados, é possível
identificar as auditorias ativas, bem como gerar os comandos para
passar a auditar novos itens.
A diferença entre o que se deseja auditar versus o que está de fato
sendo auditado pode ser transformada em script com comandos
Figura 16. Notificação por e-mail quando um alerta é aberto
para habilitar a auditoria, ou mesmo especificado um usuário e
senha que automaticamente executem o script no banco de dados.
Após, é necessário certificar-se de que tudo que se deseja auditar Gerenciamento de alertas
está sendo auditado no banco de dados. Gerar alertas sobre incidentes ocorridos em nível de segurança é
Como comentado no início deste artigo, quem audita é o banco de um dos recursos de maior pró-atividade disponíveis no AV Server.
dados, não é o AV Server. É nessa etapa de definição de auditoria Ele consiste em elaborar um filtro avançado sobre os registros de
que as telas do AV Server possuem os recursos para avaliar essa auditoria, sendo que se as regras do filtro casarem com algum
integração de informações. registro, um alerta é disparado para uma lista de distribuição de
Definir uma auditoria como sendo ou não necessária (Needed/ e-mails, podendo ter layout baseado em um modelo previamente
Not Needed) pode divergir a depender de como esteja definido definido.
atualmente o banco de dados. Por esse motivo, existem as setas É semelhante a uma configuração de regra de firewall, onde são
indicativas, para avaliar se há alguma divergência. Conforme determinadas as condições de convergência à uma regra. Quando
exemplo da Figura 15, nenhuma divergência foi encontrada, en- um registro de auditoria for enviado por um agente e recebido
tão tudo que está marcado como necessário no Audit Vault está no AV Server, ele será analisado pelas regras existentes. Caso o
sendo auditado pelo banco de dados e não há auditorias feitas registro se enquadre em algum alerta, há a geração do incidente,
pelo banco de dados que não estejam definidas como necessárias que pode ou não disparar uma notificação por e-mail. Mesmo não
no Audit Vault. O objetivo dessa interface é justamente solucionar havendo uma notificação configurada, o alerta permanece na tela
possíveis divergências. inicial do login de auditor (Dashboard) até que seja marcado como
Há diversos tipos de auditoria. Um exemplo comum é a auditoria conhecido ou resolvido (Figura 17).
por objetos de banco de dados, exemplificado na Figura 15. Nesse
exemplo, uma tabela do owner SCOTT está sendo auditada para Agendamento de relatórios
operações SQL/DML de ALTER, UPDATE e INSERT. Deparar-se com um grande volume de registros de auditoria
exige organização e classificação de prioridade de análise. Exaus-
Criação de listas e modelos de distribuição de e-mails tivas pesquisas e definições de filtros para encontrar operações
Podem ser criados modelos de e-mails com textos padrões, suspeitas precisam ser reutilizadas para aperfeiçoar o trabalho de
incluindo trechos variáveis, os quais são substituídos em tempo auditores. O AV Server tem essa possibilidade através do agenda-
de geração do e-mail. Esses modelos podem servir para alertas mento de relatórios predefinidos, os quais podem ser entregues
de incidentes ou para envio de relatórios agendados. Também por e-mail aos auditores em formato PDF ou Excel.
podem ser criadas listas de distribuição de e-mails, de forma a Assim, auditores podem receber relatórios prontos na caixa de
serem facilmente atribuídas aos alertas ou relatórios agendados. e-mail sem precisar logar na ferramenta e efetuar cansativas bus-
A Figura 16 apresenta um e-mail recebido, após um DELETE ser cas. Basta configurar agendamentos de envio de relatórios, como

Edição 149 • SQL Magazine 19


corOracle Audit Vault Server

mostra a Figura 18. Por exemplo, podemos


enviar um relatório se houve comandos
de remoção de registros em uma tabela
específica do banco de dados na data de
ontem. Há também a opção para geração
do relatório em formato PDF e XLS.

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.

A maturidade do ambiente de TI com o


AV Server
Embora a implantação de ferramentas de
controle como o AV Server não seja o tipo
de projeto mais empolgante, ela demonstra
a maturidade da TI nas organizações, tor-
nando-as bem preparadas para identificar
modificações descontroladas em bancos de
dados, rastreando os responsáveis. Como
foi descrito neste artigo, uma caixa-preta
não interfere no trabalho, é inviolável, ab-
solutamente resistente a ataques, e muitos
não fazem ideia de como o conteúdo está
Figura 19. Comparando privilégios entre períodos

20 SQL Magazine • Edição 149


armazenado. Por isso, é tão comum a utilização desse termo para Autor
descrever o AV Server, que possui essas mesmas características.
Todavia, adicionalmente, há outra característica do AV Server DBA Darlan Bastos
dbadarlanbastos@gmail.com
que também pode ser usada na comparação: ele não compõe o
Consultor DBA Oracle Certified Expert. Responsável por projetos
ambiente para aumentar desempenho, reduzir custos ou trazer al-
na AdvancedIT, empresa gaúcha Oracle Platinum Partner. Atua
gum outro benefício imediato. Na realidade, nem sempre as coisas em projetos de migrações e implementa soluções de alta disponibilidade.
dão certo, e ele está ali para quando as coisas ruins acontecerem,
essa é a sua utilidade, que pode ser a solução para um incidente
grave, como bugs de aplicação, usuários mal-intencionados ou Links:
vulnerabilidades de acesso.
Toda a arquitetura e gestão de acesso diferenciado do AV Server HANNA, G. et al. Oracle® Audit Vault and Database Firewall Administrator's Guide.
entre auditor e DBA, bem como os recursos adicionais apresen- Release 12.1.2: Oracle Corporation, p. 1–278, 2015.
tados neste artigo, demonstram a maturidade do produto e os MOORE, S. et al. Oracle® Audit Vault and Database Firewall Installation Guide.
benefícios em médio prazo que o investimento nele proporciona. Release 12.1.2: Oracle Corporation, p. 1–38, 2015.
Ele é fundamental para ambientes de missão crítica em segurança,
HANNA, G. et al. Oracle® Audit Vault and Database Firewall Auditor’s Guide.
principalmente para aqueles que são baseados em Oracle Database,
Release 12.1.2: Oracle Corporation, p. 1–266, 2015.
como as áreas financeiras, comerciais, saúde e governo.

Edição 149 • SQL Magazine 21


rIOPS: determinando o
throughput no Oracle
Dimensionando o sistema de I/O

Este artigo é do tipo mentoring Cenário


saiba mais: www.devmedia.com.br/mentoring-saibamais Dimensionar um sistema de I/O é uma das partes fundamentais para
a implantação de um novo sistema, para o redimensionamento da
infraestrutura e para identificar possíveis gargalos no desempenho das
aplicações. Para atingir tais conceitos, é importante também conhecer

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

22 SQL Magazine • Edição 149


membros pertencentes a um determinado grupo, limitar a quanti- BOX 2. IOPS
dade de tempo de inatividade das sessões, utilização de diferentes Para ambientes Oracle RAC, deve-se somar os valores de IOPS e MBytes/s de todas as instâncias.
planos para um mesmo ambiente baseado nas cargas e picos do Para alcançar o IOPS e throughput desejados, não apenas os discos podem ser o fator
ambiente, entre outras. determinante, mas sim um conjunto. Tratando o assunto internamente, ou seja, no próprio banco
Neste artigo serão abordados alguns cenários e através de de dados, podemos atuar com otimizações de instruções SQL com o objetivo de melhorar o acesso
exemplos utilizando a procedure CALIBRATE_IO, conhecere- às leituras e configurar corretamente alguns parâmetros. Além disso, também nos deparamos
mos as configurações, as sintaxes, os métodos, os parâmetros com fatores externos como: o block device manager, multipathing driver, SCSI driver, HBA, System
e finalmente os resultados produzidos com uma projeção da Bus, Switch/iSCSI, Storage Array, disks e RAID. Portanto, quando avaliarmos o desempenho de I/O,
escalabilidade dos discos. devemos levar tudo isso em consideração.

BOX 1. Oracle RAT – Real Application Testing


BOX 3. RAID – Redundant Array of Independent Disks
Trata-se de uma option, que permite simular testes de carga reais do banco de dados. É composto
O RAID consiste em um conjunto de dois ou mais discos com o objetivo de tornar a arquitetura
por dois elementos, o Database Replay e o SQL Performance Analyzer. Através da captura de cargas
de discos mais rápida ou mais segura através de duas técnicas: a distribuição de dados (data
de trabalho e avaliação do impacto das alterações no sistema, o Oracle RAT auxilia na minimização
stripping) e o espelhamento (mirroring). Ambas as configurações podem ser utilizadas
de problemas de performance e instabilidades provenientes das mudanças.
isoladamente ou de forma conjunta.

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.

Edição 149 • SQL Magazine 23


rIOPS: determinando o throughput no Oracle

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.

Determinando o throughput com Oracle CALIBREATE_IO e BOX 4. Considerações CALIBRATE_IO

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 /

24 SQL Magazine • Edição 149


Parâmetros Descrição
disks Quantidade de discos físicos.
Tolerância máxima em milissegundos para acesso aos discos. Deve ser configurado um valor com base no SLA de sua aplicação. Para
max_latency
ambientes OLTP, um valor tolerável é abaixo de 10 ms.
max_iops Quantidade máxima de IOPS suportada pelo dispositivo de armazenamento.
max_mbps Throughput máximo em Mb/s suportado pelo dispositivo de armazenamento.
actual_lat Latência atual observada durante o teste.

Tabela 1. Parâmetros CALIBRATE_IO

A linha 01 define a configuração para exibir o output gerado $ cat /proc/sys/fs/aio-max-nr


pelo package DBMS_OUTPUT. Na linha 08, ocorre a execução da $ cat /proc/sys/fs/aio-nr
procedure com os parâmetros e variáveis declaradas nas linhas
anteriores. Já nas linhas 09 a 11 os resultados são apresentados. Execução do primeiro teste
Conforme dito anteriormente, a execução do CALIBRATE_IO
Pré-requisitos é formada de duas fases. A primeira realiza cargas de leitura
São necessárias as seguintes configurações antes de executarmos de pequenos blocos e, na segunda, cargas com blocos de 1 Mb.
os testes: A Figura 2 apresenta os resultados do nosso primeiro teste (dois
• usuário com privilégios sysdba; discos configurados em ASM).
• parâmetro timed_statistics configurado para TRUE;
• I/O assíncrono (parâmetro disk_asynch_io=true) para todos
os arquivos de dados. Em ambientes que utilizam ASM para
gerenciamento dos dados, essa configuração é default. Utilize a
instrução indicada na Listagem 4 e observe o output na Figura 1.

Listagem 4. Seleção ASYNCH_IO

1. COL NAME FORMAT A50


2. SELECT NAME,ASYNCH_IO
3. FROM V$DATAFILE F,V$IOSTAT_FILE I
4. WHERE F.FILE#=I.FILE_NO AND FILETYPE_NAME=’Data File’;

Figura 2. Primeira execução CALIBRATE_IO

Dependendo do ambiente analisado, o tempo de execução pode


variar conforme a performance do dispositivo de armazenamento,
número de arquivos de dados e tamanho da base de dados. Como
a execução da procedure pode ser demorada, a view V$IO_CA-
Figura 1. Resultado da seleção ASYNCH_IO LIBRATION_STATUS nos fornece informações sobre o status de
execução.
A linha 01 do código apresentado faz a formatação da coluna
NAME e, em seguida, efetua a consulta. Na linha 03 é definida Resultados
a origem dos dados da seleção e, por fim, o filtro é aplicado na Após a execução, além de visualizarmos os resultados pelo
seleção. output da procedure, podemos também listá-los através da view
Mesmo que a todos os arquivos de dados estejam configurados DBA_RSRC_IO_CALIBRATE, conforme Figura 3.
como ASYNC_ON, talvez você não consiga executar o teste. Isso Com base nessas informações, podemos entender que nesse
pode ocorrer devido ao número de slots assíncronos disponíveis cenário, o tempo do teste resultou em aproximadamente seis
no sistema. Se não houver, os arquivos não utilizarão essa fun- minutos, obtendo um throughput máximo de 48 Mbytes/s, 95
cionalidade e o erro ORA-56708 serão exibidos. requisições de I/O por segundo e latência de nove milissegun-
Para identificar a quantidade máxima de slots disponíveis e a dos, abaixo dos 10 configurados como parâmetro. A coluna
quantidade utilizada em sistemas operacionais Linux, basta você MAX_PMPBS representa as requisições de I/O de 1 Mb que são
executar, respectivamente: suportadas por um único processo.

Edição 149 • SQL Magazine 25


rIOPS: determinando o throughput no Oracle

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.

Testes c/ 2 discos max_iops Latency max_mbps


Oracle Orion
Se você deseja conhecer as caracterís-
Teste 1 95 9 48
ticas de seu sistema de armazenamento,
Teste 2 96 9 51 necessita realizar um benchmark para um
Teste 3 104 18 51 novo ambiente e identificar melhor seus
Teste 4 147 39 47 limites obtendo informações antes mesmo
de dimensioná-lo adequadamente, a ferra-
Tabela 2. Resultados obtidos com dois discos
menta Oracle Orion é ideal. Ela estima o
desempenho sem a necessidade de criar
Testes c/ 4 discos max_iops Latency max_mbps
um banco de dados, tendo sido desen-
Teste 1 79 11 46
volvida para simular cargas de trabalho
Teste 2 76 12 47
(requisições I/O) e também reproduzir os
Teste 3 74 26 50 mesmos efeitos do ASM.
Teste 4 102 38 48 Para cada tipo de carga de trabalho (que
Tabela 3. Resultados obtidos com quatro discos são Small Random I/O, Large Sequencial I/O,

26 SQL Magazine • Edição 149


Large Random I/O e Mixed Workloads), o Oracle Orion pode executar Listagem 5. Procedimentos para utilização do Oracle Orion
testes utilizando diferentes loads para medir o throughput, IOPS e 01 $ mkdir teste/
latência, assim como a CALIBRATE_IO. 02 $ vi …/teste/teste1.lun

a. teste1.lun:
1. /dev/oracleasm/disks/DISK1 -- > linha 1
2. /dev/oracleasm/disks/DISK2 -- > linha 2
3. … -- > linha n

Figura 6. Análise com dois discos

Figura 8. Execução Oracle Orion

Figura 7. Análise com quatro discos

Execução Figura 9. Arquivos gerados pela execução.


Nesse exemplo utilizaremos uma configuração similar ao pro-
cesso executado no CALIBRATE_IO (small blocks e large blocks). Sobre os parâmetros utilizados nesse comando, temos:
A ferramenta discutida nesse tópico possui inúmeras combinações • run simple: execução do teste em modo small random e large random
de execução com alto grau de customização. Para acesso à todas não simultâneos;
as configurações, ver seção Links. • testname: arquivo criado com o path dos discos utilizados no teste;
Embora não necessite de nenhuma base de dados para sua exe- • num_disks: quantidade de discos utilizados;
cução, é necessário que apenas os binários sejam instalados, pois • hugenotneeded: alocação de páginas regulares quando huge pages
seu aplicativo fica no $ORACLE_HOME/bin. O primeiro passo da não estão disponíveis.
configuração é criar um subdiretório para armazenamento dos
resultados e, nesse diretório, criar um arquivo com a listagem Os arquivos visualizados na Figura 9 nos fornecem informações
dos discos que fazem ou farão parte do sistema e que devem ser mais detalhadas dos testes e, como são do tipo .csv, podemos
analisados. Cada linha do arquivo deve corresponder à um disco utilizá-los para criar gráficos e melhor entendermos as projeções.
conforme exemplo da Listagem 5. O arquivo *summary* exibe as mesmas informações listadas no
A linha 01 cria o diretório teste e depois cria o arquivo teste1. output da execução. Sendo assim, com base na Figura 8, temos
lun utilizando o editor de texto vi. Em seguida, da linha a1 a como throughput máximo 43,74 Mbps e 184 IOPS, valores próximos
a3 temos um exemplo de configuração do arquivo teste1.lun. à execução da CALIBRATE_IO.
Após essas configurações, devemos executar o aplicativo orion, Neste artigo, investigamos o uso das ferramentas CALIBRA-
conforme evidenciado nas Figuras 8 e 9. É aconselhável que o TE_IO e Oracle Orion para produzir cargas de I/O compatíveis
procedimento a seguir seja executado em horários fora de pico com situações reais de utilização e avaliar a performance dos
(para não existir concorrência), permitindo que o resultado seja discos. Através de configurações simples e rápidas, conseguimos
mais confiável e assertivo: entender os processos e mensurar as características mais impor-
tantes do sistema de armazenamento, como a latência, throughput
$ORACLE_HOME/bin/orion -run simple -testname teste1 -num_disks 4 –hugenotneeded máximo e as requisições de leitura e escrita.

Edição 149 • SQL Magazine 27


rIOPS: determinando o throughput no Oracle

Com base nos cenários expostos, podemos compreender que o Autor


acréscimo de discos não representou ganho algum de performan-
Renato Rosa Peres
ce. Essa ideia vale para o ambiente em questão, pois os resultados
renato.r.peres@gmail.com
variam conforme as configurações de hardware e software de
Graduado em Análise de Sistemas e Tecnologia da Informação
cada ambiente. pela Fatec. Possui experiência como consultor em banco de
Embora os resultados apresentados por ambas as ferramentas dados Oracle, MySQL, Microsoft SQL Server, PostgreSQL e Weblogic Server.
tenham sido bem parecidos, a utilização do Oracle Orion pos- É certificado Oracle OCS e OCE.
sui mais vantagens por permitir execuções com maior nível de
configuração e, principalmente, por não necessitar de nenhuma
base de dados criada. Tais funcionalidades podem ser utilizadas Links:
de maneira antecipada para um setup adequado na criação de
Parâmetros Oracle Orion
um ambiente.
https://docs.oracle.com/cd/E11882_01/server.112/e41573/iodesign.htm#PFGRF95228

28 SQL Magazine • Edição 149


Arquitetura do SQL
Server Database Engine
Compreendendo e assimilando conceitos

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.

Edição 149 • SQL Magazine 29


Arquitetura do SQL Server Database Engine

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:

30 SQL Magazine • Edição 149


dados, como nome de demais arquivos, informações sobre objetos,
localização dos demais arquivos e objetos;
• Secundários: demais arquivos criados a partir do crescimento
do banco de dados. Possuem extensão .ndf, contêm apenas in-
formações/dados do usuário, como tabelas, procedures, dados.
Podem inclusive fazer parte de um segundo filegroup que não o
primário, estratégia geralmente considerada por administradores
afim de facilitar restaurações a partir de backups;
• LOG: filegroup exclusivo para arquivos de transaction log (pos-
sui extensão .ldf), armazenam todas as informações/dados utili-
zadas pelo usuário para realizar alguma operação. São essenciais
para a recuperação do banco de dados em caso de algum problema.

Todos os nomes de arquivos e localizações do mesmo são ar-


Figura 2. Visão geral da Etapa de Fluxo de Processo. Fonte: Microsoft
mazenados no arquivo .mdf do banco de dados e na base master
da instância. Ao se criar o arquivo, o mesmo deve possuir nome
Arquitetura de Log lógico único dentro do banco de dados, e físico único dentro do
Por definição, log é o arquivo que armazena toda e qualquer servidor/instância.
transação no banco de dados. O arquivo de transaction log (log Os arquivos podem possuir qualquer tamanho desejado pelo
de transação) torna possível qualquer reversão de alteração, se cliente, pode-se ainda definir um tamanho limite e criar uma
necessário. O arquivo de log armazena toda transação, sempre política de crescimento. Aqui está uma grande vantagem do SQL
verificando a quantidade de espaço disponível, assim mantendo Server, a fim de auxiliar na manutenção do banco de dados sem
a integridade das transações caso um rollback seja necessário intervenção humana, especialmente quando o administrador de
devido a algum erro ou cancelamento do processo por parte do banco de dados possui inúmeras instâncias para administrar.
usuário/administrador. Já os filegroups podem ser classificados em:
Assim, toma-se por regra que para cada transação, o dobro do • Primário: padrão do SQL Server ao se criar um banco de
espaço necessário é reservado e, em caso de sucesso, o mesmo dados. Possui o arquivo .mdf e demais informações sobre o
já é liberado para outra transação. As seguintes operações são banco de dados, tais como: tamanho dos arquivos, quantidade
registradas no arquivo de log: de arquivos e localização dos arquivos que compõem o banco
• O início e o término de cada transação; de dados;
• Toda modificação de dados (inserção, atualização ou exclusão). • Secundários: criados pelos administradores, sempre armaze-
Isso inclui mudanças por procedimentos armazenados do siste- nam dados/informações da aplicação e do usuário, não possuem
ma ou instruções DDL (linguagem de definição de dados) para informações estruturais do banco de dados.
qualquer tabela, inclusive tabelas do sistema;
• Toda extensão, locação ou desalocação de página; Arquitetura de paginação e extensão
• Criação ou remoção (drop/delete) de um objeto (tabela, índice,
procedure, função.). Páginas
Na questão armazenamento do SQL Server, tudo se resume
É considerada parte ativa do log da primeira transação que não a página (logicamente falando), embora essas páginas estejam
possui um commit ou rollback definido até sua última transação alocadas dentro dos arquivos .mdf ou .ndf. São nelas que são es-
não concluída. Essa janela é chamada de ‘log ativo’. Nenhuma parte critas e lidas as informações do banco de dados. São de tamanho
desse log deve ser perdida afim de termos uma completa recupe- fixo, 8 kb, e possuem uma numeração única para cada uma delas,
ração do banco de dados se necessário. O arquivo de transaction partindo de 0 e indo até n.
log (log de transação) é o responsável por manter a integridade dos Dentro dos 8 kb de cada página, é reservado um espaço de 96
dados no banco de dados, auxiliando a manter as regras ACID. bytes para o cabeçalho, que armazena informações de sistema
sobre a página, tais como o número e o tipo de página, a quan-
Arquitetura de Dados tidade de espaço livre e o ID de unidade de alocação do objeto
O SQL Server tem seu banco de dados formado por conjuntos que possui a página.
de arquivos, que pertencem a diferentes filegroups (grupos de Existem oito tipos diferentes de tipos de páginas, são eles:
arquivos) que ficam armazenados no sistema operacional. Estes • Dados: linhas contendo todos os dados, exceto dados text, ntext,
são únicos e pertencem somente a um banco de dados: image, nvarchar(max), varchar(max), varbinary(max) e xml, quando o
• Primário: filegroup padrão do SQL Server, possui o arquivo texto na linha é definido como ON;
.mdf que contém informações sobre toda estrutura do banco de • Índice: entradas de índice;

Edição 149 • SQL Magazine 31


Arquitetura do SQL Server Database Engine

• 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

32 SQL Magazine • Edição 149


do livro e localizar a página correspondente ao assunto. As duas O SQL Server é capaz de trabalhar com os modelos de armaze-
formas te levarão ao objetivo final, porém com o uso do índice namento OLTP (On-line Transaction Processing ou Processamento
você localiza o assunto desejado com menor esforço. de Transações em Tempo Real) e OLAP (On-line Analytical Pro-
O SQL Server utiliza, por padrão, a mesma estrutura de índices cessing ou Processamento Analítico On-line). Os sistemas OLTP
reconhecida como B-Tree (árvore binária). A mesma possui uma têm como principal finalidade dar integridade, consistência e
página raiz, com inúmeras páginas intermediárias e uma última boa performance nas operações de inclusão, exclusão e alteração
página para os nós folhas. No SQL Server existe quatro tipos de de dados. Os dados com os quais os sistemas OLTP trabalham
índices diferentes, que são: clusterizados, não clusterizados, XML são normalizados e armazenados em tabelas inter-relacionadas.
e espaciais. Os sistemas OLAP utilizam dados sem normalização, ou dados
• Índices clusterizados são ordenados conforme a chave do desnormalizados, o que permite a criação de estruturas multi-
cluster, fornecendo assim uma ordem de classificação para o dimensionais com o objetivo de oferecer boa performance na
armazenamento da tabela. Esta ordem de classificação não é a obtenção de informações.
ordem física dos dados e sim a classificação lógica das páginas Os dados no SQL Server são armazenados em páginas de dados
do índice. É possível definir somente um índice clusterizado de 8.192 bytes os quais podem ser usados para armazenar 8.060
por tabela, pois a mesma só pode ser ordenada de uma única bytes de dados, sendo que o cabeçalho ocupa 96 bytes. As pági-
maneira e uma única vez. Geralmente, utiliza-se na chave nas de dados são mantidas em uma estrutura conhecida como
primária da tabela visto que é o índice de maior velocidade de B-tree. Essa estrutura possui três níveis conhecidos como raiz,
retorno MS SQL Server. intermediário e folha. O FILL FACTOR ou fator de preenchimento
• Índices não clusterizados não classificam ordens e portando é é utilizado para ajustar o armazenamento de dados e desempenho
possível criar inúmeros índices nonclustered por tabela, tendo do índice. Quando se cria ou recria um índice, o fator de preen-
cada um no máximo 900 bytes na chave de índice e no máximo chimento é informado e determina a quantidade de espaço a ser
16 colunas. Ao percorrer um índice não clusterizado até seu nível preenchido com dados em cada página no nível folha. Para se
folha em busca do ponteiro para retornar os dados necessários, criar bons índices são necessários alguns fatores como, conhecer
o mesmo trata os seguintes casos: seus dados, conhecer sua carga de trabalho e conhecer como o
- Existe índice clusterizado na tabela, desta forma o ponteiro SQL Server trabalha.
aponta para a chave do cluster; A partir de agora, veremos como configurar o FILL FACTOR
- Não existe índice clusterizado na tabela, então o ponteiro do índice para obtenção de melhores resultados. Antes, porém, é
aponta para a linha de dados da tabela. necessário primeiro entender o básico sobre como os índices são
• Índices XML podem ser criados em colunas de tipo de dados organizados através do conceito da estrutura B-tree e seus níveis.
XML. Eles indexam todas as marcas, valores e caminhos através Ao tomar conhecimento dessas informações você estará mais apto
das instâncias XML na coluna e se beneficiam do desempenho para criar os índices corretos para sua carga de trabalho.
das consultas. Seu aplicativo pode se beneficiar de um índice XML
nas seguintes situações: B-tree
- Consultas em colunas XML são comuns em sua carga de O SQL Server utiliza a estrutura B-tree para construir e manter
trabalho. O custo da manutenção de índices XML durante a índices. Uma estrutura B-tree é composta por um nó raiz com
modificação de dados deve ser considerado; uma página de dados, uma ou mais páginas no nível intermedi-
- Seus valores XML são relativamente grandes e as partes ário (opcional) e uma ou mais páginas no nível folha (opcional).
recuperadas são relativamente pequenas. A construção de ín- Os dados no nível folha estão armazenados na ordem que foram
dices evita a análise de todos os dados em tempo de execução especificados na sua criação, todos os caminhos que partem do
e beneficia pesquisas de índice para processamento eficiente nó-raiz até o nível folha possuem comprimentos iguais. O número
de consultas; de linhas que uma página pode ter depende do tipo de dados das
- Índices XML se encaixam nas seguintes categorias: índice colunas que foram escolhidas para esse índice. Na Figura 3 temos
XML primário e índice XML secundário. a visão de uma página de dados.
Uma página de dados pode armazenar até 8.060 bytes de dados
O primeiro índice na coluna de tipo XML deve ser o índice ou 8kb. Um índice criado em uma coluna do tipo (inteiro) pode
XML primário. Usando o índice de XML primário, os seguintes armazenar 2.015 valores em uma única página. Os níveis raiz e in-
tipos de índices secundários podem ser considerados: PATH, termediário da B-tree são compostos pela primeira entrada de cada
VALUE e PROPERTY. Dependendo do tipo de consulta, esses página do nível abaixo, juntamente com um ponteiro para a página
índices secundários podem ajudar a melhorar o desempenho de onde o valor veio. Na Figura 4 temos um exemplo de B-tree.
de consultas.
• Um índice espacial é um tipo de índice estendido que permite Níveis da B-tree
indexar uma coluna espacial. Uma coluna espacial é aquela que A quantidade de níveis de um índice e a quantidade de páginas
contém tipo de dados espaciais, como geometria ou geografia. que um nível pode ter é determinada por um cálculo simples:

Edição 149 • SQL Magazine 33


Arquitetura do SQL Server Database Engine

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

34 SQL Magazine • Edição 149


saber onde encontrar esses dados, mesmo que elas não estejam Bom, e se ao invés de todo esse trabalho, ao organizar as pra-
sequencialmente em ordem. teleiras, ela deixasse 10 por cento de espaço livre para novos
O processo de divisão de páginas em si já é muito caro para o exemplares: Poderíamos simplesmente inserir o novo exemplar
sistema, pois, à medida que essas divisões ocorrem, fazem com na sua posição correta e reorganizar os demais no espaço livre
que a varredura dos dados se torne cada vez mais cara pelo fato que foi deixado na prateleira, reduzindo assim o esforço gasto na
dos dados não estarem mais ordenados fisicamente causando organização das prateleiras e é isso que o FILL FACTOR faz.
excessivos I/Os. Outro problema na divisão de páginas de dados A decisão de configurar o FILL FACTOR de um índice passa pelo
está na quantidade de espaço em branco deixado nas páginas entendimento de suas tabelas no banco de dados. Se sua tabela
após se dividirem. Como o nível folha é a maior estrutura de um recebe muitas inserções, atualizações e poucas consultas, o ideal é
índice, ela está mais propensa a se fragmentar, portanto, ao criar configurar um valor de fator de preenchimento baixo, pois assim
um índice determinando o quanto de espaço em branco deve deixará espaço para expansões futuras. Agora se a sua tabela é
existir na página para novas inserções e atualizações, poderá utilizada mais para consulta e quase não recebe nem atualiza os
reduzir as divisões de páginas e manter a sua tabela intacta por dados, o ideal é que se configure um valor de fator de preenchi-
mais tempo. É possível fazer isso informando um valor correto mento igual a cem por cento. O fator de preenchimento é aplicado
do fator de preenchimento para seu índice. no nível folha da estrutura de índice, para que se aplique ao nível
raiz e intermediário a opção PAD_INDEX deverá ser especificada.
Fragmentação Um fator de preenchimento bem configurado é capaz de reduzir
Fragmentação é um termo geral usado para descrever os efeitos a ocorrência de divisões de páginas e ainda consegue disponibi-
causados nos índices pela modificação de dados. Existem dois ti- lizar espaço nos índices para permitir expansões futuras, sendo
pos de fragmentação: internas e externas. A fragmentação interna esse espaço nas páginas de dados de um índice clustered ou em
ocorre quando há espaços vazios nas páginas dos índices, tanto uma página de índice caso seja um nonclustered.
no nível folha quanto nos demais níveis e é causada por divisões Deixar um fator de preenchimento cem por cento nem sempre
de páginas e operações de exclusão que deixam a página sem é bom. Se você preenche as páginas completamente e mais tarde
a sua total capacidade. Indica que o índice está ocupando mais precisa inserir novos dados nessa página, eles não irão caber.
espaço do que o necessário, causando aumento do uso de espaço Para preservar a estrutura do índice e organizar os dados, o SQL
em disco, mais páginas para ler os dados e mais memória. Server terá que realizar algumas tarefas caras para o sistema tais
A fragmentação externa ocorre quando a página que compõem como, adicionar uma nova página, mover metade do conteúdo
o nível folha do índice cluster não está mais ordenada de forma para a nova página, atualizar a página antiga com um ponteiro
eficiente e é causada pelas divisões de páginas, reduzindo a efi- para a nova e isso gera muito trabalho, causando excesso de I/O
ciência da busca ordenada. e registros nos logs.
Por outro lado, deixar um fator de preenchimento diferente de
FILL FACTOR cem por cento também pode ser prejudicial, uma vez que seus
No momento que se cria ou recria um índice, você tem a possi- dados serão espalhados por mais páginas e o SQL Server terá que
bilidade de configurar uma opção conhecida como FILL FACTOR ler mais páginas na memória. Assim você desperdiça espaço em
ou fator de preenchimento. Ela indica qual a porcentagem que a cache que estão apenas vazios.
página de dados no nível folha de um índice poderá ser preen- Isso pode ser um grande desperdício, pois nem todas as divisões
chida com dados e quanto ficará à disposição para expansão. Por de páginas são causadas por índices ruins. Por exemplo, um ín-
exemplo, se especificarmos um valor de fator de preenchimento dice em um campo inteiro com valor IDENTITY com dados que
igual a 80, significa que 20 por cento de cada página ficará vazio, raramente são excluídos e atualizados, você pode configurar o
ficando à disposição para futuras expansões. Vale ressaltar que fator de preenchimento cem por cento, pois os dados serão sempre
o espaço vazio fica espalhado entre as linhas dos dados e não ao inseridos no final do índice, assim sendo, as páginas adicionadas
final da página. O valor do fator de preenchimento pode ser uma não são consideradas divisões de páginas ruins.
porcentagem de 1 a 100 e o valor padrão do servidor é zero, onde Definir o fator de preenchimento diferente do padrão diminui
zero significa que a página de dados no nível folha será preenchida as linhas por páginas do índice, aumentando assim o número de
por completo. páginas que devem ser lidos. Segundo o Books Online do SQL Ser-
Façamos uma analogia, imagine uma biblioteca onde as prate- ver, a perda de desempenho é o dobro do fator de preenchimento
leiras com os livros estão ordenados alfabeticamente pelo nome escolhido. Isso significa que se for definido o valor de cinquenta
do autor e estão completamente cheias. Se a biblioteca adquire por cento para o fator de preenchimento, o SQL Server irá levar
um novo exemplar cujo nome do autor comece com a letra “C”, o dobro de leituras para obter os dados.
então a funcionária teria que retirar todos os livros da prateleira O fator de preenchimento não se aplica em uma heap. Essa con-
para reorganizá-los e teria que fazer isso com todas as demais figuração somente se aplica em índices, não em todas as tabelas.
prateleiras até que finalmente colocaria o último exemplar na Se você tem uma tabela que não tem um índice cluster, então
nova prateleira criada. Parece muito trabalhoso não? não poderá informar um fator de preenchimento, nem mesmo se

Edição 149 • SQL Magazine 35


Arquitetura do SQL Server Database Engine

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.

Figura 6. Configuração de FILL FACTOR pelo design da tabela

Figura 5. Configuração padrão de FILL FACTOR por servidor

Também pelo SSMS podemos configurar o fator de preenchi-


mento através da opção “design” da tabela e escolhendo a opção
Figura 7. Configuração individual de FILL FACTOR pela propriedade do índice
de gerenciamento de índices e chaves conforme nos mostra a
Figura 6.
Outra opção, também no SSMS, é configurarmos o fator de preen- Para expor e entender as estruturas de um índice mais detalha-
chimento de cada índice individualmente pelas suas propriedades damente, use a DMV dm_db_index_physical_stats. Ela é uma das
conforme nos mostra a Figura 7. funções mais úteis para obtermos um diagnóstico da estrutura
Utilizando T-SQL ou Transact-SQL, podemos configurar o fator da sua tabela.
de preenchimento na criação e recriação do índice, conforme O SQL Server Database Engine possui uma arquitetura muito
podemos ver no código a seguir, que recria um índice com um eficaz e versátil. Como apresentado no artigo, ela é composta por
determinado fator de preenchimento informado, e na Listagem 1. duas etapas: fluxo de processo e fluxo de funcionamento. Cada
uma com suas particularidades, porém havendo uma grande
ALTER INDEX [Index Name] ON [dbo].[Table Name] REBUILD PARTITION = ALL interação, a fim de atingir um melhor desempenho, integridade e
WITH ( FILLFACTOR = 90 ) segurança. Ao aprofundar as análises nesses fluxos, conhecemos

36 SQL Magazine • Edição 149


também outros blocos com diferentes mecânicas, funcionando de de sistema apenas e os demais (secundários) com dados de usuá-
maneira integrada aos demais. rios. Lembrando que a quantidade e diversificação de filegroups
Grande parte do desempenho de um banco de dados é obtida dependem da estratégia de backup escolhida pelo administrador
através da estrutura de memória, extensões e paginação as quais do banco de dados.
estão extremamente conectadas. A página tem seu tamanho defi- O SQL Server Database Engine tem manuseio facilitado devido
nido e se junta a outras páginas tornando-se uma extensão. Essa a sua arquitetura, trazendo com ele grande desempenho e dis-
pode ser mista ou uniforme, dependendo apenas se as demais pá- ponibilidade. A sua integridade (lógica), assegurada pelo log de
ginas fazem parte de mais objetos ou compõem apenas um único. transação, o qual armazena os valores antes e depois da transação,
A arquitetura de memória foi desenvolvida para poder abrigar assim com o próprio comando executado, permite recuperar fa-
o máximo de informação em memória, minimizando o acesso cilmente o banco de ‘crashes’ eventuais, além de ser fundamental
em disco, o qual geralmente acaba sendo o gargalo de qualquer para garantir as propriedades ACID em casos de rollback.
processo. Além disso, a arquitetura de memória possui um buffer
de instruções e comandos. Nesse caso, se alguma instrução ou
operação já tiver sido realizada previamente, essa mesma está no Autor
buffer de memória e não há necessidade de realizar todo o fluxo
Henrique Ribeiro
de processo novamente, aproveitando apenas o plano de execução
henriqueribeiro91@yahoo.com.br
diretamente do buffer.
https://sqlissues.wordpress.com/
Somando-se a toda essa estrutura do fluxo de processo, na etapa DBA MS SQL Server desde 2010, certificações Microsoft em
de funcionamento temos os índices que trazem muita velocida- nível de Windows Server e SQL Server.
de no retorno das instruções e comandos informados. Com os
diferentes estilos de índice que o SQL Server Database Engine
suporta, é possível cobrir as necessidades que a grande maioria Autor
das aplicações tem, desde dados espaciais, colunas em xml e Roger Gontijo Resende
colunas com textos/números. gontijo.roger@gmail.com
Sua estrutura de dados (filegroups) auxilia muito no gerencia- www.estudandosql.blogspot.com.br
mento dos arquivos de dados, visto que o mdf possui informações Bacharel em Sistemas de Informação, possui um MBA em
de estrutura, localizações e tamanhos, além de poder possuir Gestão de T.I pela faculdade Pitágoras (Unidade Belo Horizonte) e cer-
dados de usuários. A criação de diversos filegroups é aconselhada, tificação MCP, MTA, trabalha com banco de dados SQL Server na Lifesys
Informática desde 2011.
mantendo o filegroup padrão (primário/primary) com informações

Edição 149 • SQL Magazine 37


Descoberta de
conhecimento utilizando
o processo KDD
Um estudo de caso em uma base de dados de
pizzaria

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.

38 SQL Magazine • Edição 149


Processos de extração do conhecimento - KDD que farão parte da análise. Normalmente a escolha dos dados fica
O processo de KDD é composto por cinco fases: seleção a critério de um especialista do domínio. O processo de seleção é
de dados, pré-processamento, transformação, mineração e in- bastante complexo, uma vez que os dados podem vir de uma série
terpretação/avaliação. Trata-se de um processo iterativo, pois de diferentes fontes e quase sempre possuem diversos formatos.
poderá ser repetido quantas vezes for necessário na busca de As fontes as quais os dados se originam podem ser classificadas
melhores resultados, mas também é considerado um processo como internas e externas. As fontes internas são formadas pelas
interativo devido à participação de profissionais como o usuário informações coletadas e armazenadas ao longo do tempo na base
final, o especialista do domínio e o analista do domínio. Esse de dados operacional, já as fontes externas normalmente são in-
processo é aplicado na identificação de padrões compreensíveis, formações que não estão incorporadas ao sistema, compostas por
válidos, novos e potencialmente úteis a partir de grandes bases outros tipos de dados, como documentos, relatórios e informações
de dados. Embora cada fase do processo de KDD seja indepen- oriundas, por exemplo, de web sites da internet.
dente, podendo ser tratada individualmente, existe uma forte A seleção de dados é a primeira etapa do processo de KDD e tem
dependência entre elas. Assim, para que seja feita uma correta por objetivo reunir os dados que serão trabalhados numa única
transformação dos dados, é necessário ter uma base de dados base. Essas informações serão captadas de diferentes fontes, tais
corretamente modelada. Da mesma maneira, para que os dados como: listas de pedidos de clientes, bancos de dados, planilhas
sejam devidamente preparados, é necessário ter como objetivo de controle, entre outros. Após a criação do conjunto de dados
a aplicação de ferramentas de extração do conhecimento, como “modelo”, as informações estarão aptas a serem submetidas à
um algoritmo da mineração de dados para atingir o objetivo próxima fase do processo de extração do conhecimento.
pretendido. Na Figura 1 são representadas as fases do processo Normalmente os dados encontram-se organizados em bases de
KDD e as próximas seções têm o objetivo de apresentar de forma dados transacionais, que frequentemente sofrem alterações devido
simplificada o objetivo de cada uma delas. a atualizações constantes e é bastante comum que os dados sejam
armazenados em uma única tabela.A junção dos dados em uma
única tabela pode ocorrer de duas formas:
a) Junção direta: todos os dados são incluídos em uma única
tabela, sem preocupação com a análise crítica quanto a possíveis
deformidades, o que pode afetar no resultado final da mineração
de dados;
b) Junção orientada: nessa forma o especialista no domínio da
Figura 1. Fases do processo de KDD. Fonte: FAYYAD (2006) aplicação em conjunto com o especialista em KDD definem quais
atributos e registros podem de fato ser úteis para o processo de
Nas etapas operacionais do processo de KDD é importante extração de conhecimento.
considerar que as variáveis do problema (também chamadas de
atributos) podem ser classificadas sob dois aspectos distintos: A seleção de dados é a seleção do conjunto de dados necessários
quanto à representação de seus valores (tipo de dados) e quanto ao entendimento do problema que se busca uma solução e sobre o
à natureza da informação (tipo de variável). Os tipos de dados qual o processo de descobrimento de conhecimento será aplicado
indicam a forma como estão armazenados e os tipos de variáveis contendo os registros e suas variáveis, conhecidas também como
indicam a forma com que a informação deve ser interpretada. características ou atributos.
As variáveis podem ser classificadas como:
• Nominais ou Categóricas: são responsáveis por nomear ou rotular Pré-processamento e Limpeza dos dados
objetos. Os valores das variáveis nominais podem ser represen- O pré-processamento é a etapa do processo de extração do
tados por tipos de dados alfanuméricos; conhecimento em que a limpeza dos dados deve ocorrer. Ela en-
• Discretas: são semelhantes às variáveis nominais, mas os valores volve a verificação da consistência das informações, a correção de
que elas podem assumir possuem um ordenamento, por exemplo, possíveis erros e o preenchimento ou eliminação de valores des-
o dia da semana, no qual “sábado” vem após a “sexta-feira” e antes conhecidos, redundantes ou não pertencentes ao domínio. Nessa
de “domingo” e assim sucessivamente. fase também são utilizados métodos de redução para diminuir
• Continuas: são variáveis cujos valores tem uma relação de ordem o número de variáveis envolvidas no processo, objetivando com
entre eles e podem ser finitos ou infinitos, como renda ou idade. isso melhorar o desempenho do algoritmo de análise.
Normalmente são representados por tipos numéricos. É no pré-processamento que se qualifica e determina a eficiência
dos algoritmos de mineração, sendo uma etapa muito importante,
Seleção dos dados porque o resultado final depende da qualidade dos dados sele-
Nessa fase é feita a seleção dos dados alvos, podendo ser gerados cionados. Essa etapa compreende a preparação das informações
subconjuntos dessas informações. Nessa etapa é definida a base da base de dados. Normalmente os dados apresentam problemas
de dados a ser trabalhada que contem todas as possíveis variáveis como informações ausentes, errôneas, grandes desproporções

Edição 149 • SQL Magazine 39


Descoberta de conhecimento utilizando o processo 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.

40 SQL Magazine • Edição 149


O objetivo principal é maximizar sua similaridade. A clusteriza- plo, altura, idade. A qualitativa mede a qualidade, por exemplo,
ção pode ser definida como uma tarefa básica da mineração de médio, superior.
dados que auxilia o usuário a realizar agrupamentos naturais
de registros. Aplicação do processo de KDD na base de dados de uma Pizzaria
Esta seção apresenta os procedimentos necessários para a
A fase da mineração de dados também pode ser definida como aplicação prática do processo KDD sobre a base de dados de
uma sequência de etapas dentro do processo de extração do conhe- uma pizzaria, abordando cálculos estatísticos de distribuição de
cimento, que pode envolver repedidas iterações da aplicação de frequência. A base de dados da pizzaria foi armazenada em uma
determinado algoritmo com o objetivo de extrair padrões de dados. planilha do Excel chamada de Pedidos.xlsx.

Interpretação e Avaliação dos dados Seleção da base de dados


Essa etapa deve ser realizada ao final do processamento de Os dados da pizzaria submetidos ao processo de extração do
cada método do processo KDD. Nela os resultados devem ser conhecimento foram coletados através dos pedidos de pizza re-
confrontados com as expectativas definidas inicialmente e os cebidos de clientes entre os meses de outubro de 2011 e fevereiro
padrões encontrados na fase da mineração de dados devem ser de 2012, esses dados foram somente armazenados na planilha
validados a partir da interpretação e avaliação. É importante que Pedidos, não se preocupando com relação à formatação das infor-
essas análises sejam feitas com a participação de todos os envol- mações inseridas. A cada novo pedido recebido foram registradas
vidos no processo de extração do conhecimento, por exemplo, informações, tais como o nome do cliente, data do pedido, hora
para que o analista tenha condições de avaliar se foi descoberto do pedido, endereço da entrega, telefone para contato, tipo de
conhecimento relevante ou não é importante a participação do entrega, valor da pizza, valor total, hora da entrega e tempo de
especialista do domínio. entrega, entre outras informações, formando dessa maneira a
A interpretação e/ou avaliação mostra os padrões encontrados base de dados.
nas etapas anteriores. Consiste na última etapa do processo KDD,
quando é avaliado o conhecimento extraído das bases de dados Pré-processamento da base de dados da pizzaria
e de acordo com esse conhecimento será possível definir estraté- Nessa fase, a planilha na qual os dados foram gravados foi
gias para tomadas de decisões. No entanto para que se alcance a nomeada para Pedidos de Clientes, e as informações contidas
confiabilidade desejada é importante que o resultado seja claro e nela foram formatadas e organizadas. Os dados da base foram
compreensível para os tomadores de decisão. Caso os resultados classificados em ordem crescente por número do pedido. Em todas
não sejam satisfatórios, é necessário repetir as etapas anteriores as informações foram aplicadas a fonte Calibri e o tamanho de
do processo KDD. fonte 11. Além disso, dados incompletos foram eliminados, bem
como as informações errôneas, e os valores relativos a preços
Estatística na extração de conhecimento foram convertidos para o formato de moeda, padronizando a
Estatística é uma ciência exata que auxilia os analistas na coleta, planilha de dados.
organização, análise e apresentação dos dados. Trata de parâ-
metros extraídos de uma população de dados, tais como média Transformação dos dados
ou desvio padrão. Com as técnicas oferecidas pela estatística é Com os dados organizados na etapa anterior, os valores que
possível extrair informação de dados para obter uma melhor compõem a data do pedido, hora do pedido e valor total da pi-
compreensão dos mesmos. Com os dados de uma base de dados zza foram separados, sendo que cada valor foi colocado em uma
devidamente organizados, procura-se agrupá-los e reduzi-los, na coluna, conforme é mostrado nas seções a seguir, tornando os
forma de amostra, com o objetivo de entregar técnicas e cálculos dados aptos a receberem a aplicação do método de distribuição
convenientes para tirar conclusões acerca de uma população de de frequência.
dados. As técnicas de mineração de dados têm grandes ligações
com as técnicas estatísticas, pois as usam para realizar a desco- Mineração de dados com distribuição de frequência
berta de padrões, calcular aproximações, médias, taxas de erros A distribuição de frequência é uma sequência de valores que
e desvios. Alguns conceitos importantes de ser conhecidos no uma variável pode assumir em uma amostra. É normalmente uma
contexto deste artigo são: lista, ordenada por quantidades ou por classes, que apresenta o
• População: é qualquer conjunto de pessoas ou objetos com uma número de vezes que um valor aparece na amostra. Para traba-
característica comum que se deseja medir; lhar com uma amostra grande ou quando as variáveis podem
• Amostra: refere-se a qualquer subconjunto de uma população; ter valores contínuos é recomendável organizar os dados em
• Rol: ordenação dos dados brutos, independente da ordem de distribuições de frequência.
sua classificação; A distribuição de frequência é um método que agrupa dados
• Variável: pode ser classificada em quantitativa ou qualitativa. A em classes de modo a fornecer a quantidade ou percentagem de
variável quantitativa é aquela que mede a quantidade, por exem- dados em cada classe.

Edição 149 • SQL Magazine 41


Descoberta de conhecimento utilizando o processo KDD

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.

Descrição dos cálculos dos elementos da


Figura 2. Separação dos valores da coluna Data do Pedido
distribuição de frequência sobre o dia
do pedido

Cálculo do Número de Classes


Para calcular o Número de Classes,
representados na Figura 4, foi aplicada
a fórmula de Sturges:=1+ 3,3 . log(2272) =
14,43. O número de classes encontrado com
a aplicação da fórmula de Sturges foi 14,43.
Como o cálculo foi realizado sobre a data
do pedido e cada mês tem 30 dias, foram
necessárias apenas 11 classes.
Figura 3. Planilha DF Data do Pedido

42 SQL Magazine • Edição 149


Figura 6. Frequência simples da planilha DF Data do Pedido
Figura 4. Número de classes da planilha DF Data do Pedido

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.

Figura 7. Ponto médio da planilha DF Data do Pedido

Figura 5. Amplitude do intervalo da planilha DF Data do Pedido Cálculo da Frequência Acumulada


A frequência acumulada (Fi) é a soma dos valores da frequência
Frequência Simples simples (fi). Por exemplo, foi somado o valor 95 da primeira classe
Após a determinação das classes e dos respectivos intervalos mais o valor 276 da segunda classe, obtendo o resultado 371. Em
é necessário fazer o cálculo da frequência simples dos pedidos seguida, foi somando o resultado 371 mais o valor da frequência
realizados dentro de cada intervalo. A frequência simples repre- simples da próxima classe, e nessa ordem até a última classe.
senta a quantidade absoluta de pedidos realizados dentro de cada
intervalo, logo serve para claramente identificar quantos pedidos Cálculo da Frequência Relativa (Fr)
foram feitos para aquele intervalo. Para encontrar a frequência relativa (Fr), foram divididos
A frequência simples (fi), representada na Figura 6, foi encontra- os valores de cada classe da frequência simples pelo total,
da com a contagem dos elementos em cada intervalo. Por exemplo, exemplo 95/2272 =0,04181338. Todos os valores da frequência
entre o número 1 e o número 3 da amplitude do intervalo existem relativa foram colocados em porcentagens, conforme representa
95 pedidos de pizza recebidos. a Figura 8.

Edição 149 • SQL Magazine 43


Descoberta de conhecimento utilizando o processo KDD

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.

Figura 9. Separação dos valores da coluna Hora do Pedido

44 SQL Magazine • Edição 149


Figura 10. Coluna Total Valores Fixos

Definir estratégias bem planejadas pode ser um diferencial Autor


significativo na hora de conquistar novos clientes e mercados
José Adair Fabricio
ou na criação e lançamentos de novos produtos. Com base nos Graduando em Ciência da Computação na Universidade do
resultados da planilha de cálculos da distribuição de frequência, Contestado no campus de Porto União - SC. Já atuou como
podemos concluir que os clientes têm tendência a comprarem professor de Informática, Assistente Técnico em Informática e
pizza nos primeiros dias de cada mês, conforme os cálculos apon- atualmente trabalha com Suporte à Tecnologia da Informação.
taram, mais especificamente entre os dias 03 e 06 de cada mês, o
que nos leva a relacionar as compras efetuadas nesses dias com Autor
os pagamentos que normalmente são feitos até o quinto dia útil.
Ainda de acordo com os resultados obtidos, aproximadamente Heitor Murilo Gomes
47% dos pedidos de pizza aconteceram no intervalo de horas que Doutor em Informática pela PUCPR. Tem experiência na área de
ciência da computação com ênfase em Inteligência Artificial,
compreendem 19h e 21h. Com relação a valores, as combinações
especialmente na área de mineração de dados e aprendizagem
que mais se destacaram foram combinações com valores de pizza
de máquina. Atualmente trabalha como pesquisar de pós-doutorado no
entre R$ 29,00 e 32,00. instituto Télécom ParisTech da Université Paris Saclay, Paris - França.
Este artigo procurou apresentar técnicas que pudessem contri-
buir para o crescimento e/ou aperfeiçoamento das estratégias de
marketings comerciais, usando como exemplo a base de dados de Referências e Links:
uma pizzaria. As técnicas aqui apresentadas poderão ser aplicadas
MACEDO, DAYANA CARLA DE; MATOS, SIMONE NASSER. Extração de Conhecimento Atra-
em outras bases de dados de outros segmentos comerciais. vés da Mineração de dados. Revista de Engenharia e Tecnologia, UTFPR/ UEPG, 2010.

GOLDSCHMIDT, RONALDO; PASSOS, EMMANUEL. Data Mining Um Guia Prática, 2005.


Autor
CASTANHEIRA, LUCIANA GOMES. Aplicação de Técnicas de Mineração de Dados em
Jones Granatyr
Problemas de Classificação de Padrões, 2008.
Doutorando em Informática bolsista CAPES e Mestre em Ciência
da Computação bolsista CNPq, ambos na área de Inteligência SILVA FILHO, LUIZ ALBERTO. Mineração de regras de associação utilizando KDD e
Artificial. É fundador do portal IA Expert e trabalha em projetos KDT: uma aplicação em segurança pública. 2009.
de pesquisa relacionados a área de Inteligência Artificial, tais como
Sistemas Especialistas, Mineração de Dados, Mineração de Textos e Martins, Matusalém Viera. Vídeos Aulas.
Sistemas Multiagente. http://www.professormatusalem.com/video-aulas/aula-28-cap-5-distribuicao-de-
-frequencia-com-intervalo-exemplo-2
Guimarães, Inácio Andruski. Estatística.
http://unesav.com.br/ckfinder/userfiles/files/Apostila%20de%20Estatistica.pdf

Edição 149 • SQL Magazine 45


Descoberta de conhecimento utilizando o processo KDD

46 SQL Magazine • Edição 149

Вам также может понравиться