Академический Документы
Профессиональный Документы
Культура Документы
"ii>V>i
Modelagem
i?`iL>>Vi>`
Projeto/
Experimente o
diferencial FairCom:
Tecnologia de banco
de dados flexvel,
licenciamento flexvel
U
>`>i>V>
`iKVV>>
`i>
U 1V`]i
>>`ii>
i>V>
U 1i>*-+i-
C
>i>ii
M
Y U >/
"
>`i
CM
i`>`iiViV>i
vii>>>i`i>i
Software
Eng. de
MY
CY
`i`ii}V
CMY
U -`i`iii}?
K
U -ijVV`i
i}ii>>i}ii
eu
s
>ii-}?Uv>VVUnn
2010 FairCom Corporation
Modelagem
Desenvolvimento
22 Aplicao Web com ASP.NET e PostgreSQL
[ Rafael Silva]
Mo na Massa
34 Implementando uma estratgia de backup no SQL Server 2008
[ Lucas Souza ]
Ol, eu sou o DevMan! Desta
Mo na Massa
42 MySQL Performance Diagnostics & Tuning - Parte 1 pgina em diante, eu estarei
[ Ricardo Portilho Proni ] lhe ajudando a compreender
com ainda mais facilidade o
contedo desta edio. Ser
Expert
48 Explain plan: Desvendando planos de execuo Parte 3
um prazer contar com sua
[ Reinaldo Tetsuo Katahira]
companhia! Confira abaixo o
que teremos nesta revista:
Mo na Massa
58 Desvendando o Automatic Storage Management - Parte 6
[ Ricardo Rezende]
Software
Eng. de
Vdeos
2 2) Funes Case e else - Curso PostgreSQL
Nesta vdeo aula ser mostrado como trabalhar com case em uma funo utilizando a linguagem SQL. Depois de comentada esta ideia desenvolvido um
exemplo simples para relembrar toda a lgica e objetivo do exemplo. Posteriormente a ideia do case adicionada a uma funo. O objetivo desta funo
informar um valor, neste caso a sigla de um estado, e a funo retornar por extenso o nome da mesma. No final mostrado o mesmo exemplo, mais
trabalhando com valor do tipo integer. Nestes exemplos tambm mostrado o uso do ELSE.
Gostou das vdeo aulas? O portal www.devmedia.com.br possui mais de 2 mil vdeo aulas e dezenas de cursos online sobre desenvolvimento de
software! Agora voc pode comprar as vdeo aulas que preferir e fazer sua prpria combinao de vdeos! Saiba mais em www.devmedia.com.br/creditos
Feedback
eu D seu feedback sobre esta edio!
s
D
A .NET Magazine tem que ser feita ao seu gosto. Para isso, precisamos saber o que voc, leitor, acha da revista!
sobre e
D seu voto sobre esta edio, artigo por artigo, atravs do link:
www.devmedia.com.br/sqlmagazine/feedback
s
ta
Para votar, voc vai precisar do cdigo de banca desta edio, que : pterra
edio
A
s empresas de desenvolvimento de software tm evoludo constante-
mente. Muitas delas devem isto s novas e modernas metodologias geis
que defendem a construo do software de maneira incremental e itera-
tiva. Entretanto, disponibilizar sistemas de informao com qualidade em ciclos
cada vez menores, ainda uma misso desafiadora para muitas delas. Isto porque,
preciso garantir que a cada entrega, o sistema no perder as suas funcionalidades
Ano 7 - 81 Edio 2010 - ISSN 1677918-5 - Impresso no Brasil e continuar sem erros. Alm do mais, estas metodologias no prevem a mesma
iteratividade para o banco de dados. Para finalizar, algumas destas empresas ainda
utilizam bancos de dados legados e no migram para sistemas mais novos por di-
Corpo Editorial
Atendimento ao Leitor versos motivos, dentre eles:
Editor Geral A DevMedia conta com um departamento exclusivo Complexidade;
Rodrigo Oliveira Spnola para o atendimento ao leitor. Se voc tiver algum Alto custo;
rodrigo.devmedia@gmail.com problema no recebimento do seu exemplar ou
Mudana de cultura da empresa;
Sub Editores precisar de algum esclarecimento sobre assinaturas,
Falta de conhecimento dos desenvolvedores;
Arilo Cludio Dias Neto, Eduardo Oliveira Spnola exemplares anteriores, endereo de bancas de
jornal, entre outros, entre em contato com: Mudanas de paradigmas dos DBAs.
e Ricardo Rezende
Assinatura
Resumo DevMan
mais que ntido nos dias de hoje
que os sistemas computacionais
que esto sendo desenvolvidos so De que se trata o artigo:
cada vez mais complexos e cada vez mais Este artigo descreve atravs de um estudo de caso de uma escola de karat uma estratgia para mode-
envolvem um volume extenso de dados lagem incremental de dados em um sistema de informao, apresentando a diviso do escopo do sistema
a serem persistidos. Como estratgias de em iteraes, e ento evoluindo o esquema de dados a cada nova iterao desenvolvida.
desenvolvimento de software que tm
sido aplicadas cada vez mais no mercado, Para que serve:
esto as metodologias incrementais, onde Para apoiar analistas de sistema e DBAs que precisam desenvolver sistemas de informao baseados
o princpio central dividir o escopo do em banco de dados usando uma metodologia incremental para desenvolvimento de software, onde
sistema a ser desenvolvido em partes me- necessrio dividir no apenas o que implementar, mas tambm a diviso da modelagem dos dados nas
nores, como mdulos, e ento trabalhar o diferentes iteraes do sistema.
desenvolvimento em diferentes iteraes,
cada uma visando o desenvolvimento de Em que situao o tema til:
uma parte (ou mdulo) identificada para A utilizao de uma estratgia incremental algo mais que constante no dia-a-dia do desenvolvimento
o sistema. de sistemas computacionais, e normalmente as abordagens que lidam com estes aspectos focam exclusiva-
As abordagens descritas em livro e artigos mente nas atividades de programao e gerenciamento de projetos. Neste artigo, o foco foi na modelagem
normalmente focam na diviso do sistema de dados, mostrando como esta impactada por esta estratgia, e ainda apresentando a aplicao de
olhando para seu cdigo ou olhando para uma estratgia de modelagem incremental de dados para um estudo de caso.
questes relacionadas ao gerenciamento
do projeto. Porm, precisamos atentar
que essas divises impactam tambm na requisitos iniciais e a partir de ento a desenvolvimento iterativo ou em cascata
modelagem dos dados que fazem parte do realizada a modelagem dos dados de forma ambos so estratgias de retrabalho. A
escopo do sistema a ser desenvolvido, ou incremental, iterao a iterao, prevendo alternativa ao desenvolvimento incremen-
seja, precisamos partir de um modelo de ainda atividades de ajustes no modelo de tal desenvolver todo o sistema com uma
dados inicial e a cada nova iterao, evolu- dados aps mudanas nos requisitos do integrao nica.
lo com as novas informaes que precisam sistema. A ideia se assemelha introduo O desenvolvimento iterativo uma
ser tratadas considerando o domnio da de agilidade no processo de modelagem dos estratgia de planejamento de retrabalho
iterao a ser desenvolvida. Alm disso, o dados, seguindo as diretrizes de mtodos em que o tempo de reviso e melhorias de
desenvolvimento incremental de software geis de desenvolvimento de software. partes do sistema pr-definido. Isto no
possui como caracterstica interessante a Este artigo foi baseado no artigo Agile/ pressupe desenvolvimento incremental,
possibilidade de entregar o sistema aos Evolutionary Data Modeling: From Domain mas funciona muito bem com ele. Uma
seus usurios em partes, de forma a obter Modeling to Physical Modeling escrito por diferena tpica que a sada de um in-
um feedback constante sobre o sistema em Scott Ambler em uma conferncia inter- cremento no necessariamente assunto
desenvolvimento, o que pode resultar em nacional de Modelagem gil de Banco de um refinamento futuro, e seu teste ou
mudanas constantes nos requisitos identi- de Dados, adaptado pelo autor em alguns retorno do usurio no utilizado como
ficados ao longo do projeto. Tais mudanas tpicos. entrada para planos de reviso ou especi-
tambm podem afetar o modelo de dados ficaes para incrementos sucessivos. Ao
da aplicao, e isso precisa ser tratado o Desenvolvimento Iterativo e Incremental contrrio, a sada de uma iterao exa-
quanto antes para evitar a propagao de Desenvolvimento Incremental uma es- minada para modificao, e especialmente
defeitos ao longo das iteraes. tratgia de planejamento estagiado em que para reviso dos objetivos das iteraes
Neste contexto, este artigo apresenta um vrias partes do sistema so desenvolvidas sucessivas.
estudo de caso de um sistema para uma em paralelo, e integradas quando com- A ideia bsica por trs da abordagem
escola de karat, onde so definidos seus pletas. No implica, requer ou pressupe iterativa desenvolver um sistema desof-
nc remental
ela gem fsica
Arilo Claudio Dias Neto
Iterao 1
Existem quatro estrias do usurio a
serem desenvolvidas nesta iterao: Man-
ter informaes de contato de alunos,
Matricular alunos, Remover alunos e
Registrar pagamento. Portanto, precisa-
mos trabalhar no desenvolvimento destes
quatro requisitos, nada alm disso nesse
momento. A primeira iterao do modelo
fsico de dados (MFD) do SGGK apoia as
funcionalidades crticas requeridas para
o desenvolvimento do sistema o geren-
ciamento dos dados bsicos de alunos e a
coleta de dinheiro deles a partir do paga-
Figura 2. Modelagem Inicial do Domnio
mento das mensalidades.
Quando olhamos o modelo de dados,
Figura 3, vemos que no estamos rastre-
ando o estado (por exemplo, Amazonas,
Rio de Janeiro ou So Paulo) em que os
alunos vivem. A razo desta deciso que
estamos projetando um sistema para uma
simples escola de karat, podemos assumir
seguramente que todos vivem no mesmo
estado, podendo variar apenas a cidade em
que cada um vive. Esta uma deciso de
projeto que poderia muito bem ser resolvi-
da de outra forma, porm esta foi a soluo
adotada em nosso estudo de caso.
Todas as mudanas de banco de dados
so feitas em paralelo s mudanas de c-
digo requeridas. Para isso, precisamos de
Figura 3. O Modelo Fsico de Dados da iterao 1 uma abordagem colaborativa para apoiar
neste processo de manuteno como, por
A Modelagem Inicial de Domnio um Diagrama de Classes publicado na exemplo, programao em pares.
Parte dos nossos esforos iniciais edio 63 da SQL magazine). importante notarmos que estamos
de modelagem, particularmente para A nica documentao de apoio que seguindo uma abordagem incremental de
uma aplicao de negcios na categoria iremos prover nesta fase do projeto em modelagem de dados, e que este ser o t-
de sistemas de informao, provavel- conjunto com o modelo ser a definio pico principal do artigo, mas importante
mente incluir o desenvolvimento de das entidades, o que pode ser descrito em reconhecer a importncia das estratgias
um modelo conceitual do domnio da um glossrio. Ainda no recomendamos de teste associadas ao desenvolvimento
aplicao. Este modelo deve ser bem identificar os atributos que formam as en- incremental. Teste de regresso (ver Nota
enxuto, ou seja, apresentar apenas tidades neste momento, estas informaes DevMan 1) um fator crtico de sucesso
o contedo necessrio, capturando as seriam mais bem capturadas ao se definir os para desenvolvimento evolucionrio/
principais entidades de negcio e o esquemas das classes ou do banco de dados. incremental; sem um ambiente de teste
relacionamento entre elas. A Figura 2 Alm disso, h quem goste de desenhar um de regresso completo configurado, no
apresenta este modelo usando a lingua- modelo como este em um quadro branco podemos evoluir nosso trabalho com segu-
gem de modelagem UML. para comear as atividades de projeto, e este rana, e isso incluir a evoluo do esquema
O modelo inicial de domnio ser usado desenho pode ser mantido no quadro branco de nosso banco de dados.
para ajudar os projetistas a direcionar durante todo o projeto. Nesse sentido, mo-
o modelo de dados fsico assim como o delos de domnio enxutos so bastante Iterao 2
projeto das classes, potencialmente cap- valiosos para a equipe do projeto, uma vez Existem quarto estrias do usurio a
turado via diagrama de classes da UML que bastante simples visualiz-lo e ento serem implementadas nesta iterao: Pro-
(Mais detalhes, no artigo Convertendo planejar as atividades de desenvolvimento. mover graduao de faixa do aluno, Con-
preta e kickboxing no possui qualquer indicar a qual estilo uma determinada faixa Para inicializar a tabela Aluno_Faixa,
faixa. est associada assim, existiria um registro precisamos migrar os dados a partir das
Para apoiar esta iterao, uma tabela Estilo de faixa branca para Tai Chi e outra para colunas originais idAlunoeidFaixado es-
foi adicionada para implementar os requi- Karat. quema de dados da iterao quatro.Cada
sitos atuais e ela pode simplificar o apoio a Para registrar o fato de que algum pode vez que a gente evoluir um esquema de
novos estilos no futuro, mesmo no sabendo treinar em vrios estilos, foi introduzida dados existente precisaremos migrar os
se a escola ir futuramente trabalhar com uma tabela associativa Aluno_Faixa que dados existentes. Isso verdade para
outros estilos de luta (Figura 8). A coluna implementa uma associao de muitos-pa- os dados de teste que usamos em nosso
idEstilofoi adicionada na tabela Faixa para ra-muitos entre as tabelas Aluno e Faixa. ambiente de desenvolvimento e tambm
para os dados que esto atualmente no
ambiente de produo (lembrando que
j temos parte de nosso sistema instala-
do e funcionando na mquina de nossos
usurios).
A tarefa de migrao de dados o ponto
negativa ao se trabalhar com o desenvol-
vimento de banco de dados evolutivos
(que evoluem a cada iterao). Migrar
dados pode ser difcil, e muito fcil dizer
que este aumento de complexidade ocorre
porque queremos desenvolver o esquema
do banco de dados de forma antecipada
em nosso projeto, antes de conhecer de
fato todos os requisitos. Infelizmente
esta posio no realstica. Mesmo com
a modelagem tradicional de dados (no
incremental) ainda precisaremos fazer
eventualmente migrao de dados, pois
mudanas sempre vo ocorrer. A melhor
opo aceitar o fato de que mudanas
ocorrem e quando necessrio fazer uma
Figura 7. O Modelo Fsico de Dados da Iterao 4 boa migrao.
A mudana final no esquema foi a adio
da coluna SequenciaEstilo na tabela Faixa.
Precisamos apoiar o fato de que pessoas
obtm faixas em uma certa ordem: alu-
nos de karat adultos movem-se da faixa
amarela para laranja, enquanto que alunos
de Tai Chi movem-se da faixa branca para
preta.Cada estilo de luta possui sua pr-
pria ordem de graduao de faixas.
Iterao 6
Para esta iterao iremos implementar
duas estrias do usurio: Manter informa-
es de produto e Vender produto.Essas
adies so bastante diretas no ponto de
vista de modelagem de dados.
Simplesmente, foram adicionadas as
tabelas Compra, ItemCompra, e Item para
prover a estas funcionalidades bsicas
(Figura 9). Note como essas tabelas so
Figura 8. O Modelo Fsico de Dados da Iterao 5 simples por enquanto. Por exemplo, no
ta
acha da revista!
Podemos desenvolver um esquema fsico dos dados incrementalmente utilizando
que reflita requisitos futuros sem signifi- apenas os conceitos envolvidos em cada D seu voto sobre este artigo, atravs do link:
cantes desperdcios de tempo e esforo. iterao. www.devmedia.com.br/sqlmagazine/feedback
Refactoring de Banco de D a
Uma forma segura de evoluir o esquema do se
A Resumo DevMan
s empresas de desenvolvimento
de software tm evoludo cons-
tantemente. Muitas delas devem De que se trata o artigo:
isto s novas e modernas metodologias Neste artigo veremos como evoluir um esquema de banco de dados de forma segura, iterativa e incre-
geis que defendem a construo do mental. Em seguida, mostraremos alguns exemplos de casos comuns aplicando as tcnicas de refactoring
software de maneira incremental e itera- de banco de dados.
tiva. Entretanto, disponibilizar sistemas
de informao com qualidade em ciclos Para que serve:
cada vez menores, ainda uma misso As tcnicas de refactoring de banco de dados permitem evoluir de forma segura o design de um esque-
desafiadora para muitas delas. Isto porque, ma em pequenos passos. Alm disso, elas ainda podem ser utilizadas para apoiar o desenvolvimento de
preciso garantir que a cada entrega, o software evolutivo.
sistema no perder as suas funcionalida-
des e continuar sem erros. Alm do mais, Em que situao o tema til:
estas metodologias no prevem a mesma Alm de serem muito teis na migrao de bancos de dados legados, as tcnicas apresentadas neste
iteratividade para o banco de dados. Para artigo permitem alteraes em esquemas que j estejam em produo. Sendo esta uma das grandes
finalizar, algumas destas empresas ainda dificuldades das empresas de desenvolvimento de software.
utilizam bancos de dados legados e no
migram para sistemas mais novos por desenvolvimento ter iniciado. O problema programado a cada iterao do projeto. O
diversos motivos, dentre eles: que alteraes no modelo do banco de que significa que muitas vezes ele ser al-
Complexidade; dados, nos finais dos projetos, passaram a terado com o software j em produo.
Alto custo; ser cada vez mais frequentes, dificultando
Mudana de cultura da empresa; a entrega (veja a Figura 1). O que Refactoring?
Falta de conhecimento dos desenvolve- Pensando nisto, os consultores de in- Martin Fowler define refactoring da se-
dores; formtica: Pramod J. Sadalage e Scott W. guinte forma: um processo de alterao
Mudanas de paradigmas dos DBAs. Ambler criaram algumas tcnicas para em um sistema de software, de modo que,
refatorao de banco de dados. Estas tc- o comportamento externo do cdigo no
A boa notcia que usando as tcnicas nicas tm como base os mesmos objetivos mude, mas que sua estrutura interna seja
de refactoring de banco de dados apresen- das metodologias geis: minimizar o risco melhorada..
tadas neste artigo, possvel fazer estas pelo desenvolvimento de software em O uso desta tcnica aprimora a concepo
migraes e melhorias de forma segura e perodos curtos, chamados de iterao, os (design) de umsoftwaree evita a deteriora-
incremental. quais duram de uma a quatro semanas. o to comum durante o ciclo de vida de
Cada iterao como um projeto de sof- um cdigo. Esta deteriorao geralmente
O antes e o depois tware em miniatura, incluindo todas as causada por mudanas com objetivos de
At o final da dcada de 90, acreditava- tarefas necessrias para implant-lo: pla- curto prazo ou por alteraes realizadas
se que a Engenharia de Software era nejamento,anlise de requisitos, projeto, sem a clara compreenso da concepo
similar a Engenharia Civil. No entanto, codificao, testee documentao. do sistema. Outra consequncia a me-
as necessidades do mercado mostraram neste cenrio que surge a figura do lhora no entendimento do cdigo, o que
que isto no era uma verdade absoluta. DBA gil. Diferente do DBA comum, facilita a manuteno e evita a incluso
No modelo de desenvolvimento de sof- este participa de todas as iteraes do dedefeitos.
tware mais conhecido e praticado desta projeto, planejando o esquema do banco fundamental que o sistema de soft
poca modelo cascata (Waterfall) o de dados e apoiando a equipe de desen- ware possua testes automatizados para
DBA passava vrios meses planejando volvimento. realizar refatoraes. Dessa forma ser
e modelando o banco de dados, e este, Como se pode observar na Figura 2, o possvel garantir que o comportamento
ficava pronto antes mesmo da fase de esquema do banco de dados planejado e externo no foi alterado.
D ados
do seu banco de dados
Ismael Zacarias Soares
O que Refactoring de Banco de Dados? lado, algumas empresas tm o privilgio 2. Apoiar o desenvolvimento de software:
Refactoring de Banco de Dados no de possuir uma arquitetura mais simples, usando estas tcnicas pode-se apoiar no
mgica! Consiste em simples mudanas onde apenas uma aplicao acessa o banco processo de desenvolvimento de softwares
no esquema do banco de dados (tabelas, de dados, permitindo assim, a refatorao evolutivos, incluindo Rational Unified
views, trigger, procedures, etc.) que melho- de ambos em paralelo. Estas aplicaes Process (RUP), Extreme Programming
ram o design sem alterar a semntica e o so conhecidas como standalone ou (XP), Agile Unified Process (AUP), Scrum
significado dos dados que j esto persis- sistemas stovepipe. Nos exemplos deste e Mtodos Dinmicos de Desenvolvimento
tidos. O processo de refactoring de banco artigo, ser considerada apenas a arquite- de Sistemas.
de dados define a forma de evoluir de tura mais complexa, onde existem vrios
maneira segura um esquema em pequenos sistemas externos sobre os quais o DBA
passos (incremental e evolutivamente). Ela tem pouco ou nenhum controle.
tambm fornece uma estratgia coerente
para organizaes que querem migrar Por que utilizar Refactoring de Banco
seus bancos de dados legados para outros de Dados?
mais modernos. Pramod e Ambler apresentam pelo
Conceitualmente, refactoring de banco menos duas razes fundamentais para
de dados mais difcil que refactoring se utilizar refactoring de banco de dados:
de cdigo. Isto porque, refactoring de 1. Reparar bancos de dados legados: per-
cdigo precisa apenas manter a semntica mite evoluir de forma segura o design do
comportamental, enquanto refactoring de esquema em pequenos passos, tornando-
banco de dados, alm de ter esta obriga- se uma tcnica importante para a melhoria
o, ainda precisa assegurar a semntica do patrimnio legado dentro das organi-
informacional. zaes. Esta , sem duvidas, muito menos
A complexidade de um projeto de refac- arriscada do que a abordagem conhecida
toring de banco de dados pode ser ainda como big bang, onde as melhorias so
maior em ambientes onde a arquitetura aplicadas de uma s vez em produo.
de acesso aos dados altamente acoplada, Alm disso, muito melhor do que vamos
como o exemplo da Figura 3. Por outro migrar e ver no que d;
Observe a Figura 4. A tabela Empre- A dicionar tabelas de consulta; tio desnecessria de dados, e a segunda
gado, no esquema original, contm a P adronizao de siglas; a falta de uma definio do significado
coluna nome que ser renomeada para Aplicar tipos padres para evitar, por de cada sigla.
nome_completo. O primeiro passo criar exemplo, que em uma tabela uma infor- Para resolver este problema pode-se
a nova coluna nome_completo, mas sem mao seja do tipo varchar e em outra ela adicionar uma tabela de consulta, tambm
remover de imediato a coluna nome, ape- seja do tipo numrico; conhecida como Lookup Table ou tabela Core.
nas se adiciona um comentrio informan- Adicionar ou remover chaves estrangei- Nesta tabela, a coluna estado se torna cha-
do a data da remoo. Em seguida, cria-se ras; ve primria, permitindo assim a criao de
uma trigger para sincronizar os dados Adicionar ou remover valores padres uma chave estrangeira na tabela Endereco
entre as duas colunas, j que elas existiro em colunas; para garantir a integridade. Alm disto,
simultaneamente durante o perodo de M over dados de uma tabela para outra. deve ser adicionada uma nova coluna
transio. A Listagem 3 apresenta o script que ir qualificar o registro. A Listagem 4
para realizar a refatorao proposta. Observe o esquema original na Figura 5. apresenta o script para gerar e popular a
A tabela Endereco contm a coluna estado. tabela de consulta.
Qualidade de dados Nesta coluna so armazenadas as siglas Outra vantagem com a aplicao desta
As implementaes feitas nesta categoria dos estados com apenas dois caracteres. refatorao a possibilidade de fornecer
visam melhorar a qualidade das informa- Neste modelo possvel apontar pelo aos sistemas externos uma lista de cdigos
es contidas no banco de dados. So elas: menos dois problemas: o primeiro a repe- nomeados para que no precisem usar enu-
Figura 4. Renomeando uma coluna Estrutural Figura 5. Adicionando tabela de consulta Qualidade de dados
Figura 6. Adicionando chave estrangeira Integridade de dados Figura 7. Adicionando mtodos CRUD Arquitetura
externos, o perodo de transio bem melhorar a qualidade de stored procedu- das pela equipe. O sandbox um ambiente
curto, e s vezes, at desnecessrio. res, triggers ou funes armazenadas no tcnico onde o desenvolvedor escreve,
Ao decidir entre usar ou no mtodos banco de dados. Por razes de simplici- testa e compila suas refatoraes de forma
CRUD, leve em considerao os seguintes dade, Ambler se refere a estes trs tipos isolada.
pontos: de funcionalidade simplesmente como Um sandbox pode estar em um servidor
Quantidade de sistemas que acessam o mtodos. As implementaes comuns ou no prprio computador do desenvolve-
banco de dados; desta categoria so: dor, desde que ele possua uma cpia atual
R egras de negcios que so repetidas Adicionar ou remover parmetros dos do esquema do banco de dados instalado e
em todos os sistemas e poderiam ser mtodos; configurado no seu ambiente de desenvolvi-
generalizadas no banco de dados; Renomear mtodos; mento. Com isto, se evita enviar um esquema
N ecessidade de implementao de po- Reordenar os parmetros dos mtodos; corrompido, que o desenvolver ainda esteja
lticas de acesso aos dados; S ubstituir vrios mtodos por um mto- testando, para produo. Alm do mais, a
Familiarizao da equipe de desenvol- do genrico; diviso das tarefas fica mais fcil, j que
vimento com a linguagem usada pelo S ubstituir um mtodo genrico por v- os desenvolvedores podero trabalhar no
banco de dados. rios outros mtodos. mesmo esquema, mas sem que um interfira
no trabalho do outro. Muito embora, o uso
Mtodos A Figura 8 apresenta um exemplo de desta tcnica requer um extremo controle
Como o prprio nome sugere, as refa- refatorao de uma stored procedure. sobre as alteraes que iro para produo.
toraes desta categoria tm por objetivo Neste exemplo, ser adicionado o par- Por este motivo, Ambler sugere utilizar um
metro nome na procedure sandbox para fazer a integrao entre os di-
Listagem 7. Script de exemplo para criar mtodos CRUD no Oracle. obterEmpregado. Para isto, versos ambientes dos desenvolvedores e
deve-se criar uma nova pro- ainda outro para fazer os testes.
CREATE OR REPLACE PACKAGE EmpregadoCRUD AS cedure copiando o cdigo da Como ilustra a Figura 9, os desenvol-
TYPE empregadoType IS REF CURSOR RETURN
Empregado%ROWTYPE; antiga e adicionando o novo vedores esto continuamente aplicando
PROCEDURE obterEmpregado parmetro. As duas proce- as refactorings no esquema do banco de
(empregadoId IN NUMBER,empregadoReturn OUT empregadoType); dures devem ser mantidas dados contido em seus sandboxes. Quando
PROCEDURE AdicionarEmpregado(....);
PROCEDURE AtualizarEmpregado(....); no modelo at o fim do per- estas refactorings esto prontas, elas so
PROCEDURE ExcluirEmpregado(....); odo de transio. Findo este mescladas em um sandbox de integrao.
END EmpregadoCRUD; /
perodo, a procedure antiga Em seguida feito o teste de compilao
CREATE OR REPLACE PACKAGE BODY EmpregadoCRUD AS dever ser excluda. dos objetos para procurar erros de build.
Caso no sejam encontrados erros, as
PROCEDURE obterEmpregado
(empregadoId IN NUMBER, empregadoReturn OUT
Organizando o trabalho refatoraes so enviadas para o sandbox
empregadoType) IS em equipe usando Sand- de testes, onde sero rodados os testes
BEGIN boxes unitrios, de integrao e aceitao. E por
OPEN refEmpregado FOR
SELECT * FROM Empregado WHERE empregadoId =
O processo de refactoring fim, enviadas para produo. Se em algu-
empregadoId; no algo simples, precisa mas das etapas forem encontrados erros, o
END obterEmpregado; ser bem organizado. Uma esquema volta ao estado original, atravs
END EmpregadoCRUD;/
dica utilizar sandbox para de recuperao por backup, e o processo
controlar as alteraes realiza- volta ao incio.
Figura 8. Incluindo novo parmetro em uma stored procedure Mtodos Figura 9. Arquitetura de refactoring em equipe usando Sandboxes
elevando assim o custo do projeto. gia.Tem mais de oito anos de experincias em anlise A SQL Magazine tem que ser feita ao seu gosto.
sobre e
ta
edio
P Resumo DevMan
odemos trabalhar com a tecnologia
.NET utilizando os diferentes SGB-
Ds disponveis no mercado. sem- De que se trata o artigo:
pre interessante conhecer os recursos de O objetivo principal do artigo apresentar o desenvolvimento de uma aplicao web completa de um
banco de dados providos pelas diferentes domnio de aplicaes empresarial. A ideia apresentar as principais tecnologias, como provider NpgSQL
tecnologias disponveis para o desenvolvi- e o FCKEditor. Alm disso, sero descritos os comandos SQL baseados em Stored Procedures.
mento de novas aplicaes, e com o .NET
no diferente. Para que serve:
Neste contexto, o objetivo principal Quando se trabalha com ASP.NET, normalmente utilizado o SQL Server como SGBD, pois algo natural
deste artigo mostrar de forma clara e (so produtos da Microsoft). Neste sentido, o objetivo do artigo explanar a possibilidade de desenvolver
objetiva o desenvolvimento de um Web uma aplicao utilizando o banco de dados PostgreSQL atravs do uso do provider NpgSQL.
Site empresarial. Alm das tecnologias que
sero mostradas, ser importante tambm Em que situao o tema til:
a criao e utilizao de Stored Procedures Ter a flexibilidade de trabalhar com outros bancos de dados no ASP.NET muito importante para qualquer
(ver Nota DevMan 1), concentrando esses empresa ou profissional. Com isso, ser mostrado o provider NpgSQL. Atravs deste, possvel trabalhar
comandos SQL diretamente no servidor do com os principais recursos do PostgreSQL Uma das ideias utilizar stored procedures, de maneira simples
banco de dados. Um ponto importante a e objetiva, visando o desenvolvimento de um Web Site empresarial.
ser frisado que o objetivo no entrar em
detalhes diretamente de Stored Procedures
neste artigo, mas abordar a mesma de Estudo de Caso Web Site Empresarial Na rea de Front-End (Nota DevMan 2)
forma prtica, o que torna o artigo mais Vamos imaginar que sua empresa foi do web site a ser desenvolvido, somente
produtivo e objetivo ao mesmo tempo. contratada para desenvolver um web site ficar disponvel uma lista com as pginas
O artigo ser divido em duas partes. A para controle de informaes de uma de menus, como Home, Empresa, Clientes,
primeira parte, apresentada nesta edio, ir empresa real. Com isso, so realizadas as Produtos e Contato. Veja que o objetivo
descrever a etapa de levantamento dos re- primeiras reunies para o desenvolvimen- do artigo no trabalhar com a parte
quisitos junto ao nosso cliente. Em seguida, to do mesmo. de layout, desta forma no ser aplicado
passaremos a descrever a etapa de anlise da Chamar a aplicao apenas por Web nenhum contedo CSS. No entanto, im-
aplicao, e por ltimo o desenvolvimento Site sem dvida algo muita genrico, portante voc aplicar seu conhecimento
da estrutura do banco de dados, como ta- e existem N situaes que podem ser de design para obter um resultado final
belas e stored procedures. Na segunda parte desenvolvidas. No entanto, este web site mais satisfatrio.
deste artigo, apresentado na prxima edio, possui caractersticas bastante interessan-
todo o conceito do projeto ser aplicado, tes que precisamos considerar durante seu
desde a criao da estrutura da aplicao, desenvolvimento. Vamos a elas. Nota do DevMan 1
desenvolvimento de suas pginas e classes Uma das primeiras questes do web site
DAO para persistir essas informaes e de- a ser desenvolvido que ele precisa ser SP (Stored Procedures) e CRUD
finio de seus usurios. Alm disso, sero administrado de forma simples e eficaz, j Procedimento armazenado ou Stored Procedure uma coleo
utilizados alguns dos principais controles do que necessita constantemente de atualiza- de comandos em SQL. Encapsula tarefas repetitivas, aceita
parmetros de entrada e retorna um valor de status (para indicar
ASP.NET, tanto para interao com o usurio es. muito comum o desenvolvimento aceitao ou falha n execuo). O procedimento armazenado
como a manipulao de dados. de um site dinmico, mas quem realiza a pode reduzir o trfego na rede, melhorar o desempenho, criar
O exemplo a ser desenvolvido neste manuteno do mesmo (como atualizao mecanismos de segurana, dentre outras vantagens.
artigo ser um projeto de um Web Site em- do contedo das pginas) o desenvol- CRUD o acrnimo da expresso em lngua Inglesa Create, Retrieve,
presarial. Desta forma, voc aproveita os vedor. A ideia simplificar! Com isso, o Update e Delete,usada para definir quatro operaes bsicas usadas
em bancos de dados relacionais ou em interface para usurios para
exemplos de operaes CRUD (Nota Dev- prprio cliente tem acesso a uma pgina de criao, consulta, atualizao e remoo de dados.
Man 1) em uma aplicao real de uso. login e realiza as edies da pgina.
N ET e PostgreSQL
Rafael Silva
Nota do DevMan 5
WYSIWYG
WYSIWYG o acrnimo da expresso em ingls What You See Is
What You Get, cuja traduo remete a algo como O que voc v
o que voc obtem (OQVVEOQVO). Significa a capacidade de um
programa de computador permitir que um documento, enquanto
manipulado na tela, tenha a mesma aparncia de sua utilizao,
usualmente sendo considerada final a forma impressa. O uso inicial
do termo foi relacionado a editores de texto,agora porm aplicado
a qualquer tipo de programa. Dois exemplos clssicos de editores
WYSIWYG so o Writer e o Microsoft Word, nos quais o documento
Figura 2. Download FCKEditor mostrado na tela da mesma forma que ser impresso.
controle para ASP.NET. Desta forma, a ta- voc esta utilizando para a administrao
refa de integr-lo a sua aplicao se torna do seu banco de dados.
uma tarefa simples e eficiente.
Construindo as Stored Procedures
Definindo a Estrutura do Banco de Sem dvida alguma, uma boa prtica
Figura 3. Estrutura banco de dados da aplicao dados de programao com banco de dados
O banco de dados da aplicao de um trabalhar com stored procedures. No banco
Listagem 1. Script SQL para criao das tabelas do web site Web Site ser simples e objetivo, conforme de dados PostgreSQL no diferente. A
voc pode visualizar na Figura 3. Anali- ideia de concentar seus comandos SQL
// tabela tbpaginas sando a figura, perceba que possumos no servidor de banco de dados, alm de
CREATE TABLE tbpaginas
( apenas duas tabelas. A primeira tabela, uma organizao, produtivo e garante
id_pagina serial, denominada tbpaginas, responsvel por melhor desempenho do banco de dados.
nome_pagina character varying(50), armazenar todas as pginas cadastradas comum possuir mquinas cliente mais
texto_pagina text,
data_pagina date DEFAULT now(), do site (conforme o prprio nome sugere). simples. Assim, atravs das Stored Pro-
contador_pagina integer, De forma geral, importante destacar al- cedures, voc concentra esses comandos
CONSTRAINT pkPaginas_ID PRIMARY KEY
guns campos: nome_pagina responsvel SQL no servidor de banco de dados, que
(id_pagina)
) por armazenar o ttulo da pgina, tex- na maioria dos casos sempre mais ro-
to_pagina o campo que ir conter todo o busto que as mquinas de cliente.
// tabela tblogin
seu contedo, e isso inclui principalmente Partindo desta ideia, trabalhar com
CREATE TABLE tblogin
( HTML, o campo contador_pagina armazena stored procedures (SPs) no PostgreSQL no
id_login serial, o nmero de visitas que a mesma possui uma tarefa trivial. Uma das grandes ca-
usuario_login character varying(20),
senha_login character varying(32),
e o campo data_pagina registra a data de ractersticas deste SGBD que ele possui
CONSTRAINT pkLogin_ID PRIMARY KEY cadastro da mesma. uma extensa biblioteca/linguagem para
(id_login) A segunda tabela, denominada tblogin, desenvolvimento de SPs, dentre elas pl/
)
basicamente uma estrutura de login pgsql, pl/java, pl/perl, dntre outras. As
e senha. Com isso, somente usurios mesmas so conhecida como linguagem
logados tm acesso pgina de cadastro procedural. Outro ponto a possiblidade
disso, sua instalao e configurao so e edio de pginas. de criar as SPs trabalhando com a lingua-
muito simples. Para cada tecnologia existe Na Listagem 1 voc confere o cdigo gem SQL. Este recurso muito utilizado
uma forma diferente. completo para a criao da estrutura des- para implementar operaes de SELECT,
O objetivo nesta primeira parte realizar te banco de dados. Os campos id_pagina INSERT, UPDATE e DELETE. As stored
o download do componente para futura e id_login da tabela tbpaginas e tblogin, procedures construidas neste artigo sero
instalao e configurao no momento respectivamente, so do tipo Serial. O criada utilizando a linguagem SQL. A
que for necessrio utiliz-lo. Para isso, PostgreSQL trabalha com sequncias. principal razo para esta deciso que
acesse o site (http://ckeditor.com/download) e No momento que definimos um campo muito simples o seu entendimento, o que
localize a seo FCKeditor e FCKeditor. do tipo serial, ele cria essas sequncias facilita a leitura e compreenso do leitor.
Net, e realize o seu download, conforme automaticamente no banco de dados. Pos- Como a principal proposta do artigo su-
mostra a Figura 2. No primeiro download, teriormente execuo deste script, voc bistuir os comandos SQL desenvolvido di-
voc encontra toda a estrutura de scripts pode notar tambm que as sequncias so retamente na aplicao por SPs, o exemplo
necessrios dos mesmos. O segundo um criadas, dependendo do gerenciador que se adpata facilmente ideia proposta.
s
D
A SQL Magazine tem que ser feita ao seu gosto.
sobre e
Para isso, precisamos saber o que voc, leitor,
s
ta
edio
acha da revista!
D seu voto sobre este artigo, atravs do link:
www.devmedia.com.br/sqlmagazine/feedback
N Resumo DevMan
o h dvidas de que a segurana
nos bancos de dados, junto alta
disponibilidade e ao desempe- De que se trata o artigo:
nho, so os assuntos mais preocupantes Este artigo tem como objetivo apresentar boas prticas relacionadas segurana no banco de dados
das organizaes quando falamos a respei- SQL Server.
to de suas bases de dados. Estes assuntos
possuem suas caractersticas prprias, Para que serve:
com configuraes personalizadas e diver- Proteger as informaes uma das maiores preocupaes de qualquer empresa. Para alcanar este
sos mtodos de obter melhor utilizao. objetivo, muitas medidas podem ser tomadas ao administrar o SQL Server. Neste artigo conheceremos
Vamos abordar neste artigo algumas das algumas destas medidas.
melhores prticas quando falamos espe-
cialmente de segurana dos bancos de Em que situao o tema til:
dados que administramos. A utilizao Este tema til para todo administrador que estiver interessado em conhecer boas prticas e aperfeioar
das boas prticas de segurana reduz a a segurana dos dados no seu ambiente de trabalho.
possibilidade de acesso por pessoas no
autorizadas, minimizando a chance de A recomendao visa evitar acidentes, Se todas as aplicaes que possuem
utilizao dos dados de forma indevida e roubos, sabotagens, dentre outros possveis bancos de dados em determinada ins-
a possibilidade de sabotagens ou ataques problemas que podem acontecer, tais como tncia utilizam o TCP/IP, ento devemos
por pessoas mal intencionadas. a faxineira esbarrar nos cabos, pessoas no manter apenas este protocolo disponvel
No Microsoft SQL Server, temos diver- autorizadas desligarem os equipamentos para conexo nesta instncia, desativan-
sas formas para garantir a segurana dos ou o roubo dos prprios equipamentos. do o acesso via outros protocolos, tais
bancos de dados, que vo desde a restri- comum encontrarmos em algumas como Named Pipes e Shared Memory
o de acesso a usurios at processos de empresas os servidores nos lugares mais (ver Figura 1).
auditoria (recursos disponveis de forma estranhos possveis, tais como debaixo da A habilitao destes protocolos sem real
nativa a partir do SQL Server 2008). mesa da recepo, e isso deve ser evitado. necessidade abre portas para invases
Porm, utilizar todos os recursos nem Dedicar uma sala, com controle de acesso de hackers. Sendo assim, devemos estar
sempre possvel ou a melhor opo restrito e ar-condicionado, exclusivamente sempre atentos aos protocolos utilizados
para nosso ambiente, sendo necessrio para os servidores uma prtica comum pelas aplicaes e aos mtodos de conexo
analisar o que pode ser aplicado. nas empresas, e deve ser seguida sempre dos usurios, objetivando no proporcio-
Entre os diversos recursos, podemos ado- que possvel na adaptao de ambientes s nar vulnerabilidades para os invasores.
tar algumas boas prticas para maximizar melhores prticas. Esta uma candidata
a utilizao do produto e garantirmos ao a primeira e, talvez, mais importante das Servios Ativos
mximo a segurana dos dados. Iremos ci- medidas a serem tomadas. Devemos instalar apenas os servios e
tar e explicar aqui o que podemos fazer para aplicaes realmente necessrias em nossos
deixar nosso ambiente mais seguro, procu- Protocolos habilitados servidores de bancos de dados, visando
rando no comprometer outras vertentes No devemos habilitar protocolos de liberao de recursos de hardware para o
como desempenho e disponibilidade. conexo que no sero utilizados pelas SQL Server e a reduo de possveis brechas
nossas aplicaes, mantendo apenas os de segurana em nosso ambiente.
Segurana fsica dos dados protocolos que as aplicaes realmente Se o servidor a ser utilizado for des-
Deve-se garantir que apenas pessoal au- necessitam para se conectarem ao banco tinado exclusivamente para bancos de
torizado tenha acesso fsico ao servidor, de dados. Com esta ao, diminumos a dados transacionais, contraindicada a
ou seja, ao local onde esto armazenados superfcie de ataque da nossa instncia, instalao dos servios de OLAP neste,
os servidores da empresa, especialmente dificultando a ao de pessoas mal in- pois assim evitamos a possibilidade
o servidor de banco de dados. tencionadas. de invaso atravs deste servio e, ao
r
Felipe de Assis
mesmo tempo, liberamos mais recursos permitida a expirao da mesma. Alm exclusivamente para o funcionamento dos
de hardware. disso, cada servio instalado no servidor servios.
deve possuir sua prpria conta de servio,
Contas de Servio ou seja, o Database Engine e o SQL Server Membros da Fixed Server Role Sysadmin
Devemos configurar todos os servios Agent, assim como os demais servios rela- fundamental o controle dos usurios
relacionados ao SQL Server para serem cionados ao SQL Server, no devem utilizar que fazem parte da Fixed Server Role
executados com contas de usurio dife- a mesma conta de usurio. Sysadmin, pois estes podero realizar
rentes das nativas do Windows, como As contas de servios no podem ter qualquer atividade dentro da instncia
Network Service, Local System ou Local mais privilgios do que o necessrio. As do SQL Server, seja eliminao de um
Service. Isto , devemos configur-los para permisses de Administrador do Sistema processo, excluso e criao de bancos de
ser executado utilizando contas de usurio Operacional e Administrador de Domnio dados ou criao e concesso de acesso aos
criadas e configuradas no servidor local ou, no so requeridas para o funcionamento usurios, entre outras tarefas (Figura 2).
de preferncia, no ambiente de rede. dos servios do SQL Server, por isso, no
Estas contas devem possuir direitos junto devem ser concedidas. As concesses
ao Windows e/ou ao Active Directory para destas permisses colocam no apenas o
iniciarem como servios e, assim, permiti- servidor de dados, mas todo o ambiente de
rem que os servios relacionados ao SQL rede da empresa em risco.
Server tambm sejam iniciados. Adicionalmente s medidas mencionadas,
As contas de servio devem tambm ser devemos evitar que as senhas de acesso s
configuradas com uma senha extremamen- contas de servio se tornem de conheci-
te complexa, para evitar que tentativas de mento dos demais profissionais e usurios
invaso sejam concludas com sucesso. E, da organizao, e sejam utilizadas para se
para evitar que servios parem de funcio- conectar ao servidor, mesmo que utilizadas
nar, recomenda-se possuir uma poltica por algum usurio com perfil administrati-
de senha configurada para que no seja vo. importante que elas sejam utilizadas
Neste ponto, recomendvel manter a execuo de backups: o recomendado a Deste modo, facilitamos a concesso de
quantidade de usurios com acesso a esta utilizao de uma conta que possua ape- privilgios a usurios novos, pois basta
permisso reduzida e muito bem contro- nas a permisso de backup, nada mais. adicion-lo a Role j existente para que
lada para evitar que usurios que no ne- Deste modo garantimos que se os acessos possua as permisses necessrias. Um
cessitam de permisses administrativas atravs destes usurios carem em mos er- timo exemplo a criao de Roles de-
as tenham e as utilizem de forma errnea radas, a possibilidade de impactos causados partamentais no ambiente da empresa.
ou maliciosa, podendo apagar bancos de por possveis ataques seja mnima, pois o Com isso, quando um novo funcionrio
dados, desligar a instncia do SQL Server usurio possui permisses limitadas. contratado, podemos simplesmente
e, inclusive, ceder os mesmos privilgios criar seu login, seu usurio e adicion-lo
a outras pessoas. Concesso de Privilgios aos Usurios Role correspondente ao departamento
Nunca devemos dar privilgios que onde ir trabalhar. A movimentao
Conta de SA no so necessrios aos trabalhos de do funcionrio entre departamentos
A conta de SA, habilitada automatica- nossos usurios, mantendo-os apenas tambm facilitada, pois basta retirar o
mente quando instalamos o SQL Server com os direitos essenciais s suas tarefas usurio da Role correspondente ao seu
com modo de autenticao SQL Server dirias. antigo departamento e adicion-lo Role
Authentication (tambm chamado de Assim, evitamos que tais permisses de seu novo departamento.
Mixed Mode), deve possuir uma senha sejam exploradas sem o devido cuida-
extremamente forte e ser utilizada ape- do e/ou conhecimento adequado dos Cuidados com a Fixed Database Role
nas quando necessrio. usurios, e reduzimos a superfcie de Public
A utilizao de uma senha forte (que ataque caso invases ocorram atravs A Role Public um agrupamento
contenha ao menos trs tipos diferentes de destes usurios. Esta deciso reduz de genrico em banco de dados de todos os
caracteres: smbolos, nmeros, letras mai- forma significativa a possibilidade de usurios da base de dados correspondente,
sculas ou minsculas) muito importante problemas causados por falha humana, e qualquer permisso concedida a ela apli-
devido conta de SA ser uma conta padro, tal como a execuo de uma query sem cada a todos os demais usurios existentes
sendo popular entre todos que trabalham e os devidos filtros. naquele banco de dados.
estudam o produto, se tornando o primeiro Como qualquer usurio pode usufruir das
e principal alvo aos ataques de hackers. Acesso dos Usurios aos Dados permisses concedidas Role public, nunca
Em paralelo colocao de uma se- Nunca devemos conceder acesso direto devemos garantir permisses a esta Role, a
nha forte, devemos utilizar a conta SA aos dados para os usurios, ou seja, per- no ser que seja estritamente necessrio.
somente quando realmente necessrio, mitir que executem Select e cdigos DML O recomendado, conforme explicado mais
ou seja, em casos de emergncia. Para (insert, update e delete) diretamente nas adiante, concedermos as permisses a
a realizao de tarefas administrativas, tabelas dos bancos de dados. User Database Roles, ou em casos mais
a recomendao utilizar contas sepa- Mesmo que possamos restringir o aces- especficos e em excees, aos usurios.
radas com permisses especficas para so dos usurios atravs de permisses
tal atividade. Usemos como exemplo a nos banco de dados, no devemos conce- Utilizar contas de usurios Windows
der este acesso, pois deixamos parte da Authentication
regra de negcio e a estrutura do banco Sempre que possvel, deve-se optar por
de dados exposta a estes. utilizar logins com mtodos de autenti-
Para estas operaes, devemos sempre cao Windows Authentication para se
criar Views ou Stored Procedures que conectar ao SQL Server devido aos me-
recuperem ou alterem, respectivamente, canismos de autenticao do Windows e
os dados dentro das tabelas. Desta for- do Active Directory permitirem diversas
ma, asseguramos que somente tarefas configuraes de segurana, definio
permitidas sero realizadas, seguindo de polticas de senha, entre outras opes
os procedimentos determinados pelas que, se bem configuradas, melhoram a
regras de negcio da empresa. segurana do ambiente.
O SQL Server no possui como recurso
Agrupar usurios com permisses nativo a possibilidade de definio de
semelhantes polticas de senhas, tais como expirao
Para facilitar o gerenciamento dos usu- de senhas, requisitos de senha, entre
rios e a devida concesso de privilgios, outras boas prticas relacionadas de-
devemos agrupar os usurios de bancos finio de senhas. Entretanto, no SQL
de dados por User Database Roles. Server possvel garantir que regras e
Essa prtica se torna importante para Role Sysadmin, pedindo no momento da Sendo assim, no devemos nos esquecer
analisarmos se nosso servidor est so- instalao que voc informe de forma de garantir a existncia e validar o acesso
frendo alguma tentativa de ataque, e explcita os usurios que sero adminis- de outro usurio com permisses na Role
para identificarmos qual o usurio que tradores da instncia. sysadmin antes de excluirmos este grupo
est sendo utilizado para esta tentativa. Retirando o usurio desta Role, bloquea- da Role com permisses mximas no SQL
Dessa forma possibilitamos uma anlise mos qualquer poder administrativo deste Server.
mais completa da situao e a definio grupo na instncia do SQL Server, restrin-
dos possveis planos de ao corretivos gindo ainda mais a quantidade de pessoas Evite que aplicaes utilizem usurios
com mais propriedade. com esta permisso e aumentando a segu- administrativos
A habilitao desta configurao, em rana do nosso ambiente. Assim garantimos No devemos fornecer aos usurios
muitos casos, pode gerar diversos registros que apenas os profissionais adequados utilizados pela aplicao privilgios
nos arquivos de log do Windows, e, devido responsveis pela administrao do SQL administrativos, muito menos fornecer
a isso, seu impacto considerado negativo Server tenham este acesso com direitos acesso a elas atravs de usurios com
por alguns administradores de banco de administrativos. permisses mximas no SQL Server,
dados e administradores de rede. Indiretamente, com o usurio BUILTIN\ tal como membros da Fixed Server Role
Administrators na Role Sysadmin, delega- Sysadmin ou a prpria conta SA.
Remova o grupo BUILTIN\Administra- mos o poder de conceder privilgios ins- As aplicaes que possuem acesso ao banco
tors da Role Sysadmin tncia do SQL Server aos administradores de dados atravs de um usurio fixo devem
Devemos sempre remover o grupo de rede de nossa empresa. Isto acontece pelo utilizar um usurio que possua apenas as
BUILTIN\Administrators (ou Admi- fado de eles poderem acessar a instncia permisses necessrias para seu funciona-
nistradores, se o Windows for verso com totais privilgios, realizarem quaisquer mento e, caso alguma permisso incomum
em Portugus) da Role Sysadmin das atividades e fornecer permisses a outros seja realmente necessria, recomendvel
verses anteriores ao SQL Server 2008 usurios e grupos do Windows (Figura 5). uma monitorao do usurio para verificar
para evitarmos que qualquer membro da A retirada deste usurio deve ser realizada o que a aplicao realmente executa e se
Role Administrators do Windows, seja com ateno, pois se estivermos acostuma- pode gerar qualquer impacto no servidor e
administradores locais ou de rede, tenha dos a acessar o SQL Server deste modo, nos demais bancos de dados.
acesso administrativo a nossa instncia usando um usurio que faa parte do grupo
do SQL Server. BUILTIN\Administrators, e no possuirmos Nunca conecte seu servidor de dados
No SQL Server 2008 no existe esta outro usurio com permisses idnticas diretamente internet
necessidade devido a sua instalao no para nos conectar aps a retirada, podemos Nosso servidor de dados nunca deve
colocar por padro este usurio (BUIL- ficar sem acesso administrativo instncia estar conectado diretamente internet,
TIN\Administrators) nesta Fixed Server do SQL Server. mas sim estar sempre protegido por
ta
acha da revista!
importante estarmos sempre informa- as diferentes fontes de dados presentes
dos sobre a descoberta de novos erros, em seu ambiente. Sua estrutura permite D seu voto sobre este artigo, atravs do link:
problemas ou situaes encontradas no que realizemos diversas configuraes www.devmedia.com.br/sqlmagazine/feedback
G Resumo DevMan
eralmente, quando instalamos
ou desenvolvemos um aplicativo,
uma das coisas mais importantes De que se trata o artigo:
que devemos ter em mente o backup. Pre- Este artigo descreve diferentes solues de backup existentes no SQL Server 2008, alm de abordar um
cisamos manter cpias do aplicativo para cenrio prtico informando como podemos implementar e utilizar uma estratgia de backup adequada
diversos fins. No entanto, alguns podem e correta.
se perguntar: precisamos mesmo sempre
de backup? A resposta deve ser SIM, sem Para que serve:
qualquer dvida. importante termos Este artigo tem por objetivo fornecer ao usurio uma noo a mais de como implementar e utilizar
sempre uma cpia segura dos dados que uma soluo de backup planejada de forma adequada e robusta. Desta forma, os DBAs no estaro
fazem parte de uma empresa. frequentemente apagando incndios que muitas das vezes ocorrem por planejamento mal elaborado
Uma das definies para a palavra da estratgia de backup.
backup : cpia de segurana de dados
feita geralmente em HDs, CDs, DVDs, Em que situao o tema til:
Fitas-DAT, etc. Desde j, conhecemos que Este artigo pode ser til em ambientes corporativos, onde um dos principais objetivos garantir a segu-
os dados podem ser armazenados em rana das informaes que esto sendo processadas diariamente e armazenadas no banco de dados.
diversos tipos de mdia. O lugar de arma-
zenamento est de acordo com a necessi-
dade e a segurana de cada um, porm, algumas perguntas que podem ser con-
de consenso geral que todas as informa- sideradas importantes para cada um com
Nota do DevMan 1
es devem estar seguras e protegidas. base no seu ambiente de trabalho:
BrainStorming
Alguns questionamentos podem existir Quais so os dias da semana que o banco
Brainstorming (literalmente: tempestade cerebral em
neste momento, como: onde ser o me- de dados estar sendo mais utilizado pela ingls) ou tempestade de ideias, mais que uma tcnica
lhor lugar para o backup estar guardado? aplicao? de dinmica de grupo, uma atividade desenvolvida para
Ser que o backup poder estar guardado Quais so os horrios de pico em relao explorar a potencialidade criativa de um indivduo ou de um
grupo colocando-a a servio de objetivos pr-determinados.
dentro de uma sala especfica dentro da utilizao do sistema durante a semana?
empresa? Ser que devemos lev-lo para Existe algum mtodo do SGBD que pro- Dentre diversos outros mtodos, a tcnica de brainstorming
prope que um grupo de pessoas - de duas at dez - se
um lugar fora do ambiente da empresa? cesse com mais velocidade consultas num renam e utilizem as diferenas em seus pensamentos e
Como podemos perceber, a melhor res- perodo de mltiplos registros? ideias para que possam chegar a um denominador comum
posta depender da situao em que voc Qual limite mximo de tempo que uma eficaz e com qualidade, gerando assim ideias inovadoras que
levem o projeto adiante.
se encontra, mas lembre-se: esta uma transao pode consumir (para evitar
grande responsabilidade e devemos ter o gargalos)? Quando se necessita de respostas rpidas a questes
relativamente simples, o brainstorming uma das tcnicas
maior cuidado possvel, pois geralmente Com que frequncia os dados no banco mais populares e eficazes. Esta tcnica vem sendo difundida e
temos algo em mos que jamais pode ser sero modificados? inserida ainda em diversas outras reas, tais como educao,
negcios, informtica, Internet e outras situaes mais tcnicas.
deletado, perdido e danificado.
Antes que uma estratgia seja definida, Diversos SGBDs permitem o backup de
uma das atividades que pode ser til a dados. Podemos considerar essa opo
elaborao de um plano de ao, e para uma das mais bsicas que eles oferecem ao e que utilizaremos como exemplo um banco
isso podemos realizar uma tcnica conhe- usurio. Neste artigo, utilizaremos o SQL de dados simples para fins demonstrativos e
cida como brainstorming (Nota DevMan 1) Server 2008 R2 com objetivo de apresentar este estar disponvel para download.
para planejarmos a melhor estratgia de algumas opes que so oferecidas para o
backup para nossa empresa. usurio atravs de um cenrio prtico. Vale Cenrio prtico para uso de backup
Apesar de nunca sabermos qual seria informar que no demonstraremos como Para facilitar o entendimento sobre o
a melhor estratgia de backup, aqui vo proceder para efetuar a restaurao do banco uso de backup no SQL Server, iremos rea-
Neste momento, aps ter feito a criao Ser executado um backup full do banco E em Description apresente o seguinte tex-
do job, iremos iniciar a criao do agenda- de dados em um horrio no comercial. to: Este job ter por objetivo disparar um
mento, ou seja, indicar em quais momentos Devido a ser um horrio no agradvel backup diferencial do banco de dados.
este job ser executado automaticamente para os usurios, as aplicaes que esto
por nosso servidor de banco de dados. envolvidas com este banco de dados no Feito isso, clique novamente na aba
Para isso, clique em Schedules (localizado correro o risco de sofrer a falta de dispo- Steps e informe as seguintes propriedades
na Figura 5 na aba esquerda logo abaixo nibilidade. (Figura 9):
de Steps) e em seguida selecione a opo Ao trabalhar com a venda de sites, por Step name: jobDiff;
New. Feito isso, preencha os campos com exemplo, preciso analisar perodos de Type: Transact-SQL script(T-SQL);
as seguintes informaes (Figura 7): pico nas buscas por ingresso a fim de Run as: deixe em branco;
Name: jobFull; evitar que seja realizado um backup full no database: master;
Schedule type: Recurring, e marque a momento em que o site mais utilizado command backup database db_ticket
opo ao lado de Enabled; pelos seus usurios. Esta operao deixa to disk = g:\db\db_ticket_bkpDIFF with
Occurs: Weekly; qualquer acesso a banco de dados mais differential.
Recurs every: 4; marque Tuesday, Thurs- lento. Por isso, atentar para a estratgia
day, Sunday. Lembre-se que estes dias foram adequada fundamental para evitar ope- Feito isso, clique em Advanced, selecione
definidos em nossa estratgia (Figura 1). raes mal planejadas. a opo Quit the job reporting sucess. Isso
Em seguida, marque a opo Occurs once tem por objetivo informar um relatrio
at e defina o valor para 04:30:00, e por l- timo, j temos nosso primeiro job cria- de sucesso caso seja executado com su-
timo informe se ter fim este Job. Se sim, do. Daremos continuidade ao restante. cesso.
selecione End Date e indique uma data. Para isso, repita o mesmo processo ante- Neste momento, clique na aba Schedules
Se no, escolha No end date. rior, clique com o boto direito em Jobs e em seguida na opo New. Nesta tela,
New Job e informe as seguintes proprieda- defina os campos com as seguintes infor-
Aps isto, clique em OK e por fim em des (Figura 8): maes (Figura 10):
OK novamente para finalizar a criao de Na caixa de texto ao lado de Name, colo- Name: jobDiff;
nosso primeiro job. que job_bkpDiff; Schedule type: Recurring, e marque a
Observe que essa estratgia de backup Owner informar uma conta relacionada opo ao lado de Enabled;
voltada para um cenrio de uma loja que ao Job (coloque de sua preferncia, desde Occurs: Daily, Recurs every: 30;
fornece ingressos para entrada em teatros. que tenha permisso para executar as Occurs every: marque a opo Occurs
Ento existem diversos motivos para o tarefas que esto por vir); every e defina o valor para 10;
backup full estar com essas definies, por Em Category utilizaremos a opo default e m Starting at, 04:00:00, Ending at,
exemplo: [Uncategorized (Local)]; 23:59:59,
Por ltimo, informe se este Job ter mais especfico de uma determinada in- Owner estar informando uma conta relacio-
fim. Se sim selecione End Date e indi- formao que ser armazenada no banco nada ao Job;
que uma data. Se no, escolha No end de dados, e como sempre, os horrios de E m Category, utilizaremos a opo default
date. backup esto sempre procura de no se [Uncategorized (Local)];
aproximar de horrio de pico. E em Description, apresente o seguinte texto:
Aps isto, clique em OK e por fim em timo! Para finalizarmos a ltima Este job ter por objetivo disparar um backup
OK novamente para finalizar o nosso operao de backup tipo LOG, repita de log do banco de dados.
segundo job. novamente o passo anterior. Resumin-
Veja que a estratgia de backup com do: clique com o boto direito em Jobs e Aps isto, clique na aba Steps e clique em New.
base na opo Diferencial foi definida por selecione New Job, informe as seguintes Uma nova janela ser exibida, onde informa-
intervalos, apesar da opo Full no ser. informaes (Figura 11): mos as seguintes propriedades (Figura 12):
Dessa forma, podemos obter um controle Name, coloque job_bkpLog; Step name: jobLOG;
Figura 8. Configurando as propriedades principais Jobs Figura 9. Configurando as propriedades de backup Jobs
Figura 10. Configurando as propriedades de agendamento Jobs Figura 11. Configurando as propriedades principais Jobs
Server
s
D
agendamento de tarefas, rotinas, coman- A SQL Magazine tem que ser feita ao seu gosto.
sobre e
http://msdn.microsoft.com/en-us/library/
dos e outros. Para isso, precisamos saber o que voc, leitor,
s
ms191253(SQL.90).aspx
ta
edio
acha da revista!
Concluso Backing Up and Restoring Databases in SQL
D seu voto sobre este artigo, atravs do link: Server
Este artigo teve por objetivo apresentar
www.devmedia.com.br/sqlmagazine/feedback http://msdn.microsoft.com/en-us/library/
uma estratgia de backup baseada em
ms187048(SQL.90).aspx
C Resumo DevMan
omo todos sabem, a Oracle com-
prou a Sun, que por sua vez,
anteriormente havia comprado a De que se trata o artigo:
MySQL AB (Nota DevMan 1), empresa Da configurao para Performance Tuning de um banco de dados em MySQL com objetivo de otimizar
criadora do Banco de Dados MySQL. o desempenho deste Banco de Dados. Este artigo o primeiro de uma sria sobre Performance Tuning
Eu no tive, e continuo no tendo dvidas em MySQL.
de que a Oracle ir investir cada vez mais
no MySQL, pois creio que, para a Oracle Para que serve:
Corporation, ele no um competidor Para configurar o MySQL corretamente para que ele utilize de forma otimizada o mximo de recursos
direto dos Bancos de Dados Oracle: ele possveis do ambiente computacional onde est instalado.
um competidor direto do SQL Server
e do PostgreSQL. No quero dizer aqui Em que situao o tema til:
que um Banco de Dados melhor do Em casos onde o poder de processamento so caractersticas fundamentais do ambiente.
que outro, acredito que cada um tem seu
campo de uso. Portanto, espero ver mais
alguns anncios da Oracle a respeito de mantenedora do Engine InnoDB (o mais
melhorias de escalabilidade do MySQL, utilizado em Bancos de Dados MySQL) j Nota do DevMan 1
especialmente em ambientes Windows fora comprada pela Oracle antes mesmo da
Server, muito em breve. compra da MySQL AB pela Sun. MySQL AB
Confirmando minhas suspeitas, h al- O MySQL um banco de dados perigoso MySQL AB (fundada em 1995 e adquirida pela Sun
guns meses a Oracle anunciou, na prpria para os DBAs dentro das empresas. Isto Microsystems em 2008) foi a empresa responsvel pela criao
do MySQL assim como de produtos tais como MySQL Cluster. A
MySQL Conf, melhorias de escalabilidade porque muitas vezes estes bancos de dados empresa est dualmente sediada em Uppsala, na Sucia, e em
no MySQL, adotando a rvore 5.5 como a aparecem como suporte a alguma aplica- Cupertino, nos Estados Unidos, com escritrios em outros pases
sucessora da 5.1 - descartando a 5.4 (que o especfica, criada para resolver algum (Paris, Frana; Munique, Alemanha; Dublin, Irlanda; Milo, Itlia;
e Tquio, Japo).
foi iniciada pela Sun) e 6.0 (que foi ini- problema pontual (por exemplo, gerar um
ciada antes da 5.4, pela MySQL AB), pelo relatrio executivo) sem contato com a rea Com cerca de 400 funcionrios em 25 pases, a MySQL AB foi
uma das maiores empresas de open source do mundo. Cerca de
menos por enquanto. Mesmo descartando de TI (e os DBAs), at que ele se torne um 70% dos empregados trabalhavam para o MySQL a partir de
as verses anteriores, as funcionalidades sistema importante demais e, subitamente, suas casas.
criadas nestas verses foram incorporadas passe a ser de responsabilidade da equipe
verso 5.5, hoje em estgio Beta. de infraestrutura. Quando chega a este
Mesmo com as melhorias de escalabi- ponto, geralmente ele j est com proble- Diagnostic & Tuning. E se voc acha que
lidade apresentadas nos Benchmarks, o mas de desempenho, e sem uma estrutura apenas clientes ou projetos pequenos, ou
MySQL no tem um bom desempenho de Backup ou sem uma estratgia de Disas- programas atrs de Websites utilizam o
com a configurao padro. Alm disso, ter Recovery (Recuperao de Desastre). MySQL, voc est enganado. Os bancos
um dos Bancos de Dados mais sensveis Adicionalmente, so raros os bons Treina- de dados com uso mais intenso com que
a parmetros do mercado, fazendo com mentos Avanados em MySQL para DBAs, j trabalhei foram todos MySQL, e todos
que uma pequena alterao no arquivo de e muitos DBAs com experincia de outros de clientes grandes.
inicializao traga um grande benefcio, bancos de dados tendem a negligenciar Bem, vamos comear esta srie abordan-
ou cause um grande desastre na aplica- estes aspectos do MySQL, por achar que do alguns destes parmetros, apresentan-
o. Para complicar ainda mais, o MySQL ele um SGBD fcil. do exemplos prticos, com melhoras reais
no propriamente um SGBD, mas um Mas como j explicamos, a arquitetura de desempenho. Fiz os testes abaixo no
encapsulador de Engines de SGBDs, como de encapsulamento de Engines do MySQL meu notebook, um Dual Core com 4GB de
o MyISAM e InnoDB, que j vem habilita- o torna um dos mais complexos do mer- RAM, rodando Ubuntu 10.4, e o MySQL
dos por padro. A propsito, a Innobase, cado, principalmente para Performance padro desta distribuio, o 5.1.41.
Otimizando as gravaes Listagem 2. Comandos SELECT para duplicar a tabela 3 vezes, medindo o tempo.
Para iniciar criamos uma tabela sim-
01. mysql> CREATE TABLE CLIENTES_02 Engine=InnoDB SELECT * FROM CLIENTES;
ples no MySQL, conforme Listagem 1,
02. Query OK, 18105728 rows affected (7 min 15.27 sec)
com uma coluna numrica auto incre- 03. Records: 18105728 Duplicates: 0 Warnings: 0
mentvel (id_cliente) e uma coluna de 04.
05. mysql> CREATE TABLE CLIENTES_03 Engine=InnoDB SELECT * FROM CLIENTES;
caracteres de comprimento varivel 06. Query OK, 18105728 rows affected (6 min 45.10 sec)
(nome_cliente), e inserimos nela strings 07. Records: 18105728 Duplicates: 0 Warnings: 0
aleatrias (utilizando um script Perl), at 08.
09. mysql> CREATE TABLE CLIENTES_04 Engine=InnoDB SELECT * FROM CLIENTES;
que ela ficasse com um nmero consi- 10. Query OK, 18105728 rows affected (7 min 6.74 sec)
dervel de linhas - mais de 18 milhes 11. Records: 18105728 Duplicates: 0 Warnings: 0
de linhas, ocupando mais de 800MB em
disco. Com uma tabela deste tamanho,
fica mais fcil simular problemas de tabela, para conferir a quantidade de
desempenho. registros (linhas 33 a 45), o que demorou
Primeiramente conectamos no MySQL 18 segundos.
(linha 1 da Listagem 1), e alteramos o Agora, conforme a Listagem 2, veremos
banco de dados em uso para o test (linha a velocidade de duplicao desta tabela
7). Em seguida, conferimos a estrutura com a configurao padro do MySQL.
da tabela CLIENTES (linhas 12 a 19), e Para isso, executamos o teste 3 vezes, para
fiz um SELECT de 5 linhas, para confe- validar melhor o tempo, e excluir vari-
rir o contedo com a coluna id_cliente veis como o armazenamento de dados
sequencial, e a coluna nome_cliente em cache.
com os nomes aleatrios (linhas 21 a Veja que primeiramente criamos a tabela
31). Depois fizemos um COUTN desta CLIENTES_02, como uma cpia exata da
CLIENTES (linhas 1 a 3 da Listagem 2). CESSLIST pode ser utilizado no utilitrio 15). Veja que a a sada j mudou, exibindo
Em seguida repetimos o procedimento mysqladmin, conforme Listagem 3, onde o que o comando CREATE TABLE est no
mais duas vezes, agora criando as tabelas executamos diversas vezes seguidas durante State chamado de Sending Data. Repare
CLIENTES_03 (linha 5) e CLIENTES_04 a duplicao da tabela CLIENTES. Veja que tambm que este comando j est espe-
(linha 9). importante reparar nos tempos a coluna State mostrou o estado Sending rando h 22 segundos (linha 13).
de cada uma das execues (linhas 2, 6 e data o tempo todo da execuo. Repare tam- Em seguida, esperamos uns 2 minutos, e
10, respectivamente). bm a coluna Time, que indica o nmero executamos o comando novamente (linhas
Nos trs testes, obtivemos os seguintes de segundos que o comando executado est 17 a 23, ainda na Listagem 3). Veja que o
resultados: 7 15.27, 6 45.10 e 7 6,74 aguardando pelo Thread State indicado. State continua o mesmo, mas o tempo de
respectivamente. Como facilidade, para no ter que execu- espera j de 218 segundos (linha 21). Aps
Se precisamos otimizar este tempo de exe- tar o comando repetidamente, utilizamos o trmino do comando CREATE TABLE,
cuo, precisamos saber como ele gasto, o utilitrio do Linux watch, que faz com executamos novamente o comando para
antes de alterarmos algo. O MySQL fornece que um comando seja repetido na tela at verificar os processos (linhas 25 a 31), e
este tipo de informao atravs dos Thread que seja digitado Control+C. Veja como veja que voltamos a ter uma sada que nos
States (Estado de Processos) - similares utilizar o comando watch na Listagem 4. mostra que no h mais nada acontecendo
aos Wait Events do Oracle, embora sejam Primeiramente, executamos o comando no banco de dados.
muito menos detalhados, infelizmente. para verificar os processos antes de iniciar A documentao dos Thread States diz
Para se ter uma ideia, o Oracle 11gR2 tem as duplicaes de tabela demonstradas na apenas o seguinte sobre o Sending Data: O
mais de 1100 Wait Events documentados, Listagem 2, para mostrar ao leitor como processo est processando as linhas para
enquanto o MySQL 5.1 tem apenas 67. Mas a sada deste comando quando nada est um comando SELECT e tambm enviando
mesmo assim eles nos daro uma boa pista acontecendo no banco de dados (linhas 1 a o resultado para o cliente. Isto no ajuda
do que est acontecendo. 7 da Listagem 3), com exceo do prprio muito, mas j sabemos que podemos me-
Para exibir os Thread States atuais, o coman- comando SHOW PROCESSLIST. Depois de lhorar o desempenho deste SELECT.
do SHOW PROCESSLIST pode ser utilizado iniciada uma duplicao de tabela, execu- O Engine InnoDB, que estamos utili-
no prompt do MySQL, ou o comando PRO- tamos o comando novamente (linhas 9 a zando para estes testes, armazena dados
Listagem 4. Comando para verificar as Thread States do MySQL repetidamente. Listagem 7. Comandos SELECT para duplicar a tabela 3 vezes, medindo o tempo
ricardo@ricardo-laptop:~$ watch mysqladmin -u root - pMinhaSenha PROCESSLIST
01. mysql> DROP TABLE CLIENTES_02;
Listagem 5. Parte do arquivo de configurao do MySQL. 02. Query OK, 0 rows affected (0.10 sec)
03.
[mysqld]
04. mysql> DROP TABLE CLIENTES_03;
user = mysql
socket = /var/run/mysqld/mysqld.sock 05. Query OK, 0 rows affected (0.07 sec)
port = 3306 06.
basedir = /usr 07. mysql> DROP TABLE CLIENTES_04;
datadir = /var/lib/mysql 08. Query OK, 0 rows affected (0.08 sec)
tmpdir = /tmp 09.
skip-external-locking
10. mysql> CREATE TABLE CLIENTES_02 Engine=InnoDB SELECT * FROM CLIENTES;
key_buffer = 16M
max_allowed_packet = 16M 11. Query OK, 18105728 rows affected (7 min 35.42 sec)
thread_stack = 192K 12. Records: 18105728 Duplicates: 0 Warnings: 0
thread_cache_size =8 13.
query_cache_limit = 1M 14. mysql> CREATE TABLE CLIENTES_03 Engine=InnoDB SELECT * FROM CLIENTES;
query_cache_size = 16M 15. Query OK, 18105728 rows affected (7 min 8.75 sec)
log_error = /var/log/mysql/error.log
16. Records: 18105728 Duplicates: 0 Warnings: 0
innodb_buffer_pool_size = 1G
17.
Listagem 6. Comandos para parar e iniciar o MySQL. 18. mysql> CREATE TABLE CLIENTES_04 Engine=InnoDB SELECT * FROM CLIENTES;
19. Query OK, 18105728 rows affected (7 min 34.41 sec)
01. ricardo@ricardo-laptop:~$ sudo bash
02. [sudo] password for ricardo: 20. Records: 18105728 Duplicates: 0 Warnings: 0
03. root@ricardo-laptop:/var/lib/mysql# service mysql stop
04. mysql stop/waiting
05. root@ricardo-laptop:/var/lib/mysql# service mysql start
cada. Vamos aumentar tambm o cache Como nada de graa no mundo da de log ib_logfile0 (linha 8) e ib_logfile1
dos Logs (controlado pela varivel innodb_ informtica, quanto maiores forem os (linha 9), cada um com 5MB.
log_buffer_size, que tem o tamanho padro arquivos e cache de Log, maior ser o tem- Ento paramos o MySQL (linha 14), e
de 1MB) para 256MB, que faz com que a po necessrio para um possvel Recover renomeamos os arquivos ib_logfile0 e
gravao para os prprios arquivos de Log do Banco de Dados em caso de queda do ib_logfile1 (linhas 16 e 17), para que o
possa ser atrasada, melhorando ainda mais MySQL durante as gravaes. MySQL crie os novos arquivos. Em se-
o desempenho das gravaes. A alterao dos arquivos de Log do guida iniciamos o MySQL (linha 18), es-
InnoDB um pouco mais complicada. O peramos alguns segundos (pode levar
Listagem 8. Parte do arquivo de configurao do MySQL. MySQL precisa ser parado, e os arquivos algum tempo para criar os 7 arquivos
de Log antigos precisam ser removidos de 512MB), e verificamos novamente o
[mysqld]
user = mysql (pois so de outro tamanho), conforme contedo do diretrio de dados (linha
socket = /var/run/mysqld/mysqld.sock Listagem 9. Repare que desta vez o MyS- 20). Veja que agora temos 7 arquivos
port = 3306
QL deve demorar um pouco mais para de Log, numerados sequencialmente
basedir = /usr
datadir = /var/lib/mysql ser iniciado, pois ele ir criar os novos (linhas 24, 26, 28, 29, 30, 31 e 32), e agora
tmpdir = /tmp arquivos de Log com 512MB cada. Confi- cada um tem 512MB, como indicamos
skip-external-locking
key_buffer = 16M
ra como ficou o arquivo de configurao no arquivo my.cnf.
max_allowed_packet = 16M na Listagem 8. Agora repetimos o teste, conforme
thread_stack = 192K Novamente abrimos um shell com o Listagem 10.
thread_cache_size =8
query_cache_limit = 1M
usurio root (linha 1 da Listagem 9), Para poder reiniciar os testes, primei-
query_cache_size = 16M pois iremos executar operaes que ro exclumos as trs tabelas cpia da
log_error = /var/log/mysql/error.log requerem um privilgio superior. Em CLIENTES (linhas 1 a 8 da Listagem 10).
innodb_buffer_pool_size = 1G
innodb_log_file_size = 512M seguida, iremos ao diretrio de dados E ento novamente, criamos a tabela
innodb_log_files_in_group = 7 do MySQL (linha 3), e verificamos seu CLIENTES_02, como uma cpia exata
innodb_log_buffer_size = 256M
contedo (linha 4). Repare nos arquivos da CLIENTES (linhas 10 a 12).
Listagem 10. Comandos SELECT para duplicar a tabela 3 vezes, medindo o tempo
01. mysql> DROP TABLE CLIENTES_02; 11. Query OK, 18105728 rows affected (2 min 45.44 sec)
02. Query OK, 0 rows affected (0.91 sec) 12. Records: 18105728 Duplicates: 0 Warnings: 0
03. 13.
04. mysql> DROP TABLE CLIENTES_03; 14. mysql> CREATE TABLE CLIENTES_03 ENGINE=InnoDB SELECT * FROM CLIENTES;
05. Query OK, 0 rows affected (0.16 sec) 15. Query OK, 18105728 rows affected (2 min 18.15 sec)
06. 16. Records: 18105728 Duplicates: 0 Warnings: 0
07. mysql> DROP TABLE CLIENTES_04; 17.
08. Query OK, 0 rows affected (0.14 sec) 18. mysql> CREATE TABLE CLIENTES_04 ENGINE=InnoDB SELECT * FROM CLIENTES;
09. 19. Query OK, 18105728 rows affected (2 min 42.03 sec)
10. mysql> CREATE TABLE CLIENTES_02 ENGINE=InnoDB SELECT * FROM CLIENTES; 20. Records: 18105728 Duplicates: 0 Warnings: 0
da Nerv.
s
D
prximo artigo desta srie, iremos abor- A SQL Magazine tem que ser feita ao seu gosto.
sobre e
dar a otimizao de leituras. At l! Para isso, precisamos saber o que voc, leitor,
s
ta
edio
acha da revista!
D seu voto sobre este artigo, atravs do link:
www.devmedia.com.br/sqlmagazine/feedback
Explain plan
Desvendando planos de execuo - Parte 3
N Resumo DevMan
as edies passadas abordamos
a interpretao de predicados,
ndices B-Tree, Bitmap, interao De que se trata o artigo:
entre os recursos de hardware, transaes e Este artigo trata dos conceitos envolvidos na anlise de um plano de execuo proveniente do comando
estratgias de acesso em tabelas e ndices. explain plan em banco de dados relacionais. O plano de execuo a estratgia de acesso adotada pelo
Nesta ltima parte focaremos os seguintes otimizador de consultas do banco de dados para que a mesma seja executada de maneira que obtenha
tpicos: a melhor performance possvel.
Estratgias de join (juno) entre
tabelas: Para que serve:
Nested Loops; Esclarecer e desmistificar os mecanismos intrnsecos das etapas de elaborao do plano de execuo,
Sort Merge Join; fazendo com que o DBA entenda o mecanismo de definio de estratgia de acesso e saiba como tirar
Hash Join. proveito dela.
e3
Reinaldo Tetsuo Katahira
Figura 1. Tabela JOGADOR incluindo suas respectivas nacionalidades e seu ndice B-Tree por Figura 2. Resultado da consulta SQL da combinao das tabelas PAS e JOGADOR
PAS_DO_JOGADOR
SELECT *
Nota do DevMan 1
FROM PAS, JOGADOR
WHERE PAS.NOME_DO_PAS = Cartesian join, Inner join, Left outer join/Right outer Full outer join: Consiste na listagem da combinao
JOGADOR.PAS_DO_JOGADOR join, Full outer join, Semi join, Anti-join das linhas compatveis com as da tabela remanescente
(atendendo ao predicado de juno), adicionando listagem
Cartesian join: Consiste na listagem da combinao de as demais linhas que no apresentaram compatibilidade
Para recuperar a informao de cada todas as linhas de duas tabelas (baseado no conceito de de ambas as tabelas, ou seja, todas os registros das
jogador e a respectiva Confederao que produto cartesiano). tabelas listadas na consulta sero apresentados,
independentemente de haver relacionamento entre os
o mesmo faz parte, necessrio fazer uma registros.
Inner join: Consiste na listagem da combinao das linhas
consulta ao banco de dados fazendo uso da
compatveis com as da tabela remanescente (atendendo
tcnica de juno entre as tabelas PAS e ao predicado de juno), ou seja, com base em uma das Semi join: Consiste na listagem, sobre apenas uma das
tabelas, das linhas compatveis (atendendo ao predicado
JOGADOR. Porm, alm de mencionar as tabelas da juno um inner join retornar somente as
linhas das tabelas remanescentes que possuam relao de juno) com outra qualquer encontrada na tabela
tabelas que faro parte da juno (tabelas existente. Como exemplo, posso citar a tabela CLIENTES e remanescente. Dessa forma, no exemplo de CLIENTES e
definidas na clusula FROM da consulta a tabela COMPRAS. Em um inner join, somente os clientes COMPRAS somente os clientes que possuem compras sero
que j fizeram compras (possuem relao com a tabela listados porm, mesmo que um determinado cliente possua
SQL), necessrio tambm utilizar uma mais de uma compra efetuada (mais de uma combinao
COMPRAS) apareceriam no resultado da consulta, os
tcnica de juno no filtro da consulta registros de clientes que no possuem compras seriam no relacionamento), a informao do cliente ser retornada
(clusula WHERE da consulta SQL). omitidos no resultado. apenas uma vez.
A consulta SQL que retorna as informa-
Left outer join/right outer join: Consiste na listagem Anti-join: Consiste na listagem, sobre apenas uma
es referentes ao jogador e respectiva das tabelas, das linhas no compatveis (atendendo ao
da combinao das linhas compatveis com as da tabela
Confederao pode ser vista na Listagem 1 remanescente (atendendo ao predicado de juno), predicado de juno) com nenhuma outra encontrada na
enquanto que o resultado desta mesma adicionando listagem as demais linhas que no tabela remanescente, ou seja, em CLIENTES e COMPRAS,
apresentaram compatibilidade da tabela posicionada somente os clientes que NO possuem compras sero
consulta SQL apresentada na Figura 2. listados.
esquerda (left outer join) ou direita (right outer join)
J tcnicas de juno podem ser consul- na declarao do FROM da consulta SQL. No exemplo de
tadas na Nota DevMan 1. CLIENTES e COMPRAS, o outer join retornaria tambm os
registros de clientes que no possuem compras.
Com base nestas definies, veremos ago-
ra as tcnicas que o otimizador do banco de
dados utiliza para resolver as junes de
Nested Loop
Em um Nested Loop, com base na primeira
tabela da juno, feita a iterao de cada
uma das linhas com todas as linhas das
tabelas remanescentes da juno. Esta
varredura na tabela remanescente pode ser
feita atravs de um ndice (caso exista) ou
atravs de uma varredura completa (Full
Table Scan). realmente o conceito de loop,
ou seja, para cada linha da primeira tabe-
la da juno, feita uma varredura na(s)
tabela(s) remanescente(s) para encontrar
combinaes.
Na estratgia de Nested Loop, a tabela com
menor cardinalidade deve ser utilizada
como tabela base e direcionar a pesquisa
pelos valores na tabela remanescente.
Exemplificando a estratgia de Nested
Loop para a consulta SQL apresentada na
Listagem 1 e, a mesma explicao de forma
grfica na Figura 3.
Figura 3. Demonstrao de Nested Loop 1. Utilizando a estratgia de Full Table Scan,
a tabela PAS inspecionada, resgata-se a
primeira linha NOME_DO_PAS: Brasil
CONFEDERAO: CONMEBOL;
2. Utilizando a estratgia de Index Range
Scan, o ndice B-Tree por PAS_DO_JOGA-
DOR da tabela JOGADOR pesquisado. O
valor Brasil anterior ou igual ao valor
referncia do n raiz Brasil, portanto
direciona-se ao n predecessor;
3. O valor Brasil posterior ao valor re-
ferncia do n intermedirio Argentina,
portanto direciona-se ao n sucessor;
4. O valor Brasil igual ao valor refe-
rncia do n folha Brasil, portanto dire-
ciona-se ao endereo das linhas Bloco: 30
Posio: 1 e Bloco: 32 Posio: 1;
5. Atravs do endereo da linha Bloco: 30
Posiao: 1 e Bloco: 32 Posio:1 os valo-
res Jlio Csar e Kaka so exibidos.
Hash Join
Um Hash Join pega a menor tabela e
a percorre executando uma funo hash
(ou algoritmo hash) sobre as colunas
presentes no filtro (clusula WHERE)
e armazena o resultado. Logo depois
executa a mesma funo hash nas tabelas
remanescentes considerando as colunas
presentes no filtro e faz a comparao Figura 5. Demonstrao de Hash Join
Listagem 2. Valores distintos de estado civil da tabela ao ano 1900 e ao Nao Informado res- de CUSTOMERS (que atende ao predicado
sh.customers. pectivamente. de filtro cdigo 3), dentre as parties
REM O comando abaixo converte valores NULL na O cdigo (Id) da operao (Operation) nmero 1 a 28 (Pstart e Pstop) da tabela
representao <NULL> para efeito de visualizao. associado ao objeto (Name), atravs da car- SALES, localiza-se o endereo (ROWID)
SET NULL <NULL>
dinalidade estimada (Rows) e leitura em bytes das linhas correspondente ao valor bitmap
SELECT count(*), cust_marital_status estimada (Bytes). Calcula-se o custo (Cost) de cada CUST_ID (que atende ao predicado
FROM sh.customers
GROUP BY cust_marital_status;
que serve de mtrica de suporte s decises de acesso cdigo 6) e eventualmente exibe-
do otimizador de consultas. O tempo estima- se as colunas remanescentes de SALES.
COUNT(*) CUST_MARITAL_STATUS do de execuo (Time) baseado no custo e os Repetem-se os passos at a concluso da
------------- --------------------------------
615 Divorc. limites de parties da tabela (Pstart/Pstop) inspeo de CUSTOMERS.
75 Mabsent para inspeo tambm so fornecidos. A Listagem 4 apresenta as informaes
3 Mar-AF
2034 Married O cdigo da operao no serve como base referentes aos predicados da consulta.
1503 NeverM para a sequncia das etapas. A primeira As estatsticas (statistics)(Listagem 5)
134 Separ.
136 Widowed
operao deste caso o TABLE ACCESS revelam algumas mtricas da execuo
150 divorced FULL em CUSTOMERS, pois pertence corrente.
14253 married
ltima estratgia de join (NESTED LOOP, - As chamadas recursivas (recursive calls),
19094 single
75 widow MERGE JOIN ou HASH JOIN) da ramifi- no contexto Oracle, so chamadas internas
17428 <null> cao. Atravs da inspeo de cada linha do SGBD e diferente das originadas direta-
mente pelo usurio. Uma taxa muito alta de
recursive call sobre as chamadas do usurio
Listagem 3. Consulta s tabelas sh.sales e sh.customers. pode indicar problemas de dimensionamen-
to dos mais diversos tipos de segmento ou
REM O comando SET AUTOTRACE TRACE habilita o modo de investigao e omite a exibio dos dados.
SET AUTOT TRACE EXP STAT dicionrio de dados (data dictionary miss);
- O db block get revela o nmero de blocos
REM O comando abaixo descarrega o buffer cache para que nenhuma das consultas dos testes seja beneficiada.
ALTER SYSTEM FLUSH BUFFER_CACHE; acessados em current mode, portanto blocos
na situao corrente;
SELECT *
FROM sh.sales s, sh.customers c - O consistent get revela o nmero de
WHERE s.cust_id = c.cust_id blocos acessados em consistent mode,
AND DECODE(cust_marital_status, Married, married, NULL, married, cust_marital_status) = married
AND NVL(cust_year_of_birth, 1900) >= 1900
portanto na situao em que foi iniciada
AND DECODE(cust_gender, NULL, Nao Informado, cust_gender) >= M; a execuo (consistncia de leitura tem-
poral discutido no tpico de transaes).
366653 rows selected.
As mtricas somadas de db block get e o
Elapsed: 00:00:14.67 consistent get representam o nmero total
Execution Plan de blocos acessados pela consulta (logical
---------------------------------------------------------- IO ou logical read);
Plan hash value: 1876030245
- O physical read revela o nmero de lei-
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- turas em disco;
| Id | Operation | Name | Rows | Bytes | Cost (%CPU) | Time | Pstart | Pstop |
- O redo size revela o espao utilizado em
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 181 | 37829 | 865 (1) | 00:00:11 | | | bytes em redo pela execuo de instruo
| 1 | NESTED LOOPS | | | | | | | | DML (Data Manipulation Language);
| 2 | NESTED LOOPS | | 181 | 37829 | 865 (1) | 00:00:11 | | |
|*3 | TABLE ACCESS FULL | CUSTOMERS | 1 | 180 | 406 (1) | 00:00:05 | | | - O trfego de bytes via SQL*Net revela-
| 4 | PARTITION RANGE ALL | | | | | | 1 | 28 | do pelas mtricas de bytes sent via SQL*Net
| 5 | BITMAP CONVERSION TO ROWIDS | | | | | | | |
|*6 | BITMAP INDEX SINGLE VALUE | SALES_CUST_BIX | | | | | 1 | 28 |
to client, bytes received via SQL*Net from
| 7 | TABLE ACCESS BY LOCAL INDEX ROWID | SALES | 130 | 3770 | 865 (1) | 00:00:11 | 1 | 1 | client e SQL*Net roundtrips to/from client;
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Os sorts (memory) e sorts (disks) so rela-
cionados ao espao temporrio utilizado
Listagem 4. Informaes sobre os predicados da consulta. em memria e disco;
- O rows processed referente ao nmero de
Predicate Information (identified by operation id):
linhas exibidas.
-----------------------------------------------------------------------------
ACCESS FULL s duas tabelas acessou Predicate Information (identified by operation id):
27.584 blocos (db block gets+consistent ---------------------------------------------------
gets), portanto apenas 2% dos blocos
3 - filter(DECODE(CUST_MARITAL_STATUS,Married,married,NULL,married,CUST_MARITAL_STATUS)=married
acessados em testes anteriores resultando AND NVL(CUST_YEAR_OF_BIRTH,1900)>=1900 AND DECODE(CUST_GENDER,NULL,Nao Informado,
na melhor resposta de 10,64 segundos. CUST_GENDER)>=M)
7 - access(S.CUST_ID=C.CUST_ID)
O buffer cache foi descarregado antes da
execuo da consultas o que culminou na Statistics
leitura em disco de 3102 blocos (physical ----------------------------------------------------------
15635 recursive calls
reads). Constata-se que o ndice de leitura
0 db block gets
em discos foi bastante semelhante nos trs 1330418 consistent gets
testes o que aproximou os tempos de todas 3835 physical reads
0 redo size
as consultas, mas no foi suficiente para 19422964 bytes sent via SQL*Net to client
anular os benefcios da ltima estratgia 269289 bytes received via SQL*Net from client
adotada. 24445 SQL*Net roundtrips to/from client
133 sorts (memory)
Para a tentativa de resoluo do problema 0 sorts (disk)
citado foi avaliado o Oracle SQL Tuning 366653 rows processed
---------------------------------------------------------------------------------------------------------------
Concluso hint) no passado seja ruim agora e esse fornecidas ao otimizador com a coleta regu-
Como vimos ao longo desta srie de arti- um dos principais motivos para que se lar de estatsticas. Estatsticas atualizadas
gos, o plano de execuo de uma consulta evite o uso de hints. faro com que o otimizador escolha sempre
SQL de extrema importncia para a efi- O ideal sempre deixar na mo do ban- a melhor estratgia de acesso de acordo com
cincia de um SGBD e saber analisar este co de dados para que a escolha da melhor o momento do banco de dados.
plano de execuo uma tarefa primordial estratgia de acesso seja feita. Mas para isso,
para todo e qualquer DBA. muito importante que o DBA fornea
Os planos de execuo fornecem ao DBA informaes para que o otimizador escolha
todas as informaes necessrias para a melhor estratgia. Essas informaes so
Oracle Database Online
a anlise de performance de consultas
Documentation 11g Release 2 (11.2)
mas cabe ao DBA fazer as anlises corre-
http://www.oracle.com/pls/db112/
tamente para tirar do SGBD o mximo
Reinaldo Tetsuo Katahira homepage?remark=tahiti
possvel.
reinaldokatahira@gmail.com
Os hints so bons amigos para fazer Oracle Database 11g Release 2
- IBM Certified Database Admi-
com que o plano de execuo adote uma nistrator DB2v9 http://www.oracle.com/technology/software/
estratgia melhor de acesso, mas muito - Oracle Certified Expert RAC 10g products/database/index.html
importante salientar que os mesmo hints - Oracle Certified Professional
podem tambm ser um grande vilo em - Microsoft Certified Database Administrator D seu feedback sobre esta edio! eu
Feedback
s
D
outro momento. Isso se deve ao fato de - Microsoft Certified Systems Engineer A SQL Magazine tem que ser feita ao seu gosto.
sobre e
um banco de dados ser muito dinmico, - Microsoft Certified Systems Administrator
Para isso, precisamos saber o que voc, leitor,
s
ta
edio
com crescimentos de tabelas e tambm - DBA Oracle na IBM do Brasil em projeto interna-
acha da revista!
cional administrando ambiente de produo de alta
redues de tabelas. Esta alterao no vo-
criticidade. D seu voto sobre este artigo, atravs do link:
lume de dados pode fazer com que uma
- Consultor independente de Bancos de Dados. www.devmedia.com.br/sqlmagazine/feedback
estratgia de acesso boa (forada por um
ta
edi
N Resumo DevMan
a primeira parte deste artigo vi-
mos todos os conceitos referen-
tes ao ASM Automatic Storage De que se trata o artigo:
Management e j iniciamos uma sesso Este artigo trata da definio de conceitos e utilizao do ASM Automatic Storage Management, fer-
Mo na Massa em que criamos arquivos ramenta da Oracle para gerenciamento do armazenamento de dados.
no sistema operacional para simular raw
devices que sero utilizados como discos. Para que serve:
Na segunda parte, criamos manualmente Auxiliar os DBAs nas tarefas do dia-a-dia referentes a alocao e gerenciamento de espao para o cres-
uma instncia ASM, inclusive verificando cimento dos bancos de dados.
se a instncia conseguiu enxergar os
discos existentes. Em que situao o tema til:
Na terceira parte comeamos a, efetiva- Em ambientes Single Instance ou Real Application Cluster o ASM se mostra muito til para centralizar o
mente, utilizar o ASM. J sabemos como armazenamento e administrao de espaos, facilitando bastante as tarefas rotineiras do DBA.
criar e gerenciar disk groups. Vimos como
trabalhar com templates e com diretrios na
quarta parte da srie. Na quinta parte apren- +dgroup.file.incarnation Agora que j conhecemos as maneiras
demos como trabalhar com aliases. Continu- Exemplo: +DATA.257.728999701 de referenciar arquivos no ASM, bom
arei nesta edio a desvendar mais algumas Alias do arquivo: o arquivo referenciado termos um certo cuidado ao utiliz-las
caractersticas do ASM. Em particular, atravs do apelido que foi dado no mo- pois os arquivos no ASM no so excludos
iniciaremos a configurao para migrao mento da criao, veja abaixo o formato: automaticamente se:
de um banco de dados para o ASM. +dgroup/directory/filename O(s) arquivo(s) foi(foram) criado(s) utili-
Exemplo: +DATA/rr11g/datafile/ zando um alias, ou seja, no foi utilizado
Os arquivos no ASM ts_sqlmag_01.dbf o formato OMF (Oracle Managed Files);
preciso conhecer alguns detalhes quan- Alias do arquivo juntamente com o Foi executado um Recovery (recuperao)
do trabalhamos com os arquivos no ASM. template: caso tenha sido utilizado um utilizando a tcnica de um determinado
Conhecer estes detalhes podem evitar que template na criao deste arquivo, o mes- ponto no tempo, conhecido como Point-
o DBA perca um tempo precioso tentando mo pode ser referenciado considerando in-Time Recovery.
diagnosticar qual o motivo do problema esta definio, conforme formato descrito
apresentado. abaixo: Nos casos descritos acima, ser neces-
Existem vrias maneiras de referenciar +dgroup(template)/alias srio excluir manualmente os referidos
um arquivo no ASM: Exemplo: +DATA(SQL_MAGAZINE)/ arquivos. E poderemos excluir estes ar-
Qualificao completa do arquivo: esta ts_sqlmag_02.dbf quivos referenciando-os atravs de uma
referncia contempla a informao com- Qualificao incompleta do arquivo: das formas descritas acima, conforme
pleta do arquivo em questo, no seguinte podemos tambm referenciar os arquivo apresentado na Listagem 1.
formato: atravs da qualificao incompleta, como
+dgroup/dbname/file_type/file_ mostrado abaixo: Convertendo o banco de dados para o ASM
type_tag.file.incarnation +dgroup A partir de agora, j conhecemos tudo o
Exemplo: +DATA/rr11g/datafile/ Exemplo: +DATA que precisvamos para utilizar o ASM, o
sqlmag.257.728999701 Q ualificao incompleta do arquivo que falta agora justamente converter o
Formato numrico do arquivo: desta juntamente com o template: esta mais banco de dados da estrutura convencional
forma, o arquivo referenciado conside- uma maneira de referenciar um arquivo para o ASM.
rando as informaes numricas definidas do ASM, veja abaixo: Um ponto interessante que no precisa-
de maneira nica na instncia ASM. O +dgroup(template) mos fazer a converso de todo o banco de
formato apresentado logo abaixo: Exemplo: +DATA(SQL_MAGAZINE) dados diretamente para o ASM. possvel
ra ge Management - Parte 6
Ricardo Rezende
encerra-se a sesso do SQL*Plus (linha 5) deseja restaurar o arquivo, pois o RMAN finalizamos a sesso do RMAN (linha
e inicia-se uma sesso do RMAN conec- utilizar o valor do parmetro CONTROL- 38) e iniciamos uma sesso do SQL*Plus
tando-se ao banco de dados (linha 8). FILE que est definido para a instncia. conectando-se ao banco de dados (linhas
Agora preciso iniciar o banco de dados Lembre-se que este parmetro foi alterado 42 a 48).
em modo NOMOUNT, ou seja, somente a na Listagem 3 (linha 16) porm definido No possvel abrir o banco direta-
instncia iniciada, mas nem mesmo o apenas para o spfile. Ao reiniciar a instn- mente. necessrio primeiro montar
controlfile lido (linha 16). Com a ins- cia, este novo valor passou a ter efeito. o banco de dados, lendo e validando o
tncia inicializada, necessrio restaurar A restaurao foi bem sucedida e o novo controlfile, para depois abr-lo (linha 51).
o controlfile utilizando o arquivo original controfile apresentado na linha 35. Pode- Aps o banco de dados estar montado,
como origem dos dados (linha 27). Perceba mos agora abrir o banco de dados para possvel verificar qual a localizao do
que no preciso indicar o local onde se utilizao normal da aplicao. Para isso, controlfile, as linhas 58 a 64 mostram que
Pronto, neste momento temos parte da maneira completa ou fracionada. No pr- Ricardo Rezende
configurao do banco de dados para sua ximo artigo desta srie mostraremos como ricardo@sqlmagazine.com.br
converso para uso no ASM finalizada! converter apenas um datafile, apenas uma ricarezende@gmail.com
Blog: http://ricarezende.blogspot.com
tablespace e tambm todo o banco de da-
Twitter: http://twitter.com/ricarezende
Concluso dos de uma s vez.
- DBA Oracle certificado pela Oracle
Mostramos neste artigo algumas parti- Caso voc tenha disponvel uma janela University (DBA 9i track e DBA OCP 10g).
cularidades dos arquivos no ASM e ini- de manuteno confortvel, prefira a - IBM Certified Database Associate DB2 9
ciamos a configurao do banco de dados terceira opo, mas caso seu banco de da- - DBA Oracle na IBM do Brasil em projeto interna-
para a converso total do banco de dados dos seja bastante grande que no permita cional administrando ambiente de produo de alta
para a estrutura do ASM. a converso total do banco de dados, no criticidade.
Na verdade, algumas partes do banco de descarte o uso do ASM, pois a primeira e - Consultor independente de Bancos de Dados.
dados j foram convertidas para o ASM o segunda soluo se mostram ideais. - Editor tcnico da revista SQL Magazine.
que falta converter todo o restante da estru- Desta forma, na prxima edio conti-
D seu feedback sobre esta edio! eu
Feedback
tura dos dados, ou seja, o banco de dados. nuaremos a desvendar os mistrios do
s
D
Como mencionamos neste artigo, po- ASM com a converso do banco de dados.
demos converter o banco de dados de No perca! Para isso, precisamos saber o que voc, leitor,
s
ta
edio
acha da revista!
D seu voto sobre este artigo, atravs do link:
www.devmedia.com.br/sqlmagazine/feedback
A Resumo DevMan
engenharia de requisitos um ter-
mo usado para descrever as ativida-
des relacionadas produo (levan- De que se trata o artigo:
tamento, registro, validao e verificao) e Este artigo apresenta inicialmente algumas definies associadas engenharia de requisitos e espe-
gerncia (controle de mudanas, gerncia de cificao de requisitos atravs de casos de uso. Em seguida, so apresentados alguns exemplos reais de
configurao, rastreabilidade, gerncia de especificao utilizando casos de uso.
qualidade dos requisitos) de requisitos. A
Figura 1 representa essa definio. Para que serve:
Mas o que podemos entender por re- O objetivo do artigo explicitar de forma prtica como a especificao dos requisitos do software
quisitos? Existem diferentes definies atravs de casos de uso podem ser efetuadas em um nvel de detalhe tal que informaes importantes
encontradas na literatura tcnica: para outras etapas do desenvolvimento como planejamento de testes, projeto e desenvolvimento no
U m requisito uma caracterstica do sis- sejam omitidas.
tema ou a descrio de algo que o sistema
capaz de realizar para atingir os seus Em que situao o tema til:
objetivos; O assunto abordado til no dia a dia do analista de requisitos na realizao de suas atividades.
As descries das funes e restries
so os requisitos do sistema;
Um requisito uma propriedade que o Reduzir o custo de desenvolvimento O objetivo deste artigo no apresentar
software deve exibir para resolver algum (como vimos anteriormente, requisitos mal um referencial terico sobre como lidar
problema no mundo real; definidos causam retrabalho). com cada questo envolvida nas ativida-
Uma condio ou uma capacidade que des dirias de um analista de requisitos.
deve ser alcanada ou estar presente em A atividade de identificao e especifi- Focaremos aqui apenas no ltimo tpico
um sistema para satisfazer um contrato, cao de requisitos do software uma ati- da lista apresentada acima: Definir as
padro, especificao ou outro documento vidade bastante desafiadora. complexo: necessidades do usurio em termos de
formalmente imposto... Identificar as reais necessidades do especificaes. Faremos isto de forma
cliente; totalmente prtica atravs da apresentao
Assim, podemos entender requisitos Lidar com clientes; de um conjunto de casos de uso especifica-
como sendo o conjunto de necessidades F ormalizar as necessidades do cliente dos que podero servir de base para suas
explicitadas pelo cliente que devero ser atravs da especificao de requisitos de atividades como analista de requisitos.
atendidas para solucionar um determina- forma que esta seja de fcil entendimento
do problema do negcio no qual o cliente para o cliente e fornea as informaes Contextualizao dos Exemplos
faz parte. importante estar atento para requeridas pela equipe de desenvolvi- As especificaes de casos de uso apre-
esta definio: embora o requisito seja mento; sentadas neste artigo so fruto da expe-
definido pelo cliente, nem sempre o que L idar com domnios desconhecidos. rincia prtica do autor. Eles no servem
o cliente quer o que o negcio precisa. Entende-se por domnio o contexto para o de gabarito para futuras atividades de
Cabe equipe de consultores identificar qual o software est sendo desenvolvido. especificao, ao invs disso, podem ser
a real necessidade do negcio. Por exemplo: contabilidade, medicina, considerados um ponto de partida para
Neste contexto, requisitos so impor- controle de estoque. Para ilustrar esta que possamos ver na prtica como pode-
tantes para: dificuldade, imagine-se elaborando a es- mos escrever casos de uso.
E stabelecer uma base de concordncia pecificao dos requisitos de um mdulo importante estar atento tambm ao fato
entre o cliente e o fornecedor sobre o que estatstico para um sistema do mercado de que os casos de uso apresentados neste
o software far; financeiro; artigo refletem as caractersticas de escrita
F ornecer uma referncia para a validao Definir as necessidades do usurio em dos autores. Estas caractersticas que en-
do produto final; termos de especificaes. volvem itens como nvel de detalhamento,
informaes contidas nos casos de uso, apresentado na Tabela 1 como sendo im- excluso e alterao. Sua especificao est
dentre outras, costumam mudar tambm portantes na descrio de um caso de uso. apresenta na Tabela 2.
de organizao para organizao. A partir de agora apresentaremos dois Para o nosso segundo exemplo, procura-
Tendo isto em mente, para este artigo exemplos de casos de uso. Procuramos uti- mos trabalhar com outra situao bastante
iremos considerar o conjunto de definies lizar como exemplo situaes corriqueiras comum de encontrarmos em sistemas de
no dia a dia do desenvol- informao: consulta a uma dada entidade
vimento de software. e disponibilizao de opes de manipula-
o desta entidade. Mais especificamente,
Exemplos de Casos de trabalharemos com uma funcionalidade de
Uso consulta de cursos para uma empresa que
In icialmente vamos gerencia cursos. A especificao do caso
apresentar um caso de de uso para esta funcionalidade pode ser
uso contendo a descrio vista na Tabela 3.
de um cenrio de cadas-
tro bsico para a entidade Concluso
Pessoa Fsica. Este cadas- Neste artigo apresentamos inicialmente
tro possui as operaes algumas definies associadas engenharia
Figura 1. Engenharia de Requisitos de consulta, incluso, de requisitos. Em seguida, apresentamos
Objetivo: Permitir que funcionrios adicionem, consultem, removam ou alterem dados de pessoas fsicas.
Requisitos: -
Atores: Funcionrio
Prioridade: Baixa
Pr-condies:
Freqncia de uso: Eventual
Criticalidade: Baixa
Condio de Entrada: O Funcionrio seleciona a opo Manter Pessoa Fsica.
Fluxo Principal: O sistema apresenta formulrio de busca de pessoas fsicas contendo as informaes: - CPF (campo editvel); - Nome (campo editvel);
- Estado (lista dos Estados brasileiros); - As opes Buscar e Cancelar e - A opo Incluir Nova Pessoa Fsica
(Informaes Gerais): - CPF (campo editvel); - RG (campo editvel) e - Nome (campo editvel)
Objetivo: Permitir que Funcionrios acompanhem o ciclo de vida dos cursos ministrados pela organizao.
Requisitos:
Atores: Funcionrio
Prioridade: Mdia
Pr-condies:
Freqncia de uso: Eventual
Criticalidade: Mdia
Condio de Entrada: Funcionrio seleciona a opo Consultar Curso.
Fluxo Principal: O Sistema apresenta as seguintes opes para visualizao dos cursos [RN1]:
- Programa (opo Todos + lista de programas) (campo editvel)
- Nmero do Curso (campo editvel)
- Ttulo do Curso (campo editvel)
- Coordenador de Curso (campo editvel)
- Cliente (campo editvel)
- Lista de status: todas (Curso Ativo + Curso Encerrado), Curso Ativo, Curso Encerrado (campo editvel)
O ator preenche os filtros de busca [RN2].
O Sistema apresenta uma lista de cursos de acordo com os filtros fornecidos, ordenada por Ttulo do Curso [A1]:
- Programa (somente leitura)
- Curso (Nmero + Ttulo) (somente leitura)
- Coordenador(es) do Curso (somente leitura)
- Cliente(s) (somente leitura)
- Data de Incio (somente leitura)
- Data de Trmino (somente leitura)
- A opo Detalhar
O Sistema apresenta ao final a opo Voltar
Ator seleciona a opo Detalhar [A2]
O Sistema apresenta tela contendo as informaes:
- Programa
- Curso (Nmero + Ttulo)
- Coordenador(es) do Curso
- Cliente(s)
- Data de Incio
- Data de Trmino
- Valor do Curso
- Carga Horria
ta
edio
atuado com gerncia de projetos, requisitos e testes
da revista! de software. Implementador certificado do MPS.BR,
D seu voto sobre este artigo, atravs do link: tendo tambm experincia atuando junto a empresas
www.devmedia.com.br/sqlmagazine/feedback certificadas CMMI.