Você está na página 1de 73

No;;

CENTRO UNIVERSITRIO DE BELO HORIZONTE


MOISS HENRIQUE RAMOS PEREIRA
IMPLEMENTAO DE UM BANCO DE DADOS ORIENTADO A
OBJETOS A PARTIR DE UMA MODELAGEM DIMENSIONAL
Belo Horio!"e
#$$%
MOISS HENRIQUE RAMOS PEREIRA
IMPLEMENTAO DE UM BANCO DE DADOS ORIENTADO A
OBJETOS A PARTIR DE UMA MODELAGEM DIMENSIONAL
Monografia apresentada ao Centro
Universitrio de Belo Horizonte como
requisito parcial para obteno do ttulo de
bac!arel em Ci"ncia da Computao#
$rea de concentrao% Banco de &ados#
'rientador% (rofessor )ntonio da Mota
Moura *unior#
Belo Horio!"e
#$$%
Departamento de Cincias Exatas e Tecnologia
&OLHA DE APROVAO
) monografia intitulada Implementao de um banco de dados orientado a
objetos a partir de uma modelagem dimensional de autoria de Mois+s Henrique
,amos (ereira- aluno do Curso de Ci"ncia da Computao . UN/.BH- apresentada
em 01 de 2un!o de 3004- recebeu aprovao da Banca 56aminadora constituda
pelos professores%
______________________________________
(rof# )ntonio da Mota Moura *unior- UN/.BH
______________________________________
(rof# 766666666666666666666666666- UN/.BH
&epartamento de Ci"ncias 56atas e 8ecnologia
TERMO DE RESPONSABILIDADE
' te6to da monografia intitulada Implementao de um banco de dados
orientado a objetos a partir de uma modelagem dimensional + de min!a inteira
responsabilidade#
Belo Horizonte- 01 de *un!o de 3004#
99999999999999999999999999999999999999
Moi'(' He!ri)*e R+,o' Pereir+
&edico : min!a namorada ;uanda- grande incentivadora para
a realizao deste trabal!o# < min!a famlia- pessoas muito
especiais na min!a vida que contriburam- passo a passo- na
formao do meu carter# )o meu orientador pelos consel!os e
por me orientar e6emplarmente em meus interesses
acad"micos# )os meus amigos que conquistei na faculdade
pela conviv"ncia e pelo apoio constante#
RESU!
5ste trabal!o consiste em aplicar parte da metodologia proposta por Borba =300>?
para implantao de modelos dimensionais de ambientes de &ata @are!ouses
=&@? em um ambiente de desenvolvimento integrado e orientado a ob2etos# )
metodologia em que esse trabal!o se baseia apresenta t+cnicas para definir o
modelo de negAcio da organizao- gerar o modelo dimensional- representar o
modelo gerado em um diagrama UM; e- por fim- efetivar o mapeamento deste em
um banco orientado a ob2etos pelo padro '&MB# Conforme as adaptaCes
realizadas para o estudo de caso de um modelo de negAcio real- este trabal!o
desenvolve o mapeamento de um modelo dimensional 2 e6istente em diagrama de
classes UM;- implementando o banco de forma direta atrav+s de um frameDorE de
persist"ncia de ob2etos integrado a uma linguagem orientada a ob2etos
comercialmente difundida seguindo a padronizao estabelecida pela 'MB#
"ala#ras$c%a#es& data Dare!ouse- modelo dimensional- modelagem- bancos de
dados- metodologia- orientao a ob2etos- UM;- B&''#
'IST( DE I'USTR()*ES
Figura G#H#H 56emplo de um negAcio modelado##################################################################### H4
Figura G#H#3 56emplo de um modelo 5,################################################################################# 30
Figura G#3#H A i!"e-r+./o 0o' 0+0o' 1+r+ *!i2or,i+r e 2+3ili"+r o
+3e''o44444444444444444444444444444
33
Figura G#3#3 Di+-r+,+ 0e 3i3lo 0e 5i0+ 0i,e!'io!+l 0e !e-63io 7 Mo0elo 0e
8i,9+ll44444444444
3I
Figura G#3#G C*9o 0e 0+0o' 1+r+ *, ,o0elo
0i,e!'io!+l44444444444444444444444444444444444444444444444444444
3J
Figura G#3#I 5sboo de um modelo dimensional#################################################################### 3K
Figura G#G#H 5specializao das classes Barco e Carro em superclasse Leculo################## GH
Figura G#G#3 )lguns tipos de relacionamentos entre classes na
UM;#444444444444444444444444444444444444
GG
Figura G#G#G
Figura I#H
&iagrama de classes baseado no modelo 5, da figura
G#H#34444444444444444444444444444
,esumo da metodologia de Borba e ordem de e6ecuo das
etapas4444444444444444
G>
G4
Figura I#H#H Forma de armazenamento de ob2etos de um MBB& relacional e o dbIo########### IH
Figura I#3#H Modelo dimensional CMB#################################################################################### I3
Figura I#G#H &iagrama de classes CMB################################################################################### I>
Figura I#I#H CAdigo *ava parcial para a classe de dimenso C&)grupamento##################### I1
Figura I#J#H 5sboo do modelo 5, da base operacional de teste######################################### JG
Figura I#J#3 Con2unto de resposta gerado no teste de e6ecuo########################################### JI
'IST( DE T(+E'(S
8abela G#3#H Comparao entre modelo 5, e modelo &imensional####################################### 31
'IST( DE SI,'(S
)(/ )pplication (rogramming /nterface N /nterface de (rogramao de )plicativos
B&'' Banco de &ados 'rientado a 'b2etos
B/ Business /ntelligence N /ntelig"ncia de NegAcio
&@ &ata @are!ouse N )rmaz+m de &ados
5, E!"i0+0e7Rel+3io!+,e!"o
58; 56tract.8ransformation.;oad N 56trao- 8ransformao e Carga
*&BC *ava &atabase ConnectivitO N Conectividade de Banco de &ados via *ava
'C; 'b2ect Constraint ;anguage N ;inguagem de ,estrio de 'b2etos
'/& 'b2ect /dentified N /dentificador de 'b2eto
';)( 'n.;ine )nalOtical (rocessing N (rocessamento )naltico 'n.line
'' Orie!"+./o + O9:e"o'
,U( R+"io!+l U!i2ie0 Pro3e'' ; Pro3e''o U!i2i3+0o 0+ R+"io!+l
MBB& Mistema de Berenciamento de Bancos de &ados
MBB&'' Mistema de Berenciamento de Bancos de &ados 'rientados a 'b2etos
MBB&', Mistema de Berenciamento de Bancos de dados 'b2eto.,elacionais
MP; Mtructured PuerO ;anguage N ;inguagem de Consulta 5struturada
UM; U!i2ie0 Mo0eli!- L+!-*+-e ; Li!-*+-e, 0e Mo0el+-e, U!i2i3+0+
SU-RI!
H /N8,'&UQR'#########################################################################################################HH
3 ,5L/MR' &) ;/85,)8U,)####################################################################################HI
G M'&5;'M &5 &)&'M 5 ) ',/5N8)QR' ) 'B*58'M######################################H1
I M'&5;' &/M5NM/'N); 5M )MB/5N85 &5 (5,M/M8SNC/) &5 'B*58'M####G4
J C'NC;UMR'###########################################################################################################JK
,5F5,SNC/)M##########################################################################################################>0
)(SN&/C5M###############################################################################################################>I
H /N8,'&UQR'
Neste trabal!o so descritas e aplicadas algumas etapas da metodologia
proposta no ano de 300> por Mueli de Ftima (oppi Borba- na Universidade Federal
de Manta Catarina- em tese de doutorado referente : modelagem e implementao
de ambientes de &ata @are!ouse sob os conceitos do paradigma da 'rientao a
'b2etos- adaptando.a em um modelo dimensional con!ecido#
H#H Conte6tualizao do problema
Na era da sociedade do con!ecimento- o sucesso das organizaCes est
diretamente ligado ao acesso privilegiado : informao em tempo e em quantidade
satisfatArios dentro da dinTmica de negAcio =B',B)- 300>?# Com a crescente
necessidade de gerenciar e analisar o desempen!o organizacional- favorecendo o
processo de tomada de deciso- percebe.se no mercado diversas soluCes de &ata
@are!ouses =&@? que disponibilizam- de forma mais interessante para a empresa-
as informaCes contidas em grandes volumes de dados distribudos em diferentes
sistemas# ) construo do &@ deve possibilitar acesso fcil :s informaCes-
apresent.las de maneira consistente- ser adaptvel e fle6vel a mudanas-
promover segurana em relao : proteo das informaCes e funcionar como uma
base para suporte a decisCes =/NM'N- 300J?#
&a mesma forma que as organizaCes precisam de agilidade para dispor
das informaCes estrat+gicas e6istentes nos sistemas- + necessrio que o processo
de implementao do &@ se2a bem definido- rpido e com bai6os custos- o que
pode ser determinante dentro da con2untura comercial# 5sse + o problema apontado
por Ulein- Campos V 8anaEa =H444?- pois e6iste a car"ncia por uma metodologia
bem definida para a implantao de ambientes &@# )ssim- alguns aspectos devem
ser discutidos como- por e6emplo- o suporte na manipulao de dados e custos de
implementao- pois em ambientes &@ + necessrio modelar todos os
agrupamentos de informaCes da organizao- gerando assim grande quantidade de
H
dados e maior comple6idade dos mesmos para o armazenamento fsico# Neste
momento- com o intuito de que essa implantao se2a menos impactante- surge a
necessidade do uso de bancos de dados orientados a ob2etos =B&''?#
) motivao para este trabal!o- al+m daquela observada pela
metodologia de Borba =300>?- vem do pressuposto que a '' poderia promover
agilidade de desenvolvimento de bancos de dados '' como ocorre na realidade do
desenvolvimento de softDare atualmente# &essa forma- seria possvel implementar
soluCes de &@ seguindo uma metodologia ou um processo de desenvolvimento
que embarcasse este paradigma- aproveitando.se das tecnologias oferecidas por
aplicaCes de modelagem '' para mel!oria da documentao do &@ como- por
e6emplo- a abstrao oferecida pela UM; frente ao cliente#
)s etapas descritas- como toda a metodologia- esto baseadas na
modelagem e e6trao de informaCes comerciais relevantes sob o con2unto de
processos c!amado de &ata @are!ouse =&@?- atualmente usado o termo Business
/ntelligence =B/?- e pelo paradigma con!ecido como 'rientao a 'b2etos =''? para
o desenvolvimento de sistemas# ' conceito de &@ foi proposto em meados dos
anos 10 pelos idealizadores @illian /nmon e ,alp! Uimball que descrevem os
processos de anlise de negAcio para suprir as necessidades empresariais atrav+s
de sistemas de apoio : tomada de deciso- permitindo que informaCes relevantes e
estrat+gicas se2am obtidas dos prAprios dados e6istentes nas organizaCes# ) teoria
'' criada na d+cada de >0 por Uristen NOgaard e 'le.*o!an &a!l tin!a como
ob2etivo oferecer uma nova viso de modelagem e programao- pois era notvel
que as pessoas pensavam em entidades e responsabilidades de negAcio como um
todo estruturado e encapsulado- inferindo o conceito de ob2eto#
&essa forma- durante toda a !istAria da filosofia computacional e do
pensamento cientfico para a resoluo de problemas de forma mais ob2etiva e clara-
diversos modelos foram definidos para documentar implementaCes de sistemas e
metodologias de desenvolvimento- considerando as incertezas do pensamento
!umano e as abstraCes de uma realidade para consenso de todos# Mobre as
necessidades de diferencial competitivo promovido pelas soluCes de &@ e as
facilidades geradas pelo paradigma '' no desenvolvimento de aplicaCes- percebe.
se a relevTncia em estudar formas de agregar os dois conceitos para e6trair os
resultados mais eficazes desta associao frente :s necessidades de mel!or custo.
H
benefcio nas anlises de negAcio#
' interesse deste trabal!o + aplicar a metodologia de Borba =300>? para
mapear e implementar um determinado modelo dimensional com o uso de
tecnologias altamente difundidas no mercado que utilizam o paradigma '' e- dessa
forma- relatar altos gan!os de desempen!o- versatilidade e bai6os custos de
desenvolvimento com o intuito de apontar as vantagens no uso de bancos de dados
'' comercialmente em soluCes B/#
H#3 5strutura do trabal!o
5ste trabal!o est dividido em cinco captulos- incluindo o primeiro
captulo de introduo# ' segundo captulo aborda uma reviso da literatura-
refletindo- de forma sucinta- as soluCes e problemas e6istentes quanto a
modelagem e implementao de banco de dados- mais especificamente ambientes
de &@ e o !istArico da ''# ' captulo mostra- tamb+m- o cenrio atual com alguns
trabal!os relacionados : implantao de &@ e modelos propostos#
' terceiro captulo apresenta- de maneira mais abrangente e conceitual-
os modelos de dados con!ecidos- desde a abordagem 5, para a modelagem
conceitual de bancos de dados relacionais at+ os modelos envolvendo a ''-
abordagem mais recente para ambientes de persist"ncia# )l+m disso- t+cnicas e
componentes da modelagem dimensional so descritos para e6emplificar algumas
metodologias propostas para o desenvolvimento de soluCes &@#
* o captulo I + dedicado : descrio da metodologia de Borba =300>?
aplicada- aprofundando as etapas de mapeamento do modelo dimensional utilizado
para UM; e sua implementao fsica por uma linguagem de programao ''# 5ste
captulo apresenta as empresas que disponibilizaram o modelo dimensional para o
estudo de caso- as ferramentas utilizadas no trabal!o e os conceitos definidos no
prAprio modelo dimensional fornecido#
No captulo final e6istem algumas refle6Ces e conclusCes e6tradas deste
trabal!o- sugerindo assim algumas lin!as de pesquisa para trabal!os futuros#
H
3 ,5L/MR' &) ;/85,)8U,)
Nas d+cadas de 10 e 40- o banco de dados era definido como uma Wnica
fonte de dados para todo o processamento das aplicaCes e6istentes no meio
cientfico# Com a evoluo tecnolAgica- o computador tornou.se e6tremamente
aplicvel no mercado comercial- suprindo as instituiCes empresariais com dados
que favoreciam o ambiente de negAcio- transformando os recursos computacionais
de simples instrumentos de clculo para verdadeiras ferramentas de anlise de
negAcio com alto poder competitivo =L/&'88/- 300H?# Neste momento- a
comunidade cientfica e as organizaCes empresariais passam a perceber a
necessidade por alguma metodologia bem definida para a modelagem de bancos de
dados por causa dos problemas causados pela implementao direta e falta de
plane2amento# (roposta por (eter C!en =H4K>?- o modelo e abordagem 5, passa a
vigorar- como ocorre at+ nos dias de !o2e- como o padro de modelagem e
desenvolvimento de bancos de dados relacionais#
Borba =300>? lembra que- desde os anos 40- a necessidade de obteno
de dados relevantes- principalmente em tempo satisfatArio imposto pela dinTmica da
globalizao- v"m se apresentando cada vez mais importante e determinante para o
sucesso das organizaCes# Com a crescente necessidade de gerenciar e analisar o
desempen!o organizacional- favorecendo o processo de tomada de deciso-
percebe.se no mercado diversas soluCes de &ata @are!ouses =&@? que
disponibilizam- de forma mais interessante para a empresa- as informaCes contidas
em grandes volumes de dados =B',B)- 300>?#
5m H443- /nmon definia um &@ como uma coleo de dados orientada
por assunto- integrada- varivel no tempo e no.voltil- usada no apoio aos
processos de tomada de deciso gerenciais# (ara ele- o &@ + uma tecnologia
voltada para o estudo de t+cnicas e ferramentas utilizadas em aplicaCes que
envolvam anlise intensiva de dados e integrao de fontes de dados !eterog"neas-
de forma a prover fle6ibilidade e agilidade na ger"ncia- manuteno e acesso a
estes dados =/NM'N- 300J?# &e uma forma geral- o &@ + um ambiente que obt"m
um tratamento mais adequado da informao e facilita o processo de tomada de
deciso- pois proporciona consultas de dados !istAricos que teriam alto custo de
H
desempen!o se realizadas por sistemas tradicionais de armazenamento#
Como qualquer soluo tecnolAgica adotada- inicialmente no se dava
uma importTncia emergencial : definio de um processo bem fundamentado para o
desenvolvimento de &@# Conforme Ulein- Campos V 8anaEa =H444?- no e6iste uma
metodologia sAlida para implantao de ambientes &@- tendo somente guias que
direcionam os arquitetos para obteno do mel!or resultado alcanvel- indicando
ento um dos principais problemas para o seu desenvolvimento# (ara facilitar a
implementao deste tipo de abordagem- Uimball =H441?- como poucos autores que
aprofundam em um modelo lAgico- propCe nove passos simples para nortear a
implementao de um &@- tendo como foco o modelo estrela# 5le descreve que a
construo efetiva de um &@ se inicia pela modelagem dimensional- uma t+cnica de
pro2eto lAgico de banco de dados que busca apresentar os dados em um formato
que se2a intuitivo e com alto desempen!o para o usurio final#
&iferentemente na rea de desenvolvimento de sistemas- onde o
paradigma da orientao a ob2etos =''? se firma cada vez mais desde esta +poca- +
importante comentar que no e6istem muitas pesquisas do uso desse paradigma na
implementao de bases &@#
5sse enfoque para a orientao a ob2etos- paradigma de modelagem e
programao criada nos anos >0- baseia.se no fato de que os ob2etos oferecem uma
abstrao maior para a modelagem de dados e6tremamente comple6os- pois eles
representam mel!or as entidades do mundo real incorporando atributos e
responsabilidades daquela entidade =B'MC),/';/ et al- 300>?# Como ocorre
tamb+m na modelagem dimensional- + necessrio encontrar todos os ob2etos que
compCem o &@- sem contar que os requisitos do negAcio podem mudar dentro da
dinTmica de competio do mercado# &essa forma- os ob2etos podem ser
estendidos para atender :s novas demandas de mercado# Megundo Freitas *Wnior et
al =3003?- esses ob2etos podem ser atributos de uma dimenso- podem ser as
prAprias dimensCes- as m+tricas ou at+ mesmo as tabelas fato do &@# 'utra
vantagem do modelo orientado a ob2etos percebe.se na possibilidade de utilizar o
mesmo modelo no pro2eto conceitual- onde os ob2etos so construdos; no pro2eto
lAgico- estendendo.se esses ob2etos conforme a tecnologia; e no fsico- quando
detal!es da ferramenta utilizada na implementao so incorporados ao modelo
utilizado#
H
Borba =300>? comenta que cada ob2eto possui um Wnico identificador '/&
na base de dados inteira em um banco de dados orientado a ob2etos =B&''?-
enquanto que em base de dados relacionais- uma c!ave primria formada por um ou
mais atributos identifica somente uma tupla em uma relao# ' estado atual de um
determinado ob2eto consiste no valor das suas propriedades- se2am seus prAprios
atributos ou os relacionamentos com outros ob2etos# Como os ob2etos representam
entidades do mundo real mais fielmente- os valores de seus atributos podem ser
muito comple6os- podendo representar outros ob2etos# * em bancos de dados
relacionais ocorrem algumas incompatibilidades referentes a esse tipo de
comple6idade- pois e6iste uma grande separao entre os dados e suas operaCes
ou responsabilidades =B'MC),/';/ et al- 300>?#
&essa forma- apesar do sucesso dos sistemas de gerenciamento de
dados relacionais- Ulein- Campos V 8anaEa =H444? afirmam que a manipulao de
informaCes comple6as proporcionada pelas diversas aplicaCes- inclusive a
tecnologia de &@- e6igiram novas soluCes de gerenciamento de dados como os
sistemas de gerenciamento de banco de dados orientados a ob2etos =MBB&''? e
ob2eto.relacionais =MBB&',?#
&entro da modelagem de um &@- o esquema estrela se pro2eta como a
principal forma de representao da dimensionalidade de negAcio e- ao introduzir as
abstraCes ''- esses sistemas de gerenciamento permitem que as tabelas fato e as
dimensCes se2am mel!or representadas# Neste conte6to surge a proposta de
modelagem '' por Borba =300>? para bancos &@ que aplica integralmente os
conceitos da '' sem nen!um tipo de tecnologia intermediria#
Nos Wltimos anos ocorreram alguns usos de B&'' no mercado- como
relata ,osemberg =3001?# ) /ndra Mistemas- grupo espan!ol lder em tecnologia- foi
contratada recentemente para desenvolver um centro de controle do sistema de
trens bala )L5 da 5span!a =,'M5MB5,B- 3001?# Neste pro2eto- um B&'' foi
utilizado como a base de dados de tempo real para controlar o trfego# ' B&''
usado foi o dbIo- um frameDorE de persist"ncia de ob2etos criado por volta do ano
3000- gerando uma capacidade de processamento em torno de 300 mil ob2etos por
segundo no sistema da /ndra com pouco uso de memAria# &e acordo com *os+
Miguel ,ubio Mnc!ez- gerente t+cnico da /ndra- o maior benefcio observado se
mostrou na facilidade em trabal!ar diretamente com ob2etos em consultas sem
H
transformar os dados nos pro2etos comple6os em *ava#
H
G M'&5;'M &5 &)&'M 5 ) ',/5N8)QR'
) 'B*58'M
Nas Wltimas d+cadas- a computao vem evoluindo no que se refere :s
metodologias e tecnologias de modelagem e armazenamento de dados# Uma
dessas tecnologias que contriburam para essa evoluo so os diversos tipos de
bancos de dados que armazenam grande quantidade de dados em um curto espao
de tempo- mas esta realidade passou a dificultar aos envolvidos identificar e analisar
informaCes relevantes ali presentes para o negAcio da organizao# &essa forma- o
modelo de dados deve fornecer uma viso precisa e ob2etiva de como os dados
sero armazenados para favorecer o entendimento de conceitos- especificaCes e
regras durante o pro2eto de banco de dados =B',B)- 300>?#
Conforme Lieira =300H?- um modelo de dados + uma coleo de conceitos
que podem ser usados para descrever um con2unto de dados e operaCes para
manipular esses dados# (ara 5lmasri V Navat!e =3003?- os modelos de dados
podem ser classificados em modelo conceitual- lAgico e fsico- conforme a etapa de
desenvolvimento do pro2eto do banco em que o modelo + utilizado#
' modelo conceitual representa as entidades e seus relacionamentos
conforme observadas e e6postas no mundo real durante a fase de anlise entre os
envolvidos da organizao- desconsiderando detal!es impostos pela tecnologia-
metodologias ou dispositivos fsicos# No modelo lAgico- construdo a partir do modelo
conceitual- as entidades mapeadas so representadas conforme um padro mais
t+cnico e formal- considerando limitaCes tecnolAgicas e decisCes de pro2eto
conforme a viso do usurio do MBB&- mas ainda se abst+m do ambiente fsico
onde os dados sero armazenados no computador# * no modelo fsico- detal!a.se
os tipos de campos- o acesso : memAria e demais itens para o MBB&- pois os
dados so representados conforme o ambiente fsico para implementar as estruturas
de armazenamento das ocorr"ncias ou instTncias das entidades =C'UB'- H44K?#
&entro de uma abordagem tradicional- um tipo de modelo muito usado na
especificao de um banco de dados + o modelo 5ntidade.,elacionamento-
geralmente utilizado no pro2eto conceitual de aplicaCes de um banco de dados#
=5;M)M,/ V N)L)8H5- 3003?#
H
G#H Modelo de &ados 5ntidade.,elacionamento
(roposto por (eter C!en em H4K>- o modelo 5ntidade.,elacionamento
=5,? + uma e6tenso do modelo conceitual que estuda os dados e descriCes da
realidade em um esquema de conceitos entendveis pelo usurio final# &essa forma-
o modelo 5, representa- sob uma forma estrutural sim+trica- os dados em um
diagrama que mapeia as entidades do negAcio e os relacionamentos entre elas de
forma a remover a redundTncia de dados =U/MB);- H441?#
(ara implementar um modelo 5, sobre um determinado cenrio de
dados- + necessrio identificar os tipos de entidades e seus relacionamentos-
desen!ar um diagrama 5, a partir destes- identificar os atributos e valores- traduzir
o diagrama 5, em um diagrama estruturado de dados e pro2etar os formatos dos
registros =CH5N apud B',B)- 300>?#
No estudo de modelagens de dados- + necessrio con!ecer os conceitos
de entidade- relacionamento- atributo e identificadores- elementos presentes na
construo dos diagramas e importantes na construo de um banco de dados#
C!en =H4K>? define entidade como X=###? uma YcoisaZ que pode ser
claramente identificada# Uma determinada pessoa- empresa ou evento + um
e6emplo de uma entidade[- ou se2a- entidade + todo ob2eto relevante encontrado na
descrio do negAcio modelado- no qual ob2eto aqui + um termo gen+rico e ainda
no est associado : orientao a ob2eto- assunto que ser tratado mais : frente#
Braficamente no diagrama 5,- as entidades modeladas so
representadas por um retTngulo que- numa abordagem geral- significa todos os
ob2etos referentes :quela entidade dos quais dese2a.se armazenar informaCes#
Caso se2a preciso referenciar um ob2eto em particular- ou se2a- um determinado
con2unto de dados reais e6istentes no ambiente modelado- denota.se uma
ocorrncia ou instncia de uma entidade =H5UM5,- H441?#
&epois de identificadas todas as entidades- + necessrio representar as
informaCes que caracterizam essas entidades dentro do cenrio de negAcio#
Conforme Heuser =H444?- uma dessas caractersticas que pode ser armazenada + o
relacionamento entre entidades no ambiente real# (ercebe.se que relacionamento +
uma determinada associao entre duas ou mais entidades como- por e6emplo-
H
entre as entidades (rofessor e &isciplina de um determinado minimundo- podemos
encontrar o relacionamento ;eciona- pois a associao e6istente + de que (rofessor
;eciona &isciplina# Na figura G#H#H temos um e6emplo de um determinado negAcio
modelado onde foram identificadas tr"s entidades =Cliente- (edido e (roduto? e dois
relacionamentos =Faz e Cont+m? entre elas# )s imagens de ob2etos e pessoas
representam as respectivas instTncias das entidades#
Figura G#H#H \ 56emplo de um negAcio modelado#
Fonte% M)CH)&' V )B,5U- 300I#
's relacionamentos podem ser classificados em tr"s tipos%
um.para.um =H%H?- onde uma instTncia de uma entidade est
associada a uma instTncia da outra entidade;
um.para.muitos =H%n?- onde uma instTncia da primeira entidade pode
estar associada a uma ou vrias instTncias da segunda entidade;
muitos.para.muitos =n%m?- onde cada instTncia de uma entidade pode
estar associada a vrias instTncias da outra entidade e vice.versa- ou
se2a- pode ser entendido como um relacionamento H%n bilateral pelo
fato de que em ambos os sentidos de leitura e6iste um grau de um.
para.muitos =M)CH)&' V )B,5U- 300I?#
No estudo de relacionamentos pelo modelo 5,- encontramos tamb+m os
conceitos de totalidade e parcialidade que e6primem- respectivamente- a
obrigatoriedade e a no.obrigatoriedade da e6ist"ncia de pelo menos uma
associao entre duas entidades# No diagrama 5, os relacionamentos so
3
representados por um losango e os conceitos acima aparecem como uma lin!a de
ligao dupla =totalidade? e uma lin!a simples =parcialidade? ligadas :s entidades#
'utra forma muito utilizada para se representar esse tipo de obrigatoriedade +
descrever a cardinalidade mnima e m6ima das entidades no relacionamento-
colocando o nWmero 0 para cardinalidade mnima opcional e o nWmero H para
ocorr"ncias obrigatArias =H5UM5,- H441?#
'utra propriedade das entidades que devem ser modeladas e
armazenadas so os seus atributos- valores que definem e caracterizam uma
determinada entidade# (ara C!en =H4K>?- X)s informaCes sobre uma entidade ou
um relacionamento + obtido atrav+s da observao e medio- e6pressas por um
con2unto de pares atributo.valor[- ou se2a- as entidades e relacionamentos podem
ser compostos por atributos que- por sua vez- possuem valores em suas instTncias#
Figura G#H#3 \ 56emplo de um modelo 5,#
Fonte% H5UM5,- H441#
Finalizando essa abordagem superficial dos conceitos envolvidos no
modelo 5,- encontramos os identificadores- atributos especiais e6istentes nas
entidades modeladas- possibilitando que cada instTncia ou tupla se2a Wnica nas
tabelas que representam as entidades# 5sses identificadores so con!ecidos como
c!aves primrias de banco de dados relacionais e relacionamentos n%m so
identificados pelos atributos.c!ave das entidades envolvidas =B',B)- 300>?#
3
G#3 &ata @are!ouse e o Modelo &imensional
Nesta seo- sero apresentadas algumas definiCes referentes a &ata
@are!ouse =&@? e alguns elementos importantes do modelo dimensional para uma
discusso das vantagens de um mapeamento orientado a ob2etos#
5ncontra.se na literatura a caracterizao de &@ como X=###? uma coleo
de dados orientada a assuntos- integrada- no voltil e varivel no tempo em suporte
:s decisCes gerenciais[ =/NM'N- 300J% 34?# Borba =300>? complementa que um &@
+ uma importante ferramenta para anlise e acesso mais global aos dados advindos
de diversas bases de dados aut]nomas e !eterog"neas- pois o &@ possui uma
cApia dos dados e6trados de um ou mais sistemas de produo na fase de
carregamento =U/MB);;- H441?# ' conceito de &ata Mart + parecido com as
definiCes acerca de um &@- mas focado sobre um determinado assunto- ou se2a-
&ata Mart + um &@ departamental que possui um assunto definido#
) implementao de um &@ deve ser considerada um pro2eto de
desenvolvimento e deve ser mantido pela organizao que dese2a mel!orar o seu
processo de deciso =(/NH5/,'- 3003?# Na abordagem de Uimball =3003?- &ata
Marts so criados e- posteriormente- o &@ + construdo a partir da correlao entre
eles- mas para /nmon =300J?- o &@ + construdo para depois os assuntos serem
identificados para &ata Marts# Como no + foco de anlise deste trabal!o- o
detal!amento dessas implementaCes no ser abordado#
Como visto na sesso anterior- o modelo 5, + amplamente usado na
construo de bancos de dados relacionais que suportam a maioria das bases de
dados operacionais das organizaCes atualmente# 5ssas bases de dados
operacionais so baseadas nas aplicaCes da empresa- para obteno de mel!or
desempen!o conforme o sistema ao qual est associada =L/&'8/- 300H?#
&iferentemente- um &@ + baseado em assunto- ou se2a- os dados so organizados
conforme os principais assuntos do negAcio da empresa#
's dados no &@ no so deletados e nem atualizados livremente como
nas bases operacionais- salvo na administrao do processo de carga do &@-
quando os dados dos aplicativos em produo so inseridos e- a partir da- sero
apenas consultados durante as demandas de negAcio# Conforme Uimball =H441?- o
3
primeiro estgio do &@ onde estes dados so carregados para serem tratados em
processos 58; =e6tract.transformation.load? + con!ecida como data staging area e
esse controle de carga =insero? + feito fora do e6pediente das consultas analticas#
5ssa propriedade de que os dados no so atualizados e deletados- inferindo a no.
volatilidade ao &@- permite mel!or performance do mesmo- pois o ambiente
e6ecutar as transaCes analticas sem perder tempo de processamento no controle
de concorr"ncia como acontece nos bancos de dados operacionais acessados por
diversos usurios que podem e6ecutar diferentes tarefas sobre os mesmos dados#
Figura G#3#H \ A i!"e-r+./o 0o' 0+0o' 1+r+ *!i2or,i+r e 2+3ili"+r o +3e''o4
Fonte% L/&'88/- 300H#
Conforme a Figura G#3#H acima- a integridade dos dados + outra
importante caracterstica de um ambiente &@- pois os dados advindos das diversas
fontes operacionais podem possuir diferentes formatos e valores- em conformidade
:s suas respectivas aplicaCes# Como no e6iste a e6ig"ncia de uma padronizao
das informaCes no ambiente operacional- adota.se um padro para os dados no
&@- mantendo os mesmos integrados sob um Wnico formato =L/&'88/- 300H?# (ara
/nmon =300J?- a integrao + o processo mais importante na manuteno de um &@
e como os dados so alimentados a partir de mWltiplas fontes- eles devem ser
manipulados a fim de possurem uma Wnica imagem corporativa# Com isso- Xos
dados so inseridos no data Dare!ouse de tal forma que as muitas incoer"ncias no
nvel do aplicativo so desfeitas[ =/NM'N- 300J% GH?#
' &@ tamb+m + variante no tempo- ou se2a- os dados nesse ambiente
representam uma fai6a e6tensa de tempo- podendo armazenar- por e6emplo- as
3
realidades e instTncias de um determinado dado concebido ! vrios anos# * as
bases operacionais de dados- frequentemente- armazenam somente a atual
instTncia dos dados e- como podem ser alterados ou at+ mesmo deletados- quando
uma mudana ocorre- perde.se a refer"ncia do antigo status em que o dado se
encontrava# Conforme Lidotti =300H?- essa caracterstica do &@ + garantida pela
implementao de uma dimenso de tempo que- no momento em que os dados so
inseridos no &@- receber em seu atributo.c!ave o valor da data desta atualizao-
permitindo assim ter redundTncia dos dados que esto diferenciados somente pela
data de alterao dos mesmos no ambiente operacional# ' conceito de dimenso
ser apresentado durante a definio de modelagem dimensional#
' acesso ao &@ fornece alto desempen!o na obteno de resposta em
sistemas caros com alta transitividade de dados# &essa forma- o &@ + um tipo de
pro2eto que enfoca X=###? a implementao de um processo- ferramentas e facilidades
para se gerenciar e gerar informao completa- oportuna e compreensvel para o
processo decisArio nas organizaCes[ =B',B)- 300>?#
Na modelagem de &@ no + utilizado plenamente o conceito de pro2etos
normalizados- como e6istente na abordagem 5, =B',B)- 300>?# &essa forma- no
pro2eto de &@- + modelada uma tabela central =fato? conectada a diversas outras
tabelas que armazenam as dimensCes do negAcio dando um carter estrelar ao
modelo# Beralmente- somente a tabela de fatos + normalizada- no
necessariamente todas as tabelas como no modelo 5,# Borba =300>? afirma que a
comunidade cientfica ainda no direcionou um estudo concreto para a padronizao
de modelos conceituais para &@- incluindo a construo de modelos dimensionais#
Conforme Barbieri =300H?- os tipos de modelos e6istentes para estruturas
transacionais- como o modelo 5,- so incompatveis com as novas necessidades
empresariais de competitividade- diferenciais de negAcio e tomadas de deciso
estrat+gicas- sendo necessria a formulao de novos modelos que abordem uma
viso mais focada para o negAcio das organizaCes e que- dessa forma- facilitem no
desenvolvimento de ambientes &@# Como descrito no captulo 3- ao longo dos anos-
em consonTncia com as necessidades de mercado- foram publicadas diversas
abordagens para implementao destes ambientes analticos# ) seguir so descritas
duas metodologias que possuem muitos elementos em comum- mas seguem
arquiteturas e paradigmas diferentes em diversas fases% o modelo de Uimball e o
3
modelo proposto por Borba em 300>#
Frente : realidade do mercado no gerenciamento de informaCes
estrat+gicas- Uimball et al =H441? promoveu- desde meados dos anos 10- um modelo
contendo as principais diretrizes de desenvolvimento do &@- distribudas em 4
fases# 5sse modelo afirma que os pro2etos do &@ devem incidir sobre as
necessidades do negAcio e que os dados devem ser unidimensionais quando
apresentados aos clientes# Cada pro2eto no &@ dever ter um ciclo finito com incio
e fim bem definidos# ) sua primeira fase consiste do (lane2amento de (ro2eto-
seguida pelas fases de &efinio dos ,equisitos de NegAcio- &esign 8+cnico de
)rquitetura- Meleo e /nstalao de (rodutos- Modelagem &imensional- &esign
Fsico- &esign e &esenvolvimento da Data Staging Area- 5specificao e
/mplementao da )plicao )naltica- /mplantao- Manuteno e Crescimento
=U/MB);;- 3003?# 5ste modelo foca o desenvolvimento do &@ para um ambiente de
bancos de dados relacionais#
) Figura G#3#3 apresenta o diagrama de ciclo de vida do modelo de
Uimball- indicando a distribuio das fases seq^enciais- depend"ncias e fases
concorrentes em um pro2eto de desenvolvimento de &@# Uimball V ,oss =3003?
alertam que o diagrama no reflete uma cronologia absoluta entre as fases e nem o
verdadeiro tempo de durao de cada uma delas# _ um modelo que pode ser
considerado como um simples roteiro que facilita a equipe do pro2eto no
desenvolvimento e que serve tanto para os pro2etos.assunto de &ata Mart como
para todo o ambiente &@#
Figura G#3#3 \ Di+-r+,+ 0e 3i3lo 0e 5i0+ 0i,e!'io!+l 0e !e-63io < Mo0elo 0e 8i,9+ll4
Fonte% U/MB);;- 3003% GG3#
' modelo proposto por Borba =300>? promove a implementao do &@
3
em B&''- trabal!ando com os conceitos do paradigma '' em vrias de suas
fases# 5stes conceitos- quando representados pela UM;- oferecem uma modelagem
adequada das caractersticas de um &@- desde a fase de levantamento de
requisitos at+ a implementao# Conforme Borba V Morales =300>?- as J etapas que
compCe este modelo so- nesta ordem% a &efinio do Modelo do NegAcio; Berao
do Modelo &imensional; Berao do Modelo &imensional ,epresentado pela UM;;
Mapeamento do Modelo UM; para B&''# 5ste modelo ser devidamente
aprofundado no prA6imo captulo- pois trata.se de uma parte fundamental para a
realizao deste trabal!o- principalmente no que se refere :s fases de mapeamento
do modelo dimensional em diagrama UM; e deste para um ambiente ''#
Uma das t+cnicas de modelagem mais utilizadas atualmente para a
implementao de um &@ + a modelagem dimensional- um tipo de modelo lAgico
que reflete os requisitos de negAcio em uma estrutura de cubo de dados- como
mostrado na figura G#3#G- um cubo de dados envolvendo as dimensCes ,egio-
(roduto e 8empo# Conforme Uimball V ,oss =3003?- para construir o modelo
dimensional + necessrio identificar o processo de negAcio a ser modelado-
descrever o nvel de granularidade e mapear as dimensCes e fatos do negAcio#
Figura G#3#G \ C*9o 0e 0+0o' 1+r+ *, ,o0elo 0i,e!'io!+l4
Fonte% (/NH5/,'- 3003#
Barbieri =300H? complementa que a modelagem dimensional representa a
informao como interseCes das vrias dimensCes do negAcio para que o usurio
ve2a os dados conforme o entendimento que ele tem dessa realidade# ' modelo
3
dimensional possui uma estrutura mais assim+trica- diferentemente do modelo 5,-
mapeando uma tabela central c!amada de tabela fato com diversos joins com outras
tabelas secundrias- as dimensCes =U/MB);;- H441?# No estudo da modelagem
dimensional- mostra.se necessrio entender os conceitos de tabelas fatos-
dimensCes- m+tricas e demais elementos que integram este tipo de modelagem#
;opes V 'liveira =300K? definem tabelas fatos- tamb+m con!ecidas como
cubos de deciso ou tabelas de fatos- como representantes das transaCes ou
ocorr"ncias e6istentes no negAcio# &e forma mais especfica- Uimball =H441? afirma
que as tabelas de fatos armazenam as mediCes num+ricas de desempen!o
e6tradas dos fatos relevantes do negAcio e as combinaCes entre as dimensCes ali
presentes# (ara Borba =300>?- em muitos casos- os fatos no so con!ecidos e-
geralmente- representam valores num+ricos- tamb+m c!amados de m+tricas-
quantificados em medidas conforme uma realidade que + determinada pelos nveis
de dimenso# Um e6emplo de tabela fato est no modelo dimensional da figura
G#3#I- cu2a tabela de fatos Lendas- conectada :s dimensCes 8empo- (roduto e ;o2a-
possui os totais dirios de todos os produtos vendidos em uma lo2a- produzindo
instTncias diferentes para diferentes combinaCes das dimensCes =U/MB);;- H441?#
)s dimensCes representam os diversos tipos de visCes que os usurios
podero ter do negAcio# 5ste tipo de tabela armazena as descriCes das dimensCes
de negAcio modeladas- de prefer"ncia que se2am implementadas em diversos
campos te6tuais- e so utilizadas como elementos condicionais que restringem ou
formam os cabeal!os das consultas analticas do usurio =U/MB);;- H441?# Na
figura G#3#I- as tabelas (roduto- ;o2a e 8empo so tabelas dimensionais e cada
registro e6istente em cada uma delas representa- respectivamente- um produto- uma
lo2a e tempo especficos# No caso da dimenso 8empo- como comentado
anteriormente- + tpica em um modelo dimensional para garantir a variTncia temporal
do &@ e armazenar as instTncias ao longo do tempo para consultas !istAricas#
No modelo dimensional- o mapeamento dos relacionamentos + feito sob
uma lAgica diferente da aplicada ao modelo 5,# )s dimensCes fazem
relacionamentos de H%n com a tabela de fatos- cu2o lado H est na dimenso e o lado
n na tabela fato- representando que uma instTncia de uma determinada dimenso
pode estar em uma ou mais instTncias dos fatos ocorridos no negAcio# 5m muitos
modelos dimensionais o lado n de relacionamentos + descrito por um asterisco-
3
notao muito encontrada tamb+m em modelos orientados a ob2etos# Conforme
Borba =300>?- enquanto os relacionamentos entre as entidades so mapeados de
forma e6plcita no modelo 5,- no modelo dimensional os relacionamentos
representam- implicitamente- as interseCes entre a tabela de fatos e suas
dimensCes- dentro do ideal imposto pelo cubo de dados#
Figura G#3#I \ 5sboo de um modelo dimensional4
Fonte% )daptado de U/MB);;- H441% H0#
's campos das tabelas desen!adas para o modelo dimensional so
e6tremamente importantes- pois- dependendo de como so classificados no modelo-
eles refletiro alguma caracterstica e informao importantes para os processos
analticos de tomada de deciso- se2a para armazenar um fato do negAcio ou uma
descrio te6tual de uma dimenso# &e acordo com Uimball =H441?- essa
classificao + denominada granularidade da tabela# 8oda tabela de fatos possui
como atributo.c!ave a combinao das c!aves primrias das tabelas dimensionais
as quais est ligada# Como na modelagem de bancos de dados relacionais- todo
relacionamento n%m deve ser mapeado como uma nova tabela e- em ambientes &@-
ela ser uma tabela de fatos =U/MB);;- H441?#
) tabela G#3#H abai6o aponta as principais diferenas- sob um ponto de
vista conceitual- entre os modelos 5, e dimensional# Borba =300>? analisa que-
mesmo com caractersticas anlogas- estas duas modelagens focam em semTnticas
diferentes na abordagem e modelagem dos dados- como visto at+ agora# 5nquanto
o modelo 5, ob2etiva a modelagem das entidades e6istentes no negAcio e como se
3
relacionam entre si- a modelagem dimensional modela as dimensCes de negAcio
envolvidas e os fatos ocorridos que as combinam- medindo o desempen!o sob a
anlise de m+tricas#
8abela G#3#H% Comparao entre modelo 5, e modelo &imensional#
Fonte% )daptado de B),B/5,/- 300H#
odelo ER odelo Dimensional
Modelo mais comple6o (adro de estrutura mais fcil e intuitiva
8abelas =5ntidades? representam os dados e
seus relacionamentos
8abelas Fato e tabelas &imenso
8odas as tabelas so normalizadas 8abelas de Fatos so nWcleos =normalizadas?
Criado para remover redundTncia Mant"m a redundTncia
)s tabelas so indistintamente acessadas 8abelas &imenso so os pontos de entrada
Maior nWmero de tabelas- dificultando os joins Menos tabelas- facilitando os joins
&ificuldade de leitura pelos usurios finais ;eitura mais fcil pelos usurios finais
56istem diversos modelos dimensionais- mas os mais utilizados
academicamente e comercialmente so o modelo 5strela e o modelo Floco de Neve-
con!ecidos na literatura- respectivamente- por Star Schema e Snowflake Schema# )
estrutura do modelo 5strela consiste em diversas tabelas dimensionais conectadas
e6clusivamente a uma ou mais tabelas de fatos que se encontram no centro-
possuindo um formato estrelar# * no modelo Floco de Neve e6istem tabelas de
dimenso conectadas a outras dimensCes# ) metodologia discutida no captulo I
aborda detal!es do mapeamento para cada um destes modelos- enfatizando mais o
modelo 5strela- pois trata.se do formato do modelo dimensional utilizado#
G#G UM; e a Modelagem 'rientada a 'b2etos
Criado na d+cada de >0- o paradigma da 'rientao a 'b2etos =''? vem
sendo cada vez mais difundido nos processos de desenvolvimento de softDare# 5le
representa os dados em estruturas con!ecidas como classes de ob2etos que- sob
um ponto de vista de anlise de pro2etos- implementam atributos e
responsabilidades inerentes ao tipo de entidade modelada# 5sse tipo de estrutura
favorece a representao de dados muito comple6os# Conforme Borba =300>?- a
modelagem '' promove maior abstrao dos dados a serem representados usando
estruturas denominadas classes de ob2etos- encapsulando as diversas operaCes ou
3
m+todos que podem ser aplicadas a um determinado ob2eto#
Mob o Tmbito do processo de construo de bancos de dados- a
abordagem orientada a ob2etos + utilizada na modelagem conceitual de banco de
dados orientados a ob2etos =B&''?- pois e6iste mapeamento direto- at+ mesmo sob
a concepo do usurio- de um modelo de dados '' para sua implementao em
um B&'' =B',B)- 300>?# (ara que a modelagem orientada a ob2etos fique bem
fundamentada e mais fcil de ser entendida- + necessrio con!ecer os conceitos e
ob2etivos do paradigma '' e os seus elementos essenciais- englobando as
definiCes de classe- ob2eto- associao- !erana- polimorfismo- encapsulamento-
mensagens e os diagramas produzidos#
&e forma anloga- Freitas *Wnior et al =3003? define ob2eto como uma
entidade no modelo 5, que- al+m dos seus atributos- possuem tamb+m m+todos#
's atributos de um ob2eto carregam mais caractersticas do que aqueles mapeados
nas entidades 5,# Um atributo- al+m de seu nome- tamb+m possui grau de
visibilidade e o tipo de dado que ele armazena- dependendo do nvel em que o
pro2eto se encontra# 's m+todos dos ob2etos tamb+m informam essas
caractersticas em suas assinaturas- trec!os para descrever se o m+todo retorna
valores- qual o tipo de retorno- nome da operao e parTmetros necessrios# Um
ob2eto- sob uma definio mais t+cnica- + uma instTncia de uma classe modelada
para um sistema ou para um B&''#
Conforme 5lmasri V Navat!e =3003?- na implementao de sistemas-
dados estruturados so denominados ob2etos transientes quando no so mantidos
quando o programa termina sua e6ecuo- enquanto que- quando so armazenados
permanentemente no B&''- eles so c!amados de ob2etos persistentes# 8odo
ob2eto possui um estado- comportamentos e um '/&- que + um identificador Wnico
de um ob2eto em todo o ambiente fsico onde o mesmo se encontra modelado#
Conforme Boscarioli =300>?- o estado de um ob2eto reflete o valor da
instTncia deste ob2eto- mais especificamente- o valor das suas propriedades#
Fisicamente- o estado + formado pelas instTncias das variveis que podem
armazenar os dados e- por elas- pode ser modificado ao longo da e6ist"ncia do
ob2eto no ambiente =B',B)- 300>?# ' comportamento de um ob2eto + definido pelo
con2unto de m+todos definidos e que so e6ecutados quando invocados por
operaCes de outros ob2etos# 5ssas operaCes podem alterar um ou mais atributos
G
do ob2eto- alterando- assim- o seu estado#
) identidade + uma das principais propriedades dos ob2etos# Mesmo
convergindo para o conceito de identificao Wnica proposto pela c!ave primria :s
entidades do modelo 5,- Cattell et al =3000? aponta algumas diferenas entre a
abordagem 5, e ''- pois enquanto a c!ave primria identifica uma Wnica tupla em
uma relao entre entidades- o '/& identifica um ob2eto Wnico em todo o banco de
dados# _ interessante que os '/&s se2am associados uma Wnica vez a um ob2eto- ou
se2a- que os identificadores de ob2etos removidos no se2am reaproveitados# &essa
forma- alguns bancos de dados '' utilizam m+todos hashing para que a
recuperao de ob2etos se2a feita de forma mais eficiente =L/5/,)- 300H?#
)s classes- conforme 5lmasri V Navat!e =3003?- definem um tipo de
ob2eto e as operaCes inerentes :quele tipo- ou se2a- as classes so estruturas que
implementam os mesmos atributos e operaCes para um grupo de ob2etos que sero
instTncias destas classes# )l+m das estruturas pr+.estabelecidas pelos sistemas de
gerenciamento de B&'' e pelas linguagens ''- dependendo da aplicao- outras
classes personalizadas podem ser construdas- segundo a necessidade da
modelagem =B'MC),/';/ et al- 300>?# )s classes so estruturas abstratas de
dados e6tremamente importantes na modelagem ''- pois atrav+s delas + possvel
mapear diversos tipos de associaCes e caractersticas como vistos na realidade por
meio de mecanismos semTnticos que a '' oferece como- por e6emplo- os
conceitos de !erana- polimorfismo e encapsulamento#
) !erana entre classes permite representar !ierarquias entre as
entidades identificadas na realidade do negAcio# 5ste mecanismo permite o
mapeamento de especializaCes e generalizaCes de ob2etos- ou se2a- uma classe-
c!amada de subclasse- pode ser definida a partir de outra classe- denominada de
superclasse- !erdando as instTncias dos atributos e os m+todos encontrados na
superclasse# Megundo Boscarioli et al =300>?- trata.se de um mecanismo muito Wtil
quando so identificados no domnio do problema diversos ob2etos que possuam
diversas caractersticas em comum e outras caractersticas singulares a certas
entidades- criando uma classe geral englobando os atributos e m+todos comuns e
mantendo as diversas subclasses com suas prAprias implementaCes# 5ste tipo de
mapeamento + denominado de generalizao# ) modelagem da situao contrria
tamb+m acontece =especializao?# 5lmasri V Navat!e =3003? apresentam esses
G
mesmos conceitos no modelo 5,5- uma e6tenso do modelo 5,- mas esse se
difere dos princpios propostos pela ''- pois a !erana + implementada como
relacionamentos entre as entidades- e6istindo forte comunicao entre tabelas e no
ob2etos independentes- como no modelo ''# ) figura G#G#H apresenta um e6emplo
de relacionamento de generalizao- utilizando a UM;# Como mostra a figura- os
relacionamentos que representam as generalizaCes possuem a notao de uma
seta de ponta vazia que vai da subclasse para a superclasse#
Figura G#G#H \ Beneralizao das classes Barco e Carro em superclasse Leculo4
Fonte% B'MC),/';/- 300>#
'utro mecanismo relevante nas implementaCes de sistemas e
modelagem de classes + o polimorfismo# 5ste tipo de mecanismo- tamb+m
con!ecido como sobrecarga de operador =operator overloading?- permite que
diversas classes implementem uma mesma operao de forma diferente# &efinindo
mais especificamente- atrav+s do polimorfismo- a '' permite que diferentes classes
possuam uma mesma assinatura de m+todo e que seu conteWdo possa ser
desenvolvido de forma diferente# Boscarioli et al =300>? afirma que a deciso de qual
classe e6ecutar o m+todo em um determinado instante ser feita pelo sistema de
gerenciamento- tanto do banco como do compilador da linguagem- em tempo de
e6ecuo# )lgumas linguagens de programao- como o *ava- por e6emplo-
implementam- automaticamente- uma generalizao constante das classes criadas
G
pelo desenvolvedor para uma mesma superclasse pr+.estabelecida# &essa forma-
toda classe definida pelo usurio pode utilizar o polimorfismo- pois so
especializadas de uma mesma superclasse#
(ara 5lmasri V Navat!e =3003?- o encapsulamento + uma das principais
caractersticas da '' e est relacionado : ocultao de informao- conceito
e6istente nas linguagens de programao que seguem este paradigma# ' conceito
de encapsulamento pode ser percebido na estrutura de formao dos ob2etos- pois
os dados do ob2eto so protegidos pelos m+todos atrav+s de restriCes de
visibilidade e as implementaCes destas operaCes- como de todo o ob2eto- tamb+m
no so con!ecidas pelos usurios que as utilizam# Conforme Lieira =300H?- o
encapsulamento determina que apenas os m+todos sobre os ob2etos se2am visveis
e toda sua estrutura fique oculta# &e uma forma geral- o modelo '' est baseado
no encapsulamento de dados e as operaCes e relacionamentos sobre estes dados#
) comunicao entre ob2etos + realizada atrav+s de mensagens# Uma
mensagem + um estmulo provocado por um ob2eto sobre outro ob2eto que- dessa
forma- e6ecutar um determinado m+todo conforme a mensagem recebida# 5sta
mensagem pode alterar o estado do ob2eto passivo ou apenas obter alguma
informao dele =B',B)- 300>?#
)l+m de representar a estrutura de atributos e operaCes dos ob2etos
atrav+s de classes- o modelo '' tamb+m representa os relacionamentos entre eles#
's relacionamentos aqui possuem a mesma semTntica daquela apresentada para
os relacionamentos no modelo 5,# Contudo- mais tipos de relacionamentos podero
ser mapeados na UM; =Unified Modeling ;anguage?- obtendo maior fidelidade :
semTntica da realidade modelada- como os conceitos de depend"ncia- associao-
generalizao e- derivando da associao- a agregao e a composio# Na UM;-
os relacionamentos muitos.para.muitos- quando possuem atributos- geram novas
classes- c!amadas de classes associativas#
's relacionamentos que representam depend"ncias indicam que uma
determinada classe depende dos m+todos ou dados de outra classe- indicando Xque
a alterao na especificao de um elemento pode afetar outro elemento que a usa-
mas no necessariamente o oposto[ =M/;L) V L/&5/,)- 300H% H>4?# * as
associaCes representam ligaCes estruturais entre ob2etos e podem apresentar
restriCes a serem implementadas#
G
)s associaCes podem ser mapeadas seguindo dois formatos% agregao
e composio# ) agregao- como tamb+m a composio- trata.se de associaCes
do tipo todo-parte- cu2o lado parte + c!amado de objetos-parte que compCem o lado
todo representado pelo objeto-todo# (ara Bezerra =300G?- na agregao- os ob2etos
parte podem pertencer a diversos ob2etos todo e so independentes da e6ist"ncia
deste- ou se2a- e6cluir um ob2eto todo no implica em destruir ob2etos parte que
podem ser criados e manipulados independentemente disso# Uma situao diferente
+ representada na composio- na qual os ob2etos parte pertencem a um Wnico
ob2eto todo# &essa forma- quando este + e6cludo- todos os ob2etos que o compCe
so destrudos# ) agregao tem na UM; a notao grfica de um diamante branco
no lado todo e a composio apresenta um diamante negro =B5`5,,)- 300G?#
Figura G#G#3 \ )lguns tipos de relacionamentos entre classes na UM;#
Fonte% B',B)- 300>#
(roposta por Booc!- ,umbaug! e *acobson em H44J e adotada como
padro pela 'MB ='b2ect Management Broup? em H44K- a UM; + uma linguagem
visual para modelar sistemas sob os conceitos da ''- cu2os elementos grficos
possuem sinta6e e regras bem definidas para construo de diagramas que
representam todas as perspectivas dos sistemas modelados# (ara ,umbaug!-
*acobson V Booc! =300I?- uma caracterstica muito importante da UM; + que se
G
trata de um padro de modelagem totalmente independente da tecnologia utilizada-
favorecendo o entendimento do cliente e sua participao em pro2etos conceituais e
lAgicos de modelagem# (rocessos de desenvolvimento necessitam e produzem
diversos documentos te6tuais ou grficos- c!amados de artefatos- quando utilizam a
UM; como suporte : modelagem =B5`5,,)- 300G?# ) UM; oferece diversos
elementos- distribudos em 4 diagramas- para modelar todas as visCes do sistema e
os artefatos grficos necessrios no desenvolvimento# &entre estes diagramas- ser
conceituado neste trabal!o apenas o diagrama de classes- que servir para
representar um modelo dimensional sob os conceitos da '' no modelo de classes#
' diagrama de classes da UM; representa a estrutura esttica dos
ob2etos e seus relacionamentos- desde a anlise at+ a especificao do modelo# No
modelo de classes- de forma anloga : modelagem 5, considerando os pro2etos
conceitual- lAgico e fsico- e6istem tamb+m pro2etos que modelam os diferentes
nveis do processo de desenvolvimento denominados de Modelo de Classes de
&omnio- Modelo de Classes de 5specificao e Modelo de Classes de
/mplementao# Como no nvel conceitual- o modelo de classes de domnio
representa as classes e6istentes no domnio do negAcio modelado- sem considerar
detal!es da tecnologia que ser utilizada# 56tenso deste primeiro- o modelo de
classes de especificao complementa detal!es do ambiente de softDare a ser
utilizado- mas ainda est em um nvel alto de abstrao# * o Wltimo modelo
corresponde a este segundo modelo implementado em uma linguagem de
programao '' com detal!es mais profundos de soluo t+cnica sob o ponto de
vista dos analistas# Nesta fase- decide.se em qual linguagem de programao-
geralmente do tipo ''- as classes sero implementadas =B5`5,,)- 300G?#
) fim de modelar como os ob2etos se encontram estruturados no sistema-
o diagrama de classes apresenta diversas regras muito bem definidas para
representar as classes e seus relacionamentos# Megundo Bezerra =300G?- a
representao deve possuir- no m6imo- tr"s grupos de informaCes e cada um
deles pode e6ibir diversos elementos# ' primeiro grupo de uma classe no diagrama
deve ser o seu nome e pode apresentar- tamb+m- um estereAtipo informando o tipo
de domnio que aquela classe representa# 5m bancos de dados '' e em sistemas
que devem manter os dados de um ob2eto armazenados- mapeia.se o estereAtipo
entity ou persistente# Milva V Lideira =300H? ainda complementam que a classe pode
G
ter um nome mais completo- tendo seu nome simples precedido pelo nome do
pacote a qual ela pertence separado pelos caracteres Y::# ) segunda seo que
pode ser e6ibida + a lista de atributos da classe- local onde os nomes dos atributos
so apresentados- podendo e6ibir mais elementos como grau de visibilidade-
geralmente visibilidade privada denotada por um sinal de menos- e o tipo do atributo#
5 a terceira parte + a lista de operaCes que- tamb+m- apresentam seus nomes e
podem apresentar parTmetros- al+m do grau de visibilidade e o tipo de retorno#
,umbaug!- *acobson V Booc! =3001?- apresentam- ainda- uma quarta
subdiviso na representao UM; para classes- contendo as responsabilidades-
descritas como te6to em formato livre#
)l+m das regras para representar classes- o diagrama de classes possui
um con2unto de notaCes para a semTntica dos tipos de relacionamentos entre os
ob2etos mapeados no modelo# &e uma forma geral- neste diagrama- os
relacionamentos so c!amados de associaCes# )s associaCes so e6ibidas
atrav+s de uma lin!a que liga as classes correspondentes aos ob2etos que se
relacionam e podem apresentar outros elementos opcionais que so utilizados
quando se dese2a um diagrama mais fiel : realidade#
Conforme ,umbaug!- *acobson V Booc! =300I?- a multiplicidade + a
propriedade mais importante de uma associao e e6ibe a quantidade de instTncias
de ob2etos a que um determinado ob2eto pode estar associado- ou se2a- representa a
cardinalidade- como descrito nos modelos anteriores- entre os ob2etos e6istentes no
sistema# ) notao utilizada para os relacionamentos com conectividade um.para.
um e um.para.muitos- respectivamente- + do tipo !!" e !!#- onde + igual a 0 ou H-
representando participao opcional ou obrigatAria de uma instTncia no
relacionamento# ' asterisco representa a quantidade m6ima de instTncias- sem
limite- que o ob2eto do lado 6 est associado# Bezerra =300G? menciona que podem
e6istir intervalos especficos em uma determinada multiplicidade para e6pressar uma
quantidade definida e obrigatAria de participao de um ob2eto#
)s associaCes podem apresentar outros adornos para agregar mais
significado ao relacionamento- podendo ser nomeadas- apresentar restriCes e
navegabilidade- indicar sentido de leitura e visualizar pap+is# 8oda associao- por
padro- possui carter bidirecional#
) navegabilidade- representada por uma seta em um dos e6tremos da
G
associao- define qual classe na associao pode acessar informaCes de uma ou
mais instTncias da outra classe#
)s restriCes representam condiCes de modelagem ou t+cnicas as quais
ela este2a submetida# Megundo Milva V Lideira =300H? e Bezerra =300G?- as restriCes
so mecanismos que permitem estender ou alterar a semTntica do diagrama de
forma mais consistente- mas recomenda.se que estas se2am includas de forma
te6tual# Caso no se2a possvel- e6iste na UM; uma linguagem especfica para
modelar restriCes- a 'C; ='b2ect Constraint ;anguage?#
* o sentido de leitura + um elemento que informa- simplesmente- de qual
classe para qual classe os envolvidos devem ler o nome da associao a fim de
dei6ar mais claro o modelo#
Megundo Bezerra =300G?- tamb+m + possvel informar os pap+is que as
classes possuem na associao- pois toda classe pode possuir um papel diferente
em toda associao# 5sse tipo de recurso + pouco usado- mas muito interessante
quando se trata de uma associao refle6iva- quando uma classe est associada a
ela mesma- para o mel!or entendimento do usurio# Mempre quando for difcil
representar uma determinada associao- + recomendvel representar os pap+is
das classes envolvidas e- no mnimo- nomear tal associao- pois assim mel!ora a
legibilidade do modelo =B5`5,,)- 300G?#
Figura G#G#G \ &iagrama de classes baseado no modelo 5, da figura G#H#3#
) figura G#G#G acima mostra um diagrama de classes simples baseado no
diagrama do modelo 5, da seo G#H deste trabal!o# 5ste diagrama de classes
G
possui a maioria dos elementos definidos at+ agora# )s classes da figura
apresentam as seCes- de cima para bai6o- que informam seu nome- a lista de
atributos e a lista de operaCes# )s associaCes apresentam nomes- sentidos de
leitura e multiplicidades# (ode.se perceber a presena de uma classe.associativa de
nome Disc-$urso e a e6ist"ncia da associao refle6iva de nome %r&-'e(uisito que
apresenta os distintos pap+is que a classe &isciplina possui nesta associao-
mel!orando a legibilidade do modelo e informando que uma determinada Disciplina
)iberadora + pr+.requisito de uma determinada Disciplina )iberada#
Como 2 abordado- a UM; + um padro que oferece diversos elementos e
notaCes bem definidas que modelam as caractersticas essenciais de uma
realidade# Mob este padro- o modelo de classes + uma das partes mais importantes
da modelagem '' e reflete a viso esttica do sistema a ser desenvolvido#
Megundo Bezerra =300G?- o modelo de classes + composto pelo diagrama de
classes- componente utilizado para representar a estrutura esttica modelada- e por
uma descrio te6tual associada# 5stes conceitos se mostram muito importantes
para o desenvolvimento deste trabal!o- pois Borba =300>? informa na terceira etapa
do seu modelo que e6iste uma converso conceitual direta entre o modelo
dimensional e o diagrama de classes UM;- representando o modelo esttico
dimensional segundo o paradigma ''# 5ste modelo ser aprofundado no captulo a
seguir#
G
I M'&5;' &/M5NM/'N); 5M )MB/5N85
&5 (5,M/M8SNC/) &5 'B*58'M
5ste captulo descreve a metodologia proposta por Borba =300>?-
aprofundando nas partes utilizadas para o modelo de desenvolvimento deste
trabal!o# )l+m disso- apresenta o modelo referente ao Cr+dito Mem Barreiras =CMB?-
mantido pela empresa Core MOnesis- pois o foco + a modelagem para um ambiente
de persist"ncia de ob2etos e no as reas da anlise de requisitos e gesto de
negAcio- pr+.requisitos da modelagem dimensional# &essa forma- a estrutura do
captulo inicia.se com a abordagem do modelo de Borba =300>?- apresentando
sucintamente as ferramentas utilizadas e a empresa Core MOnesis# &escreve
tamb+m o modelo dimensional do CMB e aprofunda no mapeamento deste em
diagrama de classes UM; e sua implementao em um ambiente '' integrado#
)inda so descritos alguns testes e anlises de resultados- principalmente para os
e6emplos de processo de carga criados- de uma base operacional para o ambiente
de persist"ncia ''#
(artindo da anlise entre as diversas metodologias divulgadas ao longo
dos anos para implementar o modelo dimensional na construo de um &@- Borba
=300>? visa atender a todos os requisitos analisados em seu modelo# Como citado
no captulo anterior- este modelo possui J etapas que vo desde a definio do
modelo de negAcio at+ o mapeamento do modelo dimensional para um B&''-
seguindo as notaCes da UM; e '&MB- utilizando a linguagem de definio de
ob2etos '&; =B',B)- 300>?# Neste trabal!o- a implementao foi realizada-
utilizando a linguagem orientada a ob2etos *ava- associada ao frameDorE de
persist"ncia de ob2etos dbIo#
) primeira etapa proposta por Borba =300>? consiste na definio do
modelo de negAcio- na anlise de requisitos 2unto ao cliente- a fim de contemplar as
decisCes das reas a serem atendidas pela soluo de &@ modelada# Conforme
Borba V Morales =300>?- neste momento- os detal!es do negAcio que sero base no
desenvolvimento do pro2eto so analisados e traduzidos para o ambiente
operacional adotado atrav+s de um modelo 5,- documentando a finalidade do
pro2eto- o escopo da realidade analisada e os recursos t+cnicos que sero utilizados#
G
;ogo a seguir- + realizada a gerao do modelo multidimensional- ou se2a-
o modelo de negAcio identificado# Nesta etapa so identificados os sistemas e bases
de dados operacionais- inclusive suas funcionalidades dentro deste ambiente- para
mapear o modelo dimensional# Borba =300>? enfatiza que o modelo 5, desen!ado
na etapa anterior deve ser minuciosamente analisado para que possam ser
e6tradas as dimensCes que fazem parte do negAcio- podendo indicar dimensCes
implcitas a serem modeladas# ) granularidade das entidades tamb+m merece
ateno- pois a partir desse estudo sero mapeados os atributos das dimensCes e
os fatos do negAcio a fim de definir tabelas de fatos e m+tricas de derivao# )
estrutura do modelo dimensional gerado poder ser de quaisquer tipos como- os
mais con!ecidos- Star Schema e Snowflake Schema# _ necessrio- durante a
anlise- definir uma dimenso 8empo- pois o &@ promove a equival"ncia de tempo
sob a viso do negAcio- agregando dados por um determinado tipo de perodo-
conforme a necessidade da disposio dos dados =B',B)- 300>?#
)s prA6imas etapas da metodologia abordam a representao do modelo
dimensional em diagrama de classes UM;; o mapeamento deste diagrama para um
B&''; e- finalmente- a sua implementao# ) figura I#H demonstra a ordem de
e6ecuo destas etapas e um esboo de toda a metodologia de Borba =300>?#
Figura I#H \ ,esumo da metodologia de Borba e ordem de e6ecuo das etapas#
Fonte% B',B) V M',);5M =300>?
5stas etapas so descritas nas prA6imas seCes- cada uma em seo
I
prApria- utilizando um modelo dimensional real 2 definido e mantido pela Core
MOnesis# Megue- antes disso- uma breve apresentao da empresa citada e das
ferramentas utilizadas para- al+m de fundamentar- e6emplificar a aplicao da
metodologia de Borba =300>? sobre modelos de dados reais#
I#H )s ferramentas utilizadas
(ara representar o modelo dimensional em diagrama de classes UM; foi
utilizado o softDare *ude CommunitO G#3#H- disponibilizado para doDnload no site
oficial !ttp%NN2ude#c!ange.vision#comN2ude.DebNinde6#!tml- sendo necessrio se
cadastrar gratuitamente# ) codificao das classes mapeadas nesta fase foi
realizada em linguagem de programao *ava- utilizando.se o ambiente de
desenvolvimento 5clipse- verso G#3- integrado ao frameDorE de persist"ncia de
ob2etos dbIo na verso K#I- disponveis para doDnload- respectivamente- em seus
endereos !ttp%NNDDD#eclipse#org e !ttp%NNdeveloper#dbIo#com# _ necessrio instalar
plug.ins do bdIo no 5clipse para a integrao# 5stes podem ser bai6ados no site
oficial citado do dbIo# (ara implementar o teste de e6ecuo realizado e descrito na
Wltima seo- foi utilizado o 'racle 56press H0g para criar um ambiente operacional#
56cetuando o uso do ambiente 'racle para a implementao do banco
operacional- a escol!a dos softDares utilizados ateve.se pelo fato de que estes
implementam os conceitos do paradigma '' nos nveis em que este trabal!o se
baseia- desde a anlise e mapeamento de modelos at+ a fase de implementao
para a persist"ncia de dados#
Conforme (aterson et al =300>?- o dbIo + um tipo de B&'' de cAdigo
aberto que permite aos desenvolvedores de linguagens de programao '' reduzir
consideravelmente os custos envolvidos no desenvolvimento- alcanando mel!orias
de performance superiores aos bancos de dados relacionais# Megundo seu site
oficial- o dbIo e6ecuta consultas at+ II vezes mais rpido que algumas soluCes
altamente con!ecidas no mercado- como o !ibernate- sendo que este apenas
oferece um mapeamento de aplicaCes '' para bancos de dados relacionais e no
persist"ncia direta de ob2etos- como o B&'' aqui discutido =&BI'B*5C8M- 3001?#
I
) figura I#H#H abai6o ilustra um comparativo entre as t+cnicas em bancos
de dados relacionais e o uso do dbIo para a implementao dos ob2etos modelados#
'bserva.se que e6istem persist"ncia e mapeamento diretos dos ob2etos no B&''-
facilitando a consulta a esses ob2etos- diferentemente de um MBB& relacional
associado :s t+cnicas de mapeamento ob2eto.relacional- como o !ibernate- que
implementam fisicamente os ob2etos modelados em diversas tabelas- pro2etando
maior comple6idade na manipulao dos mesmos#
Figura I#H#H \ Forma de armazenamento de ob2etos de um MBB& relacional e o dbIo#
Fonte% &BI'B*5C8M- 3001#
&essa forma- al+m da aplicao dos conceitos do paradigma ''- a
escol!a do dbIo para a implementao de um modelo dimensional tamb+m se
fundamenta pelo alto desempen!o conseguido nas consultas aos ob2etos-
principalmente por aplicaCes que trabal!am com linguagens ''#
I#3 Modelo dimensional utilizado
' modelo utilizado para a aplicao da metodologia de Borba =300>?
trata.se do modelo dimensional do servio Cr+ditos Mem Barreiras =CMB?-
disponibilizado pela operadora Livo em Minas Berais- e encontra.se implementado
no &ata Mart de Lendas# 5ste &ata Mart fornece informaCes referentes ao
gerenciamento de vendas da Livo.MB e armazena os dados das ativaCes de
contratos de celulares de planos pr+ e pAs.pagos- das vendas de produtos como
aparel!os e c!ips- das ativaCes de cartCes e o acompan!amento entre estas
vendas e suas metas# 5stes dados so disponibilizados diariamente para acesso do
usurio por meio de ferramentas ';)(#
' servio de Cr+dito sem Barreiras + uma forma de venda de recarga
I
programada da Livo.MB# ' sistema origem permite que o cliente com um celular de
plano pAs.pago agende a compra de cr+ditos pr+.pagos para outro celular
designado por ele# 's usurios do &@ acompan!am a movimentao da carteira-
adesCes e cancelamentos referentes ao servio# 56istem anlises por clientes pr+.
pagos distintos que aderiram ao CMB e tamb+m por agendamentos# /nformaCes
mais detal!adas como os nWmeros de celulares pAs e pr+.pagos- valores de cr+dito-
canal de compra e funcionrio que efetuou a venda so e6tradas diretamente da
base de 58;3 do &@- onde os dados so tratados e manipulados conforme as
demandas de negAcio#
Figura I#3#H \ Modelo dimensional CMB#
Fonte% )daptado de Core MOnesis- 3001#
' modelo dimensional CMB utilizado possui duas tabelas de fatos
conectadas a outras quatro tabelas dimensionais- conforme a figura I#3#H# 5ste
modelo dimensional agrupa tr"s modelos dimensionais representados pelas suas
tabelas de fatos )&5M)'9CMB e C)NC5;)M5N8'9CMB- que armazenam
informaCes sobre as adesCes dos clientes ao servio e os cancelamentos
realizados- respectivamente# )s outras quatro tabelas 85M('9)N'9M5M-
8/('9C'N8)8'- '(5,)&',) e )B,U()M5N8' representam- assim- a
dimenso de tempo no negAcio- com uso muito importante em ambientes &@ e
consultas analticas ';)(; por qual tipo de contato o cliente solicitou sua adeso ou
cancelamento do servio CMB; a qual operadora o cliente solicitante ou beneficiado
pertence; e os agrupamentos de clientes por alguma caracterstica- servio ou
planos em comum mapeados na base de dados# 's atributos.c!ave esto
I
representados por um desen!o de uma c!ave no modelo dimensional da figura#
Como descrito na seo referente : fundamentao dos modelos de
dados- mais especificamente o modelo dimensional- os atributos.c!ave das tabelas
de fatos so compostos por refer"ncias ou *oreign +eys das c!aves primrias das
tabelas dimensionais# Puando necessrio- como neste modelo- outros atributos
relevantes de um fato de negAcio podem tamb+m fazer parte do grupo de atributos.
c!ave das tabelas fato a fim de mel!orar a qualidade de resposta nas consultas
analticas# Conforme Mac!ado V )breu =300I?- os relacionamentos entre as tabelas
esto representados logicamente por estas *oreign +eys e- como todo modelo que
possui configurao baseada no 5,- para cada valor at]mico presente nestes
campos c!ave das tabelas fatos e6iste correspondente de mesmo valor no atributo.
c!ave daquela dimenso- permitindo assim buscar as devidas associaCes no
con2unto de resposta solicitado pelo usurio#
Mob uma anlise mais geral e mel!or entendimento- o modelo
dimensional representado acima agrupa as semTnticas de negAcio referentes :s
informaCes de adesCes e cancelamentos do CMB solicitados por um cliente de uma
determinada operadora atrav+s de um tipo de contato para um determinado perodo
de tempo# ) tabela )&5M)'9CMB reflete os fatos referentes :s quantidades de
adesCes por agendamento e por solicitaCes avulsas pelos clientes# * da tabela de
fatos C)NC5;)M5N8'9CMB e6trai.se as quantidades de cancelamentos de
servios agendados e de solicitaCes avulsas#
I#G Mapeamento do modelo dimensional em UM;
Com o modelo dimensional definido por meio de um esquema estrutural
como- por e6emplo- o Star Schema ou Snowflake Schema- basta classificar as
entidades e suas !ierarquias conforme as regras do negAcio a fim de mape.las sob
a perspectiva orientada a ob2etos da UM;- permitindo assim que os dados
representados se2am posteriormente agregados =B',B)- 300>?# &essa forma- como
visto nas definiCes acerca de classes- as tabelas dimensionais so modeladas
como classes dimensionais no diagrama correspondente da UM; e as tabelas de
I
fatos so representadas por classes de fatos# )l+m de mapear as classes e seus
atributos para representar as tabelas do modelo- faz.se necessrio tamb+m traar os
relacionamentos e as multiplicidades entre as classes fato e suas dimensCes#
No mapeamento das tabelas do modelo dimensional em classes- al+m de
seguir as notaCes de modelagem da UM;- 'MB e '&MB- deve.se aplicar os
padrCes usados no &@ pela organizao# (ara au6iliar as equipes envolvidas na
administrao e desenvolvimento do &@- + interessante que a padronizao
utilizada para identificar- e6plicitamente- as tabelas de fatos e as dimensCes nas
consultas ';)( e em rotinas 58; se2a modelada no diagrama de classes- refletindo-
conseq^entemente- sobre a codificao da mesma# Megundo Bezerra =300G?- o
padro UM; propCe que os nomes de classes e relacionamentos comecem pela
primeira letra maiWscula e o restante das letras em minWsculo para cada palavra que
compCe o identificador- sem nen!um espao ou caractere separador entre elas-
inclusive o padro da organizao que ser concatenado ao nome# Momente as
siglas que permanecem inalteradas com todos os caracteres em maiWsculo# 's
atributos e m+todos da classe seguem este padro com e6ceo da primeira palavra
que ter todos os caracteres em minWsculo#
Conforme Borba =300>?- uma das formas mais apropriadas para representar
os relacionamentos entre as classes de fatos e as classes das dimensCes + por
meio de agregaCes compartil!adas- pois- pela semTntica dos conceitos de B/ em
modelos dimensionais- a tabela fato agrega as dimensCes# ) agregao representa
que um fato de negAcio + constitudo de diversas partes- as dimensCes- ou se2a- as
dimensCes do negAcio fazem parte de um fato de negAcio# Momente para
e6emplificar- pois em ambientes &@ no e6iste formalmente e6cluso e alterao de
dados- a e6cluso de um fato no implica que as dimensCes que o constituam
devam ser e6cludas- demonstrando que as informaCes referentes :s dimensCes
so independentes dos fatos ocorridos#
)pAs incluir as agregaCes- as multiplicidades devem ser mapeadas para
detal!ar mais o diagrama# Nos relacionamentos entre as dimensCes e a fato- a
e6tremidade referente :s dimensCes possui multiplicidade 0##H- pois estas
armazenam os dados em mais bai6o nvel; e a e6tremidade 2unto : fato possui
multiplicidade H##a- pois as dimensCes esto em diversas instTncias de fatos
=B',B)- 300>?# (ara Borba =300>?- o mapeamento das multiplicidades + muito
I
importante quando o modelo dimensional tratado possui a estrutura de Floco de
Neve- pois a cardinalidade entre dimensCes deve ser devidamente representada-
modelada pelo diagrama de estrutura composta# No caso deste trabal!o- pelo fato
do modelo dimensional CMB apresentar.se por um esquema 5strela- este tipo
especial de diagrama no ser utilizado#
(ara aplicar esta etapa da metodologia- os mapeamentos acima sero
descritos logo a seguir# 8endo como base o modelo dimensional CMB e os padrCes
considerados- foram modeladas as classes das dimensCes 8empo)noMes-
8ipoContato- 'peradora e )grupamento que correspondem- respectivamente- :s
tabelas dimensionais 85M('9)N'9M5M- 8/('9C'N8)8'- '(5,)&',) e
)B,U()M5N8'# )s tabelas de fatos )&5M)'9CMB e C)NC5;)M5N8'9CMB
moldaram as correspondentes classes fato )desaoCMB e CancelamentoCMB# (ode.
se perceber no modelo dimensional utilizado que e6istem algumas notaCes de
negAcio como os termos &M9L5N&)- (,'&- 8B&@&M e 8B&@&&# 5stes padrCes-
utilizados pela Core MOnesis- possuem os seguintes significados%
&M9L5N&) e (,'& so owners implementados para organizar
esquemas proprietrios sobre um grupo de tabelas no banco de dados
que correspondem aos ambientes do &ata Mart de Lendas e as tabelas
de produo em 58;3#
8B&@&M e 8B&@&&- abreviaCes de 8abela do &@ para &ados
Mumarizados e 8abela do &@ para &ados de &imenso- so apenas
nomenclaturas includas nos nomes das tabelas para identificar- neste
caso- as tabelas fatos sumarizadas e as dimensCes- respectivamente#
Na construo do diagrama- para implementar o Wltimo tipo de notao
acima- as abreviaCes CM e C& foram concatenadas aos nomes das classes para
identificar- respectivamente- as classes de fatos sumarizadas e as dimensCes na
manipulao dos dados# )s classes de fatos do diagrama dimensional- agora
nomeadas de CM)desaoCMB e CMCancelamentoCMB- foram generalizadas para
uma classe CMCMB- pois elas apresentam atributos em comum- al+m de possurem
dados referentes ao mesmo tipo de servio- no caso o Cr+dito Mem Barreiras#
Conforme Cattell et al =3000?- todo ob2eto em uma base de dados possui um
identificador Wnico '/& e se mostra interessante que este se2a modelado nos
diagramas de dados# Borba =300>? confirma que os identificadores devem ser
I
representados de forma e6plcita- mas somente para classes de dimenso-
colocando.se a restrio b'/&c no atributo definido para cada classe# * os
descritores so os atributos representativos de cada classe dimensional e devem
ser- preferencialmente- te6tuais por serem campos de refer"ncia para o usurio-
modelados com a restrio b&c no diagrama de classes UM; =B',B)- 300>?# Um
padro sugerido neste trabal!o para nomear os '/&s + concatenar o termo '/& e o
nome da classe correspondente sem carregar a sigla referente ao padro C& para
recon!ecimento de dimensCes# Conforme as anlises e padrCes descritos- o
diagrama de classes CMB + apresentado na figura I#G#H#
Figura I#G#H \ &iagrama de classes CMB#
(ercebe.se na figura acima que as classes fato CM)desaoCMB e
CMCancelamentoCMB esto conectadas diretamente :s classes de dimensCes
C&8empo)noMes- C&8ipoContato- C&'peradora e C&)grupamento- assim
representando os mesmos dois modelos dimensionais referentes :s adesCes e
cancelamentos do servio CMB# 's descritores escol!idos no diagrama so-
2ustamente- os atributos mais significativos e que possuem o tipo String modelado
por serem atributos te6tuais#
)nalisando ,umbaug!- *acobson V Booc! =300I?- classe pode possuir
m+todos que retornam e alteram diretamente os dados de seus atributos# 5stes
I
m+todos so representados pelas operaCes gets e sets- mas- por padro- no +
necessrio mape.los e6plicitamente no diagrama# Foram representadas somente
as operaCes add*ato nas dimensCes e toString para as classes fato que
correspondem- respectivamente- aos m+todos para adicionar os fatos que cada
dimenso participa e a descrio dos valores internos dos fatos ocorridos- m+todos
dos quais sero implementados na prA6ima etapa da metodologia# ) classe CMCMB
criada para generalizar as classes fato foi modelada como classe abstrata- pois
mesmo contendo atributos e operaCes prAprios- no ser instanciada para
armazenar dados# (ara implementar o polimorfismo no diagrama- a operao
toString definida nas classes de fatos foi mapeada tamb+m para esta classe
CMCMB- pois mesmo que o diagrama de classes se2a muito usado no nvel
conceitual da modelagem de dados- pode.se- conforme necessrio- adicionar
detal!es de implementao =B5`5,,)- 300G?#
I#I /mplementao do diagrama UM; no B&''
Nesta seo est descrito o processo de implementao da etapa da
metodologia de Borba =300>? que visa codificar o script para um determinado B&''
a partir do diagrama de classes obtido anteriormente# (ara este trabal!o- !ouve
adaptaCes para a gerao do cAdigo referente : persist"ncia de ob2etos que- na
verdade- utiliza uma linguagem de programao '' para desenvolver diretamente
as classes UM; modeladas# Borba V Morales =300>? comentam que o padro
'&MB oferece a linguagem 'P; para este tipo de implementao- mas al+m de
no estar difundida no mercado- ela no oferece interoperabilidade e trata.se de um
padro de codificao que ser depois implementado- independente de linguagem
de programao# /nteroperabilidade- segundo Lieira =300H?- + a capacidade de uma
determinada aplicao em acessar diversos sistemas diferentes# * neste trabal!o a
abordagem utilizada delega aos desenvolvedores de linguagens de programao
''- neste caso a linguagem *ava- a codificao direta das classes e
relacionamentos pelo padro UM;# *ava + uma linguagem altamente difundida no
desenvolvimento de softDares e oferece portabilidade atrav+s da mquina virtual
I
*ava =MUN M/C,'MdM85MM- 3004?#
Conforme Cattell et al =3000?- o modelo de ob2etos propCe pelo padro
'&MB que o estado de um ob2eto se2a representado por seus atributos e
relacionamentos# 5ste tipo de representao + muito importante- pois as consultas
em B&'' so feitas de acordo com os estados fornecidos- ou se2a- de forma mais
especfica- o frameDorE dbIo utilizado busca os ob2etos que possuem um
determinado estado requerido na consulta#
Na formalizao do modelo de dados como tamb+m abordado no diagrama
de classes UM;- foi definido que uma classe tamb+m possui operaCes que devem
ser representadas e- posteriormente- implementadas em m+todos presentes no
escopo desta classe =,UMB)UBH- *)C'BM'N V B''CH- 300I?# Como citado
anteriormente- al+m das operaCes definidas e6plicitamente no diagrama- os
m+todos implcitos tamb+m devem ser codificados- com e6ceo das operaCes
sets que no devem ser implementadas- pois- relembrando novamente- no + usual
que algum dado e6istente nas dimensCes e nas classes de fatos se2a deletado ou
alterado# Momente para ilustrar- as classes na linguagem *ava so definidas pela
palavra reservada class- geralmente acompan!adas pelo termo public para que as
mesmas se2am acessveis nas consultas realizadas pelos usurios# Na figura I#I#H
abai6o a classe dimensional C&)grupamento est definida em *ava- conforme os
mesmos atributos definidos no diagrama de classes CMB e as operaCes
implementadas pelos m+todos add*ato e gets destes atributos#
public class CDAgrupamento {
private int codAgrupamento;
private int codTipoAgrupamento;
private String dscAgrupamento;
private ArrayList<CSCSB> listaFatos;
public int getCodAgrupamento() {
return codAgrupamento;

public int getCodTipoAgrupamento() {
return codTipoAgrupamento;

public String getDscAgrupamento() {
return dscAgrupamento;

public void addFato(CSCSB credito) {
this!listaFatos!add(credito);

Figura I#I#H \ CAdigo parcial da classe de dimenso C&)grupamento em *ava#


I
Nota.se na figura acima um tipo especial de atributo- modelado como uma
lista# Na verdade- este atributo representa o relacionamento de agregao e6istente
entre a classe C&)grupamento e as classes de fatos do diagrama# Conforme
,umbaug!- *acobson V Booc! =300I?- os relacionamentos so representados em
atributos ou classes de associao pelo padro ''# Como a prApria multiplicidade
indica no diagrama- a agregao foi implementada por atributos do tipo lista de fatos
nas classes de dimenso- como no e6emplo acima; e por atributos monovalorados
nas classes fato- contendo cada um os tipos das dimensCes#
,efletindo agora sobre alguns detal!es de implementao- toda classe deve
possuir um m+todo construtor para inicializar todos os seus atributos quando a
mesma + instanciada- ou se2a- quando o ob2eto correspondente + criado# 5ste
m+todo construtor recebe os valores at]micos referentes a todos os seus atributos
para as inicializaCes- e6ceto para a lista de fatos que deve ser apenas criada no
construtor- pois ter elementos adicionados nela somente quando ocorrer um fato do
qual a referida dimenso participe# Mesmo que no se2a instanciada- pois no
armazenar diretamente os dados- a classe abstrata CMCMB possui um m+todo com
estrutura semel!ante : de um construtor- mas este serve somente para inicializar os
atributos que esto no mais alto nvel da generalizao e que sero !erdados pelas
classes de fatos instanciadas#
Como as classes dimensionais possuem o atributo especial para armazenar
a lista de fatos- elas carregam tamb+m a declarao de uma biblioteca prApria da
linguagem *ava para permitir a implementao deste tipo de lista# Conforme Bezerra
=300G?- para que o conceito estrutural de ob2eto se2a implementado- os atributos das
classes devem possuir visibilidade privada e os m+todos- inclusive os utilizados para
acessarem esses atributos- devem possuir visibilidade pWblica- modeladas no *ava
pelas palavras reservadas private e public- respectivamente# ' cAdigo completo
referente : implementao de todas as classes do diagrama dimensional CMB
definido na etapa anterior encontra.se no )(SN&/C5 ) deste documento#
'bserva.se no cAdigo *ava desenvolvido que os identificadores e
descritores no esto assim e6plcitos- sendo que estes primeiros nem sequer
encontram.se implementados# Megundo Cattell et al =3000?- os '/&s so
transparentes para os usurios e os desenvolvedores- ou se2a- o '/& deve ser
J
representado nos diagramas- mas no precisa ser codificado e6plicitamente% o
prAprio sistema de gerenciamento de ob2etos do ambiente '' utilizado para persistir
os ob2etos gera- automaticamente- um '/& associado ao ob2eto no momento em que
este + instanciado# /sto se aplica tamb+m : restrio de descritores das classes de
dimensCes- pois mesmo que se2am atributos reais escol!idos pela sua
representatividade- no se faz necessrio codificar esta restrio# &e uma forma
geral- as restriCes sobre atributos na UM; so adornos que facilitam o
entendimento do modelo pelos usurios e no refletem- necessariamente- um
detal!e real de desenvolvimento =B5`5,,)- 300G?#
* nas classes de fatos os atributos que correspondem :s m+tricas foram
implementados como variveis estticas- usando.se a palavra reservada static# 8oda
vez que um ob2eto de fato for criado- indicando que um novo tipo de adeso ou
cancelamento foi realizado- a m+trica + incrementada automaticamente no m+todo
construtor- conforme o tipo de servio ocorrido# Como so atributos estticos dentro
das classes- pelo prAprio conceito de varivel esttica =MUN M/C,'MdM85M- 3004?-
estas m+tricas so con!ecidas por todos os ob2etos instanciados destas classes- ou
se2a- os valores pertencem mais : estrutura da classe do que do ob2eto criado#
&essa forma- os valores deste tipo de atributo so visveis para todos os ob2etos
que- como 2 discutido em seCes anteriores- respeitam a mesma estrutura da
classe da qual foram instanciados# 5ste tipo de implementao facilita em
posteriores consultas ';)( que no sobrecarregariam o banco com clculos de
campos derivados para obter as sumarizaCes- pois basta consultar o campo pelo
m+todo get correspondente para obter esse somatArio armazenado no B&''#
I#J /mplementao e 56ecuo de Consultas
&epois da codificao das classes sugere.se realizar a carga do novo banco
de dados '' criado ou parte dele com os dados e6istentes no ambiente
operacional# _ neste momento que os recursos do B&'' escol!ido so
verdadeiramente utilizados- pois a definio das classes pode ser feita por qualquer
linguagem de programao em ambientes de desenvolvimento diversos- inclusive
J
por scripts para modelar as classes- mas + no processo de carga e realizao de
consultas que o B&'' tem seu desempen!o e funcionalidades avaliadas#
&e acordo com (aterson =300>?- o bdIo trabal!a com tr"s formatos de
consultas% o PB5- as Native Pueries e o M'&)# ' PB5 =PuerO.BO.56ample? + o
mecanismo mais bsico oferecido pelo dbIo e fornece : consulta um ob2eto 2 criado
que possui o mesmo estado do ob2eto dese2ado- ou se2a- o ob2eto e6terno + criado
apenas como e6emplo para a consulta retornar o ob2eto armazenado que possui os
mesmos valores de alguns ou todos os atributos fornecidos# )s Native Pueries so
muito utilizadas para consultas mais comple6as e so escritas com as e6pressCes
da linguagem de programao '' utilizada- ultimamente Ce ou *ava# Neste tipo de
formato- informa.se ao banco um trec!o de cAdigo da linguagem utilizada com toda
a lAgica requerida pela consulta atrav+s de um ob2eto do tipo ,uery- prAprio de uma
biblioteca do dbIo# * o formato M'&) =Mimple 'b2ect &ata )ccess? + uma )(/ que
oferece diversos tipos de ob2etos e m+todos para realizar as consultas sob uma
perspectiva mais ''# &essa forma- a partir de instancias de ob2etos prAprios
suportados pelo bdIo- m+todos M'&) so combinados para realizar consultas que
podem retornar uma lista de ob2etos- o -bjectSet =()85,M'N- 300>?! Mobre esta
lista aplicam.se polimorfismo- encapsulamento e diversos mecanismos da '' para
processar as informaCes obtidas# (ara realizar as cargas e consultas das classes
criadas nesta etapa- foi utilizado o formato M'&) para manipular os dados e o
cAdigo correspondente encontra.se implementado no )(SN&/C5 B#
' novo B&'' implementado a partir do diagrama CMB + um ob2eto do tipo
-bject$ontainer representado pela varivel dwdsv no cAdigo que gera um arquivo
de e6tenso d)( atrav+s do m+todo open*ile do bdIo# (ara inserir os dados no
banco- basta invocar o m+todo store deste ob2eto. passando como parTmetro os
ob2etos a serem armazenados e- depois de utilizado- o m+todo close + c!amado
para encerrar a sesso com o -bject$ontainer# 5m ambientes &@- a carga de
dados + con!ecida como 58;# &e acordo com Uimball V ,oss =3003?- o processo de
58; pode ser dividido em estgios como a carga e filtragem de dados diretamente
da base operacional para a rea de staging- manipulao destes para mel!oria de
qualidade e a efetiva gravao no &ata Mart correspondente# 5stes estgios so
comumente con!ecidos no mercado por processos 58;H- 58;3 e 58;G#
' cAdigo implementado para os testes de carga e consulta possui dois
J
m+todos% processoStaging%rod- que agrupa os dados de staging e 58;3 inseridos; e
processoD/0endasAdesao- que representa os dados de 58;G do modelo
dimensional )&5M)'9CMB# Como este trabal!o baseia.se em um modelo
dimensional 2 e6istente- ou se2a- quando a anlise de negAcio 2unto ao cliente 2 foi
feita e o banco operacional no + completamente con!ecido- percebe.se no cAdigo
que os valores para os primeiros estgios de carga das classes dimensionais foram
includos manualmente nas classes de dimensCes# 5sta forma de carga + con!ecida
no mercado pelo termo Carga Fria e foi escol!ida no teste de e6ecuo pelo fato de
no ser ob2eto deste trabal!o detal!ar os processos de carga# Conforme o site da
Mun =MUN M/C,'MdM85MM- 3004?- para aplicaCes reais- estas cargas so
facilmente implementadas via *&BC- con2unto de m+todos muito utilizados
comercialmente oferecidos pela tecnologia *ava para acessar bancos de dados
transacionais e mapear seus dados em ob2etos para- a partir disso- grav.los no
-bject$ontainer do bdIo criado#
* para o m+todo processoD/0endasAdesao- al+m das consultas em
M'&) via dbIo- foram utilizados os m+todos da biblioteca *&BC com cone6o direta
ao 'racle 56press H0g# Mesmo no con!ecendo o ambiente operacional a priori-
somente para dar mais consist"ncia : fase de e6ecuo- um diagrama 5, mais
simples foi modelado para simular uma consulta aos dados operacionais- combin.
los aos dados das dimensCes mapeadas e- dessa forma- gerar os ob2etos da classe
de fatos CM)desaoCMB# &escrevendo de forma sucinta- pois no + o foco deste
trabal!o modelar e detal!ar os ambientes relacionais dos sistemas de origem- o
modelo 5, apresenta as tabelas C;/5N85- (;)N'- 8/('9(;)N'- M5,L/C'-
C;/5N859(;)N' e C;/5N859M5,L/C' que representam simplesmente cadastros
dos clientes da base de dados da organizao- o cadastro dos planos
disponibilizados por ela- os tipos de planos- os servios oferecidos e as tabelas
resultantes de relacionamentos n%m entre as entidades C;/5N85- M5,L/C' e
(;)N'- pois um cliente pode ter vrios servios e planos# Cada servio e cada
plano podem tamb+m estar associados a diversos clientes#
) inteno de esboar um modelo 5, de um suposto ambiente operacional
para o modelo dimensional CMB utilizado foi a de promover um teste de e6ecuo
um pouco mais prA6imo da realidade a fim de abstrair- logicamente- sobre o uso da
metodologia de Borba =300>? em pro2etos reais de construo de &@ e controle de
J
carga# Na figura I#J#H a seguir possui um esboo do referido diagrama 5, modelado
com alguns dos diversos elementos que a modelagem 5, oferece discutidos nas
primeiras seCes# Maiores detal!es a cerca do desenvolvimento do modelo em
diagrama 5,- incluindo os atributos das entidades e os scripts referentes : insero
de dados nas tabelas- encontram.se implementados em linguagem MP; no
)(SN&/C5 C deste documento#
Figura I#J#H \ 5sboo do modelo 5, da base operacional de teste#
) primeira consulta observada no m+todo processoD/0endasAdesao do
)(SN&/C5 B acessa o banco de dados operacional criado para o teste de
e6ecuo- enviando via *&BC um trec!o MP; que busca determinados valores a
serem copiados para o modelo dimensional CMB implementado# ) consulta deste
trec!o MP;- como descrita no cAdigo- refere.se aos dados das ativaCes no servio
Cr+dito Mem Barreiras =restricaoMervico f H? por todos os clientes de planos pAs.
pagos da Livo.MB =restricao'peradora f H0? que possuem cAdigo &&& igual a 0GH
=restricao&&& f X0GH[? no m"s de dezembro de 3001 =restricao8empo f 3001?# 's
dados retornados referem.se aos valores de cr+ditos ativados- a forma de
pagamento destes cr+ditos- os prefi6os de &&& dos beneficiados- os parTmetros de
tempo- qual a forma de contato da solicitao- o tipo de plano a ser utilizado para o
agrupamento de clientes e o tipo de solicitao utilizado para adeso ao CMB# 5stes
valores retornados como as restriCes aplicadas na consulta ao banco operacional
J
participam das consultas implementadas em M'&) que retornam listas -bjectSet
dos tipos C&)grupamento- C&'peradora- C&8ipoContato e C&8empo)noMes#
'ptou.se por capturar somente o primeiro- e no caso Wnico- ob2eto destas listas que
so combinados para formarem instTncias de ob2etos de fatos CM)desaoCMB# Cada
instTncia CM)desaoCMB + armazenada no banco '' e- logo em seguida- +
adicionada :s listas de fatos das dimensCes envolvidas na consulta- atualizando.as
logo em seguida no -bject$ontainer# Conforme (aterson =300>?- no caso em que as
listas retornem mais de um ob2eto- pode.se utilizar os m+todos has1et dos
-bjectSets para verificar a e6ist"ncia de ob2etos que faltam ser processados#
(ode.se perceber que os ob2etos referentes a essas dimensCes so
buscados do banco- alterados e novamente gravados# Como 2 discutido- + papel do
B&'' utilizado associar um novo '/& para cada novo ob2eto armazenado- mas o
dbIo gerencia esse tipo de situao automaticamente- verificando se o ob2eto a ser
armazenado pelo m+todo store + resultante de algum processamento sobre algum
ob2eto consultado do mesmo tipo# Caso se2a- ele somente atualiza o ob2eto
consultado- seno um novo ob2eto + armazenado =()85,M'N- 300>?#
(or fim- para ilustrar a codificao do teste- realizou.se um busca no banco
de dados dwdsv de todas as ocorr"ncias de ob2etos CM)desaoCMB armazenados-
apresentando como resultado de e6ecuo os atributos descritores das dimensCes
participantes e as m+tricas da prApria classe de fatos atrav+s do m+todo toString-
conforme mostrado na figura I#J#3 abai6o#
CodAno"es#e$erencia% &''()&
DscTipoContato% AT*+D,"*+T- *L*T#-+,C-
+om-peradora% .,.-
DscAgrupamento% C-#/-#AT,.-
0tdAdesaoAgendamento% )
0tdAdesaoCliente% )
.lrCredito% 12!'
,ndAti3Cartao% CA#TA- .,SA
CodDDDAcesso/re% '1&
CodAno"es#e$erencia% &''()&
DscTipoContato% L-4A /#-/#,A
+om-peradora% .,.-
DscAgrupamento% .A#*4-
0tdAdesaoAgendamento% )
0tdAdesaoCliente% )
.lrCredito% &&!'
,ndAti3Cartao% A .,STA
CodDDDAcesso/re% '11
Figura I#J#3 \ Con2unto de resposta gerado no teste de e6ecuo#
J
/ncluindo a realizao desta busca como todo o processamento anterior
discutido- o dbIo demonstrou bom desempen!o de e6ecuo- semel!ante aos
custos de implementao e testes das aplicaCes '' pelo fato de basear suas
consultas no prAprio frameDorE oferecido pela linguagem '' !ospedeira# Conforme
as informaCes oficiais do dbIo =&BI'B*5C8M- 3001?- o uso deste banco de
ob2etos permite facilmente o armazenamento de estruturas altamente comple6as de
dados- atingindo Atimo desempen!o de performance em relao aos bancos de
dados ob2eto.relacionais e6istentes no mercado% o dbIo pode ser e6ecutado at+ II
vezes mais rpido que o MOMP; com Hibernate- pois economiza cerca de 40g do
custo de desenvolvimento da camada de persist"ncia e agiliza a comercializao em
um perodo de tempo at+ H0g menor- reduzindo o esforo da equipe de
administrao de banco de dados#
J
J C'NC;UMR'
Neste trabal!o- foram descritas algumas etapas da metodologia proposta
por Borba em 300> para aplicao de modelos dimensionais na UM; e o
desenvolvimento destes em um ambiente orientado a ob2etos- utilizando a
persist"ncia de dados# Focando.se no processo de modelagem de dados- pois as
etapas anteriores :s aplicadas centralizam.se na anlise de requisitos de negAcio-
um modelo dimensional real foi escol!ido para o mapeamento de seus elementos
em um diagrama de classes da UM; e implementao em uma linguagem de
programao '' integrada a um banco de ob2etos totalmente compatvel com a
plataforma utilizada# ) utilizao das t+cnicas formuladas pela metodologia
proporcionou bons resultados que refletiram alto desempen!o e bai6o custo de
desenvolvimento frente :s tecnologias utilizadas atualmente para bancos de dados-
incluindo maior uso da abstrao 2unto ao cliente e mel!oria da semTntica de
negAcio promovida pela unio dos ideais da UM; e dos conceitos de B/#
56istem !o2e no mercado diversas soluCes que convergem seus
esforos sobre a tecnologia ob2eto.relacional a qual no suporta integralmente os
conceitos da ''# &ependendo do negAcio modelado- estes conceitos devem ser
aplicados para apresentar aos envolvidos uma estrutura de armazenamento e
processamento mais prA6ima da semTntica dese2ada# 5sses conceitos- quando
necessrios- so modelados de acordo com a abordagem relacional e devem ser
controlados no nvel de interface com o usurio- e6igindo retrabal!o no ambiente de
produo com alto esforo de mapeamento dos ob2etos na aplicao para as
entidades do modelo relacional# Mesmo que- em um primeiro momento- a tecnologia
ob2eto.relacional se2a utilizada para carregar os dados do ambiente operacional-
supostamente relacional- como foi o caso do teste de e6ecuo implementado neste
trabal!o- as prA6imas manipulaCes dos dados no &@ seriam somente sobre o
B&'' modelado# Puando utilizado um modelo '' visando a sua implementao
em ambientes e bancos de dados- as caractersticas e conceitos oferecidos pelo
paradigma '' so preservados e aplicados de forma direta entre o banco e as
aplicaCes- incluindo as cargas de dados ocorridas dentro do &@ e as consultas
';)( realizadas pelos usurios nos sistemas gerenciais#
J
Mob uma viso analtica- + perceptvel que a metodologia discutida
abrange todas as etapas usuais para um processo de desenvolvimento de &@
descritas por Uimball muito utilizadas atualmente- mas seu principal destaque + a
fundamentao no paradigma da ''# Como a programao '' est cada vez mais
presente no desenvolvimento de softDares- recentemente alcanando at+ as
linguagens do ambiente web- e nen!uma organizao sobrevive sem a implantao
e ger"ncia de um banco de dados- + notvel a compatibilidade da abordagem ''
para a modelagem de bancos de ob2etos#
)inda sobre esta discusso- mas agora com uma viso mais prtica-
estas mesmas organizaCes- com o rpido crescimento do seu volume de dados-
v"m implantando soluCes de B/ buscando por diferencial competitivo# &essa forma-
pela dinTmica do mercado- + interessante que as empresas possuam uma
metodologia bem definida e gil para a implantao de soluCes inteligentes no
gerenciamento de dados do ambiente de &@ modelado# ) metodologia discutida
neste trabal!o- como as adaptaCes realizadas- pro2eta um Wnico processo de
conceituao- definio e implementao- utilizando uma Wnica abordagem e
promovendo bai6os custos de desenvolvimento e administrao com ferramentas
muito difundidas no mercado# ) partir dos conceitos abordados e a estrutura gerada
para a realizao do teste de desenvolvimento =)(5N&/C5 B? realizado com o
modelo dimensional CMB mantido pela Core MOnesis- a modelagem para B&''
apresenta.se como uma opo vivel para a modelagem dimensional- permitindo o
tratamento de ob2etos comple6os- aumento da reusabilidade de cAdigo e
desempen!o compatvel com os modelos relacionais#
Conforme as anlises acima- este trabal!o possui como contribuiCes a
descrio do processo de implementao de modelos dimensionais relacionando os
conceitos do paradigma '' sobre seus elementos; a mel!oria da representatividade
da semTntica de negAcio conforme a viso do cliente; a aplicao do processo de
codificao do ambiente com a linguagem de programao '' *ava; e detal!a o
funcionamento dos principais m+todos e mecanismos do frameDorE de persist"ncia
de ob2etos dbIo- mostrando.se um banco muito promissor como relatado na reviso
de literatura sobre as e6peri"ncias reais de seu uso em grandes empresas#
(ara trabal!os futuros- seriam interessantes pesquisas para o
aperfeioamento das interfaces de gerenciamento de dados em B&''- a
J
implementao de sistemas para gerar automaticamente o diagrama de classes e o
cAdigo da linguagem '' escol!ida a partir de um modelo dimensional dado e-
principalmente- o desenvolvimento de aplicaCes ';)( e 58; segundo o paradigma
'' com total suporte para o dbIo# &essa forma- como os mercados de e.commerce
e de B/ encontram.se em e6panso- sugere.se tamb+m a adaptao do frameDorE
dbIo para as linguagens de programao '' da Deb e a aplicao das etapas da
metodologia descritas neste trabal!o para a implementao de ambientes &@ ou
&ata Marts sobre os assuntos de negAcio modelados para o mundo virtual#
5m suma- este trabal!o apresentou etapas de uma metodologia para a
implantao de ambientes de &@ quando os modelos dimensionais- uma vez
modelados- so implementados seguindo definiCes do paradigma ''# 5sta fase +
realizada em sistemas que mel!oram a representao da semTntica do negAcio pela
UM; e permitem seu desenvolvimento de forma gil com a utilizao de soluCes de
programao comercialmente difundidas# ' dbIo surge como uma alternativa de
integrao a estes sistemas para a implementao e gerenciamento de dados em
ob2etos persistentes# ) representao do modelo dimensional atrav+s do diagrama
de classes fornece um ambiente natural de modelagem ''- para posterior
implementao conforme os padrCes de desenvolvimento vigentes#
J
,5F5,SNC/)M
B),B/5,/- Carlos# .+I $ +usiness Intelligence / odelagem 0 Tecnologia1# ,io
de *aneiro =,*?% )6cel BooEs- 300># I3I p# /MBN 1JKG3GHI1G#
B5`5,,)- 5duardo# X"rinc2pios de (n3lise e "rojeto de Sistemas com U'[#
,io de *aneiro =,*?% 5lsevier% Campus- 300K# 3h ed# G>4 p# /MBN 1JGJ3H>4>0#
B',B)- Mueli de Ftima (oppi# Xetodologia para implantao de modelos
dimensionais em banco de dados orientado a objetos[# FlorianApolis =MC?- 300>#
331p# 8este =&outorado em 5ngen!aria de (roduo? . Universidade Federal de
Manta Catarina . UFMC# &isponvel em% !ttp%NNDDD#tede#ufsc#brNtesesN(5(MJ034#pdf
. )cesso em 2aneiro de 3004#
B',B)- Mueli de Ftima (oppi; M',);5M- )ran BeO 8c!olaEian# X(plicao de
+anco de Dados !rientado a !bjetos na odelagem ultidimensional[#
FlorianApolis =MC?- 300># 77/ MimpAsio Brasileiro de Banco de &ados . MBB&#
&isponvel em% !ttp%NNDDD#lbd#dcc#ufmg#br%1010NcolecoesNsbbdN300>N0H0#pdf .
)cesso em 2aneiro de 3004#
B'MC),/';/- Clodis; B5`5,,)- )nderson; B5N5&/C8'- Marcos de; &5;M/,'-
Billiard# XUma re4lexo sobre +anco de Dados !rientados a !bjetos[# (onta
Brossa =(,?- 300># /L Congresso de 8ecnologias para Besto de &ados e
Metadados do Cone Mul . C'NB5&# Universidade 5stadual de (onta Brossa#
&isponvel em% !ttp%NNconged#deinfo#uepg#brNartigoI#pdf . )cesso em 2aneiro de 3004#
C)885;;- ,icE# B# B#; B),,d- &ouglas U#; B5,;5,- MarE; 5)M8M)N- *eff;
*',&)N- &avid; ,UMM5;;- Craig; MCH)&'@- 'laf; M8)N/5N&)- 8orsten; L5;5`-
Fernando# XT%e !bject Data Standard& !D, 567[# Man Francisco =UM)?- 3000#
Brupo de Besto de 'b2etos . 'b2ects Management Broup . 'MB# &isponvel em%
!ttp%NNDDD#omg#orgNdocsNomgN0I.0K.03#pdf . )cesso em 2aneiro de 3004#
>
CH5N- (eter (in.M!an# XT%e Entit8$Relations%ip odel $ To9ard a Uni4ied :ie9
o4 Data[# )CM 8ransactions on &atabase MOstems- pginas 4 a G># &isponvel em%
!ttp%NNbit#csc#lsu#eduNic!enNc!en#!tml . )cesso em 2aneiro de 3004#
Core MOnesis# &isponvel em% !ttp%NNDDD#coresOnesis#com#br . )cesso em dezembro
de 3001#
C'UB'- (aulo# Xodelagem conceitual e projeto de banco de dados[# ,io de
*aneiro =,*?% Campus- H44K# Hh ed# 34> p# /MBN 1JGJ30HJ10#
&BI'B*5C8M# Xdb;o $ +anco de objetos de c<digo aberto[# &isponvel em%
!ttps%NNDDD#dbIo#comNportuguesNdbIog30(roductg30/nformation
g30LJ#0=(ortuguese?#pdf . )cesso em dezembro de 3001#
5;M)M,/- ,amez; N)L)8H5- M!am# XSistemas de banco de dados&
4undamentos e aplica=es[# ,io de *aneiro =,*?% ;8C- 3003# Gh ed# 1GK p# /MBN
1J3H>HGHG7#
F,5/8)M *jN/',- 'lival de Busmo; ()CH5C'- ,oberto C# M#; B),B'M)- &aniel
M#; 8'&5MC'- *os+ ;# X(bordando o Uso da !rientao a !bjetos em um
Sistema de Data >are%ouse[# /ta2a =MC?- 3003# // Congresso Brasileiro de
Computao . CBC'M(# &isponvel em% !ttp%NN300#H>4#JG#14NdoDnloadNC&g30
congressosN3003N3g30CBCompN!tmlNartigosNbancog30deg30dadosNbcd001#pdf .
)cesso em 2aneiro de 3004#
H5UM5,- Carlos )lberto# X"rojeto de +anco de Dados[# (orto )legre =,M?% Magra
;uzzatto- 300I# NWmero I# Ih ed# 3G3 p# /MBN 1J3IH0J404#
/NM'N- @illiam H# X+uilding t%e Data >are%ouse[# /ndianapolis =UM)?% @ileO
Computer (ublis!ing- 300J# Ih ed# JIG p# /MBN 0K>IJ44IIJ#
U/MB);;- ,alp!# XData >are%ouse Tool?it[# 8raduo de M]nica ,osemberg# Mo
(aulo =M(?% MaEron BooEs- H441# G11 p# /MBN 1JGI>01HK3#
>
U/MB);;- ,alp!; ,'MM- MargO# XT%e Data >are%ouse Tool?it[# /ndianapolis
=UM)?% @ileO Computer (ublis!ing- 3003# 3h ed# I3H p# /MBN 0IKH3003IK#
U/MB);;- ,alp!; ,'MM- MargO; ,55L5M- ;aura; 8H',N8H@)/85- @arren# XData
>are%ouse 'i4ec8cle Tool?it& Expert et%ods 4or Designing@ De#eloping and
Deplo8ing Data >are%ouses[# NeD dorE =UM)?% *o!n @ileO V Mons- H441# 3h ed#
I0J p# /MBN 0IK0HI4KKJ#
U;5/N- ;aDrence `ordam# X( Tecnologia Relacional$!bjeto em (mbientes de
Data >are%ouse[# ,io de *aneiro =,*?- H444# H4Hp# 8este =Mestrado em Ci"ncias
em Mistemas e Computao? \ /nstituto Militar de 5ngen!aria# &isponvel em%
!ttp%NNdataDare#nce#ufr2#br%1010NdataDareNpublicacoesNdataDareNfisicoNtesesNdataDar
e!ousingNU;5/N.H444#pdf . )cesso em 2aneiro de 3004#
U;5/N- ;aDrence `ordam; C)M('M- Maria ;uiza Mac!ado; 8)N)U)- )st+rio
UiOos!i# X( Tecnologia !bjeto$Relacional em (mbientes de Data >are%ouse&
Uso de SAries Temporais como Tipo de Dado Bo Con#encional[# FlorianApolis
=MC?- H444# 7/L MimpAsio Brasileiro de Banco de &ados . MBB&# &isponvel em%
!ttp%NNDDD#inf#ufsc#brNsbbd44NanaisNMBB&.CompletoNG0#(&F . )cesso em 2aneiro de
3004#
;'(5M- Maurcio Capobianco; ';/L5/,)- (ercio )le6andre de# XCerramenta de
Construo de Data >are%ouse[# Blumenau =MC?- 300K# 7L/ Meminrio de
Computao# &isponvel em% DDD#inf#furb#brNsemincoN300KNartigosNH39GJI3K#pdf .
)cesso em 2aneiro de 3004
M)CH)&'- Felipe NerO ,odrigues; )B,5U- Maurcio (ereira de# X"rojeto de
+anco de Dados $ Uma #iso pr3tica[# Mo (aulo =M(?% _rica- 300I# HHh ed# 344 p#
/MBN 1JKH4IGH3J#
()85,M'N- *im# 5&/;CH- Mtefan# Hk,N/NB- HenriE# Hk,N/NB- ,eidar . XT%e
De4initi#e ,uide to bd;o[ . Nova /orque =5U)?% )press- 300># I1I p# /MBN
HJ40J4>J>0#
>
(/NH5/,'- Hedenir Monteiro# XT<picos de "esDuisa em Data >are%ouse[#
BoiTnia =B'?- 300G# JK p# Monografia =5specializao em Banco de &ados?#
/nstituto de /nformtica . Universidade Federal de Bois . UFB# &isponvel em%
!ttp%NNDDD#inf#ufg#brNi2ulianoNensinoNespecializacaoNcursobdN300GNbdnaoconvenciona
lNMonografia#pdf . )cesso em 2aneiro de 3004#
,'M5MB5,B- &ave# XIBDR(& Sistema de isso Cr2tica para controle de trens
de alta #elocidade[# 8raduo de Cssio ,# 5sEelsen# &isponvel em%
!ttps%NNDDD#dbIo#comNportuguesNdbIog30Muccessg30MtorOg30.g30/N&,)g30
Mistemas=(ortuguese?#pdf . )cesso em dezembro de 3001#
,UMB)UBH- *ames; *)C'BM'N- /var; B''CH- BradO# XT%e Uni4ied odeling
'anguage Re4erence anual[# Boston =5U)?% )ddison.@esleO- 300I# 3h ed# K3H p#
/MBN 0G3H3IJ>31#
M/;L)- )lberto Manuel ,odrigues da; L/&5/,)- Carlos )lberto 5scaleira# XU'@
etodologias e Cerramentas C(SE[# (orto =(ortugal?% Centro )tlTntico- 300H# JJ3
p# /MBN 4K31I3>G>I#
MUN M/C,'MdM85MM# &isponvel em% !ttp%NNDDD#sun#comN . )cesso em 2aneiro de
3004
L/&'88/- *ulio Cesar# X"rojeto de um Data >are%ouse& (n3lise de
CustoE+ene42cio[# Cuiab =M8?- 300H# G> p# Monografia =Bac!arelado em Ci"ncia
da Computao?# Universidade Federal do Mato Brosso . UFM8# &isponvel em%
!ttp%NNDDD#ufmt#brNcacompN&oDnloadsNmonografiasN(ro2eto&ata@areHouse#pdf .
)cesso em 2aneiro de 3004#
L/5/,)- Marina 8eresa (ires# X+anco de Dados !rientado a !bjetos[# Mo Carlos
=M(?- 300H# >0 p# Universidade Federal de Mo Carlos . UFMC),# &isponvel em%
!ttp%NNDDD#recope#dc#ufscar#brNrecopeNdoDnloadNbdNapostilabdoo#pdf . )cesso em
2aneiro de 3004#
>
)(SN&/C5M
("FBDICE ( / Implementao das classes do diagrama dimensional CS+
Classe de &imenso C&8empo)noMes%
import 5a3a!util!ArrayList;
public class CDTempoAno"es {
private int codAno"es#e$erencia;
private int cod"es#e$erencia;
private String dscAno"es#e$erencia;
private int codAno0uadrimestre#e$;
private int codAnoTrimestre#e$erencia;
private int codAno#e$erencia;
private int 6tdDias7teis"es;
private String dsc"es#e$erencia;
private int 6tdDias7teis#estanteAno;
private String dscAno"esA8re3iado;
private int 6tdDiasTotais"es;
private ArrayList<CSCSB> listaFatos;
public CDTempoAno"es(int arg)9 int arg&9 String arg19 int arg:9 int arg29
int arg;9 int arg<9 String arg(9 int arg=9 String arg)'9 int arg))) {
this!codAno"es#e$erencia > arg);
this!cod"es#e$erencia > arg&;
this!dscAno"es#e$erencia > arg1;
this!codAno0uadrimestre#e$ > arg:;
this!codAnoTrimestre#e$erencia > arg2;
this!codAno#e$erencia > arg;;
this!6tdDias7teis"es > arg<;
this!dsc"es#e$erencia > arg(;
this!6tdDias7teis#estanteAno > arg=;
this!dscAno"esA8re3iado > arg)';
this!6tdDiasTotais"es > arg));
this!listaFatos > new ArrayList<CSCSB>();

public int getCodAno"es#e$erencia() {


return codAno"es#e$erencia;

public int getCodAno0uadrimestre#e$() {


return codAno0uadrimestre#e$;

public int getCodAno#e$erencia() {


return codAno#e$erencia;

public int getCodAnoTrimestre#e$erencia() {


return codAnoTrimestre#e$erencia;

public int getCod"es#e$erencia() {


return cod"es#e$erencia;

public String getDscAno"esA8re3iado() {


return dscAno"esA8re3iado;

public String getDscAno"es#e$erencia() {


return dscAno"es#e$erencia;

public String getDsc"es#e$erencia() {


return dsc"es#e$erencia;

public int get0tdDiasTotais"es() {


return 6tdDiasTotais"es;

public int get0tdDias7teis"es() {


return 6tdDias7teis"es;

public int get0tdDias7teis#estanteAno() {


>
return 6tdDias7teis#estanteAno;

public void add(CSCSB credito) {


this!listaFatos!add(credito);

Classe de &imenso C&8ipoContato%


import 5a3a!util!ArrayList;
public class CDTipoContato {

private int codTipoContato;
private String indAti3Cartao;
private String dscTipoContato;
private String sglTipoContato;
private String codCanalContato;
private ArrayList<CSCSB> listaFatos;
public CDTipoContato(int arg)9String arg&9String arg19String arg:9
String arg2){
this!codTipoContato > arg);
this!indAti3Cartao > arg&;
this!dscTipoContato > arg1;
this!sglTipoContato > arg:;
this!codCanalContato > arg2;
this!listaFatos > new ArrayList<CSCSB>();

public int getCodTipoContato() {


return codTipoContato;

public String get,ndAti3Cartao() {


return indAti3Cartao;

public String getDscTipoContato() {


return dscTipoContato;

public String getSglTipoContato() {


return sglTipoContato;

public String getCodCanalContato() {


return codCanalContato;

public void add(CSCSB credito) {


this!listaFatos!add(credito);

Classe de &imenso C&'peradora%


import 5a3a!util!ArrayList;
public class CD-peradora {

private int cod-peradora;
private int codTipoAssinatura;
private int codCompan?ia;
private String nomLocalidade;
private int numSe6/lano;
private String nomTipoSegmento;
private String nom-peradora;
private String sgl-peradora;
private String s6l7F-peradora;
private int codTecnologia;
private String codDDDAcesso;
private ArrayList<CSCSB> listaFatos;
public CD-peradora(int arg)9 int arg&9 int arg19 String arg:9 int arg29
String arg;9 String arg<9 String arg(9 String arg=9 int arg)'9 String arg))){
this!cod-peradora > arg);
>
this!codTipoAssinatura > arg&;
this!codCompan?ia > arg1;
this!nomLocalidade > arg:;
this!numSe6/lano > arg2;
this!nomTipoSegmento > arg;;
this!nom-peradora > arg<;
this!sgl-peradora > arg(;
this!s6l7F-peradora > arg=;
this!codTecnologia > arg)';
this!codDDDAcesso > arg));
this!listaFatos > new ArrayList<CSCSB>();

public int getCod-peradora() {


return cod-peradora;

public int getCodTipoAssinatura() {


return codTipoAssinatura;

public int getCodCompan?ia() {


return codCompan?ia;

public String get+omLocalidade() {


return nomLocalidade;

public int get+umSe6/lano() {


return numSe6/lano;

public String get+omTipoSegmento() {


return nomTipoSegmento;

public String get+om-peradora() {


return nom-peradora;

public String getSgl-peradora() {


return sgl-peradora;

public String getS6l7F-peradora() {


return s6l7F-peradora;

public int getCodTecnologia() {


return codTecnologia;

public String getCodDDDAcesso() {


return codDDDAcesso;

public void add(CSCSB credito) {


this!listaFatos!add(credito);

Classe de &imenso C&)grupamento%


import 5a3a!util!ArrayList;
public class CDAgrupamento {

private int codAgrupamento;
private int codTipoAgrupamento;
private String dscAgrupamento;
private ArrayList<CSCSB> listaFatos;
public CDAgrupamento(int arg)9 int arg&9 String arg1) {
this!codAgrupamento > arg);
this!codTipoAgrupamento > arg&;
this!dscAgrupamento > arg1;
this!listaFatos > new ArrayList<CSCSB>();

public int getCodAgrupamento() {


return codAgrupamento;

public int getCodTipoAgrupamento() {


return codTipoAgrupamento;
>

public String getDscAgrupamento() {


return dscAgrupamento;

public void add(CSCSB credito) {


this!listaFatos!add(credito);

Muper.Classe de Fatos CMCMB%


public abstract class CSCSB {

private double 3lrCredito;
private String indForma/agto;
private String codDDDAcesso/re;
public CSCSB(double arg)9 String arg&9 String arg1) {
this!3lrCredito > arg);
this!indForma/agto > arg&;
this!codDDDAcesso/re > arg1;

public double get.lrCredito() {


return 3lrCredito;

public String get,ndForma/agto() {


return indForma/agto;

public String getCodDDDAcesso/re() {


return codDDDAcesso/re;

public abstract String toString();

Classe de Fatos CM)desaoCMB%


public class CSAdesaoCSB extends CSCSB {

private CDTempoAno"es tempoAno"es;
private CDTipoContato tipoContato;
private CD-peradora operadora;
private CDAgrupamento agrupamento;
private static int qtdAdesaoAgendamento > ';
private static int qtdAdesaoCliente > ';
public CSAdesaoCSB(int arg)9String arg&9String arg19CDTempoAno"es arg:9
CDTipoContato arg29CD-peradora arg;9CDAgrupamento arg<9int tipo) {
super(arg)9 arg&9 arg1);
tempoAno"es > arg:;
tipoContato > arg2;
operadora > arg;;
agrupamento > arg<;
if (tipo >> )) {
qtdAdesaoAgendamento@@;
else {
qtdAdesaoCliente@@;

public CDTempoAno"es getTempoAno"es() {


return tempoAno"es;

public CDTipoContato getTipoContato() {


return tipoContato;

public CD-peradora get-peradora() {


return operadora;

public CDAgrupamento getAgrupamento() {


return agrupamento;

>
public int get0tdAdesaoAgendamento() {
return qtdAdesaoAgendamento;

public int get0tdAdesaoCliente() {


return qtdAdesaoCliente;

public String toString() {


return ABnCodAno"es#e$erencia% A @ tempoAno"es!getCodAno"es#e$erencia() @
ABnDscTipoContato% A @ tipoContato!getDscTipoContato() @
ABn+om-peradora% A @ operadora!get+om-peradora() @
ABnDscAgrupamento% A @ agrupamento!getDscAgrupamento() @
ABn0tdAdesaoAgendamento% A @ qtdAdesaoAgendamento @
ABn0tdAdesaoCliente% A @ qtdAdesaoCliente @
ABn.lrCredito% A @ super!get.lrCredito() @
ABn,ndAti3Cartao% A @ super!get,ndForma/agto() @
ABnCodDDDAcesso/re% A @ super!getCodDDDAcesso/re();

Classe de Fatos CMCancelamentoCMB%


public class CSCancelamentoCSB extends CSCSB {

private CDTempoAno"es tempoAno"es;
private CDTipoContato tipoContato;
private CD-peradora operadora;
private CDAgrupamento agrupamento;
private static int qtdCancelamentoAgend > ';
private static int qtdCancelamentoCliente > ';
public CSCancelamentoCSB(int arg)9 String arg&9 String arg19 CDTempoAno"es arg:9
CDTipoContato arg29 CD-peradora arg;9 CDAgrupamento arg<9int tipo) {
super(arg)9 arg&9 arg1);
this!tempoAno"es > arg:;
this!tipoContato > arg2;
this!operadora > arg;;
this!agrupamento > arg<;
if (tipo >> 1) {
qtdCancelamentoAgend@@;
else {
qtdCancelamentoCliente@@;

public CDTempoAno"es getTempoAno"es() {


return tempoAno"es;

public CDTipoContato getTipoContato() {


return tipoContato;

public CD-peradora get-peradora() {


return operadora;

public CDAgrupamento getAgrupamento() {


return agrupamento;

public int get0tdCancelamentoAgend() {


return qtdCancelamentoAgend;

public int get0tdCancelamentoCliente() {


return qtdCancelamentoCliente;

public String toString() {


return ABnCodAno"es#e$erencia% A @ tempoAno"es!getCodAno"es#e$erencia() @
ABnDscTipoContato% A @ tipoContato!getDscTipoContato() @
ABn+om-peradora% A @ operadora!get+om-peradora() @
ABnDscAgrupamento% A @ agrupamento!getDscAgrupamento() @
ABn0tdCancelamentoAgend% A @ qtdCancelamentoAgend @
ABn0tdCancelamentoCliente% A @ qtdCancelamentoCliente @
ABn.lr Credito% A @ super!get.lrCredito() @
ABn,nd Ati3 Cartao% A @ super!get,ndForma/agto() @
ABnCodDDDAcesso/re% A @ super!getCodDDDAcesso/re();

>
("FBDICE + / Implementao dos testes de carga e consulta do +D!!
Classe (rincipal para testes de e6ecuo%
import 5a3a!s6l!Connection;
import 5a3a!s6l!#esultSet;
import 5a3a!s6l!Statement;
import oracle!5d8c!pool!-racleDataSource;
import com!d8:o!D8:o;
import com!d8:o!-85ectContainer;
import com!d8:o!-85ectSet;
import com!d8:o!6uery!Constraint;
import com!d8:o!6uery!0uery;
public class /rincipal {
public static void processoStaging/rod() {

-85ectContainer dCds3 > D8:o!openFile(AC%DDEDS.DDEDS.!yapA);
try {
dCds3!store(new CDTempoAno"es(&''()&9)&9AD*F*"B#- D* &''(A9
&''('19&''(':9&''(9&&9AD*F*"B#-A9'9A&''(D*FA91)));
dCds3!store(new CDTempoAno"es(&''=')9')9A4A+*,#- D* &''=A9
&''=')9&''=')9&''=9&)9A4A+*,#-A9&119A&''=4A+A91)));
dCds3!store(new CDTipoContato()9AS,"A9AAT*+D,"*+T- *L*T#-+,C-A9
A7#AA9A)'2:A));
dCds3!store(new CDTipoContato(&9AS,"A9AL-4A /#-/#,AA9AL4/A9AL4/A/A));
dCds3!store(new CD-peradora()'9&9)9AB*L- G-#,F-+T*A9)29A7LT#AA9
A.i3oA9A.i3oA9A"HA919A'1)A));
dCds3!store(new CD-peradora()'9&9&9A47,F D* F-#"AA9)&9A*S/*C,ALA9
A.i3oA9A.i3oA9A"HA9&9A'1&A));
dCds3!store(new CDAgrupamento()9&9AC-#/-#AT,.-A));
dCds3!store(new CDAgrupamento(&9&9AS*#.,I-S ,A));
catch (*Jception e) {
System!out!println(A*rro na manipulacao do DE em Staging!A);
finally {
dCds3!close();


public static void processoD".endasAdesao() {

-85ectContainer dCds3 > D8:o!openFile(AC%DDEDS.DDEDS.!yapA);
String url > A5d8c%oracle%t?in%Klocal?ost%)2&)DL*A;
Constraint restriMNo;
DO /arPmetros incluQdos pelo desen3ol3edor con$orme a semPntica da demanda *TL OD
int restricaoSer3ico > );
int restricaoTempo > &''()&;
int restricao-peradora > )';
String restricaoDDD > A'1)A;
String select > AS*L*CT CS!.L#RC#*D,T- .L#RC#*D,T-9 A @
A CS!DSCRF-#"AR/AHT- DSCRF-#"AR/AHT-9 A @
A S7BST# (CS!+7"RB*+*F,C,AD-9)91) +7"R/#*RDDD9 A @
A CS!C-DRC-+TAT- C-DRC-+TAT-9 A @
A /L!C-DRT,/- C-DRAH#7/A"*+T-9 A @
A CS!C-DRT,/-RS-L C-DRS-L,C,TACA- A @
AF#-" CL,*+T* CL9 A @
A CL,*+T*RS*#.,C- CS9 A @
A CL,*+T*R/LA+- C/9 A @
A /LA+- /L A @
AEG*#* CL!C-DRCL,*+T* > CS!C-DRCL,*+T* A @
A A+D CL!C-DRCL,*+T* > C/!C-DRCL,*+T* A @
A A+D /L!C-DR/LA+- > C/!C-DR/LA+- A @
A A+D CS!+7"RB*+*F,C,AD- ,S +-T +7LL A @
A A+D CS!C-DRS*#.,C- > A @ restricaoSer3ico @
A A+D S7BST# (CL!+7"RC*L7LA#9)91) > SA @ restricaoDDD @ ASA @
A A+D T-R+7"B*# (A @
A T-RCGA#(CS!DATAR,+,C,-9STTTT""S)A @
A ) > A @ restricaoTempo;
try {
-racleDataSource d8#*L > new -racleDataSource();
d8#*L!set7#L(url);
>
Connection coneJao > d8#*L!getConnection(ASTST*"A9 ADBDS.A);
Statement transacao > coneJao!createStatement();
#esultSet 6uery#*L > transacao!eJecute0uery(select);
while (6uery#*L!neJt()) {
double 3alorCredito > 6uery#*L!getDou8le(A.L#RC#*D,T-A);
String $orma/agamento > 6uery#*L!getString(ADSCRF-#"AR/AHT-A);
String numero/reDDD > 6uery#*L!getString(A+7"R/#*RDDDA);
int restricaoContato > 6uery#*L!get,nt(AC-DRC-+TAT-A);
int restricaoAgrupamento > 6uery#*L!get,nt(AC-DRAH#7/A"*+T-A);
int restricaoSolicitacao > 6uery#*L!get,nt(AC-DRS-L,C,TACA-A);

0uery 6uery > dCds3!6uery();
6uery!constrain(CDTempoAno"es!class);
6uery!descend(AcodAno"es#e$erenciaA)!constrain(restricaoTempo);
CDTempoAno"es tempo > (CDTempoAno"es) 6uery!eJecute()!neJt();

6uery > dCds3!6uery();
6uery!constrain(CDTipoContato!class);
6uery!descend(AcodTipoContatoA)!constrain(restricaoContato);
CDTipoContato contato > (CDTipoContato) 6uery!eJecute()!neJt();

6uery > dCds3!6uery();
6uery!constrain(CD-peradora!class);
restricao > 6uery!descend(AcodDDDAcessoA)!constrain(restricaoDDD);
6uery!descend(Acod-peradoraA)!constrain(restricao-peradora)
!and(restricao);
CD-peradora operadora > (CD-peradora) 6uery!eJecute()!neJt();

6uery > dCds3!6uery();
6uery!constrain(CDAgrupamento!class);
6uery!descend(AcodAgrupamentoA)!constrain(restricaoAgrupamento);
CDAgrupamento agrupamento > (CDAgrupamento) 6uery!eJecute()!neJt();

CSAdesaoCSB adesao > new CSAdesaoCSB(3alorCredito9$orma/agamento9
numero/reDDD9tempo9contato9operadora9agrupamento9
restricaoSolicitacao);

dCds3!store(adesao);
tempo!add(adesao);
dCds3!store(tempo);
contato!add(adesao);
dCds3!store(contato);
operadora!add(adesao);
dCds3!store(operadora);
agrupamento!add(adesao);
dCds3!store(agrupamento);

coneJao!close();
6uery#*L!close();
transacao!close();
catch (*Jception e) {
System!out!println(A*rro na manipulacao dos 8ancos em D".endasAdesao!A);
finally {
dCds3!close();


public static void main(StringUV args) {
processoStagingProd();
processoDMVendasAdesao();
-85ectContainer dCds3 > D8:o!openFile(AC%DDEDS.DDEDS.!yapA);
try {
DD -8tendo todos os $atos de CSB re$erentes Ws adesXes
-85ectSet<CSAdesaoCSB> adesao > dCds3!6ueryBy*Jample(CSAdesaoCSB!class);
while (adesao!?as+eJt()) {
System!out!println(adesao!neJt()!toString());

catch (*Jception e) {
System!out!println(A*rro na manipulacao do DE em /roducao!A);
finally {
dCds3!close();


K

K
("FBDICE C / odelagem ER de +ase !peracional de Teste
Mcript MP; de criao e insero de dados do banco operacional%
C#*AT* TABL* CL,*+T* (
C-DRCL,*+T* +7"B*#(2) +-T +7LL9
+-"RCL,*+T* .A#CGA#&(&') +-T +7LL9
+7"RC*L7LA# .A#CGA#&())) +-T +7LL9

C-+ST#A,+T /YRCL,*+T* /#,"A#T Y*T (C-DRCL,*+T*)
);
,+S*#T ,+T- CL,*+T* .AL7*S ()'''9S4-Z- S,L.AS9S'1)====((<<S);
,+S*#T ,+T- CL,*+T* .AL7*S (&'''9S4-S[ CA#L-SS9S'1)=<;;))''S);
,+S*#T ,+T- CL,*+T* .AL7*S (1'''9S#7A+ 47L,-S9S'1&=(==)()=S);
,+S*#T ,+T- CL,*+T* .AL7*S (:'''9SFAB,- S-7FAS9S'11=;22=;22S);
C#*AT* TABL* T,/-R/LA+- (
C-DRT,/- +7"B*#(&) +-T +7LL9
+-"RT,/- .A#CGA#&(&') +-T +7LL9

C-+ST#A,+T /YRT,/- /#,"A#T Y*T (C-DRT,/-)
);
,+S*#T ,+T- T,/-R/LA+- .AL7*S ()9SC-#/-#AT,.-S);
,+S*#T ,+T- T,/-R/LA+- .AL7*S (&9S.A#*4-S);
C#*AT* TABL* /LA+- (
C-DR/LA+- +7"B*#(&) +-T +7LL9
+-"R/LA+- .A#CGA#&(&') +-T +7LL9
C-DRT,/- +7"B*#(&) +-T +7LL9

C-+ST#A,+T /YR/LA+- /#,"A#T Y*T (C-DR/LA+-)9
C-+ST#A,+T FYRT,/-R/LA+- F-#*,H+ Y*T (C-DRT,/-)
#*F*#*+C*S T,/-R/LA+- (C-DRT,/-)
);
,+S*#T ,+T- /LA+- .AL7*S ()9S.,.- C-+TAS9));
,+S*#T ,+T- /LA+- .AL7*S (&9S.,.- C-+T#-L*S9&);
,+S*#T ,+T- /LA+- .AL7*S (19S.,.- /#*S9&);
C#*AT* TABL* CL,*+T*RT*"R/LA+- (
C-DRCL,*+T* +7"B*#(2) +-T +7LL9
C-DR/LA+- +7"B*#(2) +-T +7LL9
C-+ST#A,+T /YRCL,*+T*R/LA+- /#,"A#T Y*T (C-DRCL,*+T*9C-DR/LA+-)9
C-+ST#A,+T FYRCL,*+T*R/LA+- F-#*,H+ Y*T (C-DRCL,*+T*)
#*F*#*+C*S CL,*+T* (C-DRCL,*+T*)9
C-+ST#A,+T FYR/LA+-RCL,*+T* F-#*,H+ Y*T (C-DR/LA+-)
#*F*#*+C*S /LA+- (C-DR/LA+-)
);
,+S*#T ,+T- CL,*+T*RT*"R/LA+- .AL7*S ()'''9));
,+S*#T ,+T- CL,*+T*RT*"R/LA+- .AL7*S (&'''9&);
,+S*#T ,+T- CL,*+T*RT*"R/LA+- .AL7*S (1'''91);
,+S*#T ,+T- CL,*+T*RT*"R/LA+- .AL7*S (:'''91);
C#*AT* TABL* S*#.,C- (
C-DRS*#.,C- +7"B*#(2) +-T +7LL9
+-"RS*#.,C- .A#CGA#&(1') +-T +7LL9
C-+ST#A,+T /YRS*#.,C- /#,"A#T Y*T (C-DRS*#.,C-)
);
,+S*#T ,+T- S*#.,C- .AL7*S ()9SC#*D,T- S*" BA##*,#ASS);
,+S*#T ,+T- S*#.,C- .AL7*S (&9SFAL* FAC,LS);
C#*AT* TABL* CL,*+T*R/*D*RS*#.,C- (
C-DRCL,*+T* +7"B*#(2) +-T +7LL9
C-DRS*#.,C- +7"B*#(2) +-T +7LL9
DATAR,+,C,- DAT* +-T +7LL9
DATARF,+AL DAT* +7LL9
.L#RC#*D,T- +7"B*#(29&) +-T +7LL9
DSCRF-#"AR/AHT- .A#CGA#&(&') +-T +7LL9
K
C-DRC-+TAT- +7"B*#(&) +-T +7LL9
+7"RB*+*F,C,AD- .A#CGA#&())) +7LL9
C-DRT,/-RS-L +7"B*#(&) +-T +7LL9
C-+ST#A,+T /YRCL,*+T*RS*#.,C- /#,"A#T Y*T (C-DRCL,*+T*9C-DRS*#.,C-)9
C-+ST#A,+T FYRCL,*+T*RS*#.,C- F-#*,H+ Y*T (C-DRCL,*+T*)
#*F*#*+C*S CL,*+T* (C-DRCL,*+T*)9
C-+ST#A,+T FYRS*#.,C-RCL,*+T* F-#*,H+ Y*T (C-DRS*#.,C-)
#*F*#*+C*S S*#.,C- (C-DRS*#.,C-)
);
,+S*#T ,+T- CL,*+T*R/*D*RS*#.,C- .AL7*S (
)'''9)9S&:\)&\&''(S9+7LL9129SCA#TA- .,SAS9)9S'1&=(==)()=S9)
);
,+S*#T ,+T- CL,*+T*R/*D*RS*#.,C- .AL7*S (
)'''9&9S1'\)&\&''(S9+7LL92'9SA .,STAS9)9S'1&=(==)()=S9&
);
,+S*#T ,+T- CL,*+T*R/*D*RS*#.,C- .AL7*S (
&'''9)9S)'\)&\&''(S9+7LL9&&9SA .,STAS9&9S'11=;22=;22S9&
);
,+S*#T ,+T- CL,*+T*R/*D*RS*#.,C- .AL7*S (
&'''9&9S'2\')\&''=S9+7LL9)29S"AST*#CA#DS9)9+7LL9)
);
K