13.07.2015 Views

Banco de Dados Orientado a Objetos - Rede DCC - Universidade ...

Banco de Dados Orientado a Objetos - Rede DCC - Universidade ...

Banco de Dados Orientado a Objetos - Rede DCC - Universidade ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Banco</strong> <strong>de</strong> <strong>Dados</strong><strong>Orientado</strong> a <strong>Objetos</strong>Jerônimo Teles, Paulo César Gonçalves, Pedro Prado, Rutemberg AraujoCiência da Computação – Universida<strong>de</strong> Fe<strong>de</strong>ral da Bahia (UFBA)Salvador – BA – Brasil{jeronimoteles,pauloc062, rutemberg.aj}@gmail.com, kbca_dm@hotmail.com


Introdução●Gerenciador <strong>de</strong> gran<strong>de</strong>s volumes <strong>de</strong> informação●Baseado no paradigma <strong>de</strong> orientação a objetos●Aplicações complexas em linguagens OO


Introdução●Facilita a integração do BD com as aplicações OO, pois aestrutura dos dados persistidos ficou semelhante às classesimplementadas no software●Os conceitos <strong>de</strong> objetos, métodos, herança e polimorfismo


Características e comparação com RDBMS●Principal diferença: interface para programação <strong>de</strong>aplicações●<strong>Banco</strong>s relacionais requerem adaptações para OO●BDOO: especificação da estrutura dos objetos e operações


Características e comparação com RDBMS●RDBMS: mo<strong>de</strong>lagens distintas para o BD e para a aplicação●OODBMS: mo<strong>de</strong>lo único


Características e comparação com RDBMS●BDOO: objetos <strong>de</strong> complexida<strong>de</strong> arbitrária●BDR: um objeto em diferentes relações ou registros


ODBMS●Object DataBase Manegement Group (ODMG)●Dois tipos <strong>de</strong> produtos: sistemas <strong>de</strong> gerenciamento <strong>de</strong> dadose mapeamentos <strong>de</strong> objetos para banco <strong>de</strong> dados●Mo<strong>de</strong>lo <strong>de</strong> objeto + ODL + OQL


Mo<strong>de</strong>lo <strong>de</strong> objeto●<strong>Objetos</strong> possuem OID, enquanto literais não possuem●Literais são constantes●Estado atual (proprieda<strong>de</strong>s) + Comportamento (operações)●Estado atual: atributos ou relações com outros objetos●Comportamento: operações com tipos específicos <strong>de</strong> entradae saída


Mo<strong>de</strong>lo <strong>de</strong> objeto●Especificação externa: atributos e operações visíveis eacessíveis fora do objeto●Interface: comportamento abstrato <strong>de</strong> um objeto●Literal: proprieda<strong>de</strong>s abstratas <strong>de</strong> um objeto●Classe: <strong>de</strong>fine interface e literal para um tipo <strong>de</strong> objeto●Implementações: funcionamento interno do tipo. Depen<strong>de</strong>da linguagem <strong>de</strong> programação utilizada.


Mo<strong>de</strong>lo <strong>de</strong> objeto●Exemplo: herançaclass Pessoa {attribute string name;};class EmpregadoPessoa extends Pessoa : Empregado {attribute date dtInicioContrato;};class ClientePessoa extends Pessoa : Cliente {attribute string cartaoDeCredito;};


<strong>Objetos</strong>●Criação: chamada <strong>de</strong> operações <strong>de</strong> interface; objetos <strong>de</strong> umtipo têm a mesma interface●I<strong>de</strong>ntificação: cada objeto possui um OID imutável que odiferencia dos <strong>de</strong>mais. O OID geralmente não é visível pelousuário. Literais não têm OID.


<strong>Objetos</strong>●Tempo <strong>de</strong> vida: um objeto po<strong>de</strong> ser transiente ou persistente<strong>de</strong>ntro do sistema aplicação/banco <strong>de</strong> dados. Os objetospersistentes são armazenados no BD. Um mesmo objeto po<strong>de</strong>ter instâncias transientes e persistentes ao mesmo tempo.●Estrutura: atômica, tupla, conjunto, lista, bag oumulticonjunto e array


ODL – Object Definition Language●Usada para <strong>de</strong>finir objetos e literais segundo o padrãoODMG●Não é uma linguagem <strong>de</strong> programação completa●Facilmente extensível


