bancos de dados orientados a objeto

54
08/20/09 11:20 AM 1 UnB – Departamento de Ciência da Computação Bancos de Dados Orientados a Objeto Estudo de Casos Kelly Prudente Pereira Luciano Soares Bohnert Orientador: Fernando Albuquerque

Upload: elliando-dias

Post on 02-Jul-2015

7.704 views

Category:

Technology


1 download

DESCRIPTION

um estudo de caso

TRANSCRIPT

Page 1: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 1

UnB – Departamento de Ciência da Computação

Bancos de Dados Orientados a Objeto

Estudo de Casos

Kelly Prudente Pereira

Luciano Soares BohnertOrientador: Fernando Albuquerque

Page 2: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 2

UnB – Departamento de Ciência da Computação

Objetivos do Projeto

• Estudar a evolução na área de Bancos de Dados até o paradigma da Orientação a Objetos.

• Avaliar o porque de Bancos de dados Orientados a Objetos.

• Analisar duas opções disponíveis no mercado:- Jasmine- Poet

• Implementar um sistema exemplo utilizado um banco de dados Orientado a Objetos (Jasmine).

Page 3: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 3

UnB – Departamento de Ciência da Computação

Introdução

• Um Histórico da Evolução dos Modelos de Dados– Como tudo aconteceu após os anos 60– Modelo Hierárquico

• Novas vantagens• Novos Problemas

– Modelos de Rede• IDS (Integrated Data Store)

• Rede Simples• Rede Complexa

Page 4: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 4

UnB – Departamento de Ciência da Computação

Introdução– Modelo Relacional

• Tabelas bidimensionais.• ad hoc queries

– Modelo Orientado a Objeto• Armazenamento de objetos persistentes.• Armazenamento de dados complexos.• Categorias de Produtos

– ODBMSs puros – Gerenciadores de Armazenamento Persistente – Object Wrappers – DBMSs híbridos ou post-relacional ou ORDBMS

Page 5: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 5

UnB – Departamento de Ciência da Computação

Orientação a Objetos e o Modelo de Dados

Orientado a Objetos• Elementos da Orientação a

Objetos– Objetos

• Classes • Tipos de método• Sobrecarga

Page 6: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 6

UnB – Departamento de Ciência da Computação

A Orientação a Objetos

– Herança

ContaPoupança

dataAniversariovariacaoname

ContaCorrente

limitejuros

Conta

numerosaldocliente

Page 7: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 7

UnB – Departamento de Ciência da Computação

A Orientação a Objetos

– Herança múltipla – Interface – Polimorfismo

Page 8: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 8

UnB – Departamento de Ciência da Computação

O modelo de Dados Orientado a Objeto

• Relacionamentos entre os dados– Identificadores de Objetos – Gerenciamento de memória– Relacionamento Um-Muitos– Relacionamento Muitos-Muitos

– Relacionamento “É um (a)” – Relacionamento Extends – Relacionamento Todo-Parte

Page 9: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 9

UnB – Departamento de Ciência da Computação

O modelo de Dados Orientado a Objeto

• Integridade de Relacionamento

• Diagramas de relacionamentos• A UML (Unified Modeling Language)

Para a Classe País:

Para a Classe Estado:

stados : (set) Estado

inverse is Estado.País

ais : pais

inverse is País.Estado

Page 10: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 10

UnB – Departamento de Ciência da Computação

Porque ODBMS: Comparando RDBMS e

ODBMS• Bancos Relacionais e Linguagens

Orientadas a Objeto– Vantagens do Relacional:

• Capacidade• Velocidade• Eficiência

• SQL (Joins)

Page 11: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 11

UnB – Departamento de Ciência da Computação

O Modelo de Relacional

• Bidimensional• Chaves para manter os relacionamentos

Page 12: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 12

UnB – Departamento de Ciência da Computação

O Modelo de Objeto

• Combina:– Código– Dados

• Características:– Herança– Encapsulamento– Polimorfismo

• OID

Page 13: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 13

UnB – Departamento de Ciência da Computação

Combinando os modelos

• Esquema de definição no Banco de Dados para Objetos– Mapear objetos em RDBMS(programação extra)– Mapear RDBMS em objetos (poucos tipos, não tem

suporte a características OO)

• Camadas de persistência.

