Bancos de Dados Orientados a Objeto

Propaganda
Bancos de Dados
Orientados a Objetos
Claudionor dos Santos
Diego Mota Collaço
Estefania Borm
Milleni Maya Pettená
Ronaldo José Abel
Samuel Grüdtner
Introdução
•
•
•
•
•
•
Visão Geral
Conceitos de um BDOO
Padrão ODMG
Principais diferenças entre BDR e BDOO
BDOO no mercado
Exemplo-Db4o
Visão Geral
• Necessidade de armazenar tipos de dados
cada vez mais complexos
• BD implementado respeitando os três pilares
da OO: herança, polimorfismo e
encapsulamento.
• Modelagem intimamente ligada aos
diagramas de classes gerados para a
aplicação OO
• Servem ao mesmo propósito dos BDRs
(armazenamento; recuperabilidade ...)
Visão Geral
• A dificuldade dos Banco de Dados Relacionais ,
em implementar em algumas aplicações
complexas – como por exemplo, banco de
dados para projetos de engenharia e manufatura
(CAD/CAM e CIM), experimentos científicos,
telecomunicações, sistemas de informações
geográficas e multimídia.
• Uso crescente de linguagens de programação
orientadas a objetos no desenvolvimento de
aplicações de software.
• A necessidade de características adicionais na
modelagem de dados também tem sido
reconhecida por fornecedores de SGDBs
relacionais, e as recentes versões de sistemas
relacionais estão incorporando muitas das
características que foram propostas para banco
de dados orientados a objetos, o que resultou
em sistemas conhecidos SGBDs objetorelacionais ou relacionais estendidos.
• A última versão do padrão SQL para banco de
dados relacionais inclui algumas dessas
características.
Conceitos
• Orientado a Objetos
remonta das LPOO.
• Hoje os conceitos OO são
aplicados a diversas
áreas de Banco de Dados,
engenharia de software,
bases de conhecimento,
inteligência artificial ...
• Um objeto possui
tipicamente dois
componentes: ESTADO
(VALOR) e
COMPORTAMENTO
(OPERAÇÕES).
Conceitos de um BDOO
• Um BDOO armazena os objetos persistentes
permanentemente,em memória secundária,
permitindo o compartilhamento desses objetos
entre vários programas, e aplicações.
• Isso exige incorporar outras características bem
conhecidas de SGBDs, como mecanismos de
indexação, controle de concorrência e recuperação.
• O OID (identificador de objeto) é fornecido pelo
sistema banco de dados, é único, com intuito de
manter a integridade e identidade do objeto para
garantir a correspondência direta entre Objeto
Conceitos
• Objetos complexos são formados por construtores
(conjuntos, listas, tuplas, registros, coleções, arrays)
aplicados a objetos simples (inteiros, booleanos, strings).
• Um objeto encapsulado tem seu estado oculto ao usuário
e só pode ser consultado/modificado por meio das
operações a ele associadas.
• Classes são um conjunto de objetos que possui os mesmos
atributos, relacionamentos, operações
• Herança corresponde a transferência de propriedades
estruturais e de comportamento de uma classe para suas
subclasses.
Conceitos
• Estrutura de Objeto – normalmente os objetos
são representados pela tripla (i,c,v) onde : i é o
OID, c é um construtor de tipo (uma indicação
como o estado do objeto é construído) e v é o
estado do objeto;
• Construtores de tipo basicos : atom, tuple e set
outros exemplos são o list, bag e array.
Conceitos
•
•
•
•
•
O1=(i1,atom,’florianópolis’)
O2=(i2,atom,’trindade’)
O3=(i3,atom,5)
04=(i4,set,{i1,i2,i3)
O5=(i5,tuple,<DNOME:i7,DNUM:i9,GER:i9,PROJ:i23>)
Conceitos
• Overriding é a redefinição da implementação da
operação e overloading é a associação do resultado
da redefinição a um único nome. Late binding é
resolver o nome das operações em tempo de
execução
• Extensibilidade é estender os tipos já definidos pelo
sistema de modo transparente para a aplicação e
para o desenvolvedor da aplicação
• Completude computacional é expressar qualquer
função computável no modelo de dados usando a
linguagem de manipulação do SGBD
ODMG – Object Database
Management Group
• Consórcio de pesquisadores e fabricantes concebido para
trabalhar na criação de padrões para SGBDOOs a fim de
garantir a portabilidade
• Componentes principais:
Framework
- modelo de objetos
- linguagem de definição de objetos (ODL)
- linguagem de consulta de objetos (OQL)
Bindings
- mapeamento das construções do padrão para as
linguagens de programação (C++, Smalltalk, Java)
Modelo de Objetos ODMG
• Modelo de Objetos
- fornece os tipos de dados, de construtores e outros
conceitos que podem ser usados na ODL para especificar
esquemas de BDOO
- construção básica: objeto (identificador único) ou literal
(valor único)
- objeto possui quatro características:
1 - identificador (OID)  único
2 - nome  opcional
3 - tempo de vida  persistente ou transiente
4 - estrutura construção do objeto (atômico ou
coleção)
Modelo de Objetos ODMG
• O modelo de dados inclui normalmente vários construtures
de tipo:
- atom <valor>: inteiros, reais, strings, booleanos
- set <coleção_objeto>: elementos distintos
- bag <coleção_objeto>: elementos duplicados
- list [i1, i2,...,in]: lista ordenada (mesmo tipo)
- array [i1, i2,...,in]: vetor com tamanho máximo
- tuple <a1:i1, a2:i2,...,an:in>: cada par a:i corresponde a
nome_atributo:OID
- dictionary <k,v>: criação de índices sobre coleção de
objetos
Modelo de Objetos ODMG
• No modelo de objetos, um literal é um valor que não possui
OID
• Existem três tipos de literais:
- atômicos: long, short, double, chart, string, boolean, etc
- literais estruturados: Date, Interval, Time, Timestamp
- literais coleção: set, list, array, bag
Modelo de Objetos ODMG
• Herança
- todos herdam a interface básica Object
Modelo de Objetos ODMG
• Herança
- de comportamento (somente operações)
 entre interfaces
 entre interface e classe
 é permitida herança múltipla
- extends (comportamento (operações) e estado (atributos
e relacionamentos))
 somente entre classes
 não é permitida herança múltipla
Modelo de Objetos ODMG
• Interfaces
- não são instanciáveis
- especificam o comportamento de um objeto
- podem possuir atributos e relacionamentos, mas estes não são
herdados
interface Time : Object {
...
unsigned short
hour();
unsigned short
minute();
unsigned short
second();
unsigned short
milisecond();
...
boolean
is_equal (in Time another_time);
boolean
is_greater (in Time another_time);
...
Time
add_interval (in Interval some_interval);
...
};
Modelo de Objetos ODMG
• Objetos Atômicos (definidos pelo usuário)
- na grande maioria são objetos estruturados
- possuem:
 atributos  valores literais
 estruturas simples ou complexas
 métodos para manipular o valor do atributo
 relacionamentos
 unidirecionais  atributo de um objeto A é um outro objeto B
 bidirecionais  atributo de um objeto A é um outro objeto B, e
o atributo de um objeto B é um objeto A
 operações
 métodos  nome do método, argumentos, retorno,
especificação de exceções
Modelo de Objetos ODMG
• Extensões
- projetista pode declarar uma extensão (extent) para
qualquer tipo de objeto que esteja definido por meio de
uma declaração de classe (class)
- contém todos os objetos persistentes dessa classe
- pode possuir uma ou mais chaves
 valores restritos a serem únicos para cada objeto na
extensão
Modelo de Objetos ODMG
• Objetos Fábrica
- utilizados para criar novos objetos
- modelo ODMG possui a interface ObjectFactory, com a
operação new( ), que retorna um objeto novo com um
OID
ODL –
Object Definition Language
• Não é uma linguagem de programação completa
- função:
 dar suporte aos construtores semânticos do MO-ODMG
 especificar interfaces e classes
 definir o esquema do BDOO
- implementação do BDOO:
 usuário utiliza um binding específico com LPs como
C++, Smalltalk e Java para mapear componentes
- nem todas as LPs implementam todas as especificações
ODL
OQL Object Query Language
• Linguagem de consulta proposta para o modelo de objetos
ODMG
• É projetada para trabalhar acoplada com as linguagens de
programação com as quais o modelo ODMG define um
binding(C++, Smalltalk, Java)
• Uma consulta OQL embutida em uma dessas linguagens
pode retornar objetos compatíveis com o sistema de tipos
dessa linguagem
OQL Linguagem de Consulta de Objetos
• Sintaxe semelhante a sintaxe SQL, porém com suporte ao
tratamento de
- objetos complexos
- junções por valor ou OID
- invocação de métodos
- herança
SELECT d.dnome
FROM d in departamentos
WHERE d.faculdade = 'Engenharia‘;
• Em geral é necessário um ponto de entrada para o BDOO
nas consultas
OQL Linguagem de Consulta de Objetos
• Não precisa seguir necessariamente a estrutura
SELECT...FROM...WHERE

qualquer objeto nomeado persistente por si mesmo é uma
consulta
departamentos;
 retorna uma coleção de referências de todos os
objetos persistentes de Departamento cujo tipo seja
set<Departamento>

expressão de caminho (".")
departamentosin.coordenador;
 retorna um objeto do tipo Professor, pois é o tipo do
atributo coordenador da classe departamento
OQL Linguagem de Consulta de Objetos
Retorno de estrutura complexa
SELECT STRUCT (nome: STRUCT (ultimo_nome:
s.nome.unome,
primeiro_nome: s.nome.pnome),
graus: (SELECT STRUCT (grau: d.grau,
ano: d.ano,
Faculdade: d.faculdade)
FROM d IN s.graus)
FROM s IN departamentosin.coordenador.orienta;
OQL Linguagem de Consulta de Objetos
Visões como consultas nomeadas
DEFINE possui_alunos (nomedepto) AS
SELECT s
FROM s IN alunos
WHERE s.estuda_em.dnome = nomedepto;
Possui_alunos ('Sistemas de Informacao');
OQL
• Q1:departamentos
• Q2:departamentocc.coordenador.classificacao
• Q3a:select f.classificacao from f in
departamentocc.possui_professores
• V1:define possui_alunos(nomedepto) as select s
from s in alunos where
s.estuda_em.dnome=nomedepto;
Exemplo de Esquema BDOO
Exemplo de Esquema BDOO
class Pessoa (extent pessoas key ssn){
attribute struct Pnome {string pnome, string mnome, string unome}
nome ;
attribute string ssn;
attribute date datanascimento;
attribute enum Genero{M,F} sexo;
attribute struct Endereco{string rua, short nro, short nroapto,
string cidade, string estado, short CEP} endereco;
short idade();
}
Exemplo de Esquema BDOO
class Professor extends Pessoa (extent professores) {
attribute string classificacao;
attribute string salario;
attribute string sala;
attribute string telefone;
relationship Departamento trabalha_em
inverse Departamento::possui_professor;
relationship set<Grad_Aluno> orienta
inverse Grad_Aluno::orientado_por;
relationship set<Grad_Aluno> na_banca_de
inverse Grad_Aluno::banca;
void dar_aumento(in float aumento);
void promover(in string nova_classificacao);
};
Exemplo de Esquema BDOO
class Departamento (extent departamentos key dnome){
attribute string dnome;
attribute string dtelefone;
attribute string dsala;
attribute string faculdade;
attribute Professor coordenador;
relationship set<Professor> possui_professores
inverse Professor::trabalha_em;
relationship set<Aluno> forma_especialistas
inverse Aluno::especializa_em;
relationship set<Curso> oferece
inverse Curso::oferecido_em;
};
Exemplo de Esquema BDOO
Projeto conceitual de BDOO
BDOO x BDR – Principais Diferenças
Banco de Dados Relacional (BDR)
Banco de Orientado à Objetos (BDOO)
Coleção de tabelas, todas com nomes
únicos, compõem a base de dados,
podendo estar relacionada a uma ou
mais tabelas. Não tem relação direta
com as classes das aplicações.
Coleção de objetos que encapsulam tanto as
informações quanto as operações das classes
de origem.
Chaves primárias identificam
unicamente uma tupla em uma relação.
Identificadores de objetos (OID) identificam
unicamente um objeto na base de dados
inteira
Relacionamentos entre tuplas são
Relacionamentos são tratados pela definição
especificados por chaves estrangeiras,
de atributo de referência, que inclui o OID do
sendo representados em tabela adicional objeto relacionado
BDOO x BDR – Principais Diferenças
Banco de Dados Relacional (BDR)
Banco de Orientado à Objetos (BDOO)
Atributos são limitados à valores
simples
Atributos multivalorados são comuns
Não há estrutura pré-definida para
herança
Estruturas de herança estão imbutidas no
modelo
Definição de operações pode ser
postergada
Operações devem ser especificadas
antecipadamente, pois fazem parte das
especificações das classes.
BDOO x BDR – Principais Diferenças
Modelagem de dados para BDR
BDOO x BDR – Principais Diferenças
Modelagem de dados para BDOO
BDOO no mercado
•
•
•
•
Db4o;
Oracle;
ONTOS;
Objectivy;
Exemplo– db4objects(db4o)
• Permitir que você faça suas consultas de forma
orientada a objetos, como se estivesse
pesquisando em uma Array, List ou qualquer
outro container de objetos.
Performace
• a) Não tenho problemas de performance?
Db4o na prática.
• Instalação;
▫ http://www.db4o.com/community/
▫ Dlls, docs, e codigos de exemplo.
• Utilização;
▫ Referenciar a respectiva dll e adicionar um "using
com.db4o“;
• Criando um database
▫ O arquivo de dados do db4o tem normalmente a
extensão .yap;
Db4o - Métodos
Set: grava objetos na base
Get: recupera um objeto da base procurando-o
através de um template
Delete: apaga um objeto
Query: faz uma pesquisa na base retornando uma
lista do tipo ObjectSet
Query<T>: faz uma pesquisa retornando uma lista
tipada
Commit e Rollback: confirma/anula uma
transação (semelhante ao commit/rollback dos
RDBMs)
Bibliografia
• Elmasri – Navathe ,Sistemas de Banco de Dados 4ª Edição
• Bertino, E.; Martino, L. (1993). Object-Oriented Database
Systems: Concepts and Architectures. Addison-Wesley, 1993.
• Blaha, M.; Premerli, W. Object-Oriented Modeling and Design
for Database Applications. Prentice-Hall, 1998.
• Cattel, R.G.G. Object-Oriented and Extended Relational
Database Systems. Addison-Wesley, 1994.
• http://www.linhadecodigo.com.br/Artigo.aspx?id=2212;
• http://pt.wikipedia.org/wiki/Object_database#Ado.C3.A7.C3.A
3o_de_Banco_de_Dados_Orientado_a_Objetos
• http://www.ime.usp.br/~andrers/aulas/bd2005-1/aula3.html
• http://www.db4o.com/
Download