ODL – Object Definition Language●Exemplo: Objeto Geométricointerface ObjetoGeometrico {attribute enum Formato {Retangulo, Triangulo...}formato;float perimetro();float area();void rotacionar (in float angulo_rotacao);};


OQL – Object Query Language●Usada para realizar interações com o BD segundo o ODMG●Sintaxe muito semelhante a SQL, com pequenas diferençasreferentes aos objetos●Facilmente extensível●Trata <strong>de</strong> conceitos como i<strong>de</strong>ntida<strong>de</strong> <strong>de</strong> objeto, objetocomplexo, expressão <strong>de</strong> caminho, polimorfismo e operações<strong>de</strong> instanciação


OQL – Object Query Language●Conta com primitivas <strong>de</strong> alto nível para tratar <strong>de</strong> estruturas<strong>de</strong> coleções como listas e arrays com eficiência●Não é computacionalmente completa, permitindo apenasconsultas <strong>de</strong> forma direta●Po<strong>de</strong> permitir atualizações nos dados indiretamente, através<strong>de</strong> operações <strong>de</strong>finidas no objeto a modificar●É uma liguagem funcional on<strong>de</strong> operadores po<strong>de</strong>m sercriados <strong>de</strong>ntro das regras do tipo <strong>de</strong> sistema


OQL – Object Query Language●Exemplo: SELECTselect distinct x.ida<strong>de</strong>from Pessoa xwhere x.nome = “Joao”select distinct struct( a: x.ida<strong>de</strong>, s: x.sexo)from Pessoa xwhere x.nome = “Joao”


OQL – Object Query Language●Exemplo <strong>de</strong> inserçãoPessoa(nome=”Joao”, ida<strong>de</strong>=13, sexo=”masculino”)


OQL – Object Query Language●Exemplo <strong>de</strong> SELECT com junção implícitaselect x.en<strong>de</strong>reco.cida<strong>de</strong>.nome from Pessoa x


Trabalho prático - EspecificaçãoO aplicativo servirá para administrar um conjunto <strong>de</strong> lojas noexterior, que ven<strong>de</strong>rão pacotes promocionais para a copa do mundo<strong>de</strong> 2014 no Brasil. Estes pacotes contêm os vôos internacionais <strong>de</strong>ida e volta marcados e um conjunto <strong>de</strong> reservas para os jogos.Cada reserva contém um ingresso para o jogo selecionado e umconjunto <strong>de</strong> diárias na cida<strong>de</strong> do mesmo. Vale ressaltar que ospacotes dão direito a 20 diárias em qualquer hotel cadastrado nare<strong>de</strong> <strong>de</strong> lojas. Além disso, uma reserva po<strong>de</strong> alocar um vôonacional para o cliente chegar ao local do jogo caso seja necessário,caso contrário fica por responsabilida<strong>de</strong> da pessoa o seu meio <strong>de</strong>transporte.


Trabalho prático - EspecificaçãoUm cliente po<strong>de</strong> comprar um ou mais pacotes promocionais e po<strong>de</strong>escolher entre as categorias <strong>de</strong> pacote Premium, Plus e Standard. Opacote Premium é o mais caro, nele o cliente terá direito a reservasem hotéis cinco estrelas e vôos internacionais <strong>de</strong> ida e volta naprimeira classe. O pacote Plus também tem direito a passagens <strong>de</strong>primeira classe, porém os hotéis que po<strong>de</strong>m ser reservados vão aténo máximo quatro estrelas. Por fim, o pacote Standard dará direitoa passagens <strong>de</strong> ida e volta comerciais e hotéis mais simples oupousadas como hospedagem.


Trabalho prático - EspecificaçãoPara efetuar qualquer compra, o cliente <strong>de</strong>ve ter um cadastro naloja com o seu Social Security Number, nome, e-mail, telefone,telefone <strong>de</strong> emergência, data <strong>de</strong> nascimento, rua, CEP, bairro enúmero da moradia.O gerente <strong>de</strong> cada loja <strong>de</strong>verá ter os mesmos dados presentes nocliente, além disso precisa ter também o número do contrato paraverificações administrativas.


Trabalho prático - OrientDB●É um SGBDOO que implementa parcialmente o ODMG 3.0●Ferramenta <strong>de</strong> código aberto com suporte a Java e C++●Documentação incipiente●É fornecida ao OrientDB a especificação ODL para o banco acriar●O próprio OrientDB gera um código-fonte inicial em Java ou C++das classes criadas na ODL