Page 14: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 14

UnB – Departamento de Ciência da Computação

Manipulação de Dados para Objetos

• Gereciamento de objetos em memória• Exclusão de todas as tabelas• Consulta em todas as tabelas

• Limitação destas soluções– Dois Modelos

Page 15: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 15

UnB – Departamento de Ciência da Computação

Bancos da Dados Orientados a Objeto

• Suporte a Objetos• Operações Básicas no Banco de Dados

– Banco “conhece” o esquema real– Não há perigo de dois objetos estarem carregados

em memória

Page 16: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 16

UnB – Departamento de Ciência da Computação

Padronizações

• ODMG (Object Database Management Group)

• A proposta padrão ODMG– Terminologia básica– Tipos: Especificações e implementações

• Tipos primitivos

Page 17: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 17

UnB – Departamento de Ciência da Computação

Padronizações

– Herança• Herança e interfaces

• Extends

nterface Empregado {....};

nterface Professor : Empregado {....};

nterface Professor_Substituto : Professor {....};

nterface Professor_Auxiliar : Professor {....};

Page 18: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 18

UnB – Departamento de Ciência da Computação

Padronizações– Objetos

• Identifcadores• Nomes• Persistentes e transientes• Objetos atômicos• Coleções• Objetos Estruturados

– Modelando estados – Propriedades• Atributos• Relacionamentos

Page 19: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 19

UnB – Departamento de Ciência da Computação

Padronizações– Modelando comportamentos – Métodos– Locking e controle de concorrência– Modelo de transação

• Transação e Processos• Operações Tradicionais interface Transaction {

void begin() raises(TransactionlnProgress,DatabaseClosed); void commit() raises(TransactionNotlnProgress); void abort() raises(TransactionNotlriFrogress); void checkpoint() raises(TransactionNotlnProgress); void join() raises(TrarisactionNotlnProgress); void Leave() raises(TransactionNotlnProgress); boolean isOpen():}

Page 20: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 20

UnB – Departamento de Ciência da Computação

Padronizações

– Operações no Banco• Open()• Close()• Bind()• Unbind()• Lookup()

Page 21: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 21

UnB – Departamento de Ciência da Computação

ODL • ODL(Object Definition Language )

– Estrutura de classes e interfaces

– Declarando atributos

– Relacionamentos

lass nome_classe extends nome_super_classe : nome_interface

extent nome_extensão)

//elementos da classe

;attribute tipo nome_atributo ;

relationship classe_relacionada_a nome_relacionamento

inverse classe_relacionada_a :: nome_relacionamento_da_classe_relacionada;

Page 22: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 22

UnB – Departamento de Ciência da Computação

ODL

– Assinaturas de métodos tipo_retorno nome_metodo(lista parâmetros) raises (lista_exceções)

Page 23: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 23

UnB – Departamento de Ciência da Computação

OQL

• OQL(Object Query Language)– Entrada e resultado de consulta

– Navegando nas expressões

select struct (i: x.idade, s: x.sexo)from (select y from Empregados y where y.anosdecasa = “10”) as x where x.nome = “Kelly”

p.pai.endereço.cidade.nome

Page 24: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 24

UnB – Departamento de Ciência da Computação

OQL– Predicados– Operadores booleanos– Polimorfismo

• “late binding”

• Class indicator

select p.atividadesfrom Pessoas p

select ((Estudante)p).notafrom Pessoas p

where “curso” in atividades

Page 25: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 25

UnB – Departamento de Ciência da Computação

Jasmine

• OBD puro• Bancos Objeto-Relacionais (Híbridos)• Velocidade (Performance)• Flexibilidade• Desenvolvimento com Jasmine

Page 26: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 26

UnB – Departamento de Ciência da Computação

Object Databases – Conceitos do Jasmine

Page 27: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 27

UnB – Departamento de Ciência da Computação

Componentes do Jasmine

Page 28: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 28

UnB – Departamento de Ciência da Computação

O Projeto do Jasmine

• Componentes do Jasmine• A Arquitetura do Jasmine• O Servidor de Bancos de Dados• O Cliente Jasmine• Considerações com a Largura de

Banda

Page 29: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 29

UnB – Departamento de Ciência da Computação

O Projeto do Jasmine - cont

