Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Betim 2017 DÉBORA ANGEL DE ALMEIDA BANCO DE DADOS ORIENTADO A OBJETOS: TRATANDO A INCOMPATIBILIDADE DE DADOS Betim 2017 BANCO DE DADOS ORIENTADO A OBJETOS: TRATANDO A INCOMPATIBILIDADE DE DADOS Trabalho de Conclusão de Curso apresentado à Faculdade Pitágoras - Sistema de Educação Superior Sociedade LTDA, como requisito parcial para a obtenção do título de graduado em Ciência da Computação. Orientador: Cynthia Da Silva Barbosa DÉBORA ANGEL DE ALMEIDA DÉBORA ANGEL DE ALMEIDA BANCO DE DADOS ORIENTADO A OBJETOS: TRATANDO A INCOMPATIBILIDADE DE DADOS Trabalho de Conclusão de Curso apresentado à Faculdade Pitágoras - Sistema de Educação Superior Sociedade LTDA, como requisito parcial para a obtenção do título de graduado em Ciência da Computação. BANCA EXAMINADORA Prof(ª). Titulação Nome do Professor(a) Prof(ª). Titulação Nome do Professor(a) Prof(ª). Titulação Nome do Professor(a) Betim, 04 de dezembro de 2017 Dedico o presente trabalho à minha família, que foi meu alicerce desde sempre... DE ALMEIDA, Débora Angel. Banco de Dados Orientado a Objetos: Tratando a Incompatibilidade de Dados. 2017. 35 folhas. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) – Faculdade Pitágoras - Sistema de Educação Superior Sociedade LTDA, Betim, 2017. RESUMO Persistir dados refere-se à habilidade de armazenar dados em um local onde eles possam ser recuperados futuramente. A necessidade dessa persistência cresce a cada dia devido ao crescimento proporcional de informações que precisam ser armazenadas em vários tipos de aplicações. Por isso então, foram criados os Sistemas de Gerenciamento de Banco de Dados (SGBD) que são conjuntos de programas de softwares que permitem aos usuários criar, editar, atualizar, armazenar e recuperar dados em tabelas de banco de dados. Porém, com as constantes inovações em hardware, surgiram nos anos 80 novas aplicações que precisavam da utilização intensiva de dados, como dados multimídia. Sendo assim, o modelo relacional tornou-se inadequado por não atender a essas necessidades. Através da combinação de SGBD tradicionais e programação orientada a objetos teve origem O Sistema de Gerenciamento de Banco de Dados Orientado a Objetos (SGBDOO), que surgiu como uma opção para solucionar esse tipo de problema. Diante disso, o tema proposto será objeto de análise e conhecimento, para demonstrar a importância e benefícios consequentes da utilização de SGBDOO, esclarecendo dúvidas e consolidando conceitos sobre esta tecnologia. Palavras-chave: Banco de Dados; Orientação a Objeto; Sistema Gerenciador de Banco de Dados. DE ALMEIDA, Débora Angel. Object Oriented Database: Handling Data Incompatibility. 2017. 35 folhas. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) – Faculdade Pitágoras - Sistema de Educação Superior Sociedade LTDA, Betim, 2017. ABSTRACT Persisting data refers to the ability to store data in a location where it can be retrieved in the future. The need for this persistence grows every day due to the proportional growth of information that needs to be stored in various types of applications. For this reason, Database Management Systems (DBMS) were created, which are sets of software programs that allow users to create, edit, update, store and retrieve data in database tables. However, with the constant innovations in hardware, in the 1980s new applications appeared that needed the intensive use of data, such as multimedia data. Thus, the relational model became inadequate because it did not meet those needs. Through the combination of traditional DBMS and object-oriented programming, the Object Oriented Database Management System (OODBMS) originated as an option to solve this type of problem. Therefore, the proposed theme will be the subject of analysis and knowledge, to demonstrate the importance and consequent benefits of using SGBDOO, clarifying doubts and consolidating concepts about this technology. Key-words: Database; Object Orientation; Database Management System. LISTA DE ILUSTRAÇÕES Figura 1 – Exemplo de Modelo Relacional .............................................................. 9 Figura 2 – Exemplo de Modelo Entidade-Relacionamento ...................................... 10 Figura 3 – Exemplo de Declaração de Classe ......................................................... 11 Figura 4 – Exemplo de Herança entre Classes ....................................................... 12 Figura 5 – Exemplo de BDOO ................................................................................. 14 Figura 6 – Estrutura de Armazenamento Multidimensional ..................................... 22 LISTA DE TABELAS Tabela 1 – Componentes do Caché ........................................................................ 23 Tabela 2 – Características dos SGBDOOs .............................................................. 23 LISTA DE ABREVIATURAS E SIGLAS BDOO Banco de Dados Orientado a Objetos DLL Dynamic-link library (Biblioteca de Vínculo Dinâmico) ODL Object Definition Language (Linguagem de definição de objeto) ODMG Object Data Base Management Group (Grupo de gerenciamento de banco de dados de objetos) ODQL Object Database Query Language (Linguagem de consulta de banco de dados de objeto). OID Identificador de Objetos OO Orientação a Objetos OQL Object Query Language (Linguagem de consulta de objeto) POO Programação Orientada a Objetos SGBD Sistema Gerenciador de Banco de Dados SGBDOO Sistema Gerenciador de Banco de Dados Orientado a Objetos SGBDR Sistema Gerenciador de Banco de Dados Relacional SQL Structured Query Language (Linguagem de consulta estruturada) SUMÁRIO INTRODUÇÃO ............................................................................................................ 6 1 CONCEITOS E COMPARATIVO ENTRE BANCO DE DADOS RELACIONAL E BANCO DE DADOS ORIENTADO A OBJETOS ....................................................... 8 1.1 BANCO DE DADOS .............................................................................................. 8 1.2 BANCO DE DADOS RELACIONAL ...................................................................... 8 1.2.1 Modelo Entidade Relacionamento (ER) ............................................................. 9 1.3 ORIENTAÇÃO A OBJETOS (OO) ...................................................................... 10 1.3.1 Classe de Objetos ............................................................................................ 11 1.3.2 Herança ............................................................................................................ 11 1.3.3 Polimorfismo ..................................................................................................... 12 1.3.4 Encapsulamento ............................................................................................... 13 1.4 BANCO DE DADOS ORIENTADO A OBJETOS ................................................. 13 1.4.1 ODMG (Object Database Management Group) - Grupo de Gerenciamento de Banco de Dados de Objetos ...................................................................................... 14 1.5 CARACTERÍSTICAS DE ORIENTAÇÃO A OBJETOS EM BDOO ..................... 16 1.5.1 Persistência de Objetos .................................................................................... 16 1.5.2 OBJECT IDENTIFIER (OID) – IDENTIFICADOR DE OBJETOS ..................... 16 1.5.3 Hierarquia de Classes d Herança para BDOO ................................................ 16 1.5.4 Encapsulamento .............................................................................................. 16 1.6 CARACTERÍSTICAS DE BANCO DE DADOS PARA BDOO ............................ 17 1.6.1 Transações ...................................................................................................... 17 1.6.2 Concorrência ................................................................................................... 18 1.6.3 RECUPERAÇÃO ............................................................................................. 18 1.6.4 Consultas ......................................................................................................... 19 1.6.5 Versionamento ................................................................................................ 19 2 EXEMPLOS DE SGBDOO EXISTENTES NO MERCADO ................................... 20 2.1 JASMINE ............................................................................................................ 20 2.2 DB4O .................................................................................................................. 20 2.3 OBJECTSTORE .................................................................................................. 21 2.4 CACHÉ ............................................................................................................... 22 3 PRINCIPAIS DESAFIOS E TENDÊNCIAS DO SGBDOO ..................................... 24 CONSIDERAÇÕES FINAIS ...................................................................................... 27 REFERENCIAS ......................................................................................................... 28 6 INTRODUÇÃO A expressão persistir dados refere-se à capacidade de armazenar dados em algum local onde eles possam ser recuperados posteriormente. A necessidade de persistência cresce aceleradamente no decorrer do tempo, devido ao crescimento proporcional de informações que devem ser armazenadas em vários tipos de aplicações. Para isso foram criados os Sistemas de Gerenciamento de Banco de Dados (SGBD), que são conjuntos de programas de softwares que permitem aos usuários criar, editar, atualizar, armazenar e recuperar dados em tabelas de banco de dados. O modelo de SGBD mais utilizado é o Modelo Relacional. Através deste modelo, os dados são armazenados, manipulados e recuperados na forma de coleções de tabelas, estruturadas por linhas e colunas. Cada registro possui uma chave que o torna um elemento único na tabela. Porém, com as inovações em hardware, surgiram nos anos 80, novas aplicações que precisavam da utilização intensiva de dados, como dados multimídia. Sendo assim, o modelo relacional tornou-se inadequado por não atender a essas necessidades, surgindo então o Sistema de Gerenciamento de Banco de Dados Orientado a Objetos (SGBDOO). Esse sistema foi criado através da combinação de SGBD tradicionais e programação orientada a objetos, sendo adequado para tratar objetos mais complexos e dinâmicos (gráficos, imagens, simulações), baseando-se no paradigma de programação orientada a objetos que propõe trabalhar com os dados utilizando dos mesmos conceitos de objetos: classes, polimorfismo, herança e encapsulamento. Entretanto, apesar do desenvolvimento das tecnologias para o gerenciamento de dados, muitas organizações ainda enfrentam problemas quando precisam armazenar suas informações. Isso porque alguns de seus dados não são compatíveis com sua plataforma de armazenamento. O SGBDOO surgiu como uma opção para solucionar esse tipo de problema. Porém, este modelo é pouco conhecido e não muito utilizado quando comparado ao modelo relacional. Para Elmasri (2005), a complexidade do modelo e a falta de um padrão inicial, contribuíram para o uso limitado do Banco de Dados Orientado a Objetos. Diante disso, o tema proposto será objeto de análise e conhecimento, para demonstrar a importância e benefícios consequentes da utilização de SGBDOOs, esclarecendo dúvidas e consolidando conceitos sobre esta tecnologia. 7 Assim como toda grande mudança, o avanço tecnológico acarretou alguns problemas para o modelo de Sistema Gerenciador de Banco de Dados Relacional, tendo como principal a incompatibilidade entre os dados a serem armazenados e os bancos de dados adotados pelas organizações. Sendo assim, qual seria então a melhor solução para este conflito? Portanto, este trabalho tem como objetivo geral analisar e compreender a importância da utilização de SGBDOOs para solucionar a incompatibilidade de dados, e traz como objetivos específicos: apresentar os conceitos e um comparativo entre Banco de Dados Relacional e Banco de Dados Orientado a Objetos. demonstrar os principais Bancos de Dados Orientados a Objetos existentes no mercado. evidenciar os principais desafios para a implantação de um Sistema de Gerenciamento de Banco de Dados Orientado a Objetos. A pesquisa deste trabalho baseou-se em método qualitativo tendo como finalidade analisar os benefícios ao utilizar um SGBDOO. Para esta analise foram retratados os conceitos de banco de dados tradicionais e paradigmas de orientação a objetos, foi feita uma comparação das funcionalidades do Banco de Dados Orientado a Objetos (BDOO) com o Modelo Relacional e foram evidenciadas novas tendências que estão surgindo para a tecnologia de Orientação a Objetos (OO) em banco de dados. A metodologia utilizada para a elaboração deste trabalho foi realizada através de pesquisas bibliográficas. As referências foram selecionadas em livros, artigos e sites onde informações relevantes foram coletadas, analisadas e discutidas para fazer com que este trabalho se torne utilizável em outras fontes de pesquisas. Livros de autores renomados como Elmasri (2005) e Silberschatz (1998) foram evidenciados, falando sobre conceitos de Banco de Dados, Orientação a Objetos e Banco de Dados Orientados a Objetos. 8 1 CONCEITOS E COMPARATIVO ENTRE BANCO DE DADOS RELACIONAL E BANCO DE DADOS ORIENTADO A OBJETOS Serão abordados neste primeiro capítulo os conceitos de Banco de Dados e Orientação a Objetos, dando ênfase aos Sistemas Gerenciadores de Banco de Dados Orientados a Objetos e qual sua importância para tratar a incompatibilidade de dados. 1.1 Banco de Dados A expressão Banco de Dados teve origem do inglês Databanks ou Database que significa Base de Dados. Essa expressão se refere a uma coleção de dados organizados onde um computador consegue armazená-los e recuperá-los de forma eficiente. Este gerenciamento é realizado pelos Sistemas Gerenciadores de Banco de Dados (SGBD), programas que tem como objetivo o armazenar informações e fornecer mecanismos para manipulação das mesmas. Nos próximos tópicos serão definidos dois modelos de SGBD que são foco de analise deste trabalho: O Modelo Relacional (líder em utilização) e o Modelo Orientado a Objetos. 1.2 Banco de Dados Relacional Foi proposto por Ted Codd, em 1970. Através deste modelo é possível armazenar, manipular e recuperar os dados estruturados através de uma junção de tabelas. Nas tabelas, as colunas possuem um nome único que representam os nomes dos atributos e cada linha (tupla) representa os valores de dados relacionados. Este relacionamento dos dados em tabela cria a existência de um paralelismo entre o conceito de tabela e o conceito matemático de relação. 9 O modelo relacional foi o primeiro a se estabelecer em aplicações comerciais e ainda é líder em utilização, tanto em computadores de uso pessoal quando em grandes servidores. Na figura 1 está exemplificado o Modelo Relacional. Figura 1 – Exemplo de Modelo Relacional Fonte: Elaborada pelo autor 1.2.1 Modelo Entidade-Relacionamento (ER) Este modelo foi um dos primeiros a ser implantado em organizações e ainda é o mais popular no meio comercial. “Esse modelo e suas variações são normalmente empregados para o projeto conceitual de aplicações de um banco de dados, e muitas ferramentas de projeto de um banco de dados aplicam seus conceitos. ER.”. (ELMASRI, 2005, p. 35). O modelo ER e é estruturado por dois elementos: Entidades: São a representação teórica de objetos existentes no mundo real. São formadas por atributos (informações) que distingue uma entidade de outra. Relacionamentos: São a representação do relacionamento entre um objeto e outro. Na figura 2 está exemplificado um exemplo do Modelo Entidade- Relacionamento. 10 Figura 2 – Exemplo de Modelo Entidade-Relacionamento Fonte: Elaborada pelo autor 1.3 Orientação a Objeto (OO) A definição de OO existe desde os anos 60 e era associado à linguagem Simula-67. “O Simula 67 é visto como a primeira linguagem orientada a objetos. Ele é definido por Ole-Johan Dahl e Kristen Nygard para apoiar a simulação de modelagem de processos baseada em eventos.” (PROPÉDIA, 2017). Esta linguagem apresentou as primeiras definições de classes, subclasses e rotinas correlatas semelhantes às linguagens de Orientação a Objetos atuais. Superficialmente, um objeto corresponde a uma entidade no modelo E-R. O paradigma orientado a objeto está baseado no encapsulamento de dados e em um código relacionado a um objeto dentro de uma única unidade. Conceitualmente, todas as interações entre um objeto e o resto do sistema são via mensagem. Então a interface entre um objeto e o resto do sistema é definida por um conjunto de mensagens permitidas. (SILBERSCHATZ, 1998, p. 251). Nos anos 70, foi criada a primeira linguagem orientada a objeto chamada Smalltalk, criado por cientistas do Xerox Alto Research Center (Xerox PARC). Porém, essas duas linguagens não eram acessíveis para a comunidade de desenvolvimento. Então, a partir da década de 80, por meio da linguagem C e logo em seguida pela C++, o paradigma Programação Orientada a Objeto (POO) ganhou destaque. 11 A OO traz várias vantagens como reutilização de código, requisitos, análises, especificações e projetos. Através da abstração do mundo real é possível capturar regras e procedimentos da empresa, gerando assim maior produtividade. O modelo de OO é mais flexível permitindo fácil manutenção e administração mais eficaz, pois é possível analisar os métodos e operações juntamente com os atributos em um mesmo objeto. Além disso, mecanismos de polimorfismo e herança possibilitam adicionar novos atributos e operações a classes que já existem, tornando a escrita do código reutilizável. 1.3.1 Classe de Objetos Surge através da classificação de objetos que possuem a mesma composição. É dividida em: variáveis (atributos) e métodos (operações que a classe pode realizar). A Figura 3 mostra um exemplo de classe de objeto. Figura 3 – Exemplo de declaração de Classe Fonte: Elaborada pelo autor 1.3.2 Herança É a habilidade de uma classe obter os métodos e atributos de outra, onde é denominada superclasse a classe já existente e de subclasse a que é criada a partir da superclasse. É importante ter cuidado em sua manutenção, pois qualquer mudança em uma superclasse é refletida em sua subclasse. A Figura 4 exemplifica um modelo de herança entre classes. 12 Figura 4 – Exemplo de herança entre classes Fonte: Elaborada pelo autor 1.3.3 Polimorfismo A palavra polimorfismo é derivada do latim e traz em sua essência o significado de “várias formas”. Ou seja, é “a capacidade de um operador desempenhar uma tarefa de acordo com o tipo do operando”. (INFORMATICA EM FOCO, 2017). É quando classes provenientes de uma superclasse podem realizar operações que possuem assinaturas iguais, porém diferentes comportamentos em cada subclasse, gerando resultados diferentes. Os tipos existentes são: Polimorfismo Universal Paramétrico: Neste tipo, um objeto pode ser usado como parâmetro em diferentes cenários, sem necessidade de alterações. Polimorfismo Universal Inclusão: Um objeto pode pertencer a classes diferentes simultaneamente, gerando uma hierarquia de herança. Além disso, o seu comportamento pode ser alterado em uma subclasse com relação à classe original. 13 Polimorfismo Ad-hoc Sobrecarga: É a utilização de métodos com mesmo nome, porém com assinaturas diferentes. Possibilita que um mesmo nome represente várias funções, dependendo do contexto. Polimorfismo Ad-Hoc Coerção: Ocorre por meio da sobrecarga de operadores, onde existe a conversão de um elemento de um tipo, para o tipo apropriado para o método. 1.3.4 Encapsulamento É a combinação de atributos e operações integradas em uma classe, deixando visível apenas o necessário para a comunicação entre dois objetos, como alguns detalhes da implementação ou, ainda, a lógica de um método. Pode-se definir o encapsulamento como uma visão geral e a base do conceito da Programação Orientada a Objetos (POO). Além disso, o encapsulamento permite ocultar a complexidade do código. “Em muitos casos é possível simplesmente chamar um método e passar um valor a ele e somente receber o resultado deste método sem a preocupação de como é a implementação dele.”. (OBJECTIVE-C BRASIL, 2017). 1.4 Banco de Dados Orientado a Objetos Devido ao avanço computacional novas necessidades foram surgindo, tornando os bancos de dados relacionais inadequados. A partir então da década de 80, com a finalidade de aumentar a produtividade no desenvolvimento, a POO tornou-se popular, passando a ser considerada a revolução na forma de criação de sistemas. Com a pretensão de acompanhar essa tendência e, além disso, solucionar as limitações dos bancos de dados relacionais foi proposto o BDOO. Então, os BDOOs podem ser definidos como a união entre os conceitos de paradigmas de OO e objetivos dos SGDB. 14 Uma característica fundamental de BDOO é a visibilidade dos objetos em todas ou várias versões. Na Figura 4 é possível entender a estrutura do modelo de BDOO. Figura 5 – Exemplo de BDOO Fonte: Elaborada pelo autor É feito o agrupamento dos objetos em classes e podem ser definidos como um tipo, quando possuem os mesmos atributos e métodos. Através dessa definição é possível observar a semelhança a uma linguagem de programação orientada a objetos. 1.4.1 Object Database Management Group - Grupo de Gerenciamento de Banco de Dados de Objetos (ODMG) O ODMG é um consórcio de vendedores e usuários de SGBDOOs que vem criando padrões para os sistemas, propondo um modelo de dados padrão para BDOO. Esse modelo fornece uma nomenclatura padrão para os conceitos de bancos de dados de objetos (BDO). Através desse modelo é constituída a Object Definition Language (ODL) e a Object Query Language (OQL). 15 Object Definition Language (ODL) – Linguagem de Definição de Dados: A ODL não depende de nenhuma linguagem de programação, tendo como objetivo criar especificações de objetos (classes e interfaces). Através dela, é possível para o usuário especificar um banco de dados independente de linguagem de programação, usando o bindings (ligações) de linguagens de programação específicas, como C++, Smalltalk e Java, para especificar como os componentes da ODL podem ser mapeados para componentes dessas linguagens. Object Query Language (OQL) – Linguagem de Consulta de Objetos: A OQL é uma linguagem de consulta declarativa definida, que oferece suporte ao tratamento de objetos complexos, invocação de métodos, herança e polimorfismo. Essa linguagem foi criada para trabalhar agregada às linguagens de programação como C++, SMALLTALK e JAVA, com as quais o modelo ODMG define um binding, Através disso, uma consulta OQL pode retornar objetos compatíveis com os sistemas de tipos dessa linguagem. 16 1.5 Características de Orientação a Objetos em BDOO Segundo Setzer (1999), algumas características de OO são essenciais para compor o conceito de BDOO, dentre as quais estão: 1.5.1 Persistência de Objetos É uma característica fundamental em BDOO, pois ela diferencia o BDOO das linguagens de POO. Persistir objetos representa a ideia de que um objeto não deixe de existir ao final de uma execução. Na POO os objetos são excluídos quando um programa termina sua execução. Se isso acontecer em um BDOO, resultaria em uma catástrofe. Portanto, se o usuário não solicitar a exclusão ou alteração de um atributo, os dados devem permanecer estáveis quando o programa for encerrado. 1.5.2 Object Identifier – Identificador de Objetos (OID) Para um uso futuro, os objetos precisam continuar existindo quando a execução de um programa é finalizada. O OID precisa ser um dado único e permanente durante a durabilidade dos objetos além de serem validos para todo banco de dados, já que auxiliam na recuperação do objeto e estabelecem relacionamento entre eles. 1.5.3 Hierarquia e Herança para BDOO Novas classes podem ser criadas a partir de outras classes que já existem, como em linguagens de POO. A hierarquia de casses torna as alterações nas estruturas de um BDOO muito mais flexíveis e possibilita que a estrutura do banco de dados evolua por meio da inclusão de novas classes na hierarquia. 1.5.4 Encapsulamento Em BDOO a definição de encapsulamento continua a mesma, entretanto quando uma consulta é feita ao banco de dados, não se pode incluir todos os 17 métodos nas classes antecipadamente. Portanto, o encapsulamento é inapropriado em BDOO dependendo da situação, mas esse aspecto é substancial para POO e se ele for descartado de BDOO, corrompe parcialmente a ideia de OO. 1.6 Características de Banco de Dados em BDOO Algumas adaptações devem ser feitas na forma de gerenciamento dos BDOO para possibilitar o uso de alguns recursos, como: Transações, concorrência e consultas. A seguir estão apresentados esses recursos dentre outros. 1.6.1 Transações Através da transação é possível reunir várias etapas em somente uma operação, como por exemplo, acessar e atualizar vários itens de uma tabela. Segundo Silberschatz (1998), a transação geralmente é o resultado obtido através da execução de um programa de usuário, que foi escrito em uma linguagem de auto nível como a Structured Query Language ou Linguagem de consulta estruturada (SQL), COBOL, C ou Pascal, sendo delimitada por chamadas de função da forma begin transaction e end transaction. Resumindo, a transação consiste em todas as operações executadas entre o começo e o fim da transação. Cada transação precisa percorrer o teste de ACID: Atomicidade: uma transação deve ser inteiramente executada. Coerência: é necessária a consistência do banco de dados antes e depois e uma transação. Isolamento: é ideal que ações de uma transação não interfira em outra, antes dessa ser completada. 18 Durabilidade: garantir que a informação gravada no banco de dados dure de maneira constante até que alguma outra transação de atualização ou exclusão afete-a. 1.6.2 Concorrência Através da concorrência, usuários diferentes conseguem acessar os dados de maneira simultânea. Segundo Silberschatz (1998), os sistemas de processamento de transações possibilita a execução de numerosas transações de maneira concorrente. Porém, esse processamento múltiplo de transações resulta em algumas complicações em relação à consistência de dados. Então, para controlar essa concorrência, é usado um algoritmo de controle que bloqueia a execução de uma transação se existir algum conflito. Nos SGBDOOs o OID de um objeto que foi bloqueado é armazenado em uma tabela. Duas características são relevantes para bloqueios em SGBDOOs: Bloqueio de Hierarquia de Classe: Todas as subclasses podem ser bloqueadas por uma superclasse no mesmo modo de bloqueio. Bloqueio de Objeto Complexo: Aprimorar a concorrência quando existir modelos que envolvem objetos complexos. 1.6.3 Recuperação No gerenciamento de recuperação em BDOO o mecanismo de logs é o mais utilizado. Ele armazena imagens (estados) anteriores e posteriores dos objetos. “Uma parte integrante de um sistema de banco de dados é o esquema de recuperação que é responsável pela restauração do banco de dados para um estado consistente que havia antes da ocorrência da falha”. (SILBERSCHATZ, 1998, p.511). As imagens são guardadas no log no percorrer da execução das transações. Então quando uma falha for encontrada, o sistema gerenciador de recuperação é 19 ligado com a intenção de efetuar correção tonando o banco de dados novamente coerente. 1.6.4 Consultas É possível acessar dados armazenados por meio da linguagem de programação e por linguagem de consulta. O processamento de consulta consiste em extrair dados em um banco de dados. Quando a linguagem e um banco de dados são utilizados, o trabalho de reestruturação para garantir a interação de linguagem de programação e linguagens de consultas é poupado. Isso implica na diminuição do código e no tempo de execução e permite o compartilhamento de estruturas entre as aplicações. 1.6.5 Versionamento Após a alteração de um objeto no banco de dados, é primordial que a versão atualizada seja armazenada. O gerenciamento de versões equivale a um conjunto de construções e ferramentas que facilitam construir e organizar versões e configurações. Se não houvesse estas ferramentas, seria responsabilidade do usuário criar e guardar suas próprias versões. No momento que um objeto passa pelo versionamento, uma base que indica para todas as versões do objeto é criada. 20 2 EXEMPLOS DE SGBDOOS EXISTENTES NO MERCADO A seguir serão apresentados exemplos dos principais SGBDOOs existentes, conceituando suas características. 2.1 Jasmine O SGDBOO Jarmine surgiu no Japão através da empresa Fujitsu e foi desenvolvido pela Computer Associates. Segundo Miranda (2015), O Jasmine é o primeiro SGBDOO puro desenvolvido por uma das empresas de softwares dominantes no mercado internacional de banco de dados. Ao contrário da maioria das empresas como Oracle, IBM e Informix que optaram por expandir seus SGBDs relacionais com funcionalidades do modelo de OO gerando os SGBDs universais, a Computer Associates decidiu concorrer no mercado com dois produtos complementares, mas distintos: o Ingres como SGBD relacional e o Jasmine como SGBD orientado a objetos. “O Jasmine implementa os conceitos básicos de orientação a objeto tais como encapsulamento, polimorfismo, herança, reuso e agregação.” (MIRANDA, 2015). A manipulação e armazenamento de classes são feitas através da linguagem de consulta a objetos denominada Object Database Query Language (ODQL). No Jasmine, quando uma classe é gerada, é necessária a identificação de qual família ela pertence. Além disso, através de consultas, valores embutidos em uma variável são retornados. O Jasmine possui elevada conectividade com a Web e suporte a linguagem Java, sendo considerado um banco de dados comercial. 2.2 Db4o Através do banco de dados db4objects (db4o) é possível criar aplicações Windowns.forms, Web e Compact Framework. Segundo o site Linha de Código (2017), para usar o Db4o é dispensável instalar ou configurar um servidor de banco de dados. É necessário apenas enviar juntamente com a aplicação uma pequena Dynamic-link library, ou "Biblioteca de Vínculo Dinâmico" (DLL). Este SGBDOO trabalha com as linguagens: Java e .Net, e realiza a manipulação dos dados por meio da linguagem de programação nativa ou por uma 21 linguagem do tipo SQL, a OQL. É um banco de dados que possui uma licença chamada GPL (Licença Pública Geral) e uma licença comercial. Além disso, o db4o possui mecanismos de replicação para atender necessidades como manter o banco de dados off-line durante um período de tempo. Por fim, a persistência dos objetos ocorre pelo comando "add nome". Este comando associa o OID a uma variável, para recuperação posterior. “As vantagens são a velocidade, a simplicidade e a pequena pegada da memória. db4o pode persistir “Objetos comuns”.” (GREHAN, 2015). 2.3 ObjectStore Foi criado pela empresa Object Design Inc, com a intenção de transformar a linguagem C++ em uma linguagem para banco de Dados. O ObjectStore trabalha com a arquitetura Cliente-Servidor e fornece todas as características de SGBD tradicional como: gerenciamento de transações, persistência, consultas associativa. Este sistema usa a linguagem C++ como base, portanto as declarações são praticamente iguais ao C++, possibilitando a conversão de programas escritos em C++ para Objectstore. O site da empresa Ignite Technologies (2017), que fornece o ObjectStore Standard Edition, cita como principais características desse SGBDOO: Armazenamento de modelos centrados no relacionamento que alimentam transações de dados de alto desempenho, análise e transações ACID. Redução da latência das consultas para milhares de usuários. Permite que os desenvolvedores criem estruturas de dados personalizadas, altamente sintonizadas, que tornam as lojas de dados grandes mais utilizáveis e valiosas. API de monitoramento corporativo que permite coletar, armazenar e analisar contadores internos da ObjectStore. O instalador embutido torna mais fácil para usuários finais e distribuidores instalar aplicativos cliente. 22 Rastreamento de pilha totalmente legível na ocorrência de um erro fatal. O gerenciamento automático de índices garante que os índices em coleções Java estão sempre sincronizados. 2.4 Caché Este sistema um modelo completo de objeto, com a inclusão de polimorfismo, encapsulamento, coleções, relações e heranças múltiplas. Ele pode ser criado em C++, Java, EJB, XML, COM, sendo considerado um banco de dados comercial. Segundo o site InterSystems (2017), o Caché pertence a uma nova geração de tecnologia de banco de dados que oferece modos variados de acesso a dados. Segundo o site, os dados são escritos em um único dicionário de dados integrados e logo em seguida estão disponíveis usando acesso a objetos, SQL de elevado desempenho e poderoso acesso multidimensional, podendo acessar simultaneamente os mesmos dados. Além disso, o Caché contém um mecanismo único de dados multidimensionais que possibilita a modelagem de ricas informações do mundo real, é escalonável podendo atender milhares de usuários sem afetar de maneira negativa a resposta SQL e suporte análise de dados estruturados e não estruturados em tempo real. Abaixo na Figura 6, é possível verificar como é a organização da arquitetura unificada dos dados no Caché. Figura 6 – Estrutura de Armazenamento Multidimensional Fonte: Quadros (2012, p. 3) 23 Na Tabela 1, podem ser analisados todos os componentes do Caché, incluindo o ambiente de desenvolvimento e administração. Tabela 1 – Componentes do Caché Fonte: Quadros (2012, p. 2) Após entender e conhecer os exemplos de SGBDOOs, a tabela a seguir apresenta mais algumas características e suas comparações: Tabela 2 – Características dos SGBDOOs Nome Open Source Sistema Operacional Fabricante Site Oficial Jasmine Não Windows, Linux e UNIX Computer Assoxiates http://www3.ca.com/ Db4o Sim Windows, Linux e UNIX Versant Coporation http://www.db4o.com/ Caché Não Windows, Linux e UNIX Intersystems Software http://www.intersystems.com .br/ Objectstore Não Windows, Linux e UNIX Progress Software http://www.objectstore.com Fonte: Elaborada pelo autor 24 3 PRINCIPAIS DESAFIOS E TENDÊNCIAS DO SGBDOO O Sistema Gerenciador de Banco de Dados Relacional (SGBDR) possui algumas limitações para o tratamento de uma quantidade maior de dados e de dados mais complexos. Então, os SGBDOOs foram sugeridos para atender a essas necessidades. Porém, este modelo ainda enfrenta alguns desafios para sua expansão, sendo o principal a falta de padronização, pois, ao contrário do modelo relacional que possui sucesso neste quesito, os SGBDOOs possuem apenas dois padrões: SQL3 e ODMG-93. O SQL3 surgiu em 1999 com o objetivo de adicionar as características de OO à versão SQL2. Este modelo se encaixa no novo contexto e necessidade de manipular e recuperar dados mais complexos ou não convencionais, que vão além de textos e números. A ODMG tem como objetivo padronizar a manipulação do banco de dados através da linguagem OQL e ODL. Porém, este padrão não é compatível com todas as ferramentas ou é parcialmente compatível. Outro grande desafio surgiu ainda nos primeiros BDOOs, a representação de relacionamento entre objetos. Para Elsmari (2005), a insistência no encapsulamento completo nos primeiros modelos de dados orientado a objeto provocou o questionamento de que os relacionamentos não deveriam ser explicitamente representados, mas deveriam ser descritos pela definição de métodos apropriados que localizariam os objetos relacionados. Também como uma adversidade para os SGBDOOs, pode-se citar que, a maioria das organizações já possui o modelo relacional instalado e adaptado à sua base de aplicações além de seu pessoal já estar treinado para este modelo. Então, a migração para o modelo OO envolve um alto investimento para o treinamento de pessoal e para a transição da base de dados. Entretanto, algumas tendências vêm sendo discutidas nos últimos tempos, referentes à orientação a objetos em banco de dados. Entre as tendências em ascensão está o armazenamento em memória. Como grande exemplo pode-se citar o Prevayler, que é uma biblioteca de persistência de objetos de código aberto para Java. 25 “É uma implementação do padrão de design do Sistema Prevalente, no qual os objetos de negócios são mantidos vivos na memória e as transações são registradas no diário para a recuperação do sistema.” (PREVAYLER, 2017). Esta ferramenta é uma maneira ágil de fornecer persistência ACID para seus “objetos Java antigos simples”. Foi produzida por um grupo de brasileiros, tendo como objetivo armazenar objetos e melhorar o acesso aos bancos de dados tradicionais, principalmente por preservar os objetos em memoria no servidor de aplicação. Outra tendência que vêm crescendo e sendo bem aceita no mercado, é a de sistemas de banco de dados Objeto-Relacionais. Estes sistemas buscam acrescentar funcionalidades de banco de dados orientados a objetos aos bancos de dados relacionais. Para Takai (2005), os sistemas Objeto-Relacionais tentam diminuir a dificuldade dos sistemas relacionais convencionais em representar e manipular dados complexos, tendo em vista serem mais representativos em semântica e construções de modelagens. Para isso, a solução é adicionar facilidades para manusear tais dados utilizando-se das facilidades SQL existentes, sendo elas: representações para objetos complexos no contexto SQL; herança no contexto SQL e sistema para produção de regras; extensões dos tipos básicos no contexto SQL. Elmasri (2005) conclui que, a tendência de combinar as melhores características do modelo de dados e das linguagens de objetos com o modelo relacional foi criado, pois as primeiras versões da linguagem SQL e o modelo relacional básico se tornaram inadequados para atender aos novos desafios das aplicações atuais. As interfaces objeto-relacionais também podem ser citadas quando se fala de tendências em BDOO. Elas fornecem uma interface de BDOO para aplicação, sendo uma abstração do modelo relacional, ou seja, para a aplicação é como se existisse um BDOO. “Essa tecnologia permite que as aplicações persistam os dados de forma transparente em quaisquer tipos de bancos, inclusive arquivos texto, cuidando de toda a complexidade inerente à tarefa.” BOSCARIOLI (2006). Para a aplicação é como se existisse um banco de dados orientado a objeto servindo de repositório. Portanto, apesar dos desafios enfrentados pelo BDOO, existem também algumas sugestões para expandir a utilização desse modelo. Ainda são pouco 26 utilizadas e pouco conhecidas no mercado devido à consolidação do modelo relacional. Porém, a possibilidade do surgimento de novas tecnologias ligadas ao paradigma da orientação a objeto tende a crescer ainda mais nos próximos anos. 27 CONSIDERAÇÕES FINAIS Este trabalho teve como objetivo apresentar conceitos sobre Banco de Dados Orientados a Objetos. Através de pesquisas e análises feitas para a elaboração do mesmo, foi possível identificar vantagens e desvantagens do modelo de BDOO, ainda pouco popular quando comparado ao modelo relacional, e suas características provenientes da orientação a objetos e dos bancos de dados tradicionais. Para a utilização e manipulação do BDOO, surgiram os Sistemas Gerenciadores de Banco de Dados Orientados a Objetos, sendo os principais utilizados no mercado: Jasmine, que possui elevada conectividade com a Web e suporte a linguagem Java, sendo considerado um banco de dados comercial; o Db4o, que trabalha com as linguagens: Java e .Net, e realiza a manipulação dos dados por meio da linguagem de programação nativa ou por uma linguagem do tipo SQL, a OQL; O ObjectStore, que foi criado com a intenção de transformar a linguagem C++ em uma linguagem para banco de dados; E por fim o Caché, que pode ser criado em C++, Java, EJB, XML, COM, sendo também considerado um banco de dados comercial. O BDOO possui como principal desvantagem a falta de padronização, o que é o grande desafio para a sua disseminação, sendo este ainda uma segunda opção quando comparado ao modelo relacional. Além disso, por não ser um modelo ainda consolidado no mercado atual, o treinamento de pessoal é algo que exige um investimento alto por parte das organizações. Porém, mesmo com estes desafios, não se pode deixar de enfatizar que os BDOOs surgiram como uma revolução para os bancos de dados relacionais, sendo suas principais tendências o armazenamento em memória, o banco de dados Objeto-Relacionais e as interfaces objeto- relacionais. Conclui-se então que o modelo de BDOO apresenta várias vantagens, mas a principal é a capacidade de armazenar dados complexos e métodos de um objeto, o que não é possível em um banco tradicional. Sendo assim, o presente trabalho colaborou para o entendimento do funcionamento e das características dos BDOOs, destacando sua importância para o tratamento da incompatibilidade de dados. 28 REFERÊNCIAS BOSCARIOLI, Clodis; BEZERRA, Anderson; DE BENEDICTO, Marcos; DELMIRO, Gilliard. Uma reflexão sobre Banco de Dados Orientados a Objetos. IV Conged - Congresso de Tecnologias para Gestão de dados e Metadados do Cone Sul. Paraná, jun./ 2006. Disponível em: < http://conged.deinfo.uepg.br >. Acesso em: 10 out. 2017. ELMASRI, Rames; NAVATHE, Shamkant B. Sistemas de Banco de Dados. 4.ed São Paulo: Pearson Education, 2005. GREHAN, Rick. Complex Object Structures, Persistence, and db4o. Db4o. Disponível em: <http://docs.huihoo.com/db4o/db4o-Whitepaper-Complex-Object- Structures.pdf>. Acesso em: 02 out.2017. IGNITE TECHNOLOGIES. ObjectStore® Standard Edition - O banco de dados por trás dos aplicativos mais escaláveis do mundo. Disponível em: <http://ignitetech.com/solutions/information-technology/objectstore/>. Acesso em: 04 out. 2017. INFORMATICA EM FOCO. Polimorfismo – Seus tipos. Disponível em: <https://informaticaemfoco.wordpress.com/2010/10/13/polimorfismo-seus-tipos/>. Acesso em: 22 mai.2017. INTERSYSTEMS. O Banco de Dados de Aplicativos que Importa. Disponível em: <http://www.intersystems.com/our-products/cache/cache-overview/>. Acesso em: 20 abr.2017. LINHA DE CODIGO. Db4o - Banco de Dados Orientado a Objetos. Disponível em: <http://www.linhadecodigo.com.br/artigo/875/db4o-banco-de-dados-orientado-a- objetos.aspx>. Acesso em: 21 abr.2017. MIRANDA, Rinaldo. Jasmine Mais Completo. Scribd, 2015. Disponível em: <https://pt.scribd.com/document/74460837/rmi>. Acesso em 01 out. 2017. 29 OBJECTIVE-C BRASIL. Paradigmas de Programação – Programação Orientada a Objetos. Disponível em: <https://objectivecbrasil.wordpress.com/2014/01/12/4- encapsulamento-p-o-o/>. Acesso em: 22 mai.2017. PREVAYLER. O que é Prevayler? Disponível em: <http://prevayler.org/>. Acesso em 25 abr.2017. PROPÉDIA. Simula 67. Disponível em <http://progopedia.com/language/simula- 67/>. Acesso em 20 de abril de 2017. QUADROS, Bruno C. Aplicação de Banco de Dados Orientado a Objeto em Sistemas de Informação. Ciências Exatas e da Terra PUC, Rio Grande do Sul, ago./ 2012. Disponível em: <http://www.pucrs.br/research/salao/2006- VIISalaoIC/Arquivos2006/CienciasExatasedaTerra/>. Acesso em: 04 out. 2017. SETZER, Valdemar W; NASSU, Eugenio A. Banco de Dados Orientados a Objetos. São Paulo: Blucher, 1999. SILBERSCHATZ, Abraham; KORTH, Henry F; SUDARSHAN, S. Sistema de Banco de Dados. 3.ed São Paulo: Pearson Education, 1998. TAKAI, Osvaldo K; ITALIANO, Isabel C; FERREIRA, João E. Introdução a Banco de Dados, Instituto de Matemática e Estatística - Universidade de São Paulo, São Paulo, fev./ 2005. Disponível em: <https://www.ime.usp.br/ > Acesso em: 10 out. 2017.
Compartilhar