Trabalho prático - OrientDB●É necessário criar uma DLL para integrar o SGBD aos arquivosgerados●A DLL po<strong>de</strong> se utilizada então para criar aplicativos queinterajam com o BD


Trabalho prático - OrientDB


Trabalho prático - OrientDB


Trabalho prático - OrientDB


Trabalho prático - OrientDB●A implementação em C++ foi bem sucedida até o passo dacriação dos arquivos-fonte das classes <strong>de</strong> entrada●Problemas não documentados foram encontrados na integraçãoentre as bibliotecas do banco e a aplicação, o que impossibilitou otermino da implementação●Outra tentativa foi feita, <strong>de</strong>ssa vez em Java. As classes <strong>de</strong> entradaforam geradas, mas houveram novos problemas nas bibliotecas <strong>de</strong>suporte à comunicação com o banco.●Após algumas correções, foi possível manter uma certaconsistência no sistema, porém só com consultas simples. Inserçõese consultas complexas retornavam erros referentes a funções nãoimplementadas


Trabalho prático – código ODL (OrientDB)class En<strong>de</strong>reco {attribute string rua;attribute string bairro;attribute string numero;attribute string cep;};class Categoria {attribute unsigned long id;attribute string nome;};class Hospedagem {attribute unsigned long id;attribute unsigned short vagas;attribute string nome;attribute string telefone;attribute string email;attribute Categoria categoria;attribute En<strong>de</strong>reco en<strong>de</strong>reco;};class Reserva {attribute unsigned long id;attribute date inicio;attribute unsigned short diasHospedagem;relationship Hospedagem hospedagem;relationship Jogo jogo;};class Voo {attribute unsigned long numBilhete;attribute unsigned long numVoo;attribute date data;attribute string compArea;attribute string origem;attribute string <strong>de</strong>stino;attribute float preco;};


Trabalho prático – código ODL (OrientDB)class PacoteCopa{attribute unsigned long id;attribute float preco;relationship Categoria categoria;relationship Voo ida;relationship Voo volta;relationship set pacoteJogos;};class PacoteJogo {attribute unsigned long id;relationship Voo vooNacional;relationship Reserva reserva;};class Jogo {attribute unsigned long id;attribute date data;attribute float preco;attribute string estadio;attribute string time1;attribute string time2;attribute string faseCopa;};class Pessoa{attribute unsigned long ssn;attribute string nome;attribute string telefone;attribute string telefoneEmergencia;attribute date dataNasc;attribute En<strong>de</strong>reco en<strong>de</strong>reco;};class Cliente extends Pessoa{relationship set pacotesComprados;};class Gerente extends Pessoa{attribute unsigned long noContrato;};class Loja{attribute unsigned long id;attribute string telefone;attribute string email;attribute En<strong>de</strong>reco en<strong>de</strong>reco;attribute Gerente gerente;};


ReferênciasRicarte, Ivan L.M. (1998) Sistemas <strong>de</strong> <strong>Banco</strong>s <strong>de</strong> <strong>Dados</strong> <strong>Orientado</strong>s a<strong>Objetos</strong>. Campinas: DCA-UNICAMP.Silberschatz, A., Korth, H. F., and Sudarshan, S. (1999). Sistemas <strong>de</strong> <strong>Banco</strong>s<strong>de</strong> <strong>Dados</strong>. Pearson Education.Cattell, R. G. G., Barry, Douglas K., Berler, M., Eastman, J., Jordan, D.(2000) The object data standard: ODMG 3.0, Morgan Kaufmann PublishersInc., San Francisco, CAAtkinson, M. P., Bancilhon, F., DeWitt, D. J., Dittrich, K. R., Maier, D., andZdonik, S. B. (1990) The object-oriented database system manifesto. InSIGMOD Conference, p.395.Khatchadourian R. (2006) Object Databases: an Analytical Approach.Object Database Management Systems. “Object Database Vendors”,http://www.odbms.org.Galante, A., Moreira, E., and Brandão, F. (1999). BANCO DE DADOSORIENTADO A OBJETOS: UMA REALIDADE. http://www.fsma.edu.br/si/edicao3/banco_<strong>de</strong>_dados_orientado_a_objetos.pdf.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!