bancos de dados orientados a objeto

Post on 02-Jul-2015

7.704 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

um estudo de caso

TRANSCRIPT

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

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).

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

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

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

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

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

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

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

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)

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

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

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.

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

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

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

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 {....};

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

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():}

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()

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;

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)

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

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

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

08/20/09 11:20 AM 26

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

Object Databases – Conceitos do Jasmine

08/20/09 11:20 AM 27

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

Componentes do Jasmine

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

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

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

08/20/09 11:20 AM 31

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

Como o pJ funciona?

08/20/09 11:20 AM 32

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

Persistent Java – Ativação

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

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

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

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

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

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

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

08/20/09 11:20 AM 40

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

Access Patterns

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

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

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

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

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.

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)

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)

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.

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

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

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

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)

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

08/20/09 11:20 AM 54

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

Conclusão

• Problemas• Vantagens• Referências

top related