Este documento apresenta um seminário sobre bancos de dados orientados a objetos. Resume os principais tópicos histórico, características, exemplos, motivação, padronização, linguagens e um exemplo de SGBDOO, o Caché.
1. Banco de Dados II
Seminário: Banco de Dados
Orientado a Objeto
Guilherme Gomes
Renzo Petri
2. Roteiro
Introdução
• Histórico
• Características/Áreas de aplicação
• Exemplos de BDOO
Motivação
Características essenciais a Banco de dados OO
Características opcionais a Banco de dados OO
Padronização - Padrão ODMG
• ODL
• OQL
Um exemplo de SGBDOO: Caché um SGBD Pós-Relacional
• Plataformas, Linguagens, Características, Vantagens, Caché &
Java.
Exemplo Prático
• Curiosidades
• Conclusão
3. Introdução
Histórico
• Difusão da tecnologia e utilização do computador em diversas
áreas.
• Necessidade de representação de tipos complexos de dados:
• Listas ordenadas, conjuntos, dados multimídia, imagem, som,
texto, etc.
• Anos 80 – Uso Crescente de Linguagens de Programação OO:
• Reutilização e manutenção de software.
• Bancos de Dados OO
• Acompanhando as tendências do momento e suprindo as
carências dos Bancos de Dados Relacionais.
4. Introdução
Características Importantes:
• Permitem que o projetista especifique tanto a
estrutura de objetos complexos como as operações
que podem ser aplicadas a esses objetos.
• BDOO foram projetados para que sejam integrados a
softwares desenvolvidos com linguagens OO.
5. Introdução
Áreas de Aplicação:
• Bancos de dados para projetos de engenharia e
Arquitetura
• Experiências Científicas
• Telecomunicações
• Sistemas de Informações Geográficas
• Sistemas multimídia
• Sistemas de escritório
• Banco de dados hipertexto (links)
6. Introdução
Exemplos de BDOO
• Protótipos experimentais
• ORION (Microeletronics Corporation)
• OPENOODB(Texas Instruments)
• Sistema IRIS (Hewlett-Packard)
• ODE (AT&T BELL Labs – agora Lucent
Technologies)
• Projeto ENCORE/ObServer (Brown University)
8. Motivação
Banco de Dados Relacionais X Banco de Dados OO
• Atualmente, os bancos de dados são predominantemente
relacionais, mas uma aplicação orientada a objeto precisa
armazenar objetos.
Como armazenar objetos em um banco de dados relacional?
Os bancos de dados orientados a objeto são viáveis?
É neste contexto que se insere a figura do SGBDOO.
10. Porque adotar o modelo lógico de
dados OO?
Modelagem e programação OO cada vez mais utilizadas
na prática.
• Padrão UML.
Naturalidade do modelo OO para persistência.
Requisitos de novas aplicações:
• Restrições complexas
• Estruturas de dados complexas
• Identidade de objetos e referências diretas
• Código de aplicação interno ao banco de dados
11. Características essenciais
a Bancos de dados OO
Identificação de objetos
Objetos complexos
Encapsulamento
Tipos ou classes
Herança
Redefinição
Completeza computacional
12. Características opcionais
a Bancos de dados OO
Herança múltipla
Verificação e inferência de tipos
Distribuição
Transações de projeto
Versões
13. Padronização
Padronização
• ODMG (Object Database Management Group) –
consórcio de vendedores e usuários de SGBDs
Orientados a Objetos – definiu um modelo e uma
linguagem padrão.
• ODMG 93
• ODMG 2.0
14. Padrão ODMG
Object Data Management Group –consórcio de
vendedores e usuários de SGBDs.
Define um padrão para sistema gerenciador de
banco de dados orientado a objetos.
Banco de dados convencional que integra as
características de linguagens de programação
orientadas a objetos.
Objetos persistentes
Controle de concorrência
Consultas associativas
Recuperação de dados
15. Padrão ODMG
A definição de um padrão assegura:
Portabilidade - capacidade de executar um
determinado programa de aplicação em diferentes
sistemas, com o mínimo de modificações no
programa.
Interoperabilidade – o mesmo programa de
aplicação pode acessar dados armazenados em
pacotes diferentes que podem ser um mesmo banco
de dados ou em bancos de dados diferentes.
Escolha do produto comercial a partir do
conhecimento do padrão que é implementado por
cada produto.
16. Padrão ODMG
Dividido em:
Modelo de Objetos
Linguagem de definição de objetos (ODL- Object
Definition Language)
Linguagem de consulta de objetos (OQL – Object
Query Language)
Bindings de linguagens de programação OO:
• Smaltalk
• C++
• Java
17. Padrão ODMG – ODL
ODL - linguagem de especificação usada para definir a
especificação de tipos objeto. Alguns aspectos devem ser
considerados:
Deve suportar todas as construções semânticas do Modelo
de Objetos ODMG.
Não é uma linguagem de programação completa, mas uma
linguagem de definição para especificação de objetos.
Deve ser independente de linguagem de programação.
Deve ser extensível.
21. Padrão ODMG – ODL - Exemplo
Especificação ODL
class Aluno extends Pessoa
( extent alunos)
{
attribute string classe;
attribute Departamento cursa_eletiva_em;
relationship Departamento especializa_em inverse
Departamento::possui_especializações;
relationship set <DisciplinaCorrente> registrado_em inverse
DisciplinaCorrente::alunos_registrados;
void alterar_especialização (in string nomed) raises disciplina_inválida);
float mg();
void registrado(in short nomseção; in ValorGrau grau)
raise (disciplina_inválida,grau_invalido);
};
22. Padrão ODMG – OQL
OQL – É uma linguagem declarativa para consultar os
objetos do BD.
Pode ser usada dentro de uma linguagem de programação.
Sintaxe baseada no SQL.
Não fornece operadores para atualização, devendo
esta ser feita através dos métodos definidos para os
objetos.
Suporta todas as potencialidades da cláusula Select-
From-Where.
Possui algumas características mais poderosas, tal
como, chamar métodos dos tipos envolvidos na
consulta.
25. OQL, O-R SQL : Consultas
• resultado representa uma das variáveis (ou combinação)
presentes em operando e identifica a origem da lista de
objetos/valores que será fornecida como resultado da consulta.
• operando da consulta consiste de expressões do tipo
coleção v ,onde v representa os objetos em coleção.
• predicado é o conjunto de cláusulas que representam
as condições que devem ser satisfeitas pelas variáveis
de lista de variáveis.
26. Padrão ODMG – OQL - Exemplos
Class Departamento (extent departamentos key nomed)
{ attribute string nomed;
attribute string telefoned;
attribute string escritóriod;
attribute string faculdade;
attribute Professor presidente;
relationship set <Professor> possui_professor inverse
Professor::trabalha_em;
relationship set <Aluno> possui_especializações inverse
Aluno::especializa_em;
relationship set <Curso> oferece inverse
Curso::oferecido_por; };
C1: Select d.nomed
From d in departamentos
Where d.faculdade=‘Engenharia’
27. Padrão ODMG – OQL - Exemplos
C2: departamentoCC.presidente;
C3: departamentocc.presidente.classificação;
C4: departamentocc.tem_professor;
C5: select f.classificação
From f in departamentocc.tem_professor;
C6: select distinct f.classificação
From f in departamentocc.tem_professor;
28. Padrão ODMG – OQL - Exemplos
C7: select struct (sobrenome:
s.nome.sobrenome,primeiro_nome: s.nome.primeiro_nome)
from s in departamentocc.possui_especializações
where s.classe = ‘Superior’
order by sobrenome asc;
C8: select struct (sobrenome:
s.nome.sobrenome,primeiro_nome: s.nome.primeiro_nome)
from s in alunos
where s.especializa_em.nomed = ‘Ciência da Computação’
order by sobrenome asc;
29. Caché - Um SGBD Pós Relacional
Uma das características importantes do Caché
é permitir uma integração entre dois mundos:
• SQL e Objetos.
• A sua arquitetura unificada de dados constrói uma
camada de descrição para objetos e tabelas relacionais
que são mapeadas diretamente em sua estrutura
ultidimensional.
• Assim, aplicações relacionais podem coexistir como
novos componentes de negócio construídos com a
tecnologia OO.
30. Plataformas de Desenvolvimento
• Caché Web
Quando se trata de desenvolvimento de complexas aplicações web de alta
performance, o Caché se torna único.
A tecnologia Caché para a web leva todas as capacidades do Caché para o
exigente ambiente Internet, onde o rápido desenvolvimento e a
conectividade são tão importantes quanto a velocidade do banco de
dados e a escalabilidade.
• Servidor de Dados Caché
Quando se trata do processamento de transações, a performance é crítica.
A tecnologia do servidor de dados do Caché permite levar suas aplicações
até dezenas de milhares de usuários sem comprometer o desempenho.
• Servidor de Aplicações Caché
Quando se trata de desenvolvimento rápido e conectividade, as
características do servidor de aplicações do Caché dão aos
desenvolvedores toda a flexibilidade e todo o poder de que necessitam.
31. Linguagens de Programação do
Caché
Caché ObjectScript e o Caché Basic
• Ambas foram projetadas para bases de dados e
lógica de negócios de alta performance e ambas
suportam objetos, SQL e acesso multidimensional
aos dados Caché.
33. Caché ObjectScript
Caché ObjectScript é uma linguagem
orientada a objeto.
• Poderosa e muito fácil de aprender.
• Uma característica interessante do Caché
ObjectScript é que ele permite a mistura de métodos
de acesso aos dados – os desenvolvedores podem
ver os dados como objetos, como tabelas relacionais
(usando SQL), ou como arrays multidimensionais.
• Também, diferentemente de outras linguagens de
objetos, o Caché ObjectScript permite rotinas stand-
alone. Ele não requer que todo o código faça parte do
método de uma classe de objetos.
34. Caché Basic
O Caché Basic foi adicionado como linguagem de
programação a fim de fornecer uma maneira fácil para
os programadores de Visual Basic começarem a usar
o Caché.
Similar ao VBScript, o Caché Basic inclui extensões
que permitem que ele rode na Caché Virtual Machine.
Assim, o Caché Basic é interoperável com o Caché
ObjectScript e usufrui as mesmas características
especiais. Assim como o Caché ObjectScript, ele suporta
objetos, SQL e acesso multidimensional aos dados Caché.
O Caché Basic também permite rotinas stand-alone.
35. Características
Data Engine Multidimensional:
Todos os dados são armazenados em arrays multidimensionais
esparsos que eliminam a sobrecarga do processamento relacionado à
“ligação” de dados que comumente ocorre nos bancos de dados
relacionais.
Acesso a Dados Objetos:
Os dados podem ser modelados como objetos.
O Caché suporta encapsulamento, heranças múltiplas, polimorfismo,
objetos embutidos, referências, coleções, relações e BLOBs.
Acesso a Dados SQL:
Permite acesso relacional à base de dados Caché. Suporta tanto ODBC
como JDBC.
36. Características
Acesso a Dados Multidimensionais:
Fornece controle direto de estruturas multidimensionais no Banco de
Dados Caché.
Arquitetura Unificada de Dados:
Classes de objetos e tabelas relacionais são automaticamente geradas
a partir de uma única definição de dados.
Indexação Bit-Map Transacional:
Os índices bit-map do Caché podem ser atualizados de forma
extremamente rápida, tornando-os adequados para
uso com dados “em tempo real”.
API para Monitoramento da Performance:
Conecta-se com ferramentas de monitoramento de mercado como o
Patrol da BMC e o Sightline da Fortel.
37. Vantagens Caché
Alta Performance
Desenvolvimento Ágil
Confiabilidade Robusta
Operação Econômica
Crescimento Irrestrito
Distribuição Flexível
38. Alta Performance
• As aplicações baseadas em Caché geralmente operam 5
vezes mais rápido do que as aplicações
comparáveis,baseadas em tecnologia relacional.
• O Caché tem um mecanismo de dados multidimensional
e ultra-eficiente, especialmente quando lida com
informações ricas e complexas usadas pelas soluções
sofisticadas de software de hoje em dia.
39. Desenvolvimento Ágil
• Com o Caché o desenvolvimento de novos produtos e
melhorias em antigas soluções são distribuídos no tempo mais
curto possível.
• O Caché tem um ambiente rápido de desenvolvimento, que faz
uso intenso da tecnologia avançada de objetos, da geração
automática de códigos e de wizards, permitindo a criação e
adaptação rápida das aplicações.
• Os objetos Caché também são compatíveis com uma variedade
ampla de tecnologias de desenvolvimento, incluindo Java,
J2EE, .NET, COM, C++, XML, e Web Services.
• Assim, os desenvolvedores podem usar o Caché com quaisquer
ferramentas ou tecnologias que sejam mais produtivas para
eles.
40. Confiabilidade Robusta
• O Caché é tão confiável que ele potencia mais aplicações na
indústria de saúde do que qualquer outra tecnologia de
banco de dados.
• Ele inclui uma série de funcionalidades rápidas de
recuperação, tal como espelhamento e clusters, que
permitem a operação contínua de aplicações de missão-
crítica.
• Além de impulsionar a escalabilidade, o Enterprise Cache
Protocol do Caché proporciona uma distribuição contínua
entre os servidores de aplicação nos sistemas distribuídos.
41. Operação Econômica
• Na maioria dos casos, as instalações de aplicações
baseadas no Caché não requerem os serviços de um
administrador de banco de dados.
• Seu mecanismo multidimensional usa “sparse arrays “
(matrizes escassas), assim, as aplicações baseadas no
Caché geralmente requerem menos hardware do que os
produtos dos competidores embutidos nos bancos de dados
relacionais.
• Além disso, o banco de dados Caché nunca precisa ser
“regulado”, as tarefas administrativas de rotina podem ser
facilmente realizadas sem reiniciar, e todo o sistema de
administração pode ser feito remotamente através do fácil
portal de administração do Caché.
42. Crescimento Irrestrito
• As aplicações baseadas em Caché podem
ser escaladas proporcionalmente sem
sacrificar a performance, e podem manter o
ritmo até mesmo com a organização
crescendo rapidamente em número de
usuários finais.
• O Caché potencia o sistema de informática
mais distribuído do mundo, o qual serve
mais de 50.000 usuários.
43. Distribuição Flexível
• Com o Caché, as organizações de usuários finais
nunca ficam obrigadas a usar um sistema operacional
específico.
• O Caché roda em Unix, Linux, Windows, Mac OS X e
OpenVMS.
• Ele suporta uma grande variedade de linguagens,
padrões e protocolos, assim as aplicações baseadas
em Caché podem funcionar continuamente com
outras aplicações em quase todas as arquiteturas de
sistemas.
44. Caché & JAVA
Caché é o banco de dados de alta performance ideal
para aplicações Java, pois oferece três diferentes
modos de conexão dados do Caché podem ser
acessados:
• Com SQL via JDBC;
• Classes Caché podem ser projetadas como classes Java
• ou ainda como Enterprise Java Beans.
As projeções são automatizadas de forma que os
desenvolvedores Java possam ganhar persistência de
dados sem a necessidade de tediosas codificações.
47. E o melhor é FREE!!!
O download é gratuito. Disponível na versão 5.2
monousuário, completa e funcional, sem data de
expiração do Caché .
Se você preferir, pode receber uma cópia do software
em CD.
As Documentações e Atualizações de Caché atuais e
anteriores estão disponíveis on-line, ou fazendo o
download para impressão.
50. Conclusão
• As aplicações cliente/servidor, desenvolvidas em bancos de
dados relacionais, não se adaptam à nova realidade imposta
pela Internet, naturalmente heterogênea e distribuída.
• Novas aplicações são construídas com arquitetura de três
camadas, utilizando as vantagens tecnológicas da orientação a
objeto.
• Armazenar objetos em um banco de dados relacional é uma
tarefa difícil. O modelo relacional não possui os mecanismos
necessários para representar características básicas do modelo
OO.
• Nesse cenário, um banco de dados relacional não traz
nenhuma vantagem. A escolha de um banco de dados OO é a
evolução natural.
51. Conclusão
• Hoje, bancos de dados OO são produtos estáveis,
oferecem segurança, performance e escalabilidade.
• Armazenar e recuperar objetos de um banco de dados
OO é efetivamente mais rápido do que pulverizar seus
atributos em tabelas de duas dimensões. Mas a
performance do seu banco de dados OO é apenas uma
parte.
• Definir corretamente a arquitetura de sua aplicação é
fundamental e requer experiência.