Bancos de Dados não Convencionais Conteúdo 1. Introdução – Integração de BDs com outras áreas • Visão dos sistemas • Visão das aplicações – Limitações dos BDs Relacionais – Sistemas de BDs Pós-Relacionais 2. Bancos de Dados Orientado a Objetos 3. Bancos de Dados Objeto-Relacionais 4. Seminários Profa. Valéria Gonçalves Soares DI/UFPB Modelos de Dados Tradicionais 1. Introdução Bancos de Dados têm se tornado um componente essencial na vida diária da sociedade moderna. – Sistemas bancários, reserva de hotel ou de passagem aérea, biblioteca digital, ou, controle de estoque de supermercados. – – – – – Esses sistemas são todos exemplos do que chamamos aplicações tradicionais de bancos de dados. Necessidades das novas Aplicações Estruturas mais complexas Satisfatórios para muitos tipos de aplicações comerciais; Restritos para aplicações mais complexas como: bancos de dados para projeto de engenharia Experimentos científicos Telecomunicações SIG Multimídia. Características das novas Aplicações de objetos; Transações de maior duração; Novos tipos de dados para o armazenamento de imagens; Necessidade de definição de novas operações. Bancos de Dados Multimídia podem armazenar imagens, vídeo clips e mensagens de sons; Sistemas de Informações Geográficas podem armazenar e analisar mapas, dados climáticos e imagens de satélites; Data Warehouses e OLAP são usados para extrair e utilizar informações para tomada de decisões; Bancos de dados Ativos e tempo real são usados no controle industrial e em processos de manufatura. 1 Diferentes Aplicações Sistemas de Bancos de Dados BD Multimídia BD Distribuídos Sistemas Distribuídos & Internet BD Distribuídos OLAP Sist. de Suporte a Decisão Comércio Eletrônico BD Multimídia Sist. de Suporte a Decisão BD Dimensional Sistemas de Bancos de Dados Aplicações de Bancos de Dados Outras áreas Espacial BD Ativo Data Mining BD OO Espacial Limitações dos BDs Relacionais CAD/CAM/SIGs Diagnóstico Monitoramento BDD BD de Restrições BDDOO Linguagens de Programação Espaço Temporal BDOO Ativo BDD Ativo Restrições integridade Temporal BDOO Outras áreas Inteligência Artificial Linguagens de Programação BDD BD Temporal Sistemas Distribuídos & Internet DW Inteligência Artificial DW Digital Publishing Não possuem mecanismos para a definição e manipulação de tipos de dados complexos Não suportam itens de dados de grandes tamanhos Permitem apenas consultas com noções precisas Não permitem consultas ad-hoc Baixa performance e dificuldades de implementação para aplicações mais complexas DW BDOO BD Espacial BD Ativo “Pontos Fortes” dos BDs Relacionais Extensões ou novos modelos devem oferecer: – declaratividade – robustez – simplicidade (usa poucos conceitos poderosos) – fundamentos formais – tecnologia madura e eficiente para: • oferecer persistência • garantir segurança • gerenciar memória secundária • controlar transações Sistemas de BDs PósRelacionais BD x DSS: – BD Multidimensional – Data Mart – BD Distribuídos Warehouse/Data • BD Federados – BD Temporal • Arquitetura de Mediadores BD x Aplicações: – BD x Agentes – BD Ativo – BD Multimídia – BD Orientado a Objetos – BD Objeto-Relacional BD x IA: – BD Dedutivo BD x Sist. Distribuídos/Internet: BD x SIG – BD Espacial 2. Bancos de Dados Orientados a Objetos Porque sistemas e objetos? – Os produtos SQL e modelo relacional eram inadequados; – A idéia de incorporar características de orientação a objetos a sistemas de bancos de dados surgiu naturalmente. Principal objetivo: – Elevar o nível de abstração acabando com o uso de chaves estrangeiras. – BD Dedutivo OO – BD de Restrições 2 Bancos de Dados Orientados a Objetos Se propõem a atender as necessidades de aplicações mais complexas; Metodologia OO oferece flexibilidade para manipular alguns desses requisitos sem limitar ao tipo de dado ou à linguagem de consulta específica; Poder de especificar a estrutura de objetos complexos e as operações que podem ser aplicadas a estes objetos. Bancos de Dados Orientados a Objetos Dificuldades: – Muita informação no banco de dados ⇒ simplifica alguns problemas e dificulta a solução de outros; Revisão dos Conceitos de OO Um objeto tipicamente possui dois componentes: o estado (valor) e o seu comportamento (operações). Características do BDOO – Objeto X Variável Objetos em LPOO existem apenas durante a execução do programa enquanto que em BDOO objetos podem ser armazenados permanentemente, de modo a serem persistentes. – Chave Primária no Banco de Dados Relacional Características do BDOO Objetos apresentam uma estrutura de de complexidade arbitrária descrevem um objeto. O encapsulamento é obtido definindo uma operação em duas partes: – A assinatura da interface, que especifica o nome e os seus argumentos, – O método ou o corpo, que especifica a implementação da operação. Operações podem ser invocadas através da troca de mensagens entre objetos. objeto Mantém uma correspondência direta entre o mundo real e os objetos do banco de dados de modo que os objetos não percam sua integridade e identidade. BDOO provêem uma identificação de sistema única OID (Object identifier) para cada objeto. Outras Características OO Hierarquia de Tipos e Classes e Herança : características que permitem a especificação de novos tipos que herdam suas estruturas e operações de tipos ou classes previamente definidos. Polimorfismo de operadores: se refere à habilidade de uma operação ser aplicada em diferentes tipos de objetos. Ex. Um nome de operação pode referenciar várias implementações distintas. 3 Estrutura do Objeto 2.1 Identidade do Objeto BDOO provê uma identidade única para cada objeto independente armazenado no BD. Esta identidade é provida pelo Object Identifier (OID). A principal característica do OID é que ele é imutável. OID é independente dos valores dos atributos do objeto. O estado corrente de um objeto complexo pode ser construído a partir de outros objetos pelo uso de construtores de objetos. Uma maneira de representar os objetos é ver cada um deles como uma tripla (i, c, v) de modo que i é o identificador único do objeto, c é o construtor de tipo e v é o estado do objeto. Os construtores básicos são atômicos, tupla e conjunto. Mas também podem incluir lista, bag e array. Exemplos de Especificação de Tipos Construtores de Tipos Uma linguagem de definição de objeto (ODL) pode ser usada para definir o tipo de um objeto em uma aplicação. O construtor de tipo pode ser usado para definir a estrutura de dados de um esquema de banco de dados OO. Também pode-se incorporar definições de operações (métodos) dentro de esquemas OO. Exemplos de Especificação de Tipos define type Departamento: tuple( dnome: dnumero: gdept: string; integer; tuple(gerente:Empregado; datainicio:Data; ); localizacoes: set(string); empregados: set(Empregado); projeto: set(Projeto); ); define type Empregado: tuple( pnome: inicial: unome: cpf: datanasc: endereco: sexo: salario: superior: dept: define type Data tuple ( ano: integer; mes: integer; dia: integer; string; char; string; string; Data; string; char; float; Empregado; Departamento; ); ); 2.2 Encapsulamento de Operações, Métodos e Persistência A principal idéia do encapsulamento é definir um comportamento de um tipo de objeto baseado em operações. A estrutura interna do objeto é escondida e apenas o mesmo é acessível apenas por suas operações. A implementação de uma operação pode ser especificada por uma linguagem de programação de propósitos gerais. 4 Comportamento do Objeto Usuários externos ao objeto são informados a respeito do mesmo apenas através de sua interface, que define o nome e os argumentos de suas operações. – A implementação é escondida dos usuários externos, bem como a definição das estruturas internas e a implementação das operações que acessam essas estruturas. – Em terminologia OO a parte da interface de cada operação é chamada de assinatura, e a implementação da operação é chamada de método. Um método é invocado através do envio de mensagens ao objeto. Comportamento do Objeto Muitas vezes, em bancos de dados, a exigência de que todos os objetos sejam completamente encapsulados se torna muito rigoroso. – A estrutura de um objeto pode apresentar atributos visíveis e escondidos. Operações que atualizam o estado de um objeto são encapsulados. O termo classe é utilizado para referenciar a definição do tipo do objeto. Operações típicas incluem o construtor e o destrutor. Exemplo de definição de uma classe de objetos define class Empregado: type tuple( pnome: inicial: unome: cpf: datanasc: endereco: sexo: salario: superior: dept: operations idade: cria_emp: destroi_emp: end Empregado; string; char; string; string; Data; string; char; float; Empregado; Departamento; integer; Empregado; boolean; Persistência de Objetos – Objetos transientes existem durante a execução do programa e depois desaparecem ao término do mesmo. – Objetos persistentes são armazenados no banco de dados e persistem após o término do programa. • Nomeação e alcançabilidade ); Nomeação mecanismo envolve dar um único e persistente nome ao objeto através do qual ele possa ser recuperado por este e outros programas. O objetos persistentes nomeados são usados como pontos de entrada através dos quais os usuários passam a acessar o banco de dados. Alcançabilidade Esse – Não muito prático. Um objeto é tipicamente criado através de um programa de aplicação que invoca o seu método construtor. Nenhum objeto está definido para ser permanentemente armazenado no banco de dados. Torna o objeto alcançável através de um outro objeto. – Um objeto B é dito alcançável a partir do objeto A se uma seqüência de referências no grafo do objeto leva do objeto A ao objeto B. Se por exemplo, definirmos um objeto persistente nomeado N, cujo estado é uma lista de objetos de alguma classe C, podese criar objetos persistentes da classe C, adicionando os mesmos a esta lista, fazendo-os então alcançáveis a partir de N. Então N define um coleção persistente de objetos da classe C. – BD Tradicionais X BD OO 5 Exemplo de Objetos Persistentes 2.3 Hierarquias de Tipos e Herança Define class ConjDepartamentos: type set(Departamento); operations adic_dept(d:Departamento): boolean; remove_dept(d:Departamento): boolean; cria_dept_conj: ConjDepartamentos; destroi_dept_conj: boolean; End ConjDepartamentos; Persistent name TodosDepartamentos: ConjDepartamentos; ... d:= cria_dept; B:= TodosDepartamentos.adic_dept(d); Existem numerosos objetos de um mesmo tipo em aplicações de BD. Uma característica de BDOO é que o sistema permite a definição de novos tipos baseados em outros pré-definidos, levando a uma hierarquia de tipos. Tipicamente um tipo é definido pela atribuição de um nome e pela definição de atributos e operações. Muitas vezes os atributos e as operações são chamados de funções, onde os atributos representam funções sem argumentos. Hierarquias de Tipos Hierarquia de Tipos Em sua forma mais simples, um tipo pode ser definido pela atribuição de um nome e então pela lista de suas funções visíveis (públicas). Sintaxe: Exemplo: EMPREGADO: Nome, Endereco, Datanasc, Idade, CPF, Salario, DataContratacao, TempoTrabalho ALUNO: Nome, Endereco, Datanasc, Idade, CPF, Graduacao, CR TYPE_NAME: function, function, ..., function PESSOA: Nome, Endereco, Datanasc, Idade, CPF O conceito de subtipos é útil quando o projetista ou o usuário pode criar um novo tipo que é similar, mas não idêntico, a um tipo já definido. Exemplos: Tanto ALUNO como EMPREGADO possuem funções definidas para PESSOA adicionadas de mais algumas próprias. Hierarquias de Tipos ALUNO e EMPREGADO, podem, então, ser definidos como subtipos de PESSOA: EMPREGADO subtype_of PESSOA: Salario, DataContratacao, TempoServico ALUNO subtype_of PESSOA: Graduacao, CR Hierarquias de Tipos Em geral um subtipo inclui todas as funções que estão definidas para o supertipo, adicionadas a algumas funções que são especificas ao subtipo. – Desta forma, é possível definir uma hierarquia de tipos para mostrar todos os relacionamentos entre os supertipos e seus subtipos. 6 Exemplo de Subtipos na Geometria OBJETO_GEOMETRICO: PontoReferencia Forma, Area, Extensões RETANGULO subtype_of OBJETO_GEOMETRICO: largura, comprimento TRIANGULO subtype_of OBJETO_GEOMETRICO: lado1, lado2, angulo CIRCULO subtype_of OBJETO_GEOMETRICO: Raio Outra maneira de declarar os subtipos: RETANGULO OBJETO_GEOMETRICO largura, comprimento Extensões Correspondentes a Hierarquia de Tipos subtype_of (Forma=´retangulo´): são coleções de objetos de um mesmo tipo. É comum em aplicações de BD que cada tipo ou subtipo tenham uma extensão associada ao mesmo a qual armazena a coleção de todos os objetos persistentes de todos os tipos ou subtipos. Extensões Correspondentes a Hierarquia de Tipos Uma restrição é que cada objeto em uma extensão que corresponde a um subtipo também deve ser membro da extensão que corresponde a seu supertipo. – Em alguns BDOO existe uma classe ROOT ou OBJECT cuja extensão contém todos os objetos do sistema. Uma coleção persistente guarda a coleção de objetos que são armazenados permanentemente no banco de dados e desta forma pode ser acessado e compartilhado por múltiplos programas. Uma coleção transiente existe temporariamente durante a execução de um programa e não é mantida após o final do programa. 2.4 Objetos Complexos – Um objeto complexo estruturado é composto de componentes e é definido pela aplicação de construtores de tipos disponíveis recursivamente em vários níveis. – Um objeto complexo não-estruturado é tipicamente um tipo de dado que requer uma grande quantidade de armazenamento, tais como tipos de dados que representam uma imagem ou grande objeto textual. Objetos Complexos nãoestruturados Esta característica, permite o armazenamento e a recuperação de grandes objetos que são necessários em uma aplicação de BD. Também são conhecidos por binary large objects ou BLOBS. São não-estruturados porque o BD não conhece a sua estrutura. Apenas as aplicações que os manipulam que podem interpretar seu significado. Existem dois tipos de objetos complexos: estruturado e não-estruturado. Objetos Complexos nãoestruturados O SGBD não tem a capacidade prévia de processar diretamente condições de seleção e outras operações baseadas nos valores destes dados. – Em BDOO esta característica pode ser alcançada através da definição de um novo tipo abstrato de dados e provendo métodos para a sua seleção, comparação e visualização dos mesmos. Como BDOO permitem a criação de novos tipos, incluindo sua estrutura e operações, podemos considerar que os BDOO apresentam um Sistema de Tipos Extensível. 7 Objetos Complexos Estruturados Objetos Complexos nãoestruturados Por exemplo, suponha que uma aplicação deseje selecionar a partir de uma coleção de imagens bitmaps, aquelas que contenham um determinado padrão. – O usuário pode definir um programa de reconhecimento de padrões como um métodos dos objetos bitmaps. Desta forma, o BDOO pode recuperar o objeto e invocar o método para realizar a consulta desejada. Objetos Complexos Estruturados Por exemplo, seja o objeto DEPARTAMENTO composto de uma estrutura de tupla com os seguintes atributos: DNOME, DNUMERO, GDEPT, LOCALIZACOES, EMPREGADOS, e PROJETOS. – Apenas dois desses atributos, DNOME e DNUMERO, apresentam valores básicos, os demais apresentam valores complexos. • O atributo GDEPT apresenta uma estrutura de tupla, e os outros três atributos (LOCALIZACOES, EMPREGADOS, PROJETOS) apresentam estrutura de conjunto. – Em um terceiro nível, o atributo GDEPT com sua atributos estrutura de tupla, onde um de seus atributos apresenta uma referência para uma outra tupla. Semânticas de Referência Outros Conceitos OO Polimorfismo: Este conceito permite que um mesmo nome de operador ou símbolo seja relacionado com duas ou mais implementações do operador, dependendo do tipo do objeto a que o mesmo está aplicado. Exemplo: Cálculo da Área em Objetos Geométricos. Um objeto complexo estruturado apresenta uma estrutura que é definida pelos construtores de tipos providos pelo BDOO. Então a estrutura do objeto é definida e conhecida pelo BDOO. Dois tipos de referência semântica existem entre um objeto complexo e seus componentes em cada nível. Semântica de propriedade e Semântica de referência. Chamamos de Semântica de Propriedade quando os sub-objetos de um objeto complexo são encapsulados e são considerados parte do objeto complexo (dnome, dnumero, gdept e localizacoes) Chamamos de Semântica de Referência quando os componentes do objeto complexo são eles próprios objetos independentes que podem ser referenciados (empregados e projetos) Herança Múltipla Herança múltipla ocorre quando um certo subtipo T é subtipo de dois ou mais tipos, e desta forma, herda funções de todos os supertipos. Um problema que isso pode acarretar é que os supertipos dos quais o subtipo herda podem apresentar funções diferentes para um mesmo nome, gerando ambigüidades. – Sistema checa -> usuário seleciona – Utilizar defaults – Não permitir herança múltipla ambiguidades. -> se 8 Herança Seletiva Herança Seletiva ocorre quando um subtipo herda apenas algumas funções de um supertipo. Outras funções não são herdadas. Neste caso, uma cláusula EXCEPT é usada na lista de funções do supertipo que não deverão ser herdadas pelos seus subtipos. Exercícios de Revisão Qual a diferença existente entre objetos transientes e persistentes em BDOO? Quais as maneiras possíveis de tornar um objeto persistente? 2. Qual a diferença entre objetos complexos estruturados e não estruturados? 1. 9