• A estrutura do Jasmine• A Biblioteca de Classes do Jasmine• As famílias de Classes do Usuário• Desenvolvimento por terceiros• A ODQL• Stores (Armazéns)• As Bibliotecas de classes do Jasmine

Page 30: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 30

UnB – Departamento de Ciência da Computação

5. Persistent Java

• Como o pJ funciona?• Transações• Persistência e Transiência• Classes providas pelo pJ• Classes criadas pelo Usuário

Page 31: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 31

UnB – Departamento de Ciência da Computação

Como o pJ funciona?

Page 32: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 32

UnB – Departamento de Ciência da Computação

Persistent Java – Ativação

Page 33: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 33

UnB – Departamento de Ciência da Computação

Persistent Java - cont

• O modelo de ativação do pJ• Bases de Dados e Transações

(Objetos)• Abrindo uma base de Dados• Nomeando e procurando por Objetos

no Banco de Dados• Gerenciando Transações• Métodos Gerados

Page 34: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 34

UnB – Departamento de Ciência da Computação

POET

• Sobre a POET Software– O POET Object Server Suite (OSS)– A arquitetura do OSS

Page 35: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 35

UnB – Departamento de Ciência da Computação

POET

• A Tecnologia POET’s Fast Object– Armazenamento nativo de objetos e

Otimizador de consultas– Sistema de smart cahching– Consultas baseadas no servidor– Patterns de acesso– Locking em nível de objetos

Page 36: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 36

UnB – Departamento de Ciência da Computação

POET

– Recuperação de espaço de armazenamento

– Mapeamento de código– Versionamento On-the-fly– Suporte a tipos de dados definidos pelo

usuário– Ferramentas de administração

Page 37: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 37

UnB – Departamento de Ciência da Computação

Plataformas Suportadas pelo OSS 6.1

• Windows• Solaris• Linux• HP-UX

• Netware

Page 38: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 38

UnB – Departamento de Ciência da Computação

Edição do POET SDK para Java

• Persistência e o Banco de dados POET– POET Java enhancer(PTJ) – Arquivo de configuração

– Funções básicas de manipulação de dados• Bind• Lookup• Delete

[classes\Pessoa]persistent = true

[schemata\my_dict]oneFile = false[databases\my_base]oneFile = false

Page 39: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 39

UnB – Departamento de Ciência da Computação

POET• Banco de dados e Dicionários

– [databases\Contas]

– schema = SchemaConta

– onefile = true

• Collections• Navegação pelos objetos

– Alcance da persistência– Acess Patterns– [schemata\dict\accessPatterns]– usedPatterns = AmigosEParentes– defaultPreloadDepth = 2– maxPreloadObjects = 7– [schemata\dict\accessPatterns\ AmigosEParentes]– pattern = *.Pessoa.pai, *.Pessoa.mae:4,*.Person.amigos[0-$]:1

Page 40: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 40

UnB – Departamento de Ciência da Computação

Access Patterns

Page 41: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 41

UnB – Departamento de Ciência da Computação

Poet - Transações

– Transações Database db = new Database();

• db.open(...);• Transaction trans = new Transaction( db );

trans.begin();

• Locks• Checkpoints• Transações aninhadas

Page 42: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 42

UnB – Departamento de Ciência da Computação

Edição do POET SDK para Java - cont

• POET Java e aplicações multicamada

Page 43: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 43

UnB – Departamento de Ciência da Computação

Desenvolvimento com Bancos de Dados

Orientados a Objeto• O processo de desenvolvimento

(RUP)– Orientado a Casos de Uso– Centrado na Arquitetura– Interativo e Incremental

Page 44: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 44

UnB – Departamento de Ciência da Computação

Modelagem do Sistema

• Business Modeling– Business Actors – Business Use-Case Model– Business Object Model

Page 45: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 45

UnB – Departamento de Ciência da Computação

Modelagem de Negócio

Business Modeling

Banco Genérico

O propósito do modelo de negócio é:

- Entender a estrutura e dinâmica da Organização.- Garantir que clientes, usuários finais, e desenvolvedores tenham um entendimento comum da organização.- Derivar requisitos de sistemas para suporte a organização.

Use Cases Mode l

O Modelo de Casos de Uso é um modelo de que funções o sistema proverá e seu ambiente, e serve como um contrato entre clientes e desenvolvedores. O modelo de casos de uso é usado como insumo essencial para as atividades de análize, projeto e testes.

