Bancos de Dados Orientados a
Objetos
Álvaro Vinícius de Souza Coêlho
[email protected]
BDs Orientados a Objeto
• Histórico
– Historicamente os sistemas de Bancos de Dados
caminharam abraçados à tecnologia mais
difundida.
– Assim que surgiram, BDs estavam suportados
em MainFrames.
BDs Orientados a Objeto
• Histórico
– Para compreender melhor é necessária uma
rápida visita à arquitetura MainFrame:
BD
SGBD
Aplicação
Terminal
MainFrame
BDs Orientados a Objeto
• Histórico
– O usuário tem diante de si um terminal cuja
função única é entrada e saída de dados
– A aplicação (que está no MainFrame) acessa o
SGBD, que cuida do BD em todos os aspectos,
conforme mostrado.
BDs Orientados a Objeto
• Histórico
– Opcionalmente a aplicação poderia acessar
diretamente os arquivos
– O MainFrame permitia a execução de muitos
programas ao mesmo tempo
– Compartilhar um único arquivo através da
estratégia de Time Sharing
– Uma fatia de tempo para cada processo, assim
todos estavam sempre sendo executados
BDs Orientados a Objeto
• Histórico
– As vantagens desse modelo eram a segurança e
a integração, pois os sistemas estavam
suportados numa única plataforma de HW e
SW
– A principal desvantagem era o custo. Os
MainFrames muitas vezes eram até alugados
BDs Orientados a Objeto
• Histórico
– Com a popularização e o barateamento dos
microcomputadores, surgem os sistemas
menores, que acessavam arquivos
– Na prática, é importante ressaltar, não há ação
de um SGBD, pois os aplicativos acessam o
arquivo de dados diretamente
BDs Orientados a Objeto
• Histórico
– Esta estratégia ganhou força com o
aparecimento do Dbase, fabricado pela Aston
Tate, que trazia inúmeras facilidades de
manipulação interativa de dados, usando os
famosos arquivos .DBF.
– Aston Tate hoje é Borland Inc.
BDs Orientados a Objeto
• Histórico
– Fenômeno 1: Popularização das redes locais de
computadores,
– Fenômeno 2: Aparecimento das versões mais
populares dos sistemas operacionais de rede,
– Conseqüência: A orientação mudaria um pouco
BDs Orientados a Objeto
• Histórico
– O servidor de arquivos
Estações
Servidor de
Arquivos
BDs Orientados a Objeto
• Histórico
– Provia mecanismos de compartilhamento de
arquivos por mais de um processo
– Estando, inclusive, em máqinas diferentes
– Semelhante ao que o MainFrame fazia
– Um aplicativo agora podia acessar os arquivos
compartilhando-os com outros
BDs Orientados a Objeto
• Histórico
– Os aplicativos cuidariam de acessar o servidor a
partir de muitos pontos
– Atendendo a diversos usuários como o
MainFrame, mas a custo bem inferior
– Além disso uma estação de trabalho tinha
vantagens sobre o terminal “burro”
BDs Orientados a Objeto
• Histórico
– As desvantagens eram todas ligadas ao fato de
que não havia um SGBD,
– Os dados ficavam à mercê das aplicações para
ter seus aspectos de segurança e integridade
respeitados
– E Concorrência?
BDs Orientados a Objeto
• Histórico
– Este modelo arquitetural de Banco de Dados
ficou conhecido como Sistemas tipo Servidor
de Arquivos
– A partir das criticas feitas ao modelo tipo
Servidor de Arquivos surge uma alternativa, a
instalação de um SGBD para atender a todos.
Ou seja, criar um Servidor de Banco de Dados.
BDs Orientados a Objeto
• Histórico
– A arquitetura fica um pouco mais parecida com
a do MainFrame,
– A diferença é que a aplicação agora funcionaria
em outra máquina (na verdade poderia ser na
mesma)
– Seria cliente do serviço prestado pelo SGBD,
ou seja, acesso aos dados.
BDs Orientados a Objeto
• Histórico
– Modelo Cliente-Servidor
Estações
Aplicativo
Servidor de
Banco de Dados
BD
Aplicativo
SGBD
Aplicativo
BDs Orientados a Objeto
• Histórico
– A principal vantagem é que o Servidor de BD
implementava os aspectos de
– Concorrência
– Integridade
– Segurança
– Recuperação de falhas
BDs Orientados a Objeto
• Histórico
– A desvantagem surge ironicamente do fato que
levou muita gente a se afastar da arquitetura
MainFrame: A Estação Cliente
– Argumento dos detratores do MainFrame:
– Aplicações nas pontas permite-se rodar
aplicações em máquinas muito mais baratas.
Isso é realmente um fato
BDs Orientados a Objeto
• Histórico
– Os problemas:
– Manutenção das aplicações: cada nova versão
tinha que ser instalada em muitas máquinas, e
isso começou a representar um custo excessivo
– Dependência tecnológica: Escolhido o SO e o
SGBD, qualquer mudança teria custos por
vezes proibitivos
BDs Orientados a Objeto
• Histórico
– Por outro lado, a crescente sofisticação das
aplicações exigia investimentos pesados no
fortalecimento do poder de processamento dos
clientes
– Passou-se a olhar, então, esta arquitetura como
um modelo em duas camadas:
BDs Orientados a Objeto
• Histórico
–
–
–
–
–
Cliente processa dados e apresentação
Cliente se conecta diretamente aos servidores.
Cliente “Robusto” (e caro)
Aplicações grandes, e baixa reutilização
Dificuldade na distribuição das versões
BDs Orientados a Objeto
• Histórico
– A solução
– Implementar múltiplas camadas (no mínimo 3)
a invés de apenas duas.
BDs Orientados a Objeto
• Histórico
– Apresentação, Lógica do Negócio e Acesso a
Dados.
– Cliente “Magro”
– Serviços da camada de negócios
compartilhados
– Atualização de versões centralizado
– Independência de Plataforma
BDs Orientados a Objeto
• Histórico
– A grande modificação fica no cliente “magro”
– Opcionalmente (e normalmente é uma boa
idéia), pode-se quebrar a camada intermediária
(Lógica do Negócio) e a de acesso a dados em
componentes (ou objetos)
BDs Orientados a Objeto
• Histórico
– Objetos de lógica do negócio
– Encapsulam regras de negócio do mundo real
independente de como os dados estão
armazenados
– Usualmente possuem múltiplas operações
acessando vários objetos de dados
BDs Orientados a Objeto
• Histórico
– Objetos de acesso a dados
– Deve ser o único meio de acesso a dados
(incorpora especificamente a DML do Banco de
Dados)
– Provê um conjunto de métodos que permitem
lhe serem solicitados serviços
BDs Orientados a Objeto
• Histórico
– Necessidade: Mapeamento Objetos de Dados –
Objetos de Negócio
– O modelo é, então, estendido para N camadas
– É possível, se desejável, até a re-inclusão do
próprio MainFrame na estrutura
BDs Orientados a Objeto
• Histórico
– Multicamadas
BDs Orientados a Objeto
• Histórico
– O SGBD não “vê” a estrutura complexa que se
construiu ao seu redor.
– Os acessos aos dados, do ponto de vista do
SGBD permanecem da mesma forma
– A camada de acesso a dados atua como cliente
do servidor de Banco de Dados
BDs Orientados a Objeto
• Histórico
– O cliente pode ser tão magro quanto possível.
Idealmente, trata-se apenas de um navegador Web
– Pela Web, as conexões podem ser feitas
– No cliente funciona apenas um componente (ASP, Java,
...)
– Provê a visualização, e a entrada/saída de dados
– Quase um terminal do MainFrame, mas executa
efetivamente processos.
BDs Orientados a Objeto
• Histórico
– Ao ser ativado o processo (componente)
– Verifica-se se a data do que está instalado é
defasada em relação ao do servidor
– Então houve uma atualização
– A versão mais recente é transportada
automaticamente
BDs Orientados a Objeto
• Histórico
– Vantagens
– Pode-se trocar de plataforma com propagação
mínima de efeitos colaterais
• Ex. Para trocar o SGBD é necessário apenas um
ajuste nos objetos de acesso a dados.
– Atualizações de versões automáticas e
imediatas, sem a necessidade de reinstalação on
site.
BDs Orientados a Objeto
• Histórico
– Os componentes podem (e tendem a) ser
projetados preservando-se os princípios de
encapsulamento – Como?
– Os problemas de coesão baixa e acoplamento
alto precisam ser minimizados – Como?
BDs Orientados a Objeto
• Histórico
– Preserva-se o legado do MainFrame, do qual
muitas organizações nunca puderam se
desfazer.
– O cliente magro pode ter uma capacidade de
processamento mais modesta, o que diminui os
custos.
– Esta estrutura, é conhecida como Servidor Web.
BDs Orientados a Objeto
• Histórico
– Mas alguma coisa havia mudado
– A necessidade de componentes e de
encapsulamento
– Este ambiente é o natural para a orientação a
objetos.
– Os ambientes de programação precisam ser OO
– além de gráficos
BDs Orientados a Objeto
• Histórico
– Java começa, então, a ganhar muito espaço
neste contexto. Surgem aplicações visuais Java
– Provêem todas as facilidades dos ambientes de
Visual Basic e Delphi
– Mais Orientação a Objetos
BDs Orientados a Objeto
• Histórico
– Contra a força de Java a Microsoft propõe
padrões proprietários, integrados ao Visual
Basic, mas encontra resistência
– Delphi, por sua vez, passa a ser aproveitada nos
conceitos de Orientação a Objeto
– Sistemas distribuídos em Java, Delphi e Visual
Basic vão se multiplicando a cada dia
BDs Orientados a Objeto
• Histórico
– As arquiteturas de SGBDs evoluíram também
– Até 1960: Sistemas de Arquivos Integrados –
ISAM, VSAM (IBM).
– Crítica: pouco encapsulamento
– Controles de segurança, concorrência,
integridade e recuperação de falhas ficavam a
cargo dos programas aplicativos
BDs Orientados a Objeto
• Histórico
– Se houvesse alguma modificação no modelo,
como garantir que todos os programas
respeitariam a “nova ordem”? Muito
trabalhoso!
– Final dos aos 60: Modelo hierárquico – IMS
(IBM).
BDs Orientados a Objeto
• Histórico
– Uma estrutura de registros pai-filho dispostos
em seqüência, implementando relação um para
muitos de cima para baixo
– Implementava regras de integridade, embora
com limitações, e aspectos de segurança,
recuperação de falhas e controle de
concorrência
BDs Orientados a Objeto
• Histórico
– 1970 e início dos anos 80: Modelo de redes
(Codasyl) – IDMS, DBMS-II (Unisys).
– Extensão do modelo hierárquico, com relações
muitos para um estabelecidas e todas as
direções.
– Modelava toda sorte de relacionamentos com
facilidade.
BDs Orientados a Objeto
• Histórico
– Final dos anos 70: Modelo Relacional (Codd) –
SQL-DS, DB2, (IBM), Oracle, Ingres.
– Relação entre dados, não através de estruturas
internas do banco
– Modela, como o em Rede, toda sorte de
relacionamentos
BDs Orientados a Objeto
• BDs Relacionais X Redes
– Relacionais Tem performance inferior ao em
Redes
– Mas tem linguagens DDL e DML como Quel e
SQL mais simples. Fator decisivo.
– São dominantes hoje
– Final dos anos 80: Modelo reacional-estendido.
Orientado a Objeto. BDOO, O2, Oracle (a
partir da versão 9) ...
BDs Orientados a Objeto
• SQL
–
–
–
–
–
O argumento decisivo a favor dos relacionais
Fácil de usar
Eficiente Eficaz
Padrão
Consagrada em todos os produtos hoje
BDs Orientados a Objeto
• BDOO – Objetos (Apontadores)
• Vantagens prometidas:
– Simplicidade – BDs OO estão para BDs
Relacionais como Java está para C
– Promessa: A performance de BDs em rede sem
a complicação da operação de endereços
internos
BDs Orientados a Objeto
• Relacionais Estendidos
– Um BD relacional sob uma casca orientada a
objeto
– OIDs
– Métodos
– Classes
– Ex: PostGres
Download

BDs Orientados a Objeto