Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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>
Nächste SlideShare
Wird geladen in …5
×

Bancos de Dados Orientados a Objeto

8.571 Aufrufe

Veröffentlicht am

um estudo de caso

Veröffentlicht in: Technologie, Reisen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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>

×