Bancos de Dados Orientados a Objeto   Estudo de Casos Kelly Prudente Pereira Luciano Soares Bohnert Orientador: Fernando A...
Objetivos do Projeto <ul><li>Estudar a  evolu ção na área de Bancos de Dados até o paradigma da Orientação a Objetos. </li...
Introdução <ul><li>Um Histórico da Evolução dos Modelos de Dados </li></ul><ul><ul><li>Como tudo aconteceu após os anos 60...
Introdução <ul><ul><li>Modelo Relacional </li></ul></ul><ul><ul><ul><li>Tabelas bidimensionais. </li></ul></ul></ul><ul><u...
Orientação a Objetos e o Modelo de Dados Orientado a Objetos <ul><li>Elementos da Orientação a Objetos </li></ul><ul><ul><...
A Orientação a Objetos  <ul><ul><li>Herança </li></ul></ul>
A Orientação a Objetos  <ul><ul><li>Herança múltipla  </li></ul></ul><ul><ul><li>Interface  </li></ul></ul><ul><ul><li>Pol...
O modelo de Dados Orientado a Objeto <ul><li>Relacionamentos entre os dados </li></ul><ul><ul><li>Identificadores de Objet...
O modelo de Dados Orientado a Objeto <ul><li>Integridade de Relacionamento </li></ul><ul><li>Diagramas de relacionamentos ...
Porque ODBMS: Comparando RDBMS e ODBMS <ul><li>Bancos Relacionais e Linguagens Orientadas a Objeto </li></ul><ul><ul><li>V...
O Modelo de Relacional <ul><li>Bidimensional </li></ul><ul><li>Chaves para manter os relacionamentos </li></ul>
O Modelo de Objeto <ul><li>Combina: </li></ul><ul><ul><li>Código </li></ul></ul><ul><ul><li>Dados </li></ul></ul><ul><li>C...
Combinando os modelos <ul><li>Esquema de definição no Banco de Dados para Objetos </li></ul><ul><ul><li>Mapear objetos em ...
Manipulação de Dados para Objetos <ul><li>Gereciamento de objetos em memória </li></ul><ul><li>Exclusão de todas as tabela...
Bancos da Dados Orientados a Objeto <ul><li>Suporte a Objetos </li></ul><ul><li>Operações Básicas no Banco de Dados </li><...
Padronizações <ul><li>ODMG ( Object Database Management Group ) </li></ul><ul><li>A proposta padrão ODMG </li></ul><ul><ul...
Padronizações <ul><ul><li>Herança </li></ul></ul><ul><ul><ul><li>Herança e interfaces   </li></ul></ul></ul><ul><ul><ul><l...
Padronizações <ul><ul><li>Objetos </li></ul></ul><ul><ul><ul><li>Identifcadores </li></ul></ul></ul><ul><ul><ul><li>Nomes ...
Padronizações <ul><ul><li>Modelando comportamentos – Métodos </li></ul></ul><ul><ul><li>Locking  e controle de concorrênci...
Padronizações <ul><ul><li>Operações no Banco </li></ul></ul><ul><ul><ul><li>Open() </li></ul></ul></ul><ul><ul><ul><li>Clo...
ODL  <ul><li>ODL( Object Definition Language   ) </li></ul><ul><ul><li>Estrutura de classes e interfaces </li></ul></ul><u...
ODL <ul><ul><li>Assinaturas de métodos  </li></ul></ul>tipo_retorno nome_metodo(lista parâmetros) raises (lista_exceções)
OQL <ul><li>OQL( Object Query Language ) </li></ul><ul><ul><li>Entrada e resultado de consulta  </li></ul></ul><ul><ul><li...
OQL <ul><ul><li>Predicados </li></ul></ul><ul><ul><li>Operadores booleanos </li></ul></ul><ul><ul><li>Polimorfismo </li></...
Jasmine <ul><li>OBD puro </li></ul><ul><li>Bancos Objeto-Relacionais (Híbridos) </li></ul><ul><li>Velocidade (Performance)...
Object Databases – Conceitos do Jasmine
Componentes do Jasmine
O Projeto do Jasmine <ul><li>Componentes do Jasmine </li></ul><ul><li>A Arquitetura do Jasmine </li></ul><ul><li>O Servido...
O Projeto do Jasmine - cont <ul><li>A estrutura do Jasmine </li></ul><ul><li>A Biblioteca de Classes do Jasmine </li></ul>...
5. Persistent Java <ul><li>Como o pJ funciona? </li></ul><ul><li>Transações </li></ul><ul><li>Persistência e Transiência <...
Como o pJ funciona?
Persistent Java – Ativação
Persistent Java - cont <ul><li>O modelo de ativação do pJ </li></ul><ul><li>Bases de Dados e Transações (Objetos) </li></u...
POET <ul><li>Sobre a POET Software </li></ul><ul><ul><li>O POET Object Server Suite (OSS) </li></ul></ul><ul><ul><li>A arq...
POET <ul><li>A Tecnologia POET’s Fast Object </li></ul><ul><ul><li>Armazenamento nativo de objetos e Otimizador de consult...
POET <ul><ul><li>Recuperação de espaço de armazenamento </li></ul></ul><ul><ul><li>Mapeamento de código </li></ul></ul><ul...
Plataformas Suportadas pelo OSS 6.1 <ul><li>Windows </li></ul><ul><li>Solaris </li></ul><ul><li>Linux </li></ul><ul><li>HP...
Edição do POET SDK para Java <ul><li>Persistência e o Banco de dados POET </li></ul><ul><ul><li>POET Java enhancer(PTJ)  <...
POET <ul><li>Banco de dados e Dicionários </li></ul><ul><ul><li>[databasesContas] </li></ul></ul><ul><ul><li>schema = Sche...
Access Patterns
Poet - Transações <ul><ul><li>Transações </li></ul></ul><ul><ul><li>Database db = new Database(); </li></ul></ul><ul><ul><...
Edição do POET SDK para Java - cont <ul><li>POET Java e aplicações multicamada </li></ul>
Desenvolvimento com Bancos de Dados Orientados a Objeto <ul><li>O processo de desenvolvimento (RUP) </li></ul><ul><ul><li>...
Modelagem do Sistema <ul><li>Business Modeling </li></ul><ul><ul><li>Business Actors  </li></ul></ul><ul><ul><li>Business ...
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 <ul><li>Projeto SisCon </li></ul><ul><li>Projeto SisAA </li></ul>
Projeto – Sistema de Contas
Projeto – SisCon
Projeto – Sistema de Auto-Atendimento
Projeto - SisAA
Conclusão <ul><li>Problemas </li></ul><ul><li>Vantagens </li></ul><ul><li>Referências </li></ul>
Próximos SlideShares
Carregando em…5
×

Bancos de Dados Orientados a Objeto

8.386 visualizações

Publicada em

um estudo de caso

Publicada em: Tecnologia, Turismo
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
8.386
No SlideShare
0
A partir de incorporações
0
Número de incorporações
50
Ações
Compartilhamentos
0
Downloads
317
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Bancos de Dados Orientados a Objeto

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

    ×