Tendências e Dicas em Bancos de Dados
Tendências e Dicas em Bancos de Dados
INA N ew s : v e j a a s ú t l i m a s n ov i d a d e s d o m u n d o S Q L
PÁG
68
CO
M PostgreSQL
O RA Saiba o que são rules e
AG
como utilizá-las
Banco de dados
História e tendências futuras
História
iniciante
Edição 21 :: Ano 2 : R$ 10,50
Banco de dados em grade
Realidade ou ficção?
intermediário
InterBase 7.5
Quando e porque migrar
NORMALIZAÇÃO
Aprenda a organizar melhor o esquema
de seu banco de dados
Prevalência de objetos
Conheça essa abordagem
de persistência
Particionamento Sistemas de
no Oracle informações geográficas
Perigos e armadilhas Saiba como efetuar a modelagem
avançado
5 95
5
INTERBASE 7.5 75
25
Você que ainda não usa o Interbase 7.5 precisa testar sua performance.
Baixe o Trial com todas as funcionalidades disponíveis em:
[Link]
Mais Informações ligue:
00 100
.br (11)3862-7471
[Link]
5 95
rese
ç ões - bsp@p
5
rma 75
Mais info
5 Distribuidor Oficial 25
Nesta edição
95
75
25
News Opinião
06. Esteja por dentro das [Link] de dados em grade
R
últimas novidades do realidade ou ficção?
mundo SQL Veja o que é grade computacional, e como o
meio acadêmico e as empresas de Banco de
dados estão lidando com isso
SGBD Mini-Curso
32. Modelagem de dados
08. XPrevail - Uma camada
espaciais
.NET de prevalência de
L
Este artigo apresenta alguns exemplos de
objetos modelagem de dados especiais, e conceitos
Persistência simples e eficiente, inspeção remota de objetos
sobre sistemas de informações geográficas
e programação de aspectos
K
55. Backups com SQL Server
2000 Parte I: Modelos de 62. Perigos e
armadilhas do
T
Recovery
Entenda a arquitetura do log de particionamento - Parte 2
transações e modelos para recuperação Conheça mais algumas armadilhas e dicas sobre
de dados particionamento
100
95
75
Legenda
A Figuras
C Listagens
I Links D Tabelas
E Box
25
5
B Notas
O CD-Rom
F Bibliografia
H Downloads
V Leitura Obrigatória
Editorial
Junho . 2005
ISSN 1677-9815
Coordenador Editorial
Gladstone Matos
gladstone@[Link]
S
Editor Geral
abemos que um esquema de banco de Rodrigo Oliveira Spínola
rodrigo@[Link]
dados relacional deve representar atribu-
Equipe Editorial
tos agrupados em tabelas. Estes modelos
Paulo Ribeiro e Ricardo Rezende
conceituais permitem ao projetista identificar
Gerente de Marketing
os elementos que formarão o agrupamento lógico
Kaline Dolabella
das tabelas com seus respectivos campos. Entretanto, mesmo seguindo alguns procedimentos para kaline@[Link]
realização do mapeamento entre modelos conceituais e modelo lógico relacional, ainda faz-se ne- Articulistas desta edição
cessário algum tipo de avaliação com objetivo aperfeiçoar o modelo eliminando anomalias. Neste Fernando Vasconcelos Mendes, Celso H. Poderoso Oliveira, Amir Sa-
mary, Paulo Sérgio Palmério, Vinícius Maeda, Ronaldo Sales, Thiago
contexto, esta edição da SQL Magazine destaca o assunto Normalização. Na matéria serão apre- Simonato, Manuel Antônio de Castro Júnior, Pablo Vieira Florentino,
sentados exemplos práticos de modelagens de dados não normalizados, com suas conseqüências Gustavo Bartz Guedes, Paulo Ribeiro e Arup Nanda
Destaco também a matéria do Paulo Ribeiro: “Backups com SQL Server 2000 Parte I: Modelos Ilustração
de Recovery”. Neste artigo, o autor explora a arquitetura do log de transações e modelos para re- Felipe Natividade Machado
cuperação de dados. Perceba que ainda não são discutidos os tipos de backup oferecidos pelo SQL Revisão
Server. Isto por que é fundamental um entendimento dos diferentes modelos de recovery antes Eduardo Oliveira Spínola
eduspinola@[Link]
de discutir-se a fundo como se deve proceder com backups.
Vamos dar também as boas vindas ao Paulo Palmério. A partir de agora teremos suas matérias Distribuição
Fernando Chinaglia Dist. S/A
sobre InterBase aqui na SQL Magazine. Nesta primeira, intitulada: “Borland InterBase: Quando Rua Teodoro da Silva, 907
Grajaú - RJ - 206563-900
e por que migrar para InterBase 7.5”, ele apresenta alguns motivos para atualização para a versão
mais recente do InterBase. Vale a pena conferir. Para informações sobre veicula- Publicidade
Apresentamos ainda nesta edição o XPrevail, uma abordagem para persistência de objetos. ção de anúncio na revista ou no
site entre em contato com:
Quem nos descreve esse framework é o seu próprio desenvolvedor, Fernando Vasconcelos. Neste
Luiz Cláudio Barreto
artigo, além de entender os conceitos envolvidos na prevalência, você aprenderá na prática como publicidade@[Link]
ela funciona. Uma ótima leitura. Para fechar parcerias ou ações específicas de marketing com
Além destes, temos mais dois artigos. Usando rules no PostgreSQL e Perigos e armadilhas do a DevMedia, entre em contato com:
você está achando da revista: que tipo de artigo informando o título e mini- Kaline Dolabella – Gerente de Marketing
você gostaria de ler, que artigo você mais gostou resumo do tema que você gostaria de publicar: kalined@[Link]
e qual artigo você menos gostou. Fique a vontade
Rodrigo Spínola - Editor da Revista
para entrar em contato com os editores e dar a sua Ou pelo telefone: (21) 2283-9012
editor@[Link]
sugestão!
Se você estiver interessado em publicar um Ricardo Rezende - Editor do Site
Realização Projeto Gráfico Apoio
artigo na revista ou no site SQL Magazine, entre ricardo@[Link]
Revenda LocaWeb.
A LocaWeb é a melhor empresa de hospedagem de sites do Brasil. E agora você
pode oferecer toda esta infra-estrutura para seus clientes como se fosse sua.
Basta contratar a Revenda LocaWeb e usufruir de tecnologia, segurança
e liberdade para que possa administrar como quiser os sites, contas de e-mail,
bancos de dados, espaço em disco e outras ferramentas. Você e seus clientes
ganham. Hospedagem de sites é o nosso negócio e agora é o seu também.
News
•Controle automático de integridade referencial, entre outras.
I
niciarei o artigo explicando o conceito de prevalência, referenciamos simplesmente como engine.
sua filosofia, funcionamento interno e empregos mais • PrevalentSystem: classes definidas pelo usuário
adequados. Posteriormente, vou expor o que é o proje- que devem referenciar todos os objetos de negócios da
to XPrevail, como ele pode ajudar em uma grande variedade aplicação, ou seja, os objetos que serão persistidos. Os
de cenários e prover uma programação prática e moderna. objetos por ela referenciados serão serializados quando
for solicitado ao PrevalenceEngine um snapshot. Dessa
O que é prevalência? forma, qualquer objeto fora dessa classe terá seu estado
O termo prevalência foi popularizado pelo brasileiro perdido. Grosseiramente, dependendo de seu design,
Klaus Wuestefeld e concretizado no projeto Prevayler, uma ela pode representar um paralelo com uma tabela ou o
implementação em Java. Grande parte da filosofia em- próprio banco de dados. Aqui pode ser empregada facil-
pregada pela prevalência foi originalmente publicada por mente uma variante do patterns DAO (ler B 1).
Andrew D. Birrell, Michael B. Jones e Edward P. Wobber • Snapshot: é o processo no qual o PrevalenceEngine
em 1987 através de um artigo ainda hoje disponível em serializa todos os PrevalentSystems, tal qual eles es-
[Link] tão no momento da solicitação. Isso dá origem a um
Uma interessante leitura. novo arquivo de snapshot, e torna desnecessária a lei-
A prevalência emprega a filosofia descrita no artigo an- tura dos arquivos de operações anteriores (arquivos que
teriormente citado – que poderá ser vista mais adiante na guardam todas alterações realizadas nos objetos
descrição do fluxo do processo de prevalência – para garan- de negócio).
tir a persistência de objetos, utilizando para isso a memória • Operation: pelo conceito original proposto pela pre-
principal do computador (a memória RAM). Todos os obje- valência, toda alteração a ser realizada nos objetos man-
tos de negócios ficam persistidos na memória e há garantia tidos por um PrevalentSystem (ou nele próprio) deve
de que eles serão recuperados fielmente caso haja alguma ser feita através de objetos de classes que implemen-
queda de energia ou falha na aplicação. Em linhas gerais, os tam a interface IOperation definida pelo framework.
objetos em si são mantidos em memória volátil e as altera- Essas instâncias são passadas ao PrevalenceEngine para
ções realizadas neles são mantidas em memória não volátil. registro e execução (no projeto prevayler, a interface
Para entendermos melhor como esse processo ocorre, ve- equivalente chama-se Transaction). Posteriormente ve-
jamos inicialmente alguns termos amplamente divulgados remos que o XPrevail pode tornar essa obrigatoriedade
dentro dessa abordagem de persistência: completamente transparente para o usuário.
• PrevalenceEngine: trata-se de uma classe interna
dos frameworks de prevalência, responsável por todo o B 1. O pattern Data Access Objects - DAO
processo de execução, registro e recuperação das altera- O padrão DAO destina-se a prover uma boa separação entre as
ções realizadas em um PrevalentSystem. Muitas vezes a regras de negócio de uma aplicação e a fonte através da qual ela
8 21ª Edição
SGBD
conterá uma versão serializada de todos os objetos (que
dados quanto possível.
implementam IOperation) que efetuaram alterações
Esse padrão pode ser empregado para casos mais simples, como
quando queremos tornar nossa aplicação “independente” do
no PrevalentSystem, exatamente na mesma ordem em
SGBDr utilizado – como a aplicação não acessa diretamente que elas ocorreram.
classes específicas do SGBDr em questão, acessa apenas a 7. Caso nesse ponto ocorresse uma falha de energia.
interface DAO, o processo fica simples e elegante, até quando Nossa aplicação deveria ser reposta no ar, tão logo o
queremos mudar radicalmente a fonte de dados, passando a ambiente tivesse sido restabelecido. No momento da
recebê-los através de um Web Services ou outra coisa desse tipo. inicialização do PrevalenceEngine, ele irá ler todos os
Uma excelente referência sobre esse padrão pode ser encontrada arquivos de log de operações gerados. Des-serializará
no site da SUN através do endereço [Link] todos os objetos contidos nos arquivos e irá executá-los
blueprints/corej2eepatterns/Patterns/[Link].
novamente. Atente para o detalhe que os objetos man-
tidos nesses arquivos são os da classe AddClient, não os
Conhecidos os conceitos, podemos descrever um fluxo da classe Client. O PrevalenceEngine está constante-
simples exemplificando claramente como se dá o processo mente registrando as alterações realizadas nos objetos
de prevalência: de negócios, não os objetos de negócio em si.
1. Precisamos definir uma classe que manterá re- 8. Tendo a aplicação voltado ao ar e seu estado an-
ferência a nossos objetos Client. Ela será nosso terior recuperado, poderíamos gerar mais algumas al-
PrevalentSystem e poderia chamar-se Clients. terações no PrevalentSystem e solicitar um snapshot.
2. Deveremos declarar uma referência para o Nesse momento o PrevalenceEngine irá gerar um
PrevalenceEngine e inicializá-la, momento no qual arquivo novo, não um de operações, mas um especi-
será exigida a informação de quais classes serão os ficamente para o snapshot. Esse arquivo conterá uma
PrevalentSystems. Naturalmente devemos informar versão serializada do PrevalentSystem inteiro, ou seja,
apenas Clients, já que declaramos apenas ela. efetivamente de todos os objetos de negócio. Diga-
3. A inicialização do PrevalentSystem deve ser soli- mos que após o snapshot, fizemos mais algumas alte-
citada ao PrevalenceEngine, através da propriedade rações no estado do PrevalentSystem e ocorreu outra
PrevalentSystem. Ela retornará uma instância da classe falha de energia.
Clients com um estado exatamente igual ao da última 9. Quando nossa aplicação solicitar a inicialização
execução (caso tenha havido uma). do PrevalenceEngine, ele buscará pelo mais recente
4. Como foi dito, qualquer alteração no snapshot gerado. De posse dele, ele des-serializará seu
PrevalentSystem para prevalecer é exigido que seja conteúdo e obterá uma versão do PrevalentSystem. Fei-
feita através de objetos de classes que implemen- to isso, pegará todos os arquivos de log de operações
tem a interface IOperation. Assim, podemos decla- posteriores ao último snapshot e re-executará todas as
rar duas classes, uma chamada AddClient e outra operações em cima do PrevalentSystem obtido anterior-
chamada RemoverCliente, ambas implementando a mente. Isso resultará em um PrevalentSystem tal qual
interface IOperation. Respectivamente, elas seriam existia antes da falha, da forma mais otimizada possível.
utilizadas para adicionar e remover objetos Cliente
do PrevalentSystem. Ao longo desse texto podere- Dentre as principais vantagens do uso de prevalência, po-
mos ver o que o XPrevail propõe uma programação demos citar o grande ganho de performance para consultas
mais simples e intuitiva, não exigindo a criação dessas e a drástica redução de custos de uma solução como: custos
classes auxiliares. de servidor para o banco de dados (hardware), licenças do
5. Para adicionar um cliente, precisamos agora criar software servidor de banco de dados e custo operacional de
uma instância da classe AddClient, passando em seu manutenção, dentre outros.
construtor as informações necessárias à execução de sua
tarefa. Devemos então solicitar ao PrevalenceEngine que Exigências da prevalência
execute essa operação. Isso envolverá a serialização do A prevalência possui dois requisitos obrigatórios a serem
objeto AddClient em um arquivo destinado ao log de atendidos pelos objetos de negócios que serão persistidos,
SQL Magazine . 9
10 . 21ª Edição
SGBD
transformá-las em objetos apropriados, serializá-los e 6. O XPrevail trata tranqüilamente alterações simples
executá-los. Com isso, podemos trabalhar de forma realizadas nas classes, como remoção e inclusão de pro-
completamente transparente, acessando os objetos priedades. Contudo, alterações mais complexas como
de negócios e modificando-os diretamente, sem a in- mudança de nomes e de namespaces, dentre outros,
tervenção de uma classe externa, nem mesmo de um ainda não está disponível, mas está em andamento. Essa
PrevalentSystem. Esse é um importante passo no pro- implementação será similar à do [Link] do
cesso de tornar o uso do XPrevail – e da prevalência colega Rodrigo B. de Oliveira, baseada em arquivos xml
- mais amigável ao código cliente. Com algumas poucas de mapeamentos.
exigências, poderemos fazer a prevalência dos objetos 7. É pretendido que o XPrevail venha a contemplar,
de negócios, mesmo para alterações realizadas direta- além da já disponível prevalência, tanto a persistência
mente neles. Isso também contribui para uma forma em banco de dados, como a replicação de sistemas pre-
de programação mais natural e menos dependente do valentes para banco de dados, possibilitando assim a
XPrevail ou do conceito de prevalência. integração de sistemas prevalentes com outros sistemas
3. Suporte à programação orientada a aspectos. O através de banco de dados.
XPrevail traz a possibilidade de utilizarmos um mo-
delo de desenvolvimento baseado nos conceitos da XPrevail em ação
programação orientada a aspectos, muitas vezes refe- O principal objetivo desse artigo é apresentar o framework
renciada simplesmente como AOP. Grande parte do XPrevail. Apresentarei de forma expositiva como ele fun-
framework é baseado em proxies transparentes do ciona. Em um segundo artigo, enfatizarei maiores detalhes
.NET – uma entidade que nos possibilita interceptar a sobre a programação com o XPrevail apresentando um ro-
execução de métodos, construtores, acesso/escrita em teiro passo-a-passo mais detalhado.
propriedades e etc – ou seja, na interceptação de códi-
go, princípio básico da AOP. Dessa forma, como eu já O ExtremePrevalenceEngine
vinha utilizando uma abordagem similar para comuni- O trecho de código da C1 mostra como declaramos e ini-
cação entre proxies e classes internas do framework, cializamos um engine. No caso, o ExtremePrevalenceEngine
foi apenas questão de publicar uma maneira do códi- para trabalhar com dois prevalent systems, o GenerateKeys
go cliente obter recursos dessa abordagem, tão logo (responsáveis por gerar chaves primárias) e o PeopleManager
eu percebi esse potencial. Os engines do framework (responsável por manter objetos People). O código está em
que implementam a interface IAspectsSupport, Delphi for .NET.
atualmente o MultiSystemsPrevalenceEngine e o
ExtremePrevalenceEngine, disponibilizam meios de C 1. Declarando e inicializando um engine.
registrar aspectos (qualquer objeto que implemente a
var
interface IAspect) e revogar os registros efetuados. Esse
Engine : ExtremePrevalenceEngine;
é um recurso extremamente útil e poderoso, certamen-
GenKeys : GenerateKeys;
te ele será ainda bem desenvolvido nas versões futuras
PManager : PeopleManager;
do XPrevail.
begin
4. Inspeção remota de prevalent systems. Incluído na
Engine := [Link]
versão 0.9.5-alpha, esse recurso permite execução de enceEngine([typeof (GenerateKeys), typeof(Clients)],
código arbitrário (em c#) no processo remoto rodando [Link] ([Link], ‘data’));
o XPrevail através de um shell disponibilizado. Isso per- GenKeys := [Link][typeOf(
mite uma grande gama de recursos relacionados à ins- GenerateKeys)] as GenerateKeys;
peção e intervenção em objetos. Através dele podemos PeopleManager := [Link][typeof(Peo
criar e destruir objetos, chamar métodos, ver e alterar pleManager)] as PeopleManager;
propriedades, dentre outros. Entenda por código arbi- {…}
trário qualquer código fornecido, desde que válido, ou end.
seja, sem erros de sintaxe, semântica e etc.
SQL Magazine . 11
12 . 21ª Edição
mente advêm de requisitos não funcionais. Por questões de pointCut = new PointCut( new IJoinPoint[]
14 . 21ª Edição
SGBD
• Aspect: entidade que engloba toda essa lógica, poden- [Link]
do reunir vários advices. Ela representa preocupações or- [Link]
togonais (requisitos não funcionais). É preparada, através [Link]
das entidades anteriores, para atuar no ponto certo, exe-
cutando o código definido. Observe que nossas classes Inspeção de prevalent systems
funcionais não conhecem a existência dos aspectos. Imagine que trabalhemos em um software cujos objetos
de negócio e/ou de estados são gerenciados pelo XPrevail.
Bom, agora vamos lá! Observe que a classe TraceAspect Digamos que se trata de uma aplicação complexa e que
herda de Aspect, a classe base para criação de aspectos deve ter o maior up-time possível. Pois bem, imagine agora
no XPrevail – na realidade você pode simplesmente im- que a aplicação está apresentando um problema difícil de
plementar a interface IAspect, embora seja menos práti- detectar, ou mesmo um simples, mas que precise que ela
co. Depois, ela declara um pointcut que tem apenas um seja retirada do ar para corrigir.
joinpoint, que no caso indica membros decorados com o Então, o que você acha de, a qualquer momento, ter
atributo MethodTraceAttribute. Ou seja, sempre que um um shell que lhe conecte diretamente aos objetos de sua
membro marcado com o referido atributo for acessado será aplicação, de modo que você possa consultá-los, chamar
percebido que esse jointpoint foi percebido. métodos, ver e alterar propriedades e etc. Com, isso você
Veja que quando o parâmetro fullMode do construtor de poderia, por exemplo, corrigir algumas informações volá-
TraceAspect é passado como true, a classe na realidade utili- teis que estejam gerando problemas, para posteriormente
za o AllJoinPoint, fazendo com que absolutamente todas as então corrigir tranqüilamente o bug que a gerou e disponi-
chamadas a métodos e propriedades de todas nossas classes bilizar a correção para a próxima atualização agendada. Ou
sejam registradas. apenas consultar alguns objetos, tão logo percebeu que um
Feito isso é declarado um advice associando – note que determinado bug passou a ocorrer em produção.
o método AfterInvoke da classe TraceAspect está sendo Essas são algumas dessas possibilidades, a versão
passado no construtor do advice, como parâmetro para o
delegate AdviceExecute – o código a ser executado quando
um pointcut for satisfeito. E é só isso, basta que agora re-
gistremos o aspecto junto ao Engine. Isso é feito da seguinte
forma:
[Link](
new TraceAspect(null, false));
SQL Magazine . 15
no processo remoto. Isso é constado a seguir solicitando no- projeto em seu blog, lá é o local para quem quiser opinar
vamente a exibição da propriedade Count ($[Link]). a respeito e participar. Dentre os principais recursos em
Para completar a diversão, ainda submetemos código para andamento e/ou agendados, destaco:
alterar uma propriedade do objeto recém criado. • Extensão do suporte à programação orientada a
Por fim, a A4 exemplifica a utilização da instrução para aspetos.
permitir a execução de código em múltiplas linhas através • Suporte à persistência em banco de dados, de modo
do shell. Note também que havendo erros de compilação que o XPrevail possa ser utilizado como uma camada
ou execução no código submetido eles são exibidos no shell, de persistência tradicional. Isso habilitará um mesmo
de forma simples e clara, tal qual reportada pelo compila- projeto a rodar com prevalência e com banco de dados
dor e pelo runtime. de forma transparente.
• Replicação. Isso habilitará o desenvolvimento de
Projeto XPrevail: estado atual e o futuro aplicações tolerantes a falha e possivelmente com ba-
O XPrevial é um projeto pessoal, conduzido de acordo lanceamento de carga. Minha intenção é implementar
com meu tempo livre e encontra-se na versão 0.9.5-alpha. uma rede peer-to-peer de prevalência, funcionando de
Mesmo estando em versão alpha ele já se encontra comple- forma similar a um heap OO distribuído. Posteriormen-
tamente funcional, embora esteja sofrendo refactories cons- te, também há o interesse de implementar a replicação
tantes, então alguns nomes e estruturas podem mudar. de prevalência para banco de dados.
Vários novos recursos ou melhoria e extensão de recur- • Suporte eficiente a transações e lock de objetos.
sos já existentes estão programados para serem realizados. • Disponibilizar uma infra-estrutura básica para publi-
Alguns estão em andamentos, outros planejados e outros car os objetos via .NET Remoting.
apenas agendados. Costumo postar algumas coisas sobre o • Uma ferramenta para tratar a questão de evolução
do modelo de classes.
• E muito mais.
Conclusão
Espero ter podido esclarecer alguns detalhes sobre a pre-
valência e, principalmente, que eu tenha consigo expor-lhes
completamente a filosofia do projeto XPrevail, seus recur-
sos e potenciais. Não deixem de visitar o site do projeto e
comecem já a participar, conto com suas opiniões, críticas e
A 1. Conexão a host remoto e exibição do help de comandos. sugestões. Visitem o site do projeto e participem! S
16 . 21ª Edição
SGBD
[Link]
E 1. Eu acredito na prevalência!
SQL Magazine . 17
A
informática é uma ciência muito nova. Novas tec- servidores como se fossem um único (clustering) ou com-
nologias surgem rapidamente e novos componen- partilhando os serviços dos servidores (P2P). A grade com-
tes fazem os computadores cada vez mais rápidos e putacional (também conhecida como computação em grid)
menores. Contudo, quanto maior o poder de processamen- é uma evolução destas tecnologias. Tem como objetivo com-
to, mais as aplicações precisam de recursos. partilhar recursos entre computadores heterogêneos, aumen-
Os computadores de grande porte foram cedendo espaço tando o poder de processamento e permitindo, ao usuário,
aos computadores menores. De computadores isolados a enxergar o recurso computacional como se fosse único.
computadores conectados em redes, as respostas às neces- Em termos de computação distribuída, as principais tec-
sidades dos usuários têm sido mais satisfatórias que no mo- nologias são:
delo anterior. Para equiparar o poder de processamento dos • Clustering: sistemas de dois ou mais computadores
computadores de menor porte aos de maior porte, foram que trabalham como se fossem um único para realizar
criadas estações de trabalho (workstations). Os servidores processamento pesado. É utilizado para processamento
das redes locais foram conectados uns aos outros em um paralelo, balanceamento de carga e tolerância a falhas.
processo de clusterização de servidores e de armazenamen- • P2P: comunicação entre dois ou mais computadores
to de dados. Isso permitiu maior segurança contra even- com objetivo de compartilhar arquivos ou serviços. É
tuais falhas nestes equipamentos e aumentou ainda mais um tipo de rede onde cada computador tem capacidade
o poder de processamento. Pequenos dispositivos foram e responsabilidades iguais. Difere da arquitetura clien-
criados para atender necessidades de deslocamento dos te-servidor porque nesta, um ou mais computadores
usuários. Foram criados os PDAs, pequenos computadores são servidores. Estas redes são simples, mas não ofere-
com poder reduzido de processamento e que evoluíram cem alto desempenho.
para versões mais robustas e que atendem a boa parte das • Grade: grupo de recursos heterogêneos, distribuídos e
necessidades de processamento remoto. Com o surgimen- integrados compartilhando diversos recursos como se fos-
to das redes ponto a ponto (P2P), é possível compartilhar se um único e utilizando redes de altíssima velocidade.
arquivos com diversos computadores. Caso um dos compu-
tadores tenha sua conexão interrompida por qualquer mo- Este artigo pretende mostrar o que é uma grade compu-
tivo, é possível compartilhar o mesmo arquivo com outro tacional, como está o desenvolvimento acadêmico voltado
computador que esteja na rede. para utilização dos sistemas gerenciadores de banco de da-
Distribuir as informações com segurança e rapidez sem- dos (SGBDs) em uma grade e como as principais empre-
pre foi o objetivo da informática. Desde a descentralização sas fornecedoras dos produtos trabalham para adequar-se a
dos servidores, procura-se evoluir a tecnologia integrando esta tecnologia.
18 19ª Edição
Opinião
Estas questões podem parecer muito recentes e para mui- • Local: são grades internas de uma única empresa.
tos, bem pouco importantes, mas o conceito de grade com- Também conhecida por intragrid, enterprise ou campus.
putacional, que pode ser entendido como uma computação • Regional: são grades formadas entre empresas par-
por demanda, é relativamente antigo. Consta que em 1965, ceiras. Também conhecida por extragrid ou partner.
no MIT, foi idealizada uma infra-estrutura computacional • Global: são grades amplas, formadas por grandes
que seria como uma companhia elétrica, telefônica ou de redes interligadas com abrangência em todo mundo.
abastecimento. É exatamente esta a forma que se espera Também conhecida por intergrid.
que seja a informática daqui a algum tempo: os altos in-
vestimentos em infra-estrutura e servidores ficariam por Em qualquer das três situações, os desafios de implan-
conta de algumas empresas que forneceriam e cobrariam tação são muito grandes. As preocupações começam com
pelo serviço prestado. Claro que isso será uma evolução e a simples distribuição de serviços, em tempo real, que são
não uma revolução. Ninguém em sã consciência seria capaz sigilosos para as empresas e, portanto, precisam de meca-
de permitir compartilhar seus recursos ou utilizar recursos nismos de segurança e acesso controlado. Deve-se também
alheios sem ter a certeza de que a informação será preser- prever o nível de disponibilidade dos servidores para execu-
vada e mantida com total segurança. ção dos serviços para, desta forma, garantir a execução do
Diariamente nas empresas nos deparamos com situações serviço no prazo adequado.
em que estamos utilizando pouco ou muito de um deter-
minado equipamento, seja ele o computador local de um Grade é middleware
usuário ou o servidor da empresa. O grande problema é que Entende-se middleware como um software ou produto
hoje em dia o parque de servidores (e computadores de um que permite a transferência de dados entre duas aplica-
modo geral) nas empresas são dimensionados para o pico de ções. Como responsável pela troca de informações entre as
utilização. Desta forma, ainda que precisemos de um ser- aplicações, ele funciona como um elo de ligação entre elas.
vidor trabalhando a plena capacidade por apenas algumas Note que não se deve confundir com a simples importação
horas ou alguns dias por mês, deve-se tê-lo, durante todo e exportação de dados, pois o middleware conecta as duas
o mês, sendo subutilizado. Conclui-se que a subutilização é aplicações, lendo e enviando as informações necessárias
um fato aceito na maior parte das empresas. para processamento.
Seja por um fechamento contábil, folha de pagamento Como uma grade computacional realiza a transferência de
ou programação de produção, sempre há um momento na dados entre as aplicações e faz o vínculo com os recursos
organização em que é necessário utilizar e priorizar os re- onde os dados serão processados (e eventualmente arma-
cursos para determinada tarefa. Agora imagine que, neste zenados) entende-se, portanto, que a própria grade é um
exato momento, seu servidor está ocupado com as rotinas middleware. Há algumas grades disponíveis no mercado.
usuais da empresa. Você tem que compartilhar a sua neces- Entre elas, destaca-se o Globus Toolkit. O Globus é um
sidade extrema com procedimentos que poderiam ser adia- conjunto de ferramentas que realiza o trabalho de conectar
dos, sem prejuízo para companhia. Pior que isso: sua em- e gerenciar recursos. Há diversos recursos disponíveis para
presa possui diversos computadores espalhados em rede e a controle e gerenciamento dos serviços distribuídos, como
maior parte deles sequer percebe que você está precisando o GridFTP, para transferência de arquivos e o GSI (Grid
urgentemente daquele processamento. Você tem recursos, Security Infrastructure). Existe a possibilidade de utilizar
só que eles não podem ser utilizados de maneira inteligente o Storage Resource Broker (SRB) para o acesso às informa-
quando uma situação especial está acontecendo. ções distribuídas. O SRB é responsável pelo armazenamen-
Ao utilizar uma grade computacional, diversas empresas to da localização e criação de réplicas dos dados distribuí-
ou mesmo empresas globais, podem utilizar seus recursos dos pela grade computacional.
ociosos em diferentes países em horários de pouca ou ne- A característica de distribuição de uma grade computa-
nhuma utilização. É o caso de uma empresa que tenha escri- cional faz com que o desenvolvimento de aplicativos seja
tórios em diferentes países, Brasil e China, por exemplo. Os baseado em serviços. Com aplicações baseadas em serviços,
computadores brasileiros poderão ser utilizados para pro- não é necessário depender de um único tipo de recurso,
cessamento durante a noite, exatamente quando na China seja ele o sistema operacional, a rede ou o armazenamento.
SQL Magazine . 19
20 . 21ª Edição
Opinião
pendência de implementação. O banco de dados utilizado Para o acesso a dados externos ao banco de dados Oracle,
deve ser transparente para os usuários, como é transparente sejam eles estruturados ou não-estruturados, é possível uti-
o recurso que é utilizado para processamento dos dados. lizar o Oracle Streams. A arquitetura básica do produto é:
Mesmo que os bancos de dados ainda não estejam adapta- captura, estagiamento, propagação e execução. O usuário
dos à grade computacional, ainda assim eles ajudam a me- cria uma rotina de execução, especifica as regras e utiliza um
lhorar o desempenho de aplicações tipicamente voltadas gateway para transformação. É possível utilizar comandos
para uso no meio acadêmico e científico. Isso nos leva a DML e DDL nas fontes externas e efetuar o controle de
crer que, se utilizados como são, também irão gerar bene- transações (two-phase commit). As consultas são otimizadas
fícios para uso empresarial. Há estudos que mostram que a baseadas no custo (CBO). A propagação da distribuição dos
utilização de bancos de dados clusterizados em uma grade dados pode se dar como em um hub ou como um roteador.
computacional melhora o desempenho das aplicações onde Isso quer dizer que pode haver inteligência na distribuição
o processamento é facilmente “paralelizável”. dos dados ao indicar o local específico de armazenamento e
Outro fator importante em uma grade computacional é a recuperação dos dados ou enviar a mensagem pela rede para
independência do equipamento utilizado. Quando um re- que, em algum ponto, alguém se responsabilize pelo arma-
curso falta, outro assume o lugar. Quando instalamos um zenamento ou recuperação da informação (ver A3).
banco de dados isolado isso não acontece, pois, na falta do
servidor, haverá perda de acesso à informação. DB2
Pesquisando as características de alguns dos principais A IBM abraçou a idéia do banco de dados federaliza-
bancos de dados do mercado (DB2, Oracle e SQL Server), do e não coloca recursos específicos de distribuição em
nota-se que há diferentes visões das empresas para a ques- grade computacional no DB2. Com o banco de dados
tão da grade computacional. federalizado, a IBM permite o acesso a qualquer dado dis-
tribuído pela grade computacional, seja ele estruturado
Oracle ou não. Há possibilidade de acesso a diferentes bancos de
No caso da Oracle, a infra-estrutura da grade está base- dados e, como o processamento é centralizado através de
ada em quatro pilares: aplicações, servidores de aplicação, um servidor DB2, as consultas são otimizadas baseadas em
servidores de banco de dados e armazenamento. Como custo (CBO).
nosso interesse é analisar o banco de dados e não toda a Esta estrutura garante a possibilidade de distribuir o arma-
infra-estrutura de grade da Oracle, vê-se que a Oracle uti- zenamento e processamento sem se importar onde, qual dia-
liza o Real Application Cluster (RAC) para estabelecer um leto SQL, como está armazenado ou qual protocolo se deve
cluster de servidores. As ferramentas de manutenção do utilizar. Para realizar o controle das transações distribuídas
banco de dados são válidas para toda a grade computacio-
nal. Desta forma, rotinas de backup, recovery e monitora-
mento de desempenho podem ser realizadas em um único
local e novos nós podem ser acrescentados à grade com
base na necessidade e na carga de trabalho.
Com o Automatic Storage Management (ASM), a adminis-
tração dos meios de armazenamento são realizadas em grupos
de discos (unidade lógica) e não mais em arquivos do banco
de dados. Para o DBA isso significa que deverá ser administra-
do apenas um pequeno grupo de discos. Isso faz com que haja
benefícios semelhantes ao uso de RAID. A diferença é que no
ASM é possível implementar segurança ao nível dos arquivos
e não apenas dos dispositivos de disco além de permitir um
A 3. Na arquitetura da Oracle, o banco de dados se encaixa em
melhor balanceamento de E/S entre os dispositivos. uma grade computacional através da clusterização de servidores,
Por fim, na última versão do banco de dados, a Oracle do armazenamento autogerenciado e dos mecanismos de
autogerenciamento e auto-ajuste. Para se comunicar com outras fontes
investiu no autogerenciamento do banco de dados. de dados, utiliza o Oracle Streams.
SQL Magazine . 21
I
Até a versão atual (SQL Server 2000), não havia uma pre-
Oliveira. C. H. P. de (2004). Tecnologia de Grid
ocupação específica com a grade computacional. Pelo que Computing utilizando Banco de Dados Oracle.
se vê na documentação do produto, há como ter acesso a Congresso Brasileiro de Ciência da Computação. Itajaí,
SC – Brasil
fontes de dados externas, mas o controle é muito limitado.
Chede, Cesar T. (2004) “Grid Computing: um novo paradigma
Em conversas com profissionais que utilizam o banco de da- computacional”. Editora Brasport, Rio de Janeiro
dos, sabe-se que isso é feito com uso de programas externos Foster, Ian et al. (2001). The Anatomy of the Grid
ao banco de dados. Watson, Paul et al. (2003). Database and the Grid
Ainda não está disponível no site da Microsoft informação Globus Toolkit (2005). Acessado em fevereiro
[Link]
específica sobre a nova versão (SQL Server 2005) para uti-
SRB homepage (2005). Acessado em fevereiro
lização em grades computacionais. [Link]/srb/
A grade computacional é uma realidade para as empresas IBM homepage (2005). Acessado em fevereiro
[Link]
comerciais. A utilização de bancos de dados na grade com-
SQL Server homepage (2005). Acessado em março
putacional vai possibilitar ganhos de desempenho e quali- [Link]
dade, como se vê nas aplicações científicas e acadêmicas. Haas, Laura e Lin, Eileen (2002). IBM Federated Database
Techonology. Acessado em março
Atentas às necessidades e benefícios da grade, as empresas [Link]/developerworks/db2/library/techarticle/
que fornecem SGBDs estão preocupadas em adequar seus 0203haas/[Link]
G
(cpoderoso@[Link]) é Mestrando em
grade. A grade tem uma filosofia muito mais aberta que isso. Tecnologia pelo Centro Paula Souza,
atualmente é Coordenador dos Cursos
Sempre que houver um controle centralizado e baseado em um de Graduação Tecnológica na FIAP –
Faculdade de Informática e Administração
único fornecedor, não teremos uma grade e sim um cluster. Paulista, Professor de Banco de Dados na
Para garantir os benefícios da grade computacional deve- FIAP e no Centro Universitário Fundação
Santo André e Consultor de Informática.
se optar por padrões abertos. O padrão para banco de dados Autor do livro SQL Curso Prático e dos
Guias de Referência Oracle PL/SQL da
ainda não está disponível. Estudos estão sendo feitos para
Celso Poderoso Novatec Editora.
se criar uma infra-estrutura intermediária que seja efetiva- de Oliveira
mente aberta e padronizada. S
22 . 21ª Edição
O
propósito deste artigo não é fazer previsões futu- trazem grandes responsabilidades”, certo? Pois é, estes
rísticas sobre softwares e sistemas de informação, grandes poderes, às vezes, caiam em mãos erradas.
mas observar o que ocorreu e está ocorrendo no
mercado de bancos de dados e sistemas de informação. Ela- Dar um passo para trás para
borei para este artigo uma linha do tempo que não só me dar dois para frente...
serviu de base para escrever, mas também mostrar alguns A década de 80 foi a década relacional. É neste momento
fatos interessantes da história dos nossos atuais bancos de que surgem os grandes bancos de dados relacionais, ditos
dados. de segunda geração, pois vêm após os bancos de primeira
Não é comum pararmos para pensar em como as coi- geração (hierárquicos e de rede). Normas e restrições es-
sas eram feitas antes e no porque de terem mudado. Os tavam agora disponíveis para nortear os analistas durante
primeiros sistemas de bancos de dados foram concebidos o processo de modelagem de suas bases de dados. Padrões
quando a programação estruturada ainda era uma criança e foram evoluídos e definidos, como a linguagem de consulta
a principal preocupação era criar um sistema de banco de estruturada (SQL) que facilitou ainda mais separar o banco
dados capaz de permitir a modelagem de qualquer tipo de de dados da aplicação:
informação. Foi na década de 70 que os primeiros bancos • estabelecendo a linguagem de comunicação entre
de dados hierárquicos e de rede começaram a ser utiliza- estes dois elementos;
dos em larga escala. Bancos poderosos como o Adabas e o • criando e consolidando o modelo cliente/servidor;
Mumps se encontram em produção em grandes empresas • aumentando as possibilidades de diversificação tec-
até hoje. nológica (pois antes, software e hardware, pertenciam
Normalmente, o ambiente de programação era o próprio geralmente a um mesmo fornecedor) e;
ambiente do banco de dados e as aplicações eram sempre • criando ou dividindo profissões como DBAs, analis-
aplicações caractere que rodavam em máquinas de grande tas de sistemas e programadores.
porte, acessadas através de terminais burros. O grande pro-
blema destes bancos de dados foi a extrema liberdade que Foi uma revolução e, como tal, tivemos algumas baixas. Per-
estes sistemas davam aos programadores da época. Como demos muito em flexibilidade (nosso passo a trás), mas ga-
a programação estruturada ainda não era comum, e o pró- nhamos muito em organização, metodologia e simplicidade.
prio banco propunha uma filosofia de livre criação, podería- A década de 90 foi mais uma década de revoluções. As
mos ter, dependendo do programador, sistemas complexos técnicas de desenvolvimento de sistemas evoluíram muito
genialmente desenvolvidos ou sistemas simples geniais e rapidamente e o modelo de desenvolvimento orientado a
desnecessariamente complexos. “Grandes poderes sempre objetos ganhou força. Ficou claro que o modelo relacional
SQL Magazine . 23
24 . 21ª Edição
Opinião
DDL) podem continuar sendo feitas através da conhecida nos imponham limites ou tecnologias de um fornecedor
e consagrada SQL, permitindo a interoperabilidade entre específico.
sistemas existentes e preservando o investimento em edu-
cação. Ao contrário do que se possa pensar, as exigências da Conclusão
modelagem orientada a objetos não afetam a performance Todos os grandes fornecedores de bancos de dados estão
das aplicações, mas as tornam mais simples. buscando embutir em seus produtos as características de
Estruturas multidimensionais complexas (árvores, arrays, bancos de dados de terceira geração e algumas empresas
listas, etc...) podem ser utilizadas diretamente pelas aplica- chegaram a criar produtos inteiramente novos. Isto fica
ções como tipos de dados nativos, de forma completamente bastante claro ao observar a D1. Linha do Tempo, prin-
transacional e sem artifícios. Os tipos de dados das aplica- cipalmente a partir da década de 90. Já podemos encon-
ções são automaticamente suportados e armazenados sem trar dezenas de empresas conceituadas que utilizam bancos
mapeamentos. Os dados agora possuem comportamento de dados pós-relacionais em suas operações e este número
natural e regras associadas que garantem não só sua integri- tende a crescer cada vez mais. Eles simplificam os siste-
dade dentro do modelo físico, mas também no modelo ló- mas corporativos, diminuindo o número de camadas e de
gico, de forma mais coerente e natural. Estes novos bancos servidores, aumentando, portanto a qualidade dos sistemas
de dados também são multiplataforma, acessam tabelas de desenvolvidos.
outros bancos de dados relacionais ou multidimensionais, Muitas empresas não querem arcar com mudanças mui-
possuem avançadas linguagens de script e instanciam com- to radicais e preferem outras abordagens para chegarem
ponentes Java e ActiveX em stored procedures, triggers e à classificação de banco de dados de terceira geração. Só
métodos. Todos estes recursos estão intimamente ligados o tempo nos dirá, novamente, que futuro está reservado
Ano Evento
Em 1959, a Conference on Data Systems Languages (CODASYL) foi fundada como uma organização voluntária cujo
propósito foi de guiar o desenvolvimento e a padronização de uma linguagem de computador que poderia ser utilizada em
muitos computadores. Este esforço levou mais tarde, indiretamente, ao desenvolvimento do COBOL e também às bases do
modelo hierárquico e navegacional de dados.
Os modelos hierárquicos e navegacionais de banco de dados foram concebidos para serem utilizados nos primeiros
mainframes e se popularizaram a partir daí. Charles Bachman foi um dos pioneiros no campo de banco de dados. Na General
Eletric, em 1960, ele projetou o sistema de banco de dados navegacional IDS (Integrated Data Store). Charles é conhecido
por ter tido vários calorosos debates com Dr. Codd onde discutiam as vantagens e desvantagens do modelo hierárquico/
navegacional x relacional.
Também em 1960 surge o paradigma da orientação a objetos e a primeira linguagem OO: Simula 67, predecessora do
Smalltalk (1971) e de outras linguagens OO.
Em 1965, o Pick, sistema operacional multi-usuário totalmente baseado em um banco de dados hierárquico foi concebido
pelas forças armadas americanas e norteou vários desenvolvimentos futuros. Continua sendo utilizado até hoje e a forma como
ele armazena seus dados pode ser comparada com a forma como os objetos em um banco de dados OO se relacionam através
de ponteiros (OIDs).
Em 1966, o IMS (Information Management System) foi desenvolvido pela IBM também como um banco de dados
1960-1970 hierárquico. Foi o primeiro sistema de banco de dados de grande capacidade e foi utilizado para administrar os dados da
missão Apollo 11, que pousou com sucesso na lua em 1969. Sistemas IBM também formaram as bases sobre as quais a
primeira versão do hoje famoso ERP da SAP foi desenvolvida.
Em 1966, no Hospital Geral de Massachusetts de Boston, nasceu o MUMPS (Massachussets General Hospital Utility
Multi-Programming System - mais considerado uma linguagem com persistência embutida do que um banco com uma
linguagem) e foi o primeiro banco de dados open source, pois o mesmo foi liberado para domínio público da mesma forma
como o Linux, em 1991. Foi o primeiro banco de dados a utilizar uma linguagem interpretada com o propósito de ser multi-
plataforma. Foi também o primeiro sistema de banco de dados a ter embutido em sua linguagem primitivas para multitarefa,
algo que não era comum nos sistemas operacionais da época.
Na época da reserva de mercado, fabricantes brasileiros implementaram sua própria versão do MUMPS, chamando-a de
SuperMumps. Isto é interessante, pois ao contrário do que muitos pensam, o Brasil tem história em desenvolvimento de
software. O mesmo aconteceu em muitos países do mundo, onde o MUMPS ganhou versões locais geralmente compatíveis
com todas as outras no mundo com algumas exceções.
Em 1968, a IBM lança o CICS (Customer Information Control System) que permitia usuários manipular informações online.
Atualmente, o CICS ainda permanece como sendo um dos mais populares monitores de transação do mundo.
Também em 1968, Edsger Dijkstra publica o artigo “Go To Statement Considered Harmful” (algo como “Comandos Goto
considerados perigosos”), que seria um marco na defesa da programação estruturada.
SQL Magazine . 25
D 1. Linha do Tempo.
G
(asamary@[Link]) é formado pela
Universidade do Estado do Rio de Janeiro
e hoje trabalha como Sales Engineer da
para esta tática. Conheço muita gente inclusive que pensa InterSystems Brasil. Amir desenvolve
realmente que a modelagem orientada a objetos não deve bancos de dados não convencionais
(hierárquicos e oo) desde 1997. Hoje
ser aplicada a bancos de dados. Nunca consegui de fato trabalha como consultor em projetos
de integração utilizando o Ensemble,
uma explicação plausível para esta crença, mas os fatos plataforma de integração da InterSystems
estão ai. De uma forma ou de outra, o mundo dos bancos e em projetos de aplicações e portais
corporativos utilizando o Caché como
de dados será (se já não é) diferente do mundo puramen- Amir Samary banco de dados e application server.
te relacional. S
26 . 21ª Edição
T
enho ficado espantado com a quantidade de desen- podem trazer ganhos significativos ao seu negócio.
volvedores ainda utilizando o InterBase 6. Talvez o Existem alguns sintomas ou situações que motivam a mi-
fato de ser freeware tenha motivado a manutenção gração de versões anteriores ou de outros produtos e eles
desta versão, uma vez que diminuir o custo de venda dos apli- estão diretamente relacionados com as áreas em que ocor-
cativos sempre tem sido a tônica entre os desenvolvedores. reram as maiores mudanças no produto:
Quando falamos em software para desenvolvimento es- • Escalabilidade e performance;
tamos sempre ávidos pelas novidades, implementações e • Monitoramento;
recursos da última versão. Mas com o InterBase, talvez • Estabilidade;
por causa da sua simplicidade de uso ou por conformis- • Segurança.
mo com os resultados que ainda vêm sendo obtidos, não
ocorre o mesmo. Problemas de performance
Alguns fatores estão ocorrendo que devem modificar este Se suas aplicações cresceram, seja em número de usuários
panorama de forma bastante significativa. Se por outro lado concorrentes, volume de transações ou de dados manipu-
você utiliza outros bancos de dados e esbarra em limitações lados, certamente você deve estar sentindo a necessidade
de plataforma, custo de implementação ou requisitos de de melhorar a performance. Neste sentido, o InterBase 7.5
hardware para implementações de novos projetos, este ar- apresenta soluções que, independente de modificação em
tigo também poderá ajudá-lo. suas aplicações ou hardware, podem contribuir muito no
desempenho geral.
Considerações iniciais
Quem entre nós não guarda na memória a imagem da ve- Planos de query mais eficientes
lha Kombi? Todos devem concordar que é um veículo de Utilizando-se versões anteriores era comum forçarmos os
preço baixo, quase sem custo de manutenção e “pau para planos de query para a obtenção de melhores resultados.
toda a obra”. Todo dia cruzamos com uma, geralmente arre- As implementações feitas nesta área ao longo das últimas
ada, velha, cheia de carga... e cumprindo seu papel! versões acabaram propiciando uma melhora significativa
Por outro lado, o desenvolvimento de novos veículos criou nos resultados.
utilitários que permitem o transporte de mais carga, com Houve uma reformulação completa do otimizador - que
melhor performance, com mais recursos e custo/benefício hoje possibilita uma utilização mais eficiente de planos - e
bastante razoáveis. uma mudança na metodologia de indexação, que somados
Se você tem em mente um servidor de banco de dados a permitem uma resposta muito mais rápida a consultas.
SQL Magazine . 27
Monitoramento
Não é raro um usuário cobrar a lentidão do siste-
ma em determinadas circunstâncias de sua operação
que não conseguimos reproduzir. Mesmo em nos-
so próprio servidor, em alguns momentos ficamos
em dúvida sobre que processo está sendo realizado
e causando lentidão geral. Não venha me dizer que
você vai utilizar um monitor de SQL para verificar o
problema. Lembre-se que ele só tem a capacidade de
monitorar a conexão em que estamos e neste caso es-
tamos falando em algum processo lento dentre todos
os que estão em curso em todas as conexões ativas
A 1. Controle de uso de memória – Performance Monitor. no servidor.
28 . 21ª Edição
SGBD
damento no servidor automaticamente? O Performance vel query executada por engano, ou com construção errada,
Monitor é uma ferramenta que acompanha o InterBase e fosse finalizada? E com aquele usuário que deixou o siste-
permite monitorar e documentar uma série de funcionali- ma conectado impossibilitando uma série de trabalhos de
dades do servidor (ver A2). manutenção?
Como ele utiliza uma conexão via TCP/IP, pode ser exe- Junto com o monitoramento, foram implementadas tabe-
cutado remotamente, permitindo que os problemas de las internas no banco de dados que permitem uma série de
performance possam ser acompanhados e analisados à dis- ações, como derrubar usuários, cancelar queries e mesmo
tância (ver A3). efetuar commit ou rollback à distância. Melhor do que isto
é que todas as funcionalidades do Performance Monitor
Otimizando suas aplicações foram obtidas através de dados em tabelas de sistemas do
A verificação instantânea de queries simultâneas, classifi- InterBase e podem ser acessadas e manipuladas externa-
cadas pelo consumo de processador ou de memória ou pela mente, como qualquer outra tabela.
conexão requisitante são tarefas fáceis de serem efetuadas Quer mais? Que tal utilizar em seu sistema o registro in-
através do Performance Monitor. A análise do uso de me- terno de usuários logados no banco de dados ao invés de
mória, a verificação de transações longas, o consumo de li- construir um sistemas de controle de conexões próprio?
nhas por tabelas ou mesmo a freqüência de utilização de Venha ao novo mundo das tabelas de monitoramento e
procedures passam a ser atividades banais, mas fundamentais aprimore suas aplicações.
à otimização de qualquer sistema (ver A4).
Segurança dos dados
Uma preocupação de todos os usuários de InterBase sem-
pre foi com a segurança de acesso aos dados. Para os que
não sabem, a autenticação de acesso sempre foi feita no
server ([Link]). Com isto, se você não tem a senha de
acesso a um banco em certo servidor, mas consegue copiá-
lo fisicamente para um outro servidor no qual tem uma
senha de acesso, os dados são todos seus. Se você também
está preocupado, ou não sabia que deveria estar, esta novi-
dade por si só pode fazê-lo mudar de banco.
SQL Magazine . 29
30 . 21ª Edição
SGBD
Quem usou ou usa o InterBase 6 tem na lembrança um
Suporte técnico e garantia de evolução banco que serviu como opção para quem vinha de Paradox
Desde 2000 (quando foi lançado o InterBase 6 – open (ou DBF), fácil de usar, mas que apresentava uma série de
source) a Borland tem investido no desenvolvimento de limitações. Certamente, para o InterBase de hoje esta ima-
sucessivos releases que representam as implementações gem é totalmente equivocada.
até o estado atual. E o esforço não para. Se hoje você está O InterBase 7.5, apesar de manter seus requisitos iniciais
preocupado com o suporte, continuidade e evolução do seu - leve, fácil de utilizar e escalável - deve ser associado a
banco de dados, talvez este seja um apelo interessante para um banco robusto, confiável e com excelente performance.
pensar na migração ao InterBase 7.5. Passa a ser obrigatório considerá-lo como opção em novos
Atualmente, existe a opção de suporte gratuito através da sistemas e como upgrade a usuários que entendam que com
Borland ([Link]) ou suporte pago em vários sua utilização terão uma série de benefícios. S
níveis. Para desenvolvedores brasileiros participantes do
programa de parceria existe um grupo de apoio e palestras
técnicas periódicas para melhor utilização dos recursos do
G
(paulos@[Link]) é desenvolvedor
produto. Delphi e InterBase. Trabalha com
desenvolvimento e consultoria de sistemas
Mais do que isto, a Borland mantém uma área de interfa- na Presence Tecnologia e Aplicativos,
empresa Borland Solution Partner e
ce com usuários (QC) em que é permitida aos usuários a responsável pela Distribuição do Borland
submissão de bugs e votação sobre as próximas implemen- Interbase no Brasil.
tações no produto.
Paulo Sérgio
Versão trial Palmério
Existe uma versão de teste disponível para download
SQL Magazine . 31
N V
o artigo anterior, dados de natureza espacial e o SQL Magazine 18
Oracle Spatial, foram apresentados os conceitos Dados de natureza espacial e o Oracle Spatial
32 19ª Edição
Mini-Curso
do projeto. Nela, a experiência do projetista (ou modela- bilização do sistema abstraído. Atualmente, diversas empresas
dor) é fundamental para que informações relevantes aos mantêm separadamente os projetistas de modelagem e os pro-
sistemas não sejam omitidas. gramadores. Isso vem ocorrendo para evitar que o projetista
Um modelo é uma abstração de algo do mundo real cujo pro- modele o sistema de acordo com visões de um programador.
pósito é permitir que se conheça o que será tratado antes de Existem diversas metodologias usadas na modelagem con-
construí-lo. A abstração é uma capacidade humana fundamen- ceitual dos dados. A mais conhecida foi proposta por Chen
tal que nos permite lidar com coisas complexas. Por exemplo, (ver a seção ), definida como modelo entidade-relacio-
os engenheiros, artistas e artesãos vêm construindo modelos namento. Embora muito difundida, essa metodologia não
há muito tempo para testar projetos antes de executá-los. Por é ideal para a modelagem de dados espacial. As metodo-
isso, a responsabilidade da abstração é definida por uma pes- logias aplicadas a esta modelagem geralmente são baseadas
soa, também chamada de observador. Fundamentalmente, a nos conceitos de orientação a objetos. As mais conhecidas
abstração feita pelo observador deve ser clara e objetiva para são: OMT (Object Modeling Techinique) e UML (Unified
que outras pessoas possam entender o sistema modelado. Modeling Language).
O modelo abstrato é composto por entidades ou entes Estaremos abordando brevemente na próxima seção os
(tudo aquilo que existe do mundo real e é importante para
essa aplicação) e relacionamentos (relações do sistema a
ser modelado), de acordo com Rodrigues (ver a seção ).
Entes e seus relacionamentos são apresentados em esque-
mas de notações gráficas que servem para visualizar o mo-
delo abstraído.
Existem diversas metodologias de modelagem de dados.
Entre elas, pode-se destacar as mais conhecidas como, mo-
delo entidade-relacionamento (MER) e os modelos orien-
tados a objetos e suas especializações.
A abstração de conceitos e entes existentes no mundo real
é uma parte importante para um sistema de informação.
Tão importante que o sucesso da implementação de um sis-
tema informatizado é diretamente dependente da qualidade
do trabalho de modelagem. Se os conceitos forem excessi-
vamente simplificados, corre-se o risco de deixar de lado al-
guns aspectos importantes da realidade, com conseqüências
sobre as aplicações. Se, por outro lado, as representações se
tornarem complexas demais, corre-se o risco de gerar siste-
mas lentos, sobrecarregados, difíceis de manter.
O objetivo da abstração é isolar os aspectos que sejam
importantes para algum propósito e suprimir os que não o
forem. A abstração deve sempre visar a um propósito, por-
que este determina o que é e o que não é importante.
Para a elaboração de um sistema, existem três níveis de
modelagem em um projeto: modelagem de dados concei-
tual, modelagem de dados lógico e a modelagem de dados
físico, conforme representado na A1. Como o primeiro
nível é o mais importante para a modelagem de dados, esta-
remos enfatizando mais sobre ele nos próximos parágrafos.
A modelagem de dados conceitual é o primeiro nível do proje-
to de modelagem. Será neste nível do projeto que o modelador A 1. Representação das fases da modelagem de dados.
SQL Magazine . 33
34 . 21ª Edição
Mini-Curso
de satélites representam dados em forma matricial. Modelo Geo-OMT
Esta metodologia de modelagem foi proposta por Borges
Metodologias de modelagem de dados (ver a seção ). A proposta do modelo Geo-OMT é unifi-
espaciais car as primitivas geográficas desenvolvidas por diversos au-
Existem diversas metodologias para modelagem de dados tores, além de introduzir novas primitivas buscando suprir
espaciais. Essas metodologias foram criadas e adaptadas a algumas deficiências na representação de dados espaciais.
partir das metodologias de modelagem convencionais que A idéia fundamental ao se estender um modelo de dados é
não possuíam primitivas para a representação das informa- enriquecê-lo, de maneira a torná-lo capaz de suportar novos
ções de expressão espacial. Alguns exemplos são Geo-IFO, conceitos de abstração.
MGEO, GISER, GeoOOA e Geo-OMT. Para grande parte O modelo Geo-OMT está baseado na modelagem de da-
dessas metodologias, foram adicionadas diversas primitivas dos orientado a objetos, sendo uma extensão do modelo
OMT. A partir das primitivas do modelo OMT convencio-
nal, foram adicionadas primitivas geográficas aumentando a
capacidade semântica. Essas primitivas buscam aproximar
o modelo espacial abstraído de um modelo de representa-
ção a ser utilizado.
As primitivas desenvolvidas para o modelo Geo-OMT
permitem modelar a geometria e a topologia dos dados
geográficos. Esse modelo também permite a diferenciação
entre os atributos alfanuméricos e gráficos. As principais
características do modelo Geo-OMT são:
• Segue o paradigma de orientação a objetos e seus prin-
cipais conceitos (classe, herança e objeto, dentre outros).
• Utiliza representações gráficas que facilitam a rápida
A 3. Representação de um modelo de objetos. compreensão e identificação do ente do mundo real.
• Permite diferenciar as representações gráficas
(georreferenciadas) das classes convencionais.
• Utiliza conceitos do modelo de campos e modelo de
objetos em classes.
SQL Magazine . 35
Representação
A representação de uma classe georreferenciada é
36 . 21ª Edição
Mini-Curso
diversas funcionalidades tais como, controle de ocorrências
(acidentes na pista, animais na pista, veículos enguiçados,
etc), atividades de manutenção, conservação e operação de
A 9. Sub-classes de Geo-Objeto. rodovias. Por se tratar de um trabalho acadêmico, o SIG
foi desenvolvido abrangendo uma pequena parte de uma
rodovia, cerca de 15 km de extensão, na qual todas as fun-
Relacionamentos cionalidades pretendidas pelo sistema foram atingidas.
O modelo Geo-OMT propõe tipos de relacionamentos O sistema permite que o usuário possa cadastrar diversas
entre suas classes. As principais relações espaciais entre as informações em relação à rodovia, de acordo com as fun-
classes georrefenciadas são: cionalidades citadas acima. Dessa forma, o usuário poderá
• Disjunto: quando não existe nenhum tipo de conta- consultar informações como, praças de pedágios, passarelas,
to entre as classes relacionadas; viadutos, placas, PMVs (Painéis de Mensagens Variadas),
• Contém: a classe que contém deve ser do tipo Po- acidentes e também estatísticas dos dados, mostrando-os
lígono (Geo-Objeto) ou Polígonos Adjacentes (Geo- geograficamente em mapas.
Campo); Todas as informações alfanuméricas e espaciais estão sen-
• Dentro de: quando uma instância de uma classe do armazenadas no PostgreSQL. A escolha do PostgreSQL
qualquer está dentro (contida na) em uma instância das se deve pelo fato de ser um banco de dados Open Source.
classes do tipo Polígono ou Polígonos Adjacentes; Uma extensão do PostgreSQL foi utilizada para tratar a
• Toca: existe um ponto em comum (x,y) entre as parte das informações espaciais, o PostGIS. O PostGIS
instâncias das classes relacionadas; contem os tipos que definirão os objetos espaciais. Por
• Cobre/Coberto por: a geometria das instâncias de exemplo, para armazenar a informação pontual, o PostGIS
uma classe envolve a geometria das instâncias de outra contém um tipo específico que define um ponto, assim
classe. A classe que cobre é sempre do tipo polígono como um tipo que define um segmento de reta.
(Geo-Objeto); Para a geração/apresentação dos mapas, foi utilizado o
• Sobrepõe: duas instâncias de classes se sobrepõem MapSever. O MapSever é um servidor de mapas que pega
quando há uma interseção de fronteiras; as informações do banco e gera o mapa para visualização.
• Adjacente: utilizado no sentido de vizinhança, ao Como em todo desenvolvimento de sistemas, há a ne-
lado; cessidade de uma modelagem, para que se tenha a noção
• Perto de: utilizado no sentido de proximidade entre de como o sistema se comportará. Neste caso específico,
as instâncias das classes; dividimos a modelagem em duas partes, modelagem de da-
• Acima/Abaixo: será utilizado quando as instân- dos alfanuméricos e modelagem de dados espaciais. Essa
cias das classes relacionadas estiverem em planos divisão foi feita para um melhor entendimento do sistema,
diferentes; sendo que os dois poderiam estar em um mesmo modelo.
• Entre: quando uma instância está posicionada entre Para a modelagem de dados alfanuméricos, foi feito um
duas instâncias das classes; modelo tratando apenas as informações não-espaciais do
• Coincide: utilizado no sentido de igual; sistema. Informações como, ordens de serviço, ocorrências,
• Cruza: existe apenas um ponto P (x,y) comum entre tipos de serviços, tipos de ocorrências, etc, como mostrado
as instâncias; na A10. Esse modelo foi desenvolvido de acordo com o
• Em frente a: utilizado para dar ênfase à posição de padrão UML (Unified Modeling Language) e foi feito atra-
uma instância em relação à outra; vés do software DBDesigner 4. Foi adotado esse software
• À esquerda / à direita: utilizado para dar ênfase à por se tratar de um software Open Source. Para melhor
lateralidade entre as instâncias. entendimento, explicaremos o modelo abaixo através de
um exemplo.
Exemplo de modelo espacial Quando um veículo localizado sobre o trecho da rodovia,
Apresentaremos nesta seção um exemplo de modelagem suportado pelo sistema, encontra-se parado, o usuário do
retirada de um trabalho feito pelos alunos da disciplina sistema (operador), que o identificou através das câmeras
SQL Magazine . 37
38 . 21ª Edição
dados espaciais.
No próximo artigo desta série, finalizaremos nossa discus-
são com o artigo que tratará das utilidades e aplicações dos
O
Thiago Simonato
Mini-Curso
sistemas de informações geográficas. S
G
([Link]@[Link]) é bacharel em
Ciências da Computação pela UNESP
BORGES, Karla A.V. Modelagem de Dados Geográficos: Rio Claro. Atualmente é mestrando em
Geoprocessamento no Departamento de
Uma extensão do modelo OMT para aplicações geo-
Transportes na Engenharia Civil da Escola
gráficas. Belo Horizonte, 1997. 139p. Dissertação (Mes- Politécnica da USP.
trado) – Escola de Governo, Fundação João Pinheiro.
G
([Link]@[Link]) é bacharel em
FRANK, Andrew U. Spatial concepts, geometric data models, and ge- Ciências da Computação pela UEMS de
ometric data structures. Computer & Geoscience, London. v.18, n.4, Dourados-MS. Atualmente é mestrando
p.409-417, 1992. do curso de Geoprocessamento na área de
Informações Espaciais do Departamento
RODRIGUES, M. A modelagem de dados Espaciais. Fator GIS: A Revista de Engenharia de Transportes da Escola
Politécnica da USP.
do Geoprocessamento, a.2, n.5, p.39-40, 1994.
SQL Magazine . 39
SQL Magazine . 43
FUNCIONARIO_DEPARTAMENTO
MATFUNC NOMEFUNC DATANASC ENDERECOFUNC NUMDEPTO NOMEDEPTO MATGERENTE
F1 Helder 31/08/1978 [Link] do Rio, 27 D1 Logística F5
F2 Antonio 18/12/1985 R. do Retiro, 33 D2 Qualidade F6
F3 Jabes 03/07/1969 R. Vermelha, 21 D1 Logística F5
F4 Amorim 17/01/1966 R. do Peixe, 78 D2 Qualidade F6
F5 Arthur 23/05/1983 Lad. Cabula, 132 D1 Logística F5
F6 Chico 28/02/1977 R. Monteiro, 133 D2 Qualidade F6
FUNCIONARIO_PROJETO
MATFUNC NUMPROJ HORAS NOMEFUNC NOMEPROJ LOCALPROJ
F1 PR3 20 Helder Pé-de-serra Campina Grande, Caruarú, Piritiba
F2 PR1 10 Antonio Sisaleira São Domingos, Sítio Novo, Valente
F3 PR2 30 Jabes Macaxeira Ibicuí, Mossoró
F1 PR2 15 Helder Macaxeira Ibicuí, Mossoró
F4 PR1 25 Amorim Sisaleira São Domingos, Sítio Novo, Valente
F3 PR3 10 Jabes Pé-de-serra Campina Grande, Caruarú, Piritiba
44 . 21ª Edição
46 . 21ª Edição
Ferramentas
2ª forma normal FUNCIONARIO_PROJETO (MATFUNC, NUMPROJ, HORAS)
O objetivo da 2ª forma normal (2FN) é identificar de- FUNCIONARIO (MATFUNC, NOMEFUNC)
pendências funcionais parciais de dados e eliminar possíveis PROJETO (NUMPROJ, NOMEPROJ)
redundâncias de informação em tabelas que já estejam na
primeira forma normal. Como foi definido anteriormente, 3ª forma normal
para checar dependências parciais é preciso analisar aque- Juntamente com a 1FN e a 2FN, a 3ª forma normal (3FN)
las tabelas cuja chave primária é composta e verificar se fecha o conjunto das regras normais de maior relevância para
não existe qualquer campo dependente exclusivamente de definição de um modelo de dados livre das anomalias já ci-
parte da chave primária. Como pode ser observado na ta- tadas. A 3FN foca nas dependências funcionais transitivas
bela FUNCIONARIO_PROJETO, em 1FN, existem duas que podem acontecer entre os dados de tabelas que já este-
dependências parciais: jam na segunda forma normal (2FN). Por exemplo, a tabe-
1. MATFUNC NOMEFUNC; la FUNCIONARIO_DEPARTAMENTO (apresentada na
2. NUMPROJ NOMEPROJ; A1) está na primeira forma normal, pois não possui atribu-
tos multivalorados e está na segunda forma normal, já que não
Ou seja: existem dependências parciais – neste caso, deve-se atentar
para o fato de a tabela não possuir chave primária composta.
FUNCIONARIO_PROJETO Entretanto, podem ser identificadas as dependências entre
os campos MATFUNC e NUMDEPTO; NUMDEPTO e
(MATFUNC, NUMPROJ, HORAS, NOMEFUNC, NOMEPROJ) NOMEDEPTO; e NUMDEPTO e MATGERENTE, conforme
ilustrado a seguir:
A 2. Tabela em 1FN.
SQL Magazine . 47
48 . 21ª Edição
Ferramentas
SQL Magazine . 49
zando os dados em somente uma tabela. Neste caso, poderia NAVATHE, S.,ELMASRI, R., 2001, Fundamentals of Da-
tabase Systems. 3ª Edição, Addison-Wesley, EUA.
ser criada uma tabela FUNCIONARIO_PROJETO_DEPT
que reuniria todos os dados necessários a este relatório. Os SILBERSCHATZ, A., KORTH, H., SUDARSHAN, S., 1999, Sistema de
Banco de Dados. 3ª Edição, Nova Iorque, EUA, McGraw-Hill.
dados seriam replicados então nesta tabela, reduzindo uso
DATE, C. J., 2000, Introdução a Sistemas de Bancos de Dados. Tra-
de CPU e I/O em disco. A A4 traz uma possível represen- dução da 7a edição Americana, Rio de Janeiro, Editora Campus.
tação para a tabela desnormalizada.
B 1. Desnormalização
É importante destacar que a desnormalização é usada para
G
atender a requisitos específicos das aplicações que acessam a é bacharel em Ciência da Computação
base de dados. Requisitos futuros podem não se beneficiar das pela UFBA ([Link]) e Mestre em
Engenharia de Sistemas e Computação
decisões de desnormalização. Assim, somente “desnormalize” pela COPPE/UFRJ ([Link]), na área
de banco de dados. Foi diretor-fundador
quando for realmente necessário. da EmpresaJR. de informática Ufba
([Link]), onde desenvolveu
G
é doutorando da área de banco de dados
Conclusão pela PUC-Rio ([Link]), Mestre
Como pode ser observado, a aplicação da normalização a em Engenharia de Sistemas e Computação
pela COPPE/UFRJ ([Link]) e
um modelo de dados é um passo fundamental para garantir bacharel em Ciência da Computação
pela UFF ([Link]). Além disso, possui
integridade aos dados e estabilidade ao modelo. A utilização experiência como professor de graduação
da UNESA, é professor do curso de
das três primeiras formas normais representa uma das par- Administração e Tuning de Banco de
Dados I e II da Coordenação Central de
tes mais relevante no processo de definição do esquema de Extensão da PUC-Rio ([Link])
dados. No entanto, a depender da situação e utilizando-se Manuel Antonio e analista de sistemas, já tendo trabalhado
de Castro Júnior em diversas empresas como EDS do Brasil,
do bom senso, o projetista do banco de dados pode recorrer Embratel e Interbrain.
a técnicas de desnormalização para satisfazer a questões de
FUNCIONARIO_PROJETO_DEPARTAMENTO
MATFUNC NUMPROJ HORAS NOMEFUNC NOMEPROJ NUMDEPTO NOMEDEPTO MATGERENTE
F1 PR3 20 Helder Pé-de-serra D1 Logística F5
F2 PR1 10 Antonio Sisaleira D2 Qualidade F6
F3 PR2 30 Jabes Macaxeira D1 Logística F5
F1 PR2 15 Helder Macaxeira D1 Logística F5
F4 PR1 25 Amorim Sisaleira D2 Qualidade F6
F3 PR3 10 Jabes Pé-de-serra D1 Logística F5
50 . 21ª Edição
O
sistema de regras (rule system) do PostgreSQL • Tabela: a tabela a qual a rule está associada.
oferece grande flexibilidade quando é necessário • CondiçãoLógica: uma condição que aciona a regra.
implementar determinadas regras de negócio. Não é possível utilizar outras tabelas ou uma função de
Assim como os triggers, as rules, também chamadas de re- agregação.
gras, são acionadas quando um determinado evento ocorrer • ALSO e INSTEAD: indica se o comando que acio-
em uma tabela. Esse evento pode ser: nou a rule e os comandos definidos serão executados
• INSERT; (ALSO) ou se o comando original será substituído
• UPDATE; (INSTEAD).
• DELETE; • Comando: especifica o comando SQL a ser executa-
• SELECT. do por essa rule. Uma rule do tipo SELECT não suporta
mais de um comando. Entretanto, pode-se especificar
As ações resultantes de uma regra podem ser complemen- mais de um comando colocando-os entre parênteses e
tares ou em substituição ao comando que aciona uma regra. separando-os por ponto-e-vírgula para os demais tipos.
Com esse artigo, espera-se que o leitor fique habilitado
para fazer o uso do sistema de rules do PostgreSQL para NEW e OLD
estender e dar mais flexibilidade às suas aplicações. O nome especial de tabela NEW pode ser utilizado para
referenciar os novos valores inseridos (ON INSERT) ou
Create Rule atualizados (ON UPDATE) em uma tabela. Já nome es-
O comando responsável pela criação de uma rule é o pecial OLD contém os valores apagados através de um
CREATE RULE. Sua sintaxe é apresentada abaixo: DELETE ou UPDATE.
52 19ª Edição
SGBD
da rule é apresentado na em conjunto com o INSTEAD. A C5 mostra o comando
A 1. Estrutura da tabela de emp. C2. da C2 reescrito.
Note que a parte em Caso um comando acione essa regra, ele será ignorado
destaque na C2 nos mostra que essa regra só será acionada sem gerar qualquer tipo de erro para o usuário, e as tabelas
quando o salário novo ([Link]) e o salário antigo (OLD. emp e emp_log não terão qualquer alteração.
sal) forem diferentes, indicando portanto, uma alteração no
valor da coluna sal, que contém o salário dos funcionários. Rules e views
O comando da C3 atualiza o salário de um determina- As views são muito utilizadas para gravar no banco de da-
do funcionário e aciona a regra log_emp_rule inserindo um dos uma consulta em uma ou mais tabelas para a visualiza-
novo registro na tabela de auditoria. ção de dados. No PostgreSQL, as views podem ser imple-
Um detalhe importante é que caso exista mais de uma mentadas utilizando o sistema de rules.
rule em uma tabela, a ordem de acionamento segue a or- Apesar de não ser prático, a view criada na C6 também
dem alfabética do nome das rules. poderia ser criada com os dois passos apresentados na C7,
que são exatamente as operações internas realizadas pelo
Substituindo comandos PostgreSQL quando criamos uma view.
Para substituir um comando original por aqueles defi-
nidos na ação de uma rule, basta utilizar a palavra-chave Views atualizáveis
INSTEAD. A C4 mostra o comando da C2 reescrito. Geralmente as views são utilizadas apenas para visuali-
Essa nova regra define que o comando original de atuali- zação de dados, não permitindo a execução de comandos
zação que acionar a regra será ignorado, executando apenas como INSERT, UPDATE e DELETE. Entretanto, o recurso
o comando complementar definido. de views atualizáveis permite que essas modificações sejam
C 1. Tabela. refletidas na tabela a qual uma view está associada. A C8
mostra a implementação de uma view atualizável baseada
CREATE TABLE emp_log (
na view da C6.
n_emp int,
novo_sal decimal(10,2),
O comando de inserção que for aplicado sobre a view será
usuario varchar(50), redirecionado para a tabela emp.
datahora timestamp);
C 5. Ignorando comandos.
C 4. Substituindo comandos.
C 8. Implementação de view atualizável.
CREATE RULE log_emp_rule AS ON UPDATE TO emp
WHERE [Link] <> [Link] CREATE RULE empv_rule AS ON INSERT TO empv
DO INSTEAD INSERT INTO emp_log VALUES (NEW.n_emp, DO INSTEAD INSERT INTO emp (n_emp, nome_emp, sal)
[Link], current_user, current_timestamp); VALUES (NEW.n_emp, NEW.nome_emp, [Link]);
SQL Magazine . 53
G
(contato@[Link]) é tecnólogo
Outra diferença está relacionada com a diversidade de em informática pela Unicamp. Trabalha
como consultor especialista em banco
comandos suportados. Em rules, só são permitidos coman- de dados e desenvolvimento de software
dos SQL, ao contrário dos triggers que possibilitam o uso na Dextra Sistemas ([Link]),
uma empresa especializada em soluções
das mais diversas linguagens procedurais suportadas pelo corporativas utilizando software livre. Entre
PostgreSQL, como: PL/pgSQL, C, Perl. Como regra geral, outros clientes com o PostgreSQL, a Dextra
Sistemas presta serviços em PostgreSQL
os triggers são indicados para as situações onde regras de
Gustavo para o Metrô-SP e SERPRO.
negócio devem ser acionadas devido a certas modificações Bartz Guedes
de dados.
54 . 21ª Edição
N
ão se pode falar em backup sem discutir antes os um exemplo clássico: você foi até um caixa-eletrônico para
modelos de recovery. Por isso a matéria “Backups transferir R$ 500,00 de sua conta-corrente para a poupan-
com SQL Server 2000” foi dividida em duas par- ça. A operação foi concluída, mas você percebe no extrato
tes. Na primeira parte exploraremos a arquitetura do log emitido após a operação que o dinheiro saiu da conta-cor-
de transações e modelos para recuperação de dados. Já na rente, mas não entrou em sua conta-poupança. Para im-
segunda, o foco será os tipos de backup existentes nessa pedir esse tipo de situação, os SGBD´s trabalham com o
plataforma. Boa leitura! que chamamos de log de transações. No exemplo anterior,
uma transação seria aberta antes da retirada de R$ 500,00
Recovery? O que é isso? da conta-corrente, sendo fechada somente após a contra-
Recovery quer dizer recuperação, restauração. O termo partida na conta-poupança. Se acontecer qualquer “desvio”
recovery é utilizado para especificar o retorno à operação entre a saída da conta-corrente e a entrada na poupança, a
normal depois de uma falha (o servidor “caiu”, ocorreu transação não é concluída e os R$ 500,00 retornam para a
crash na unidade de disco onde está localizado o database, conta-corrente do usuário.
etc). Dependendo da gravidade da situação, o processo de A função do log data file é dar suporte às transações:
recovery pode envolver a restauração de um backup. quando um comando T-SQL é executado para atualizar
Os modelos de recovery ou recovery models informam um dado, a modificação não é propagada nesse momento
para o engine do SQL Server 2000 como tratar o log de para o arquivo de dados. A alteração acontece primeira-
transações com relação ao processo de log de alguns co- mente em memória e no log de transações; em um segundo
mandos, limpeza das transações já confirmadas no database momento, todo o lote de páginas alteradas em memória
e mecanismos de backup. – conhecidas por dirty pages – serão transferidas para o dis-
O modelo de recovery estipula também o grau de risco co em um processo conhecido por checkpoint. Na página
relativo à perda de dados inerente a um processo de res- em memória fica registrada a posição após a alteração. No
tauração de database. Para que o risco seja pequeno, todas log de transações, além da posição final (após a alteração),
as transações registradas no log devem ser “backupeadas” e ficarão também registrados controles que permitem rever-
logadas ao nível máximo de detalhamento. ter a modificação: em inserções e deleções, toda a linha
A recuperação de um database - assim como os modelos incluída/deletada ficará registrada. Nas atualizações ficarão
de recovery - estão intimamente relacionados com o fun- registradas as posições da linha antes e após a alteração.
cionamento do log de transações, nosso próximo tópico. Dessa forma, se um servidor que se encontra em produção
“cair”, o processo de recovery automático – detalhado no
Para que serve e como funciona o log de tópico O Processo de Recovery – se encarregará da atuali-
transações zação do arquivo de dados através da leitura das transações
Vamos exemplificar o funcionamento do log através de pendentes no log.
SQL Magazine . 55
56 . 21ª Edição
SGBD
Na prática, o que aconteceria se configurássemos o cuja imagem já foi atualizada no database?
recovery interval em dois minutos? Esse tempo seria uti-
lizado pelo SQL Server 2000 para estabelecer um volu-
me de transações tal que, na reinicialização do serviço
MSSQLSERVER, seriam necessários no máximo dois
minutos para deixar o database operacional, efetivando
as transações pendentes no log. O recovery interval, por-
tanto, atua indiretamente na freqüência de execução do
checkpoint, limitando o volume de transações .
Toda operação de inserção, atualização e exclusão de da-
dos possuirá uma imagem no log de transações. Em uma
inserção, o log irá registrar a linha que foi inserida; já na
exclusão, toda a linha que foi deletada. Em atualizações, se-
rão registradas as imagens antes e depois da alteração. Não
é difícil prever que o arquivo de log cresce muito rápido, e
precisa de uma maneira eficiente de limpeza.
----------------------------------------------------------------------------------------------------
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Configuration option ‘recovery interval (min)’ changed from 0 to 1. Run the RECONFIGURE statement to install.
SQL Magazine . 57
58 . 21ª Edição
SGBD
modelo em Recovery (ver A2). fontes (acesso a outro servidor que mantenha uma có-
pia das transações, reconstrução das transações a partir
Confirmando o recovery automático no do acesso a outras tabelas, etc).
restart do serviço MSSQLServer
Durante a inicialização do serviço MSSQLServer, os Selecione o modelo Bulk Logged para recovery de um
databases são submetidos a um processo de recovery auto- database se ...
mático. Um database só estará apto para utilização se o pro- • Os dados são críticos,
cesso de recovery for concluído com sucesso, caso contrário • Você realiza operações de bulk load (BCP, SELECT
o status SUSPECT irá impedir sua utilização. INTO, etc) durante horários de baixa utilização do
Confirmar se o recovery dos databases foi concluído com
êxito é um bom hábito. Essa prática deve ser executada
sempre que o serviço MSSQLServer for reiniciado. Exis-
tem duas maneiras para verificação do log de erros do SQL
Server 2000: Enterprise Manager (ver A3) ou através da
execução da procedure SP_READERRORLOG (ver C5).
Na A3 merecem destaque:
• Linha (1) - 2 transactions rolled forward in database
northwind (20): informa que existiam duas transações
comitadas no log que ainda não haviam sido aplicadas
no database. O recovery automático – acionado na ini-
cialização – se encarregou de propagar as transações
para o database;
• Linha (2) - 1 transactions rolled back in database
northwind (20): indica que uma transação registrada
no log ainda estava em andamento no momento da que-
da do servidor. Transações em aberto (sem COMMIT)
não são propagadas para o database;
• Linha (3) - Recovering is checkpointing database A 2. Alterando o modelo de recovery no Enterprise Manager.
northwind (20): após os movimentos de rollback / roll-
forward, o processo de recovery automá-
tico efetua um checkpoint no database,
finalizando sua recuperação;
• Linha (4) - Recovery Complete: indica
o término do processo de recovery para
todos os databases desse servidor.
SQL Magazine . 59
exec sp_readerrorlog
----------------------------------------------------------------------------------------------------
ERRORLOG
----------------------------------------------------------------------------------------------------
2005-04-20 18:28:59.96 server Microsoft SQL Server 2000 - 8.00.760 (Intel X86)
Dec 17 2002 14:22:05
Copyright (c) 1988-2003 Microsoft Corporation
Desktop Engine on Windows NT 5.1 (Build 2600: Service Pack 2)
2005-04-20 18:28:59.96 server Copyright (C) 1988-2002 Microsoft Corporation.
2005-04-20 18:28:59.96 server All rights reserved.
2005-04-20 18:28:59.96 server Server Process ID is 3748.
2005-04-20 18:28:59.96 server Logging SQL Server messages in file
‘C:\Arquivos de programas\Microsoft SQL Server\MSSQL\LOG\ERRORLOG’.
2005-04-20 18:28:59.98 server SQL Server is starting at priority class ‘normal’(1 CPU detected).
2005-04-20 18:29:00.01 server SQL Server configured for thread mode processing.
2005-04-20 18:29:00.03 server Using dynamic lock allocation. [500] Lock Blocks, [1000] Lock Owner
2005-04-20 18:29:00.04 spid3 Starting up database ‘master’.
G
(psribeiro@[Link]) é Microsoft
se ... MCDBA e membro da equipe editorial da
SQL Magazine. Atua como DBA-Sênior em
• Os dados são críticos e nenhuma transação pode ser SQL Server na Livraria Saraiva S/A.
perdida;
• Você realiza operações de bulk load (BCP, SELECT
INTO, etc) durante horários de produção e, em caso
de falha que envolva um processo de restauração não
quer descartar a possibilidade de utilizar recuperações Paulo Ribeiro
60 . 21ª Edição
SQL Magaz
Perig os e ar
ine 19
m adilhas do
particionam
ento – Part
e1
V
condição, então a segunda coluna não é avaliada. Porém, se
D
ando continuidade à nossa discussão sobre par- o primeiro valor da coluna não for totalmente satisfatório, a
ticionamento, serão apresentadas nesta matéria próxima coluna é considerada. Isto será mais bem entendi-
mais algumas funcionalidades e também, para do utilizando-se um exemplo. Considere C1.
tornar este artigo realmente relevante para o dia-a-dia, abor- Quando uma linha é inserida, poderíamos imaginar que:
darei algumas armadilhas e algumas dicas na utilização deste • se ambos os valores de col1 e col2 são menores que
recurso fantástico mas que deve ser utilizado com cautela. 101, então vão para a partição P1;
• se os valores são menores que 201, porém maiores
Chaves de partição multi-colunadas ou igual a 101, vão para a partição P2;
(Multi-Column Partition Keys) • caso contrário, vão para a partição PM.
A maioria dos documentos, artigos, livros e outras publi-
cações, falam sobre o uso de uma única coluna para chave Vamos ver o que ocorre na prática agora. Veja na C2 todas
de particionamento, mas que tal usar duas ou mais colunas? as linhas da tabela.
Definitivamente é possível, mas em tal caso, como deverí- Em quais partições os registros serão inseridos? Confira-
amos proceder? mos na C3.
Muitas pessoas têm a impressão de que especificando
mais de uma coluna como chave de particionamento, cria- C 1. Criação da tabela exemplo.
se uma tabela particionada multidimensional. Por exemplo, create table ptab1
se você tem uma tabela chamada “faixa de empregado” col1 number(10),
particionada em (DEPTNO, ZIPCODE), isso significa que col2 number(10),
são avaliados os valores de ambas as colunas quando se está col3 varchar2(20)
62 19ª Edição
COL1, que é 100, é menor que 101 e então satisfaz a con- COL1 COL2 COL3
---------- ---------- ------
dição. Porém COL2 tem 102, e é maior que 101, o valor
100 100 rec1
de limite de COL2. Como é que COL2 foi para a partição
102 102 rec2
P1? A razão é bastante simples: P1 é a primeira partição, 100 102 rec3 T
o
o valor é avaliado pela primeira coluna (COL1) e satisfaz. 102 100 rec4
Ferramentas
Dessa forma, o valor da coluna COL2 não é nem mesmo 101 100 rec5
avaliado. O registro vai para P1, embora o critério de COL2 101 101 rec6
não seja satisfeito. 101 102 rec7
201 100 rec8
Assim, se a segunda coluna (COL2) não é considerada em
201 101 rec9
alguns casos, em que situações ela seria utilizada? Conside-
201 102 rec10
re o registro REC5 no qual o valor de COL1 é 101 (para a
chave de particionamento é um valor que não satisfaz a pri-
meira coluna). Neste caso é considerada a segunda coluna. C 3. Registros inseridos na partição p1.
Como o valor de COL2 é 100, menor que o valor de limite select * from ptab1 partition (p1);
de COL2 na chave de particionamento (101), então, entra COL1 COL2 COL3
ser maior que o valor limite da coluna COL2 da partição COL1 COL2 COL3
---------- ---------- -----
P1 (101 - consideremos que, na criação da partição, foi
102 102 rec2
utilizada a condição less than), as linhas foram para a
102 100 rec4
partição P2. 101 101 rec6
Pela mesma lógica, para os registros REC8, REC9 e REC10 101 102 rec7
o valor de COL1 é 201. Este é exatamente o limite para o 201 100 rec8
valor daquela coluna na chave de particionamento. Porém, 201 101 rec9
o valor de COL2 é menor que 201, valor limite daquela 201 102 rec10
SQL Magazine . 63
64 . 21ª Edição
Ferramentas
Assim, o valor padrão para o parâmetro GRANULARITY ter uma partição chamada P34, execute a declaração da C14.
na função de coleta de estatísticas não coleta estatísticas em Porém, em tabelas particionadas por hash não há valores
sub-partições. É preciso configurá-lo para SUBPARTITION de limite e as linhas não são selecionadas como candidatas
ou ALL para coletá-las. para as partições com base em algum tipo de faixa defini-
Em resumo, a D1 mostra os detalhes sobre atribuir gra- da. Assim, um merge não poderá identificar e fixar limites
nularidade e coletar estatísticas. específicos. Deveríamos usar uma cláusula nova chamada
Outro conceito interessante, que não é documentado cla- COALESCE para atingir este objetivo, veja a C15.
ramente, é a opção para só analisar sub-partições. Isto pode Com COALESCE, uma partição específica, normalmente
ser feito usando-se o comando da C13. a última, é selecionada para eliminação. Supõe-se que to-
das as linhas naquela partição são distribuídas igualmente
Rule Based Optimizer (otimizador baseado através das partições restantes e a partição é eliminada. Na
em regras) prática, porém, as linhas são combinadas (merged) com a
Podemos usar particionamento com o Rule Based partição adjacente.
Optimizer (RBO)? A resposta é: claro que podemos. Po- Considerando que isto reduz o número de partições, o nú-
rém, quando o particionamento foi introduzido, o RBO foi mero total não mais é uma potência de dois, provocando uma
considerado legado, e a Oracle decidiu que gradativamen- distribuição de linhas desigual em todas as partições. Para
te fosse encerrado o suporte ao mesmo. Isto conduziu a evitar este problema, executamos o COALESCE mais uma
uma interrupção geral no desenvolvimento de RBO, por- mais vez para obter partições uniformemente carregadas.
tanto hoje, RBO não é utilizado quando trabalhamos com Em resumo, MERGE usa-se para particionamento por fai-
particionamento. Então, para obter completa vantagem xa ou lista quando os valores são claramente identificados
do particionamento, poda de partição (partition prune), por valores limite, e COALESCE usa-se para partições ba-
partition wise join e assim por diante, você tem que usar seadas em hash, para reduzir o número de partições.
o Cost Based Optimizer (CBO). Se você usa o RBO, e
uma tabela na consulta é particionada, o Oracle passa para C 13. Análise de sub-partição.
o CBO enquanto está otimizando. Mas como as estatísticas exec dbms_stats.gather_table_stats
não estão presentes, o CBO compõe as estatísticas, e isto (tabname=>’SPART1’, PART_NAME=>’P1_SYS123’)
poderia conduzir a planos de otimização extremamente ca-
ros e com desempenho extremamente pobre. Assim, em-
bora seja possível, não deveríamos aplicar particionamento C 14. Merge de duas partições.
ao usar o RBO.
ALTER TABLE PART MERGE PARTITIONS P3, P4 INTO
PARTITION P34;
Coalesce vs. Merge (Fusão x Combinação)
Estas duas declarações potencialmente confusas servem
para o mesmo propósito - reduzir o número de partições
C 15. Utilização da cláusula COALESCE.
- e são aplicáveis em esquemas diferentes. Em uma faixa,
ou tabela particionada por lista (list-partitioned table), os ALTER TABLE PART COALESCE;
limites da partição estão claramente definidos, e as linhas
GRANULARITY
Tabela Global Partição Global Estatísticas de Partição Estatísticas de Sub-partição
(Granularidade)
GLOBAL SIM NÃO NÃO NÃO
PARTITION NÃO SIM SIM NÃO
DEFAULT SIM SIM SIM NÃO
SUBPARTITION NÃO NÃO SIM SIM
ALL SIM SIM SIM SIM
SQL Magazine . 65
66 . 21ª Edição
O N HE Ç AO
Verifique você mesmo como a tecnologia
C T REE
FairCom pode ajudar você!
V O C-
Download grátis da nossa versão de avaliação: NO
[Link]
FAÇA COMO MUITAS
EMPRESAS NO MUNDO
TODO, VENHA PARA O
Brazil • USA • Europe • Japan C-TREE VOCÊ TAMBÉM!