Академический Документы
Профессиональный Документы
Культура Документы
Dados são usados por diferentes pessoas em diferentes departamentos por diferentes razões.
Entretanto, administração de dados deve prover o conceito de dados compartilhados. Usado
propriamente, o SGBD facilita:
1. Interpretação e apresentação de dados em formatos úteis, pela transformação de dados
brutos em informação.
2. Distribuição de dados e informação para a pessoa certa na hora certa.
3. Preservação do dado e monitoramento do uso do dado por períodos de tempo adequados.
4. Controle sobre duplicação e uso de dados, internamente e externamente.
Qualquer que seja o tipo da organização, o banco de dados deve suportar todas as operações
e todos os níveis de tomada de decisão administrativa. De fato, podemos argumentar o seguinte: O
papel principal do BD é dar suporte às tomada de decisão administrativa em todos os níveis da
organização.
A estrutura administrativa de uma organização pode ser dividida em três níveis: principal,
central e operacional. O nível da administração principal toma decisões estratégicas, o nível central
decisões táticas e o nível operacional toma decisões operacionais diariamente, como ilustra a figura
1.1.
O SGBD deve prover ferramentas que dêem a cada nível administrativo uma visão diferente
do dado e deve servir de suporte ao nível de tomada de decisão requerido. Usando esta estrutura,
podemos melhor ajustar o papel designado ao banco de dados em relação as atividades típicas de
cada nível administrativo.
• Nível Principal . O diretor executivo da companhia geralmente foca a formulação de
decisões estratégicas sobre o posicionamento de mercado da companhia, a natureza geral
das operações da companhia, a política geral interna e externa da companhia e outros
usos óbvios que formam o futuro da companhia. Neste nível o BD deve ser capaz de:
1. Prover informação necessária para tomada de decisão estratégica, planejamento
estratégico, formulação de políticas e definições de metas.
2. Prover acesso a dados internos e externos para identificar possibilidades de
crescimento e desenhar a direção deste crescimento.
3. Prover estrutura para definição e obrigação de políticas organizacionais.
4. Melhorar a possibilidade de um retorno positivo no investimento da cia pela pesquisa
de novos meios de reduzir os custos e/ou aumentar a produtividade.
5. Prover feedback para monitorar se a cia está atingindo os objetivos.
• nível intermediário. Tipicamente formula os planos operacionais para possibilitar as
metas do nível principal. Supervisiona, monitora e provê o controle geral das operações
da cia. Também escalona recursos com propósitos a curto e médio prazo. Neste nível o
BD deve ser capaz de:
1. Distribuir os dados necessários para as decisões táticas e planejamento.
2. Monitorar e controlar a alocação e o uso de recursos.
3. Prover estrutura para obrigar e assegurar a segurança e privacidade dos dados no BD.
Segurança significa proteger os dados de uso acidental ou intencional por usuários
1
não autorizados. Privacidade trata os direitos das pessoas e organização para
determinar quem, o que, quando, onde e como os dados serão usados.
Estratégica
Principal
Central
Tática
SGBD
Operacional
Operacional
Banco de Dados
Ter um SGBD automatizado não garante que os dados serão utilizados corretamente para
prover as melhores soluções requeridas pelos administradores. Um SGBD é somente uma
2
ferramenta para gerenciar dados e deve ser utilizada efetivamente a fim de produzir os resultados
desejados. A solução para os problemas da companhia não é a mera existências de um sistema de
computador ou seus BD, mas certamente seu uso e gerenciamento efetivo.
A introdução de um BD representa uma grande mudança e desafio; é como ter um profundo
impacto sobre a organização. O impacto pode ser negativo ou positivo, depende de como o SGBD
introduzido é administrado. Por exemplo, um ponto chave é o SGBD deve se adaptar a organização
e não a organização se adaptar ao SGBD. A introdução de um SGBD é um processo que inclui três
aspectos importantes:
1. Tecnológico: SGBD como software e hardware. Inclui a seleção, instalação e
monitoramento do SGBD para que ele possa ser eficiente no armazenamento, acesso e
segurança dos dados.
2. Gerencial: Funções Administrativas. Somente o SGBD não garante o sucesso da
empresa é necessário elaborar cuidadosamente os projetos para assegurar o sucesso do
banco de dados. É necessário criar uma estrutura de pessoas responsáveis pela
administração do SGBD.
3. Cultural: Resistências corporativa às mudanças. O choque cultural causado pela
introdução de um SGBD deve ser avaliado cuidadosamente. A existência de SGBD
poderá causa efeitos nas pessoas, funções e interações. Normalmente as pessoas devem
ser treinadas, novas funções devem ser alocadas para as pessoas e o desempenho das
pessoas deve ser avaliado para o novo padrão.
Departamento A Departamento B
Gerente Gerente
Arquivos Arquivos
3
Figura 1.2 O especialista de processamento de dados nos departamentos
A chegada do SGBD e sua visão compartilhada dos dados produziu um novo nível de
sofisticação de gerenciamento e induziu que os DPD’s evoluíssem Departamento de Sistemas de
Informações (DSI), a figura 1.3 mostra com foi funcionalmente dividido este departamento. Este
departamento possuía as seguintes responsabilidades:
1. Auxiliar o usuário final no gerenciamento de seus dados.
2. Gerenciar de forma integrada os dados do usuário final na diferentes aplicações.
Sistemas de Informação
Posição Autoritária
Sistemas de Informação
4
Posição de consultor
Sistemas de Informação
Administração de BD
5
Adm. de BD
6
atribuição de responsabilidade e autoridade que o DBA não tem. O localização do DBA dentro da
estrutura da organização varia de empresa para empresa. A tabela 5.1 mostra um contraste entre as
atividades do DBA e DA.
Política:
• Todos os usuários deve possuir uma senha para acesso ao sistema.
• A senha deve ser trocada a cada 30 dias.
Padrões:
• A senha deve possuir no mínimo 5 caracteres.
• A senha deve possuir no máximo 12 caracteres.
• O seguro social não pode ser usado como senha.
7
2 MODELAGEM DE DADOS
8
relacionamento (E-R), que ao ser usado produzimos o esquema conceitual do escopo que está sendo
modelado.
Grau de Abstração Características
Modelo Independente de
Conceitual Alta
hardaware e software
Modelo
Externo
Modelo
Externo
Dependente de
Modelo baixo
hardware e Software
Físico
Entidade
Matrícula
Número_seguro
Primeiro_nome
Último_nome
Nome_meio Atributos de Estudante
Sexo
Data_nascimento
Endereço
Telefone
Com as entidades da figura 4.2 pode-se definir e descrever os relacionamentos entre aquelas
entidades (também chamado de associação ou interações). Os relacionamentos podem ser
classificados em um-para-um (1:1), um-para-muitos (1:N) ou muitos-para-muitos (N:M)
9
Tendo identificado as entidades, um esquema conceitual é usado para relacionar uma
entidade a outra, com pode ser visto na figura 2.3. Note que na figura 2.3 os relacionamentos entre
as entidades são descritos através dos verbos: ensinar, conter, gerar e requer. Isto é, um professor
ensina uma turma, uma turma contém estudantes e uma turma requer uma sala. E, que, os
relacionamentos podem ser descritos de 1:N e de N:M.
Curso
gerar
N
1 N
Professor ensinar Classe contém Estudante
N M
requer
Sala
O modelo conceitual produz algumas vantagens muito importantes. Primeiro, ele forma a
base para o esquema conceitual, no qual prover um entendimento relativamente fácil do ponto de
vista do ambiente dos dados. Por exemplo, pode-se ter um resumo detalhado do ambiente de dados
do pequeno colégio pelo exame do diagrama do esquema conceitual apresentado na figura 2.3.
Segundo, o modelo conceitual é independente de software e hardware. A independência de
software significa a não dependência do SGBD para implementar o modelo. A independência do
hardware significa que o modelo não depende do hardware usado na implementação do modelo.
Portanto, mudanças no hardware ou SGBD não terá qualquer efeito no projeto do banco de dados a
nível conceitual.
Uma vez que o SGBD tenha sido escolhido, o modelo interno adapta o modelo conceitual ao
SGBD. Em outras palavras, o modelo interno requer que o projetista faça o mapeamento das
características e restrições do modelo conceitual para o modelo do SGBD escolhido. Pelo fato do
10
modelo depender da existência de software de SGBD específico, é dito ser dependente do software.
Logo, uma mudança no software de SGBD implica em mudança no modelo interno. No caso do
modelo de SGBD ser relacional menos detalhamento será necessário no modelo interno do que se
fosse escolhido outro paradigma (hierárquico, rede ou objeto).
No caso da figura 2.3, foi implementado o modelo interno pela criação do banco de dados de
um pequeno colégio através das tabelas: professor, curso, turma, estudante e sala. Também, deve-
se criar uma entidade de composição entre sala e estudante. Esta entidade terá o nome de
matrícula, como mostrado na figura 2.4. Em outras palavras, o esquema do banco de dados é o
modelo interno. O modelo interno também é independente do hardware, porque ele não é afetado
quando da mudança do computador no qual o software SGBD está instalado. Logo, uma mudança
no dispositivo de armazenamento ou mesmo uma mudança no sistema operacional não afetará os
requerimentos no projeto do modelo interno.
O modelo físico opera no mais baixo nível de abstração, descrevendo o modo como os
dados estão guardados na mídia de armazenagem, tais como discos e fitas. O modelo físico requer a
definição tanto dos dispositivos de armazenagem físico quanto dos métodos de acesso físico
necessários para obter os dados dentro daqueles dispositivos. Pelo fato do modelo físico requerer
tarefas de armazenamento e recuperação precisas e específica ao dispositivo, ele é dependente do
software e hardware. As estruturas de armazenamentos usadas são dependentes do software (SGBD
e sistema operacional) e do tipo de dispositivo que o computador pode manipular. A precisão
requerida na definição do modelo físico demanda que o projetista de banco de dados que trabalha
neste nível tenha um conhecimento detalhado do hardware e software usados para implementar o
projeto do banco de dados.
Em se tratando de modelo relacional, o projetista não necessita preocupar-se com as
características física para o armazenamento dos dados. Contudo, implementação de um modelo
relacional pode requerer ajustes finos a nível físico para melhorar a performance. O ajuste fino é
especialmente importante quando grandes banco de dados são instalados em ambiente de grande
porte.
Curso
gerar
11
N
MODELO 1 N
Professor ensinar Classe contém Estudante
Figura 2.4 Uma divisão do modelo interno em modelos externos que são
representados pelo esquema externo
Pelo fato do modelo relacional ter tornado-se dominante em projeto de banco de dados, o
enfoque será todo neste modelo. Portanto, será estudado o modelo Entidade Relacionamento (E-R)
que vem sendo usado a vários anos e muito aceito. Ele é uma ferramenta normalmente usada para:
• Traduzir diferentes visões dos dados entre gerentes, usuários e analistas para amoldar dentro
de uma estrutura comum.
• Definir os requerimentos de processamento de dados e as restrições de integridade para
auxiliar o encontro de diferentes visões.
• Auxílio na implementação do banco de dados.
12
2.2.1 OS COMPONENTES DO MODELO E-R
O modelo E-R é a base do diagrama E-R, o qual representa o banco de dados conceitual
como visto pelo usuário final. Esses diagramas representam os três principais componentes do
modelo que são: entidade, atributos e relacionamento. Pelo fato da entidade representar um objeto
do mundo real, as palavras entidade e objeto são frequentemente utilizadas como sinônimo. Logo,
as entidades ou objetos do exemplo da figura 2.3 são: estudantes, sala, professor, e outras.
2.2.1.1 ENTIDADES
Uma entidade no modelo refere-se a uma conjunto de objetos ou entidades do mundo real e
não a um único objeto. Em outras palavras, a palavra “entidade” no modelo corresponde a uma ou
mais tabelas e não a uma linha de algum ambiente relacional. No modelo E-R uma única linha é
denominada de ocorrência da entidade. A entidade é representada por um retângulo contendo um
nome.
2.2.1.2 ATRIBUTOS
Os atributos descrevem as características que foram abstraídas dos objetos do mundo real e
representadas no modelo. O atributo é representado por um circulo contendo um nome e fica
conectado a entidade por uma linha. Por exemplo, na figura 2.6 a entidade estudante possui os
atributos: nome, data de nascimento (dt_nasc) e número do seguro (Nseguro).
13
3 INTRODUÇÃO A BANCO DE DADOS
14
Usuário
Estrutura do banco de Dados
Solicitação da Aplicação
Dados Metadados
SGBD Cliente
Solicitação da Aplicação
Fornecedor
Um bom banco de dados não acontece por acaso; a estrutura de seu conteúdo deve ser
projetada cuidadosamente. Projeto de banco de dados é um aspecto crucial e se mau projetado pode
tornar o SGBD com baixa performance.
Um banco de dados bem projetado facilita o gerenciamento de dados e torna-se um precioso
gerador de informações. Mas, um projeto de banco de dados mau formulado abre a possibilidade de
se ter dados redundantes no banco de dados de forma descontrolada. A redundância descontrolada
são freqüentemente a fonte de dificuldades para tratar informações erradas.
Um banco de dados contém informações redundantes quando o mesmo dado é mantido em
localizações diferentes para a mesma entidade. Por exemplo, quando o número de telefone do
cliente é armazenada em um arquivo de cliente, arquivo de agentes de vendas e um arquivo de
mala direta. Se o número mudar a correção deve ser feitas em todos os locais ela ocorrer.
Entretanto, a existência de dados redundantes pode produzir entradas de dados incorretas e
dificilmente será possível determinar qual dado está correto. Um projeto de banco de dados pobre
tende a gerar erros que levam a tomar decisões erradas. As organizações que utilizam banco de
dados maus projetados freqüentemente falham porque os seus gerentes não tem acesso a
informações em tempo (ou mesmo corretas. Logo, os maus projetos de banco de dados devem ser
eliminados.
Devido ao fato dos bancos de dados serem a fonte de informações geradas, seus projetos são
objetos de estudo detalhado em ambientes modernos. O projeto de banco de dados é extremamente
importante.
15
3.2 ORIGEM HISTÓRICA DE BANCO DE DADOS: ARQUIVOS E SISTEMAS DE
ARQUIVOS
16
separados e não relacionados, o banco de dados consiste de dados relacionados logicamente e
armazenados em um único repositório de dados. Portanto, o banco de dados representa uma
mudança na forma como os dados do usuário são armazenados, acessados e gerenciados. O SGBD,
mostrado na figura 1.3, prover numerosas vantagens sobre o gerenciamento do sistema de arquivos
por facilitar a eliminação de dados inconsistentes, dados anormais e dependência estrutural dos
dados. Melhor ainda, a geração atual de SGBD além de armazenar a estrutura dos dados em locais
centrais, como também armazena o relacionamento entre os componentes. O SGBD prover todas
formas necessárias para o usuário acessar os dados.
Banco de dados
Dept. pessoal
SGDB Pessoal
Vendas
Dept. de Vendas
O SISTEMA DE ARQUIVOS
17
Não podemos esquecer que o SGBD é apenas um dos vários componentes essenciais de um
sistema de banco de dados. O SGBD é o “coração” deste ambiente, mas como o “coração” não
funciona sozinho, assim outros componentes são necessários.
Procedimentos
e Padrões Escreve e força
Administrador Administrador
Analistas do banco de do sistema
dados
Projetista do
banco de dados gerencia
Hardware
Programadores
Usuários
escrevem
Dados
18
2. Software. Refere-se a coleção de programas que são utilizados pelo computador dentro
do sistema de banco de dados. São três os principais tipos de software componentes: o
sistema operacional, o próprio SGBD e os programas de aplicações.
3. Pessoas. Este componentes inclui todos os usuários do banco de dados. Baseado em
funções primárias de serviços, podemos identificar 5 tipos de usuários em um sistema
de banco de dados:
• Administrador do sistema: supervisiona as operações gerais do sistema de banco de
dados.
• Administrador de banco de dados: conhecido como DBA, gerencia usuários do
SGBD e assegura que o banco de dados fique, sempre, em funcionamento.
• Projetista de banco de dados: projeta a estrutura do banco de dados, e o sucesso do
banco de dados se dará em função de um bom projeto.
• Analista de sistemas e programadores: projeta e implementa os programas de
aplicações. Eles projetam e criam as telas de captação de dados, relatórios e
procedimentos que são utilizados pelos usuários para acessarem e manipularem
dados do banco de dados.
• Usuário final: os usuários que utilizam as aplicações para executar as operações
diárias da empresa.
4. Procedimentos: são instruções e regras que governam o projeto e os usuários do banco
de dados. Eles são componentes cruciais no sistema de banco de dados.
5. Dados: a palavra dados engloba a coleção de fatos armazenados no banco de dados.
Devido ao fato do dado ser a matéria-prima para gerar informações, a determinação de
quais dados devem alimentar o banco de dados e como tais dados serão organizados é
a parte vital do serviço de um projetista de banco de dados.
O SGBD, ao qual o sistema de banco de dados é baseado, pode ser classificado de acordo
com número de usuários e a localização do banco de dados.
1. O número de usuários determina se o SGBD é classificado como “usuário único”
(single-user) ou “múltiplos usuários” (multi-user). Um SGBD single-user suportar
somente um usuário por vez. Em outras palavras, se o usuário A está usando o banco de
dados, usuários B e C devem ficar esperando até que o usuário A conclua seu trabalho
no banco de dados. Se o banco de dados single-user executar sobre um computador
pessoal, ele é, também, chamado de banco de dados “desktop”.
2. A localização do banco de dados é usada para classificar o SGBD. Por exemplo, o
SGBD que suporta o banco de dados localizado em um único local é denominado de
centralizado. Mas, se o SGBD suportar a distribuição do banco de dados em diversas
localidades é denominado de distribuído.
19
3.3.3 AS FUNÇÕES DE UM SGBD
20
armazenados no dicionário de dados são usados para força a integridade de dados.
Assegurar integridade de dados é especialmente importante em sistemas de banco de
dados orientados a transações.
8. Linguagem de acesso a dados: O SGBD prover acesso aos dados no banco de dados via
linguagem de consulta. Uma linguagem de consulta é uma linguagem não procedural, isto
é ela permite que o usuário especifique o que deve ser feito sem ter que especificar como
ser feito. As linguagens de consulta do SGBD contém dois componentes: um a linguagem
de definição de dados (DDL) e o outro a linguagem de manipulação de dados (DML). A
DDL define as estruturas na qual os dados serão criados e a DML permite o usuário final
extrair dados do banco de dados. O SGBD, também, permite acesso aos dados através de
linguagens procedurais (3GL), tais como COBOL, C, PASCAL, Visual Basic e outras. O
SGBD, também, prover utilitários administrativos que são usados pelos DBA’s e
projetistas de banco de dados para criar, implementar, monitorar e manter o banco de
dados.
9. Interface de comunicação do banco de dados: A atual geração de SGBD prover rotinas de
comunicação especiais projetadas para permitir que o banco de dados atenda solicitações
dos usuários dentro de um ambiente de rede de computadores. De fato, a capacidade de
comunicação dos SGBD’s é o aspecto essencial dos modernos SGBD’s. Por exemplo, o
SGDB poderia prover funções de comunicação para acessar o banco de dados através da
internet, usando “browsers internet” como o netscape ou o explorer como “front end”.
Neste ambiente, a comunicação pode ser feita de várias maneiras:
• O usuário final pode gerar consultas, através de filtragens em formulários, para serem
tratadas pelo World Wide Web.
• O SGBD pode, automaticamente, publicar relatórios pré-definidos na internet, usando
o formato Web através de browser.
• O SGBD pode conectar-se a um terceiro system para distribuir informações via Email
ou outras aplicações tais como Lotus notes.
O uso de bancos de dados orientados a objeto é um fator emergente que integra bancos de
dados e tecnologia de orientação a objeto. Por um lado, a necessidade de realizar manipulações
complexas em bancos de dados existentes as novas gerações de aplicações de bancos de dados
geralmente requisitam mais diretamente um banco de dados orientado a objeto. Por outro lado,
aplicações de linguagens orientadas a objeto e sistemas estão exigindo capacidades de bancos de
dados, tais como continuidade, simultaneidade e transações, dos seus ambientes. Estas necessidades
estão levando à criação de sistemas poderosos, chamados de dados orientados a objeto, como
mostrado na figura 2.1. As grandes setas representam “herança”, e bancos de dados orientados a
objeto combinam (herdam) características e aptidões de bancos de dados.
Os bancos de dados orientados a objeto iniciaram-se primeiramente em projetos de pesquisa
nas universidades e centros de pesquisa. Em meados dos anos 80, eles começaram a se tornar
produtos comercialmente viáveis. Hoje, eles são mais de 25 produtos no mercado que podem ser
caraterizados como produtos de “bancos de dados orientados a objeto”. Além disso, os
comerciantes de bancos de dados relacionais estão começando a incorporar características de
orientação a objeto em seus produtos de próxima geração baseados em SQL.
21
Tipo abstrato
de dados
Herança
Identidade do
objeto
Orientação a objeto
Recuperação
Transação
Versão
Consulta
Persistência
Integridade
Continuidade
Aptidões de Banco de Segurança
Dados
Desempenho
Ainda que um consenso esteja começando a se formar sobre o que é orientação a objeto e o
que são bancos de dados orientados a objeto, ainda há alguma confusão. Mas, existem grupos que
estão trabalhando a padronização de um ambiente orientado a objeto, como o OMG (Object
Management Group).
Como já mencionado, os bancos de dados orientados a objeto integram a orientação a objeto
com aptidões de bancos de dados. Através de construções orientadas a objeto, os usuários podem
esconder os detalhes da implementação de seus módulos, compartilhar a referência a objetos e
expandir seus sistemas através de módulos existentes. A funcionalidade de banco de dados é
necessária para assegurar o compartilhamento concomitante e a continuidade das informações nas
aplicações. Através dos bancos de dados, os usuários podem obter o estado em que os objetos se
encontram, e estar atualizados entre as várias solicitações de programa, e vários usuários podem ao
mesmo tempo compartilhar a mesma informação. Os bancos de dados orientados a objeto
combinam os benefícios e conceitos da orientação a objeto com a funcionalidade dos bancos de
dados.
Nesta apostila, as seguintes definições serão usadas como referência para caracterizar
bancos de dados orientados a objeto:
A orientação a objeto é definida como:
22
Aptidões de bancos de dados são definidas assim:
É uma disciplina abrangente, que tem permeado muitas áreas em computação, incluindo:
linguagens, interfaces com usuário, inteligência artificial, sistemas operacionais e banco de dados.
Pode ser definida como as disciplinas de modelagem de Software que tornam fácil construir
sistemas complexos a partir de componentes individuais. Que proporciona conceitos e ferramentas
para modelar e representar o mundo real. As vantagens da orientação a objeto na programação e
modelagem de dados são muitas. Como:
• Permite representação mais direta do modelo de mundo real.
• As transformações das requisições do sistema (definidas em termos de usuários) para a
especificação do sistema (definida em termos de computador) são fortemente reduzida.
• Possui a habilidade de construir grandes programas a partir de outros pequenos, pré-
fabricados.
Os três aspectos mais fundamentais do paradigma orientado a objeto são tipos de dados
abstratos, herança e identidade do objeto. Cada um destes conceitos contribui para a engenharia do
Software e para modelar as propriedades dos sistemas orientados a objeto.
Tipos de dados são usados para descrever um conjunto de objetos com a mesma
representação. Várias operações são associadas com cada tipo de dados. Tipos de dado abstratos
estendem a noção de um tipo de dados “escondendo” a implementação das operações definidas pelo
usuário (“mensagens”) associadas com o tipo de dados. Linguagens que suportam tipos de dados
abstratos provêm construções para definir estruturas e as operações usadas para manipular
ocorrências (“instâncias”) das estruturas de dados diretamente. Além disso, todas as manipulações
de instâncias dos tipos de dados são feitas exclusivamente através de operações associadas com o
tipo de dados.
23
Como exemplo, considere um vendedor como representado na figura 2.2. A classe vendedor
tem uma interface com as operações definidas: AdicionaNovaConta, DarPromoção e MudaCota.
O importante a considerar sobre a classe vendedor é que de maneira a inteirar com as instâncias
desta classe, estas operações são suficientes. Um procedimento que venha utilizar esta classe não
precisa se preocupar em como cada operação foi implementada, o que precisa fazer é utilizar as
operações para extrair as informações ou atualizar o estado do pessoal de vendas. Uma linguagem
que permita tipos de dados abstrato permitirá que instâncias de tipos de dados sejam manipuladas
somente através de uma coleção de operações associadas com o tipo.
N om e
Id a de
C on ta
O rdem
A dicion a N ov a C on ta
D a rP rom oçã o
M u d a C ota
O pera çõ es
C la sse V endedor
4.3.2 HERANÇA
Pessoa
Funcionário Estudante
Engenheiro
24
A relação de “herança” indica que além dos atributos ou operações particulares a uma
subclasse, todas as operações e atributos da superclasse são herdados pelas subclasses. Esta é a
essência das hierarquias de heranças. Tipos de objetos herdam a maioria dos seus atributos de tipos
genéricos ou menos especializados.
Orientação a objeto
Um conjunto de esquemas e princípios de desenvolvimento baseados em
estruturas de computação independentes conceitualmente conhecidas com
objeto. Cada objeto representa uma entidade do mundo real com a
habilidade de interagir consigo e com outros objetos.
Como podemos ver na definição, o uso de objetos torna a modularidade quase inevitável. Os
conceitos de orientação a objeto tem sido largamente aplicada em várias disciplinas relacionadas
com computação, especialmente aquelas que envolve programação complexas e problemas de
projeto. A tabela 2.1 resume algumas das contribuições para a orientação a objeto das várias
disciplinas relacionadas com computação.
25
Os conceitos de orientação a objeto tem como base a programação orientada a objeto (POO),
que foi desenvolvida como forma alternativa de programação em relação aos métodos tradicionais.
Antes da POO, dados e procedimentos eram isolados um do outro. Programadores foram treinados
para identificar as fontes de dados, agrupá-los em arquivos e tabelas, para estabelecer relações e
restrições, e escrever procedimentos necessários para produzir certos resultados. Logo, no ambiente
de programação os dados são os componentes passivos, enquanto que os procedimentos que
manipulam os dados são os componentes ativos.
A rígida distinção entre dados e procedimento é fortemente visto em linguagens procedurais,
como exemplo a linguagem COBOL. Utilizando um linguagem procedural, o programador invoca
uma aplicação, que manipula os dados para prover informações. E de forma contrária, em
ambientes de POO o programador solicita aos objetos que execute operações sobre eles.
Os primeiros conceitos de OO apareceram em linguagens de programação tais como: Ada,
Algol, LISP, e SIMULA. Cada uma destas linguagens de programação fixa o estágio da introdução
dos conceitos de OO, que foram expandidos pelas linguagens sucessoras. Atualmente, O Smalltalk
e C++ são as linguagens de programação OO que dominam o mercado. Elas diferem
substancialmente no nível de inclusão da orientação a objeto. O Smalltalk representa um ambiente
puro de OO, enquanto que C++ é essencialmente uma extensão da linguagem C que suporta OO.
As LPOO foram desenvolvidas para prover um ambiente o mais natural possível aos
programadores de Software. Os principais objetivos foram:
• Prover um ambiente de desenvolvimento de Software de fácil uso.
• Prover uma poderosa ferramenta para modelagem de Software através de prototipação.
• Diminuição da equipe de desenvolvimento pela redução da quantidade de código.
Melhoria da produtividade do programador em função da reusabilidade de código.
A adoção de POO muda não somente o modo pelo qual os programas são escritos como
também a forma de agir dos mesmos. Manter em mente como a OO vê os dados do mundo real com
a habilidade de manipulá-los. Consequentemente, o ambiente de OO tem vários atributos
importantes:
1. O conjunto de dados não são passivos, isto é não são tratados de forma isolada.
2. Dados e procedimentos são agrupados, criando um objeto.
3. O objeto tem uma habilidade natural de agir consigo mesmo.
De fato, um objeto pode interagir com outros objetos para criar um sistema. Como tais
objetos carregam consigo os dados e os código torna-se fácil e mais natural produzir módulos de
sistemas reusáveis.
A orientação a objeto tem seus conceitos baseado em LPOO’s, que freqüentemente são
consideradas como linguagens criadas, principalmente, por programadores para programadores, que
tende programar a seu modo no seu próprio mundo.
26
Em sistemas orientados a objeto tudo é tratado como sendo objetos, como: um estudante,
uma fatura, um avião, um empregado, um serviço, um painel de menu, um relatório, e outros.
Alguns objetos são palpáveis (real) e outros não (abstrato). Podemos definir um objeto dentro do
ambiente de orientação a objeto da seguinte forma:
OBJETO
Um objeto é uma representação abstrata das entidades do
mundo real que tem um identificador único, propriedades
embutidas, e a habilidade de interagir com outros objetos e
consigo mesmo.
Note a diferença entre entidade e objeto. A descrição de uma entidade é baseada nos dados
componentes e nos relacionamentos com outras entidade, porém falta a habilidade para manipulá-
los. Posteriormente, outras diferenças serão apresentadas.
O ponto forte da definição de objetos é a identidade única. Para enfatizar este ponto,
examinemos os objetos do mundo mostrados na figura 2.4. Observe que, embora eles possuam
características comuns como: nome, seguro social, endereço, data de nascimento, e outras, cada
objeto tem existência independente no tempo e no espaço.
Objetos
27
endereço físico na memória permanente (disco rígido). Esta característica, permite aos sistemas
orientados a objetos a manter um independência de dados física.
Os objetos são descritos através de seus atributos, conhecidos como variáveis de instância
em um ambiente orientado a objeto. Por exemplo, o estudante João B. Santos mostrados na tabela
2.2. Cada atributo tem um nome único e um tipo de dados associado. Por exemplo, o
número_seguro, o primeiro_nome, e outros. Tipos de dados tradicionais, também conhecidos
como tipos de dados básicos, são utilizados na maioria das linguagens de programação e inclui tipos
como: real, int, string e outros.
Para entender mensagens e métodos, vamos imaginar um objeto como sendo uma noz. O
núcleo da noz representa as estruturas de dados do objeto, e a casca seus métodos, conforme a
figura 2.5.
28
4
Método 1 Método 2
Dados
Método 3 Método 4
Objeto X
Toda operação executada sobre um objeto deve ser implementada por método. Os métodos
são usados para mudar os valores dos atributos do objeto ou retornar valores de atributos de objetos
selecionados. Os métodos representam as ações do mundo real, tais como o número do seguro do
estudante, adicionar um estudante a um curso, ou imprimir o nome e endereço de algum estudante.
Fazendo-se uma analogia métodos são equivalentes as funções em linguagens tradicionais. Em se
tratando de orientação a objetos, métodos representam os comportamentos dos objetos.
Todo método é identificado por um nome e possui um corpo. O corpo é composto de
instruções de computação escritas em alguma linguagem de programação para representar as ações
do mundo real. Com base na tabela 2.2 podemos definir um método que retornará a média das notas
acumuladas total e no semestre para estudante, como segue:
Nome do método
Método MédiaMGA:
xmga = 0;
Nome das variáveis de instância
Para invocar um método uma mensagem tem que ser enviada o objeto. Uma mensagem
enviada com a especificação do objeto receptor, o nome do método e todos os parâmetros
necessários. A estrutura interna do objeto não pode ser acessada diretamente pelo provedor da
mensagem, no qual é outro objeto. Negar acesso a estrutura garante a integridade do estado do
objeto e esconde os detalhes de implementação. A habilidade de esconder os detalhes internos do
objeto (atributos e métodos) é conhecido como encapsulamento.
Um objeto pode enviar mensagens para mudar ou interrogar sobre o estado de outros objetos
(interrogar significa perguntar sobre os valores das variáveis de instância do outro objeto. Para
permitir executar acesso a outro objeto, o como do objeto deve conter referências aos métodos do
outro objeto). Na figura 2.6, podemos ver o esquema de envio de mensagens entre objetos.
29
Objeto A Objeto B Objeto C
Mensagens
4.4.2.5 CLASSE
Usando o exemplo mostrado na tabela 2.2, podemos definir uma classe denominada
Estudante para armazenar os objetos estudantes. Todos os objetos da classe Estudante, mostrado
na figura 2.8, compartilham a mesma estrutura (atributos) e respondem as mesmas mensagens
(implementado pelos métodos). Vamos considera os métodos: média_mga, disciplinas_cursando e
grade_horária. Cada instância de uma classe é um objeto com um único OID, e cada objeto sabe a
qual classe pertence.
30
métodos média_mga disciplinas_cursando grade_horária
Objetos
Número_seguro João B. Santos
Primeiro_nome Maria A. Silva
Variavéis Nome_meio
de Data_nascimento Pedro P. Alves
instância MGA_semestre
MGA_total
Disciplinas
4.4.2.6 PROTOCOLO
A coleção de mensagens da classe, cada uma identificada por um nome, estabelece o objeto
ou protocolo da classe. O protocolo representa os aspectos públicos dos objetos, isto é, os aspectos
são conhecidos por outros objetos como também pelo usuário final. Em contrapartida, a
implementação dos métodos e da estrutura constitui os aspectos privados do objeto, na figura 2.9
são ilustrados tais aspectos.
Protocolo
Mensagem 4
Usualmente, uma mensagem é enviada para uma instância da classe (objeto). Quando o
objeto receptor é uma classe, a mensagem invocará um método da classe. Um exemplo de método
da classe é o método new da linguagem smalltalk. Usando-se smalltalk , o método de classe new
é um gatilho (“trigger”) para criar novos instâncias na classe (objeto com OID único) receptora.
Devido ao fato do objeto ainda não existe, a mensagem new é enviada para a classe e não para o
objeto.
31
Aspecto Privado Aspecto Público
Protocolo
é uma coleção de
Definição da classe
pertence a uma
define um conjunto é implementado
de valores para por conjunto um
suas Objeto que dispara um
de
tem
Para entender melhor os conceitos que foram discutidos anterior a figura 2.10 resume as
características de objeto.
32
Instrumentos musicais superclasse
superclasse/
Instrumentos de corda Instrumentos de sobro subclasse
A herança simples existe quando uma classe tem somente um pai imediato. Na hierarquia de
instrumentos musicais as heranças ilustradas na figura 2.11 são do tipo simples. A maioria dos
sistemas suportam herança simples. Quando o sistema envia uma mensagem para um objeto da
classe, a hierarquia inteira é pesquisada para comparar o método, usando a seguinte seqüência:
1 - Busca a classe a qual o objeto pertence.
2 - Se o método não é encontrado, então busca na superclasse.
O processo de busca é repetido até que uma das situações abaixo ocorra:
1 - O método é encontrado.
2 - O topo da hierarquia é encontrado. O sistema gera uma mensagem indicativa de que o
método não foi encontrado.
A herança múltipla existe quando uma classe possui dois ou mais pais. Os objetos da classe
herda as características de suas superclasses. A figura 2.12 ilustra que uma classe pode ser derivada
de várias superclasses localizadas um nível acima na hierarquia de classes.
motocicleta subclasse
33
4.4.2.8 SOBREPOSIÇÃO DE MÉTODOS E POLIMORFISMO
empregado
Variável de instância: salário
Método: bonus = salário * 0.05
Vamos examinar o exemplo apresentado na figura 2.13, note que definimos um método
denominado bônus para calcular a gratificação de natal para todos os empregados. A computação
do bônus é especifica para cada categoria de empregado. No caso apresentado, com exceção de
piloto, um empregado recebe uma gratificação de salário igual a 5 porcento de seu salário. Pilotos
recebem de gratificação de natal o acumulado pago por vôo que é muito melhor do que o salário
anual. Por definição o método bônus da classe de piloto substituirá o método herdado na classe
empregado, e o método bônus será sobreposto na classe piloto pelo seu método local e será
aplicado a todos os objetos da classe. Contudo, a redefinição do método bônus na classe piloto não
afetará o cálculo da gratificação dos demais empregados. De forma contrária a sobreposição de
métodos, polimorfismo permite que diferentes objetos respondam a mesma mensagem de forma
diferente. Polimorfismo é um aspecto muito importante no ambiente de orientação a objetos porque
ele permite que objetos comporte-se de acordo com suas características específicas. Em termos de
orientação a objeto, polimorfismo significa:
1 - Que podemos usar o mesmo nome para definir um método em diferentes classes na
hierarquia de classes.
2 - O usuário pode enviar uma mesma mensagem para diferentes objetos que pertence a
diferentes classes e sempre gerar uma resposta correta.
É a propriedade que o objeto tem que o distingue dos demais. O tipo mais comum de
identidade de objeto nas linguagens de programação, nos bancos de dados e nos sistemas
operacionais são os nomes de objetos definidos pelo usuário final. Utilizando a identidade do
objeto, os objetos podem conter outros objetos ou se referir a eles. Isso elimina a necessidade de
utilizar nomes de variáveis que não tenham suporte de identidade de objeto, mas apresenta algumas
limitações práticas. Uma limitação é que um único objeto pode ser acessado de várias maneiras:
assim, um objeto pode ser relacionado a diferentes variáveis o que torna difícil saber se se refere ao
mesmo objeto.
34
Um método utilizado para a identificação de objetos são os nomes de caminhos do Sistema
Operacional como o UNIX e DOS. Esses SO possuem estruturas de diretórios hierárquicas nas
quais cada diretório contém um grupo de arquivos e possivelmente outros diretórios. O nome do
arquivo deve ser único no diretório e cada arquivo é acessível por um caminho.
35
• O número da previdência social de cada empregado deve ser exclusivo no conjunto de
todos os empregados.
• Uma pessoa deve ter um nome, e este atributo não pode ficar vazio ou nulo.
Como todos esses exemplos sugerem, muitos tipos de restrições de integridade devem ser
impostos a um banco de dados para manter sua coerência.
Sistemas de bancos de dados relacionais possuem diversas categorias de restrições de
integridade, como restrições de integridade referenciais, domínios e restrições não-nulas (NOT
NULL). A maiorias dessas restrições valem também em bancos de dados orientados a objeto,
embora, devido às construções orientadas a objeto e ao expressivo poder do modelo de objetos,
algumas restrições não sejam mais relevantes (como as restrições referencias) ou tomem uma forma
diferente (como os domínios). Na verdade, os conceitos orientados a objeto dos bancos de dados
orientados a objeto introduzem outros tipos de restrição de integridade ou especificações de
restrição de integridade.
Entre as restrições de integridade dos bancos de dados orientados a objeto discutiremos as
seguintes:
1. Restrições de chave exclusiva/primária.
2. Restrições referenciais a existenciais.
3. Restrições NOT NULL.
4. Restrições de integridade de domínio.
5. Gatilhos (triggers).
Nos bancos de dados relacionais, é comum a especificação de chaves, onde uma ou mais
chaves são especificadas para várias tabelas de bancos de dados. Nos bancos de dados orientados a
objeto, as chaves também são relevantes para todo tipo de grupo de tuplas ou instâncias da classe.
Conjunto de instâncias de uma classe podem ser a extensão da classe ou um objeto do conjunto
cujos elementos são especificados para serem instâncias da classe. Em ambos os casos, será útil
identificar um ou mais atributos como chaves, ambos como uma restrição e como uma dica para
fornecer pesquisas mais rápidas quando valores de chave forem fornecidos.
Portanto, uma chave é um ou mais atributos de uma classe que identifica exclusivamente
uma instância da classe em um grupo. Se uma chave consiste em mais de um atributo (coluna), ela é
chamada chave composta. A figura 2.14 ilustra duas chaves candidatas: o número do seguro social e
o nome do funcionário.
funcionario
chave número do nome
candidata seguro social
nome do
inteiro
funcionario
primeiro último
composiçao
caracter caracter de chave
candidata
36
Figura 2.14 Chaves candidatas para a classe funcionário
Há um outro tipo de restrição para modelos baseados na identidade , que está relacionado a
restrições de integridade referencial: a restrição de identidade existencial. O objetivo de restrições
existenciais é indicar que, se um objeto é compartilhado referencialmente, então ele possui um
domínio “ativo”, ou seja, um grupo específico de objetos da mesma classe que no momento
existem. A restrição existencial indica que o objeto deve sempre existir em seu domínio ativo. A
figura 2.15 ilustra esta restrição para um objeto funcionário e número_telefone_serviço. Este
número é associado ao telefone de uma classe escritório, a existência da numero_telefone_serviço
esta vinculada a existência do telefone no escritório.
funcionário escritório
string
RE
Os conceitos de um valor nulo(NULL) e uma restrição não-nula (NOT NULL) são úteis em
bancos de dados orientados a objeto. Para suportar a restrição não-nulo, o banco de dados orientado
a objeto deve suportar valores nulos. Um valor nulo representa um valor de atributo ausente.
Em muitas aplicações, valores nulos são essenciais para suportar análise estatística. Por
exemplo, suponha que desejemos obter a pontuação média em teste de todos os alunos de uma
classe. Algumas pontuações serão nulas, isto é, estarão ausentes ou indisponíveis por razões
diversas e não poderão ser consideradas.
Em geral, quando um atributo ou uma coluna é declarado como do tipo T, os valores de
atributo da classe podem ser valores T ou nulos. Por exemplo, se a idade for do tipo inteiro, então a
idade de uma pessoa poderá ser um valor maior ou igual a zero ou nulo. O nulo representa ausência
de informações ou desconhecida.
São regras declaradas como predicados que não devem ser violados. Esta associada ao
domínio do estado do objeto. Ou seja, que valores são possíveis para as variáveis de instância dos
objetos valorados na classe. Exemplo: Os valores válidos para dias da semanas são entre 0-6, onde
0 é domingo e 6 é sábado.
37
4.6.5 GATILHOS (TRIGGERS)
São procedimentos ou ações no banco de dados que são ativadas quando determinadas
condições são satisfeitas. Um gatilho, conceitualmente, consiste em um componente condição e um
componente ação.
Exemplo:
U s u á r io 1 U s u á r io 2
38
Dadas as situações, o sistema de banco de dados em questão deve garantir que o banco de
dados seja mantido em um estado coerente na presença de manipulações de objetos conflitantes e
em conjunto. A manipulação de objetos é via transações no BD. Tradicionalmente, uma transação é
uma seqüência de ações sobre os objetos persistentes e satisfaz as propriedades: atomicidade,
coerência, isolamento e durabilidade (ACID).
Estado S1 Estado S2
Pastas Pastas
Funcionarios Funcionarios
Os níveis de isolamento.
a) capacidade de serialização: é o maior nível de isolamento possível sem comprometer a
coerência do BD. As transações são serializáveis se a execução intercalada de suas
operações produzir os mesmos efeitos no BD que sua execução em ordem serial. A figura
2.18 ilustra as transações de T1 a T5.
39
T1
T2
T3
Execução concorrente
T4 de T1, ..., T5
T5
T1 T2 T3 T4 T5
T1 T3 T2 T5 T4
b) Leitura “sujas” (Dirty page) : é o nível mais restrito de isolamento do que a capacidade
de serialização é permitir leituras “sujas”. Significa: que uma transação T1 leia os estados
do objeto O1 modificados pela transação T2 antes de T2 terminar.
As propriedades ACID são aplicáveis tanto para aplicações de banco de dados convencional
(relacional) como para aplicações de BDOO. Vários recursos são, no entanto, mais característicos
de aplicações de banco de dados avançadas, como o CAD, o CAM, CASE e escritórios inteligentes.
40
denominada transação-pai. As subtransações são isoladas umas das outras e satisfazem as
propriedades. ACID. A figura 2.19 ilustra um transação aninhada.
Transação longa
Transação concluída
41
4.7.2 CONTROLE DE CONCORRÊNCIA
1) Bloqueio de duas fases: é normalmente utilizado para garantir que as transações sejam
serializáveis. Esse protocolo separa claramente uma transação em uma fase de crescimento
e outra de redução. Durante a fase de crescimento, todos os bloqueios devem ser
adquiridos, possivelmente de forma incremental. Durante a fase de redução, todos os
bloqueios são liberados, possivelmente de forma incremental. O seguinte protocolo de
bloqueio satisfaz ao protocolo de bloqueio de duas fases:
a) antes de realizar uma operação de leitura em um objeto, a transação deve adquirir um
modo de bloqueio compartilhado para esse objeto.
b) antes de realizar uma operação de gravação em um objeto, a transação deve adquirir um
modo de bloqueio exclusivo para esse objeto.
c) depois de liberar um bloqueio, a transação não deve mais adquirir bloqueios.
42
de bloqueio de multigranularidade é minimizar o número de bloqueios a serem
estabelecidos ao acessar o banco de dados.
3) Bloqueio de hierarquia de classe: as classes em um BDOO são organizadas em hierarquias.
O bloqueio em uma superclasse bloqueia implicitamente todas as suas subclasses no
mesmo modo de bloqueio.
4) Bloqueio de intenção: é estabelecer intenção de bloqueio na classe antes de estabelecer
operação de bloqueio nas instâncias. Assim, uma transação deve estabelecer um bloqueio
com intenção de leitura (intention-read : IR) em uma classe antes de estabelecer bloqueios
de leitura em instâncias da classe. Da mesma forma, uma transação deve estabelecer um
bloqueio com intenção de gravação (intention-write: IW) em uma classe antes de
estabelecer bloqueios de gravação nas instâncias da classe.
Às vezes, uma transação pode querer ler muitas instâncias de uma classe e modificar
somente um número pequeno dessas instâncias. Isto pode ser feito pelo estabelecimento de
um bloqueio de leitura com intenção de gravação (RIW) na classe e, somente na hora de
realizar a gravação o bloqueio é estabelecendo. Na tabela 2.3 é mostrada uma matriz de
compatibilidade para diferentes tipos de bloqueios em uma esquema de bloqueio de
multigranularidade.
Observações importantes:
R W IR IW RIW
R S N S N N
W N N N N N
IR S N S S S
IW N N S S N
RIW N N S N N
4.8. VERSIONAMENTO
43
mesmo objeto e a relação das versões entre si (a árvore de derivação). Esse procedimento é muito
trabalhoso e predisposto a erro. Assim, em aplicações de projeto complexas, o gerenciamento de
versão é um utilitário extremamente útil e poderoso.
Muitas aplicações de engenharia e de projeto utilizam o versionamento para criar
progressivamente mais versões aperfeiçoadas do objeto de projeto. Em aplicações de engenharia de
projeto, os objetos são normalmente armazenados em um repositório central (persistente). Os
projetistas fazem o check-out do objeto persistente a partir do banco de dados, trabalham nele e,
quando acharem que possuem a melhor implementação, fazem o check-in do objeto como uma
versão diferente. Depois que o objeto versionado é criado, novas versões do objeto podem ser
criadas de forma linear ou em grafo. A principal propriedade comum a todas as versões do mesmo
objeto é a identidade do objeto. Por toda a história versionada, um objeto pode passar por muitos
estados e até por modificações estruturais.
Se todas as versões de um objeto forem criadas seqüencialmente, obteremos um conjunto de
versões lineares. No versionamento geral, no entanto, vários projetistas podem criar versões
alternativas de um objeto. Na figura 2.20 é ilustrado o conjunto de versões de um objeto O1. Onde
cada versão possui sucessores e predecessores.
V3
Versões alternativas V2
V6
V4 V5
Por exemplo, para criar uma versão no SGBD Iris, um usuário deve primeiro nomear e fazer
um check-out dos sucessores e predecessores de uma versão. Usando a figura 6.1, temos: O
sucessor(v2) retornará todos os sucessores de v2:{v4, v5, v7} e o predecessor (v6) retornará os
predecessores de v6:{v3, v1}.
Banco de dados distribuído é um banco de dados único que pode ser compartilhado por
múltiplos computadores em uma rede. As aplicações acessam o banco de dados local e remoto por
processamento distribuído, e com transações em tempo real. As aplicações de banco de dados
distribuídos podem ser caracterizadas como aplicações de banco de dados distribuído. A
complexidade do sistema de banco de dados distribuído é transparente ao usuário final, porque ele é
tratado como um banco de dados lógico único pelo SGBDD – Sistema de Gerenciamento de Banco
de Dados Distribuído.
44
5.1 EVOLUÇÃO PARA SGBDD
• Dados localizados mais próximos da demanda – os dados são distribuídos de acordo com a
requisição do negócio;
• Acesso mais rápido – os dados são distribuídos em vários locais;
• Processamento mais rápido – o processamento dos dados em diferentes locais não
sobrecarrega o sistema;
• Facilidades de ampliações – novos pontos de dados distribuídos podem ser adicionados à
rede sem afetar as operações normais;
• Melhora na comunicação – comunicação mais rápida e melhor entre as unidades de
negócios e os clientes, favorecendo a independência de informações locais necessárias aos
negócios;
• Redução nos custos de operações – os custos com as linhas de comunicação entre micros
ficam menores devido a distribuição dos dados.
• Menor falha – no caso de falha de alguma localidade, não afeta o sistema como um todo
(na maioria das vezes).
45
5.2.1 PROCESSAMENTO DISTRIBUÍDO
Computador A
SGBD
Banco de
dados de
vendas
Brasília
Rede de
Comunicação
Computador B Computador C
46
trabalhando em um SGBD centralizando escondendo toda a complexidade de um SBDB distribuído
com total transparência. Segue as características transparentes:
• Distribuição transparente – permite que os vários segmentos de banco de dados seja
tratado como um único banco de dados lógico. O usuário não precisa saber que os dados
estão particionados em diferentes localidades.
• Transação transparente – permite a atualização dos dados em diversas localidades na
rede, garantindo que a transação seja completada ou abortada para manter a integridade
dos dados.
• Falha transparente – garante o funcionamento do sistema caso ocorra falha em um
determinada localidade.
• Performance transparente – permite que o sistema tenha a performance de um SGBD
centralizado, minimizando ao máximo a degradação pelo uso da rede, buscando sempre o
melhor caminho para os acessos remotos.
• Heterogeneidade transparente – permite a integração de diferentes SGBD’s locais
(relacional, híbridos, objeto e outros) em um esquema global, transferindo as requisições
do esquema global para o esquema do SGBD alvo.
Computador A
SGBD
Banco de
dados de
vendas
Brasília
Rede de Computador C
Computador B Comunicação
SGBD SGBD
Banco de Banco de
dados de dados de
vendas vendas
47
6 A ARQUITETURA CLIENTE-SERVIDOR PADRÃO CORBA
A arquitetura comum para atender solicitações de objetos (Common object request broker
architecture – CORBA) é o mais importante e ambicioso projeto de “middleware” (servidor de
regras de negócio) já empreendido pela industria de computadores. O corba é produto de um
consórcio, denominado OMG (Object Management Group), que inclui em torno de 800
companhias, representado o espectro completo de industrias de computadores. A notável exceção é
a MICROSOFT, que possui seu próprio padrão de objetos distribuídos, denominado DCOM
(Distributed Component Object Model). Para os demais fabricantes de computadores o corba é a
próxima geração de middleware.
O barramento de objetos corba – ORB (Object Request Broker) define a forma de seus
componentes e como eles operam. Consequentemente, pela escolha de um barramento de objetos
aberto, a industria está, também, escolhendo criar campo de execução aberto para seus
componentes. O que faz o corba ser tão importante é que ele define “middleware” com o potencial
de incorporar todas as outras formas de “middleware” existentes no mercado. O middleware é um
termo vago que engloba todos os software de distribuição necessário para suportar as interações
entre o cliente e o servidor, ele é o bloco intermediário na arquitetura cliente/servidor conforme
pode ser visto na figura 4.1. Corba utiliza objetos padrões para tratar as aplicações existente no
barramento, e prover uma base sólida para os novos componentes. Ele especifica um conjunto
extenso de serviços relativos ao barramento para criar e apagar objetos, acessá-los por nome,
armazená-los em repositórios persistentes, externalizando seus estados, e definindo relacionamentos
aleatórios “ad hoc” entre eles.
Talvez o segredo do sucesso da OMG seja criar especificações de interface e não código. As
especificações são escritas em Linguagem de Definição de Interface (IDL) que define os limites dos
componentes. Os componentes escritos em IDL deveriam ser portáveis através de linguagens,
ferramentas, sistema operacional e rede. E com a adoção da especificação em dezembro de 1994,
estes componentes passaria a interoperar com os agentes de objetos padrão CORBA.
Objetos corba são “porções inteligentes” que podem viver em qualquer lugar na rede. Eles
são empacotados como componentes binários que os clientes remotos passam a acessar via
invocação de métodos. A linguagem e o sistema operacional usados para criar os objetos nos
servidores são totalmente transparentes ao cliente. Os clientes não necessitam saber onde os objetos
distribuídos residem ou qual sistema operacional o executa. Os objetos podem estar no mesmo
48
processo do cliente ou em qualquer maquina da rede intergalática. Os clientes não necessitam saber
como os objetos do servidor estão implementados. Por exemplo, um objeto servidor poderia estar
implementado como um conjunto de classes C++, ou o poderia ser implementado como milhares de
linhas de código COBOL, o cliente não sabe a diferença. O que o cliente necessita conhecer é a
interface pública dos objetos servidores. A interface é a ligação entre cliente e servidor.
C Java C Java
Figura 4.2 A IDL do corba prover ligação entre linguagens na arquitetura Cliente/Servidor
49
⎢ Para algum objeto requerer alguma coisa de outro objeto, ele deve conhecer a interface do
objeto alvo.
⎢ O repositório de interface corba contém a definição de todas essas interfaces. Ele contém
metadados que permite componentes descobrir outro objeto dinamicamente em tempo de
execução.
7 BIBLIOGRAFIA
1 – [COR 97] Coronel, Carlos & Rob, Peter. DATABASE SYSTEMS:design, implementation, and
management. 3ª edição, Course Technology, 1997, Canada.
2- [ORF 97] Orfali, Robert & at.all. The Essential Client/Server Survival Guide. 2ª edição, Wiley,
1997, New York.
3 – [ORF 98] Orfali, Robert & Harley, Dan. Client/Server Programming with Java and Corba. 2ª
edição, Wiley, 1998, New York.
4 – [KHO 94] Khoshafian, Setrag. Banco de dados orientado a objeto. IBPI Press, 1994, Rio de
Janeiro.
5 – [KOR 89] Korth, Henry F. Sistema de banco de dados. McGrall-Hill, 1989, São Paulo.
50