Bancos de Dados Orientados a Objeto   Estudo de Casos Kelly Prudente Pereira Luciano Soares Bohnert Orientador: Fernando Albuquerque
Objetivos do Projeto Estudar a  evolu ção na área de Bancos de Dados até o paradigma da Orientação a Objetos. Avaliar o porque de Bancos de dados Orientados a Objetos. Analisar duas opções disponíveis no mercado: Jasmine Poet  Implementar um sistema exemplo utilizado um banco de dados Orientado a Objetos (Jasmine).
Introdução Um Histórico da Evolução dos Modelos de Dados Como tudo aconteceu após os anos 60 Modelo Hierárquico Novas vantagens Novos Problemas Modelos de Rede IDS (Integrated Data Store)   Rede Simples Rede Complexa
Introdução Modelo Relacional Tabelas bidimensionais. ad hoc queries   Modelo Orientado a Objeto Armazenamento de objetos persistentes. Armazenamento de dados complexos. Categorias de Produtos   ODBMSs puros   Gerenciadores de Armazenamento Persistente  Object Wrappers   DBMSs híbridos ou post-relacional ou ORDBMS
Orientação a Objetos e o Modelo de Dados Orientado a Objetos Elementos da Orientação a Objetos Objetos Classes   Tipos de método Sobrecarga
A Orientação a Objetos  Herança
A Orientação a Objetos  Herança múltipla  Interface  Polimorfismo
O modelo de Dados Orientado a Objeto Relacionamentos entre os dados Identificadores de Objetos  Gerenciamento de memória Relacionamento Um-Muitos Relacionamento Muitos-Muitos Relacionamento “É um (a)”  Relacionamento Extends  Relacionamento Todo-Parte
O modelo de Dados Orientado a Objeto Integridade de Relacionamento Diagramas de relacionamentos A UML (Unified Modeling Language) Para a Classe  País : Para a Classe  Estado : Estados : (set) Estado   inverse is Estado.País Pais : pais inverse is País.Estado
Porque ODBMS: Comparando RDBMS e ODBMS Bancos Relacionais e Linguagens Orientadas a Objeto Vantagens do Relacional:  Capacidade Velocidade Eficiência SQL (Joins)
O Modelo de Relacional Bidimensional Chaves para manter os relacionamentos
O Modelo de Objeto Combina: Código Dados Características: Herança Encapsulamento Polimorfismo OID
Combinando os modelos Esquema de definição no Banco de Dados para Objetos Mapear objetos em RDBMS(programação extra) Mapear RDBMS em objetos (poucos tipos, não tem suporte a características OO) Camadas de persistência.
Manipulação de Dados para Objetos Gereciamento de objetos em memória Exclusão de todas as tabelas Consulta em todas as tabelas Limitação destas soluções Dois Modelos
Bancos da Dados Orientados a Objeto Suporte a Objetos Operações Básicas no Banco de Dados Banco “conhece” o esquema real Não há perigo de dois objetos estarem carregados em memória
Padronizações ODMG ( Object Database Management Group ) A proposta padrão ODMG Terminologia básica Tipos: Especificações e implementações Tipos primitivos
Padronizações Herança Herança e interfaces   Extends interface Empregado {....}; interface Professor : Empregado {....}; interface Professor_Substituto : Professor {....}; interface Professor_Auxiliar : Professor {....};
Padronizações Objetos Identifcadores Nomes Persistentes e transientes Objetos atômicos Coleções Objetos Estruturados Modelando estados – Propriedades Atributos Relacionamentos
Padronizações Modelando comportamentos – Métodos Locking  e controle de concorrência Modelo de transação Transação e Processos Operações Tradicionais interface Transaction { void begin() raises(TransactionlnProgress,DatabaseClosed); void commit() raises(TransactionNotlnProgress);  void abort() raises(TransactionNotlriFrogress);  void checkpoint() raises(TransactionNotlnProgress);  void join() raises(TrarisactionNotlnProgress);  void Leave() raises(TransactionNotlnProgress);  boolean isOpen(): }
Padronizações Operações no Banco Open() Close() Bind() Unbind() Lookup()
ODL  ODL( Object Definition Language   ) Estrutura de classes e interfaces Declarando atributos  Relacionamentos c lass nome_classe extends nome_super_classe  : nome_interface (extent nome_extensão) { //elementos da classe }; attribute tipo  nome_atributo  ;   relationship classe_relacionada_a nome_relacionamento inverse classe_relacionada_a :: nome_relacionamento_da_classe_relacionada;
ODL Assinaturas de métodos  tipo_retorno nome_metodo(lista parâmetros) raises (lista_exceções)
OQL OQL( Object Query Language ) Entrada e resultado de consulta  Navegando nas expressões select struct (i: x.idade, s: x.sexo) from (select y from Empregados y where y.anosdecasa = “10”) as x  where x.nome = “Kelly” p.pai.endereço.cidade.nome
OQL Predicados Operadores booleanos Polimorfismo “ late binding ”   Class indicator   select p.atividades from Pessoas p  select ((Estudante)p).nota from Pessoas p  where “curso” in atividades
Jasmine OBD puro Bancos Objeto-Relacionais (Híbridos) Velocidade (Performance) Flexibilidade Desenvolvimento com Jasmine
Object Databases – Conceitos do Jasmine
Componentes do Jasmine
O Projeto do Jasmine Componentes do Jasmine A Arquitetura do Jasmine O Servidor de Bancos de Dados O Cliente Jasmine Considerações com a Largura de Banda
O Projeto do Jasmine - cont A estrutura do Jasmine A Biblioteca de Classes do Jasmine As famílias de Classes do Usuário Desenvolvimento por terceiros A ODQL Stores  (Armazéns) As Bibliotecas de classes do Jasmine
5. Persistent Java Como o pJ funciona? Transações Persistência e Transiência Classes providas pelo pJ Classes criadas pelo Usuário
Como o pJ funciona?
Persistent Java – Ativação
Persistent Java - cont O modelo de ativação do pJ Bases de Dados e Transações (Objetos) Abrindo uma base de Dados Nomeando e procurando por Objetos no Banco de Dados Gerenciando Transações Métodos Gerados
POET Sobre a POET Software O POET Object Server Suite (OSS) A arquitetura do OSS
POET A Tecnologia POET’s Fast Object Armazenamento nativo de objetos e Otimizador de consultas Sistema de smart cahching Consultas baseadas no servidor Pattern s de acesso Locking em nível de objetos
POET Recuperação de espaço de armazenamento Mapeamento de código Versionamento On-the-fly Suporte a tipos de dados definidos pelo usuário Ferramentas de administração
Plataformas Suportadas pelo OSS 6.1 Windows Solaris Linux HP-UX Netware
Edição do POET SDK para Java Persistência e o Banco de dados POET POET Java enhancer(PTJ)  Arquivo de configuração Funções básicas de manipulação de dados Bind Lookup Delete [classes\Pessoa] persistent = true [schemata\my_dict] oneFile = false [databases\my_base] oneFile = false
POET Banco de dados e Dicionários [databases\Contas] schema = SchemaConta onefile = true Collection s Navegação pelos objetos Alcance da persistência Acess Patterns [ schemata\dict\accessPatterns] usedPatterns = AmigosEParentes defaultPreloadDepth = 2 maxPreloadObjects = 7 [schemata\dict\accessPatterns\ AmigosEParentes] pattern = *.Pessoa.pai, *.Pessoa.mae:4,*.Person.amigos[0-$]:1
Access Patterns
Poet - Transações Transações Database db = new Database(); db.open(...); Transaction trans = new Transaction( db ); trans.begin();  Locks Checkpoints Transações aninhadas
Edição do POET SDK para Java - cont POET Java e aplicações multicamada
Desenvolvimento com Bancos de Dados Orientados a Objeto O processo de desenvolvimento (RUP) Orientado a Casos de Uso Centrado na Arquitetura Interativo e Incremental
Modelagem do Sistema Business Modeling Business Actors  Business Use-Case Model Business Object Model
Modelagem de Negócio
Modelo de Casos de Uso
Modelo de Casos de Uso – Auto-Atendimento
Sistema de Auto-Atendimento -  Análise e Projeto
Projeto Banco Genérico Projeto SisCon Projeto SisAA
Projeto – Sistema de Contas
Projeto – SisCon
Projeto – Sistema de Auto-Atendimento
Projeto - SisAA
Conclusão Problemas Vantagens Referências

Bancos de Dados Orientados a Objeto

  • 1.
    Bancos de DadosOrientados a Objeto Estudo de Casos Kelly Prudente Pereira Luciano Soares Bohnert Orientador: Fernando Albuquerque
  • 2.
    Objetivos do ProjetoEstudar a evolu ção na área de Bancos de Dados até o paradigma da Orientação a Objetos. Avaliar o porque de Bancos de dados Orientados a Objetos. Analisar duas opções disponíveis no mercado: Jasmine Poet Implementar um sistema exemplo utilizado um banco de dados Orientado a Objetos (Jasmine).
  • 3.
    Introdução Um Históricoda Evolução dos Modelos de Dados Como tudo aconteceu após os anos 60 Modelo Hierárquico Novas vantagens Novos Problemas Modelos de Rede IDS (Integrated Data Store) Rede Simples Rede Complexa
  • 4.
    Introdução Modelo RelacionalTabelas bidimensionais. ad hoc queries Modelo Orientado a Objeto Armazenamento de objetos persistentes. Armazenamento de dados complexos. Categorias de Produtos ODBMSs puros Gerenciadores de Armazenamento Persistente Object Wrappers DBMSs híbridos ou post-relacional ou ORDBMS
  • 5.
    Orientação a Objetose o Modelo de Dados Orientado a Objetos Elementos da Orientação a Objetos Objetos Classes Tipos de método Sobrecarga
  • 6.
    A Orientação aObjetos Herança
  • 7.
    A Orientação aObjetos Herança múltipla Interface Polimorfismo
  • 8.
    O modelo deDados Orientado a Objeto Relacionamentos entre os dados Identificadores de Objetos Gerenciamento de memória Relacionamento Um-Muitos Relacionamento Muitos-Muitos Relacionamento “É um (a)” Relacionamento Extends Relacionamento Todo-Parte
  • 9.
    O modelo deDados Orientado a Objeto Integridade de Relacionamento Diagramas de relacionamentos A UML (Unified Modeling Language) Para a Classe País : Para a Classe Estado : Estados : (set) Estado inverse is Estado.País Pais : pais inverse is País.Estado
  • 10.
    Porque ODBMS: ComparandoRDBMS e ODBMS Bancos Relacionais e Linguagens Orientadas a Objeto Vantagens do Relacional: Capacidade Velocidade Eficiência SQL (Joins)
  • 11.
    O Modelo deRelacional Bidimensional Chaves para manter os relacionamentos
  • 12.
    O Modelo deObjeto Combina: Código Dados Características: Herança Encapsulamento Polimorfismo OID
  • 13.
    Combinando os modelosEsquema de definição no Banco de Dados para Objetos Mapear objetos em RDBMS(programação extra) Mapear RDBMS em objetos (poucos tipos, não tem suporte a características OO) Camadas de persistência.
  • 14.
    Manipulação de Dadospara Objetos Gereciamento de objetos em memória Exclusão de todas as tabelas Consulta em todas as tabelas Limitação destas soluções Dois Modelos
  • 15.
    Bancos da DadosOrientados a Objeto Suporte a Objetos Operações Básicas no Banco de Dados Banco “conhece” o esquema real Não há perigo de dois objetos estarem carregados em memória
  • 16.
    Padronizações ODMG (Object Database Management Group ) A proposta padrão ODMG Terminologia básica Tipos: Especificações e implementações Tipos primitivos
  • 17.
    Padronizações Herança Herançae interfaces Extends interface Empregado {....}; interface Professor : Empregado {....}; interface Professor_Substituto : Professor {....}; interface Professor_Auxiliar : Professor {....};
  • 18.
    Padronizações Objetos IdentifcadoresNomes Persistentes e transientes Objetos atômicos Coleções Objetos Estruturados Modelando estados – Propriedades Atributos Relacionamentos
  • 19.
    Padronizações Modelando comportamentos– Métodos Locking e controle de concorrência Modelo de transação Transação e Processos Operações Tradicionais interface Transaction { void begin() raises(TransactionlnProgress,DatabaseClosed); void commit() raises(TransactionNotlnProgress); void abort() raises(TransactionNotlriFrogress); void checkpoint() raises(TransactionNotlnProgress); void join() raises(TrarisactionNotlnProgress); void Leave() raises(TransactionNotlnProgress); boolean isOpen(): }
  • 20.
    Padronizações Operações noBanco Open() Close() Bind() Unbind() Lookup()
  • 21.
    ODL ODL(Object Definition Language ) Estrutura de classes e interfaces Declarando atributos Relacionamentos c lass nome_classe extends nome_super_classe : nome_interface (extent nome_extensão) { //elementos da classe }; attribute tipo nome_atributo ; relationship classe_relacionada_a nome_relacionamento inverse classe_relacionada_a :: nome_relacionamento_da_classe_relacionada;
  • 22.
    ODL Assinaturas demétodos tipo_retorno nome_metodo(lista parâmetros) raises (lista_exceções)
  • 23.
    OQL OQL( ObjectQuery Language ) Entrada e resultado de consulta Navegando nas expressões select struct (i: x.idade, s: x.sexo) from (select y from Empregados y where y.anosdecasa = “10”) as x where x.nome = “Kelly” p.pai.endereço.cidade.nome
  • 24.
    OQL Predicados Operadoresbooleanos Polimorfismo “ late binding ” Class indicator select p.atividades from Pessoas p select ((Estudante)p).nota from Pessoas p where “curso” in atividades
  • 25.
    Jasmine OBD puroBancos Objeto-Relacionais (Híbridos) Velocidade (Performance) Flexibilidade Desenvolvimento com Jasmine
  • 26.
    Object Databases –Conceitos do Jasmine
  • 27.
  • 28.
    O Projeto doJasmine Componentes do Jasmine A Arquitetura do Jasmine O Servidor de Bancos de Dados O Cliente Jasmine Considerações com a Largura de Banda
  • 29.
    O Projeto doJasmine - cont A estrutura do Jasmine A Biblioteca de Classes do Jasmine As famílias de Classes do Usuário Desenvolvimento por terceiros A ODQL Stores (Armazéns) As Bibliotecas de classes do Jasmine
  • 30.
    5. Persistent JavaComo o pJ funciona? Transações Persistência e Transiência Classes providas pelo pJ Classes criadas pelo Usuário
  • 31.
    Como o pJfunciona?
  • 32.
  • 33.
    Persistent Java -cont O modelo de ativação do pJ Bases de Dados e Transações (Objetos) Abrindo uma base de Dados Nomeando e procurando por Objetos no Banco de Dados Gerenciando Transações Métodos Gerados
  • 34.
    POET Sobre aPOET Software O POET Object Server Suite (OSS) A arquitetura do OSS
  • 35.
    POET A TecnologiaPOET’s Fast Object Armazenamento nativo de objetos e Otimizador de consultas Sistema de smart cahching Consultas baseadas no servidor Pattern s de acesso Locking em nível de objetos
  • 36.
    POET Recuperação deespaço de armazenamento Mapeamento de código Versionamento On-the-fly Suporte a tipos de dados definidos pelo usuário Ferramentas de administração
  • 37.
    Plataformas Suportadas peloOSS 6.1 Windows Solaris Linux HP-UX Netware
  • 38.
    Edição do POETSDK para Java Persistência e o Banco de dados POET POET Java enhancer(PTJ) Arquivo de configuração Funções básicas de manipulação de dados Bind Lookup Delete [classes\Pessoa] persistent = true [schemata\my_dict] oneFile = false [databases\my_base] oneFile = false
  • 39.
    POET Banco dedados e Dicionários [databases\Contas] schema = SchemaConta onefile = true Collection s Navegação pelos objetos Alcance da persistência Acess Patterns [ schemata\dict\accessPatterns] usedPatterns = AmigosEParentes defaultPreloadDepth = 2 maxPreloadObjects = 7 [schemata\dict\accessPatterns\ AmigosEParentes] pattern = *.Pessoa.pai, *.Pessoa.mae:4,*.Person.amigos[0-$]:1
  • 40.
  • 41.
    Poet - TransaçõesTransações Database db = new Database(); db.open(...); Transaction trans = new Transaction( db ); trans.begin(); Locks Checkpoints Transações aninhadas
  • 42.
    Edição do POETSDK para Java - cont POET Java e aplicações multicamada
  • 43.
    Desenvolvimento com Bancosde Dados Orientados a Objeto O processo de desenvolvimento (RUP) Orientado a Casos de Uso Centrado na Arquitetura Interativo e Incremental
  • 44.
    Modelagem do SistemaBusiness Modeling Business Actors Business Use-Case Model Business Object Model
  • 45.
  • 46.
  • 47.
    Modelo de Casosde Uso – Auto-Atendimento
  • 48.
    Sistema de Auto-Atendimento- Análise e Projeto
  • 49.
    Projeto Banco GenéricoProjeto SisCon Projeto SisAA
  • 50.
  • 51.
  • 52.
    Projeto – Sistemade Auto-Atendimento
  • 53.
  • 54.