Page 46: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 46

UnB – Departamento de Ciência da Computação

Modelo de Casos de Uso

Internet Banking

Auto Atendimento

Atendimento Personalizado

Business Uses Cases (Processos)

Page 47: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 47

UnB – Departamento de Ciência da Computação

Modelo de Casos de Uso – Auto-Atendimento

Casos de Uso Auto Atendimento

Sacar Auto Atendimento

Transferir Auto Atendimento

Obter Saldo Auto Atendimento

Obter Extrato Auto Atendimento

Depositar Auto Atendimento

Pagar Auto Atendimento

Correntista Auto-Atendido

(from Business Actors)

Page 48: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 48

UnB – Departamento de Ciência da Computação

Sistema de Auto-Atendimento - Análise e Projeto

Analysis Model

Logical View

ProjBanGen Modelo de Projeto dos Sistemas do Banco Genérico- O Modelo de Projeto é o modelo do sistema que contem as classes e colaborações que realizam os Casos de Uso do Sistema. Ele representa o espaço de soluções.

O Modelo de Análise contem as classes de análise e outros artefatos associodos. É um modelo de objeto descrevendo as realizações dos Casos de Uso e serve como abstração para o Modelo de Projeto.

Page 49: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 49

UnB – Departamento de Ciência da Computação

Projeto Banco Genérico

• Projeto SisCon• Projeto SisAAModelo de Desing do Banco Genérico

SisAA SisCon

Page 50: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 50

UnB – Departamento de Ciência da Computação

Projeto – Sistema de Contas

VerificadorOpcao

sendOpcao()instantiateControleTransacaoBancaria()sendOpcao()

IVerificadorOpcao

sendOpcao()instantiateControleTransacaoBancaria()

IOpcao

getTitulo()isExecutable()

getArraySubOpcao()

IControleTransacaoBancaria

getNomeCliente()

PRI

(from jasmine)

jasmine

global

(from pJ)

ListOfObject(from jasmine)

ControleTransacaoBancaria

nomeCliente : Stringnome : String

OpcaoMenu

titulo : StringisExecutable : boolean

getOpcao()getTitulo()isExecutable()getArraySubOpcao()

0..1

+controleTransacaoBancaria

0..1

-subOpcao

Page 51: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 51

UnB – Departamento de Ciência da Computação

Projeto – SisConIConta

getCliente()getNumero()getAgencia()

getSaldo()

IAgencia

getNumero()getEndereco()

getNome()

ICliente

getNome()getTelefone()

getCPF()getSenha()

Esquema do Banco de Dados com Interfaces

IContaCorrente

getLimite()getSaldoDisponivel()

IContaPoupanca

getVariacao()

ContaPoupanca

ContaCorrente

PessoaFisica

TituloConta

ITituloConta

getNumero()getNomeEmp()

getValor() DominioLancamento

Agencia

Cliente

Lancamento#dominio

ListOfObject(from jasmine)

Conta

#agencia

-conta

#cliente

0..n

1..2

#lancamentos

0..n

1..2

#listaLancamentos

Page 52: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 52

UnB – Departamento de Ciência da Computação

Projeto – Sistema de Auto-Atendimento

TelaMenu

setMenu()

Diagrama de Classes da Escolha de Transação

JPanel(from swing)

ActionEvent(from event)

IMenu

setMenu()addActionListener()

IVerificadorOpcao

sendOpcao()instantiateControleTransacaoBancaria()

(from SisCon)

ControleTelas-menu

-iVrfOpc

IOpcao

getTitulo()isExecutable()

getArraySubOpcao()

(from SisCon)

ActionListener(from event)

Page 53: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 53

UnB – Departamento de Ciência da Computação

Projeto - SisAAClasses de GUI

PanelGeral

jbInit()setErro()setInstrucao()setPanelWork()setTituloBanco()setTituloTransac()

TFrame

jbIni t()processWindow Event()

JFrame(from swing)

JPanel(from swing)

TelaMenu

setMenu()

Tela Transação

Page 54: Bancos de Dados Orientados a Objeto

08/20/09 11:20 AM 54

UnB – Departamento de Ciência da Computação

Conclusão

• Problemas• Vantagens• Referências