bancos de dados orientados a objeto
DESCRIPTION
um estudo de casoTRANSCRIPT
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