Bancos de Dados com Objetos Jacques Robin CIn-UFPE Banco de dados com objetos: diversidade dos modelos Modelo puramente orientado a objetos (OO), ex., O2 Modelo objeto-relacional (OR), ex., SQL3 Modelo ativo orientado a objetos (AOO), ex., Chimera Modelo dedutivo orientado a objetos (DOO), ex., F-Logic Modelo com restrições e objetos (COO), ex., C3 Modelo de componentes distribuídos orientado a objetos (DOOC), ex., CORBA Orientação objetos para BD: motivação Uniformidade: • codificar lógica da aplicação e o acesso aos dados no mesmo paradigma (impedance mismatch) Completude computacional: • embutir no BD comportamentos ligados aos dados Expressividade da modelagem: • estruturas complexas, recursivas e heterogêneas Modularidade e reuso • hierarquia de classes com herança e encapsulamento permite prototipagem, personalização e extensão rápida Integração em sistemas de componentes distribuídos Novas aplicações de BD: • CAD/CAM, CASE, GIS, gerenciamento de workflows, groupware, bibliotecas digitais multimídia, comercio eletrónico, etc. Serviços requeridos de um BDOO Orientação a objetos Identificação única Encapsulamento de estado e comportamento Construtores de estruturas complexas ortogonais e extensíveis Hierarquia de classes (esquema) com herança de estado e comportamento Estado inicial e comportamento default Sobrescrita, sobrecarga e ligação dinâmica Completude computacional Restrições, verificação e inferência de tipos Herança múltipla Acesso completo a recursos Gerenciamento de versões Banco de dados Persistência Otimização de acesso a memória segundaria Acesso concorrente Recuperação: • Linguagem de manipulação: • terminação, exceções, transações conciso, intuitivo, declarativo, interpretado, otimizável, independente da aplicação, formalmente bem fundamentado Visões e dados derivados Restrições de integridades Manipulação dinâmica de esquema Utilitários administrativos Modelos puramente orientado a objetos Extensões de LPOO para serviços de BD: resolvem o “impedance mismatch” (com Java, C++, Smalltalk) - nenhum já fornece leque de serviços suficiente para constituir um autêntico SGBD (em geral apenas persistência e concorrência) Implementações do padrão ODMG: + cobrem maioria dos serviços obrigatórios de BDOO - não resolvem “impedance mismatch”: não é computacionalmente completo integração com LPOO via strings e não objetos + sintaxe: consultas SQL, definições SQL ( CORBA) semântica: nada a ver com SQL, e de fato sem definição precisa sem fundamentação nos princípios de engenharia de software “padrão” comercial, ainda imaturo, e sem apoio dos gigantes cada vez mais usadas para aplicações avançadas Características de O2 Mais completa das implementações comerciais de ODMG Tipos e classes: • tipos primitivos: booleano, caráter, inteiro, real, string • tipos compostos: via construtores ortgonais e recursivos de tupla, lista, bag e conjunto aplicados a tipos primitivos e/ou classes definidas pelo usuário • classes: tipo definido via construtores de tipos assinaturas do métodos implementação dos métodos: via LPOO ligado (Java, C++, Smalltalk) superclasse(s) Objetos: • id única, definido como persistente ou transitório • criado via new, herda tipo e métodos da classe Estudo de caso comparativo: A lista de materiais Problema padrão em indústria da manufatura 3 tarefas teste de linguagem de manipulação e consulta nesse domínio: 1. Descrever um BD brinquedo (com seu esquema) 2. Fazer uma consulta seletiva do BD brinquedo: 3. Fazer uma consulta agregada do BD brinquedo: A lista de materiais: modelo ER modelo cor fabricante 1 n Veículo 1 possui_frota idade Pessoa n 1 produz é-um rua localização #companhia nome 1 1 1 Companhia nome_comp domicílio #pessoa 1 Empregado administra 1 1 possui salário n trabalha gerencia 1 n Subsidiária nome_sub rua localização qualificação 1 A lista de materiais em SQL2 BD x Aplicações BD Orientado a Objetos - Exemplo classe3: Endereço: [ rua: String, localização: String] classe4: Pessoa: [ nome: String, idade: Integer; domicilio: Endereço, Frota: {Veiculos}] classe5: Empregado is-a Pessoa: [ qualificações: {String}, salário: Integer; Familiares: {Pessoa}] BD x Aplicações BD Objeto Relacional - Exemplo Criação de Tipos: CREATE TYPE Endereço ( RuaNoVARCHAR(60), Cidade VARCHAR(40), ); CREATE TYPE Companhia ( NomeComp String, Matriz endereço, Subsidiarias SET(REF(Subsidiaria)), Presidente REF(Empregado), ); CREATE TYPE Fornecedor ( CodFornec CHAR(4) NomeFornec VARCHAR(40) EndFornec endereço, ); CREATE TYPE Subsidiaria ( NomeSub String, Escritório endereço, Empregados SET(REF(Empregado)), ); CREATE TYPE empregado ( nome CHAR(20), salário DECIMAL(10,2), ); Criação de Tabelas: CREATE TABLE Fornecedor OF Fornecedor CREATE TABLE empregados OF Empregado BD de empregados: em O2 + Java Definição do BD: class Companhia type tuple(name:string, matriz:Endereço, subsidiárias:set(Subsidiária), presidente:Empregado) end; class Subsidiária type tuple(name:string, public escritório:Endereço Consulta seletiva: Consulta agregada: classe1: Companhia: [ nome: String, matriz: Endereço; Subsidiarias: {Subsidiaria}, Presidente: Empregado] classe2: Subsidiaria: [ nome: String, escritório: Endereço; Gerente: Empregado, Empregados: {Empregado}] Modelos objeto-relacionais Características de SQL3 BD de empregados em SQL3 Aplicações e limitações dos modelos OO e OR Modelo OO x Modelo OR Modelo dedutivo orientado a objetos: motivação Serviços de um BD dedutivo orientado a objetos Tipologia e implementações dos modelos dedutivos orientados a objetos Características de F-Logic BD de empregados em F-Logic Aplicações e limitações dos modelos DOO Modelo DOO x modelos OO e OR Modelo ativo orientado a objetos: motivação Serviços de BD ativo orientado a objetos Tipologia e implementações dos modelos ativos orientados a objetos Características de ?? BD de empregados em ?? Aplicações e Limitações do modelo AOO Modelo AOO x modelos OO e OR Modelo AOO x modelo DOO BD e componentes distribuídos orientado a objetos BD distribuídas heterogêneas e CORBA Conclusão: contribuição atual da orientação objetos para BD e perspectivas futuras