Você está na página 1de 41

Sistemas de Bancos de Dados Orientados a Objetos

Ivan Luiz Marques Ricarte


Depto. Engenharia de Computao e Automao Industrial Faculdade de Engenharia Eltrica e de Computao Universidade Estadual de Campinas mailto:ricarte@dca.fee.unicamp.br http://www.dca.fee.unicamp.br/~ricarte/

Setembro de 1998

Resumo Sistemas de banco de dados representam um papel fundamental em aplicaes de processamento de informao no-numrica, onde a utilizao de tais sistemas permite facilitar a manuteno de dados consistentes que podem ser compartilhados por diversas aplicaes, as quais no precisam conhecer o modo como tais dados so internamente armazenados ou representados. A tecnologia de banco de dados j est madura para diversas aplicaes, principalmente nas reas administrativa e comercial. Entretanto, novas categorias de aplicaes tm demandado o gerenciamento de dados mais complexos so aplicaes tais como sistemas de apoio a projetos e de automao de escritrios. Para essas aplicaes, o paradigma de orientao a objetos surge como alternativa adequada para a representao e manipulao dos dados, mas preciso ainda integrar de forma adequada esta tecnologia a sistemas de banco de dados. Sistemas gerenciadores de bancos de dados orientados a objetos constituem a proposta corrente para a soluo desse problema. Neste trabalho apresentam-se os aspectos bsicos da modelagem e da tecnologia de tais sistemas, com uma breve discusso sobre tendncias na rea de processamento de informao no-numrica. Pela anlise dessas tendncias, observa-se que as tcnicas desenvolvidas para a integrao de orientao a objetos a banco de dados oferecem contribuies que certamente estaro presentes nas novas plataformas de processamento por objetos distribudos. Assim, o estudo de sistemas gerenciadores de base de objetos devem ainda permanecer como objeto de interesse por um longo perodo.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

1 Motivao
Um banco de dados uma coleo de dados relacionados que pode ser armazenada sob alguma forma fsica. Os dados armazenados em um banco de dados representam algum aspecto especco do mundo real um universo de discurso de onde os dados so obtidos e apresentam algum grau de coerncia lgica entre seus componentes. Portanto, uma coleo aleatria de dados no constitui um banco de dados. Um sistema gerenciador de banco de dados o software que permite criar, manter e manipular bancos de dados para diversas aplicaes. A criao e manuteno de bancos de dados tarefa de uma pessoa ou grupo de pessoas, normalmente referenciada como o administrador do banco de dados. A manipulao do banco de dados atualizaes e consultas realizada direta ou indiretamente, atravs de programas aplicativos, pelos usurios do banco de dados. O sistema gerenciador de banco de dados pode ser de propsito geral ou especco para alguma aplicao. Um sistema de banco de dados constitudo por um banco de dados e por um sistema gerenciador de banco de dados, como mostrado na Fig. 1 [16]. Um sistema de banco de dados usualmente uma aplicao que serve de suporte a outras aplicaes, tais como folha de pagamento, controle de pessoal e informaes bancrias.
Sistema de Banco de Dados SGBD Programas Aplicativos/Consultas Software para Processar Consultas e Programas

Usurios/Programadores

Software para Acessar os Dados Armazenados

Metadados

Base de Dados Armazenados

Figura 1: Sistema simplicado de banco de dados.

Tradicionalmente, sistemas de banco de dados estavam relacionados a aplicaes nas reas administrativa e comercial. Com o tempo, as vantagens obtidas com a utilizao de um sistema de banco de dados para suportar a armazenagem da informao de uma aplicao principalmente a independncia da aplicao com relao estrutura interna de armazenagem e a possibilidade de

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

compartilhar dados entre aplicaes passaram a ser desejadas em outras classes de aplicaes, tais como projetos de engenharia (CAD/CAE Computer Aided Design, Computer Aided Engineering), automao industrial e de escritrios (CAM Computer Aided Manufacturing, OA Ofce Automation), sistemas especialistas de suporte tomada de decises (DSS Decision Support Systems) e sistemas de suporte ao trabalho cooperativo (CSCW Computer Supported Cooperative Work). Muitas destas aplicaes no convencionais impem requisitos ao sistema de banco de dados que no estavam presentes nas aplicaes tradicionais, tais como lidar com maiores volumes de dados, a necessidade de manipulao de dados em formatos no-alfanumricos incluindo informao multimdia e o tratamento de esquemas evolutivos e dinmicos. As necessidades dessas novas categorias de aplicaes constituem a maior motivao para o surgimento de novas abordagens para o gerenciamento de dados. neste sentido que a integrao do paradigma de orientao a objetos a sistemas de banco de dados tem surgido como a tendncia mais promissora em termos de gerenciamento de dados para as mais diversas categorias de aplicao. Neste trabalho apresenta-se um breve relato da evoluo dos sistemas de banco de dados em direo a sistemas gerenciadores de base de objetos. Na Seo 2 descreve-se a primeira onda do processamento da informao no-numrica, culminando com a proposta do modelo relacional e o desenvolvimento dos primeiros sistemas gerenciadores de banco de dados relacionais. Sistemas gerenciadores de banco de dados relacionais ainda dominam boa fatia do mercado de processamento de informao, utilizando uma tecnologia dominada e sendo perfeitamente adequados para grande parte das aplicaes comerciais e administrativas. Na Seo 3 apresentam-se os resultados de um perodo de transio, onde a limitao dos modelos tradicionais de representao de dados tornou-se patente para as novas aplicaes computacionais que surgiam. Nesse contexto foi que a orientao a objetos foi proposta como o paradigma adequado de representao de dados, embora ainda fosse incerto como o casamento entre orientao a objetos e sistemas de banco de dados devesse ocorrer. Foi um perodo de experimentao, durante o qual foram lanados os fundamentos para a modelagem de dados segundo o paradigma de orientao a objetos. Na Seo 4 apresenta-se o resultado do amadurecimento da aplicao do paradigma de orientao a objetos a sistemas de banco de dados. Aspectos da tecnologia que oferece suporte implementao de sistemas gerenciadores de base de objetos so apresentados. A Seo 5 apresenta alguns exemplos representativos de gerenciadores de objetos, onde algumas destas tcnicas so ilustradas. Finalmente, na Seo 6 so apresentadas as tendncias para o futuro do gerenciamento de dados em aplicaes computacionais, que indicam ser o paradigma de orientao a objetos a base para a evoluo dessas aplicaes. Assim, sistemas gerenciadores de base de objetos devero de fato representar um papel fundamental como repositrios de informao no futuro das aplicaes computacionais por um longo perodo.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

2 Evoluo de sistemas de banco de dados


Para melhor compreender o estado atual da tecnologia de banco de dados, interessante observar como esta tecnologia surgiu e evoluiu. O surgimento dos primeiros computadores est intimamente ligado realizao de clculos numricos repetitivos. Este era a motivao de Babbage para o projeto e elaborao de seu Engenho Analtico no Sculo XIX. Da mesma forma, os trabalhos pioneiros de Zuse, na Alemanha, e de Atanasoff, Aiken, Mauchly e Eckert, nos Estados Unidos, eram computadores voltados para a soluo de problemas numricos. Por um longo perodo, o desenvolvimento de computadores cientcos (para aplicaes numricas) foi independente do desenvolvimento de mquinas para aplicaes comerciais. Somente no incio da dcada de 1960 a integrao entre estas duas tendncias ocorreu de modo mais acentuado, principalmente atravs dos esforos da IBM para otimizar sua linha de produo de mquinas para as duas reas de aplicao. O conceito que motivou o surgimento de bancos de dados quase to antigo quantos os primeiros sistemas computacionais para aplicaes no-numricas, remontando ao nal da dcada de 1950. Entretanto, o surgimento de sistemas gerenciadores de banco de dados sofreu inuncias tambm de outras reas de aplicao, notadamente da rea de defesa e de aplicaes militares.

2.1 Primrdios do processamento no-numrico


O desenvolvimento de linguagens de denio de dados foi um fator importante no desenvolvimento de sistemas de banco de dados [18]. Entre elas destacam-se COMPOOL e COBOL. COMPOOL foi uma linguagem desenvolvida no Massachusetts Institute of Technology no contexto do projeto SAGE, de controle de trfego areo, suportado pela Fora Area norte-americana. Ela fornecia um mecanismo para denio de atributos compartilhados por centenas de programas em tempo-real. COBOL uma linguagem de programao com uma seo centralizada para a denio de dados, a DATA DIVISION. A criao desta linguagem foi coordenada pelo consrcio CODASYL para integrar linguagens de aplicaes comerciais, como FACT (Honeywell), GECOM (General Electric) e Commercial Translator (IBM). O uso de uma linguagem comum de denio e processamento dos dados, como no caso de COBOL, era atrativo pois a linguagem de denio seguia o modelo da sistemas baseados em tas e cartes. Entretanto, cada fabricante adotava seu prprio esquema de armazenamento, o que dicultava a transferncia de dados entre sistemas de fabricantes distintos. Geradores de relatrios foram criados para facilitar o trabalho de produzir sadas formatadas a partir de dados armazenados no sistema. Embora tais tarefas pudessem ser (e eram) produzidas a partir de linguagens de programao convencionais, os programas produzidos eram muito extensos. O uso destes report generators permitia ento que usurios examinassem e manipulassem grandes volumes de dados, sendo um precursor das linguagens de consulta a bancos de dados.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

A General Electric desenvolveu o Generalized Report Generator para o centro de operaes da Atomic Energy Commission em Hanford, estado de Washington, em 1956. Este sistema foi o ancestral de todos os sistemas de gerao de relatrios, incluindo os sistemas da IBM, RPG (System/360, 1965) e seu sucessor, RPG II (1967).

2.2 Desenvolvimento de gerenciadores de banco de dados


Os primeiros prottipos desenvolvidos com a funcionalidade de gerenciar dados de uma aplicao, se comparados com os sistemas atuais, oferecem pouca semelhana de funcionalidade. Entretanto, foram esforos signicativos para a poca e que inuenciaram de diversos modos o desenvolvimento dos sistemas posteriores [18]. Alguns destes esforos so citados a seguir. Base-Ball foi um sistema especialista de acesso a dados atravs de uma interface em linguagem natural. Os dados, assim como o vocabulrio de interao entre usurios e a base de fatos, eram relacionados a beisebol. B-Tree uma estrutura extensivamente utilizada para acesso eciente a arquivos, cuja primeira implementao foi apresentada em artigo publicado na Communications da ACM de janeiro de 1962, por Collilla e Sams. QUERY era uma linguagem de consulta a dados com traduo para linguagem de mquina, descrita em artigo na Communications da ACM tambm de janeiro de 1962, por Cheatham e Warshall. Recol (Retrieval Command-Oriented Language), era um sistema de gerenciamento de acesso informao generalizado para unidades de ta, descrito por Climenson na Communications da ACM, de maro de 1963. ACSI-Matic foi um sistema projetado para explorar o uso efetivo de memria e inferncias. Foi o primeiro sistema a oferecer um pacote generalizado para recuperao de dados em discos com requisies em batch, a oferecer gerenciamento dinmico de memria principal e a utilizar um montador com rotina para alocao dinmica de memria. Era parte de um projeto do exrcito norteamericano, descrito inicialmente em 1960, com um prottipo implementado em 1964 pela RCA. ADAM (Advanced Data Management System) foi um sistema desenvolvido com recursos da Fora Area norte-americana a partir do prottipo ETF (Experimental Transport Facility), da MITRE Corporation. Tinha por objetivo ser um laboratrio para modelagem, desenvolvimento de prottipos, vericao de projeto e avaliao de sistemas gerenciadores de dados. Colingo era um conjunto de sistemas de gerncia de dados orientados a tas, oferecendo uma estrutura estilo COBOL em mquinas IBM. Aps estes primeiros esforos no sentido de oferecer sistemas manipuladores de dados, surgiram de fato as primeiras famlias de gerenciadores de dados. Esforos pioneiros incluam o Mark IV para mquinas IBM1401, desenvolvido por Postley na Informatics no perodo 19641968; o IDS (Integrated Data Store), desenvolvido por Bachman no perodo 19641966; e o Formatted File, desenvolvido pela fora area norte-americana no perodo 19611965. O Formatted File inuenciou

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

o produto da IBM, GIS (Generalized Information System), que introduziu como contribuies o armazenamento de tabela com o formato do arquivo e a manipulao de grandes arquivos. O IDS combinava tecnologia de acesso a posies aleatrias com linguagens procedimentais de alto nvel (inicialmente, Gecom; posteriormente, COBOL, em 1966) oferecendo um modelo de dados do tipo rede. Nesta mesma famlia de gerenciadores incluem-se tambm APL (Associative PL/I), desenvolvido na General Motors (1966), e dataBASIC, da Honeywell (1970). As principais caractersticas destes gerenciadores, que foram contribuies importantes para gerenciadores de dados que se seguiram, incluem:

verbos para manipulao de dados na interface de alto nvel; descries separadas para armazenamento e para programao; princpios elementares de manuteno da consistncia, com mecanismos para remoo e insero implcitas; conceitos de paginao de dados; e acesso compartilhado aos dados. Os primeiros desenvolvimentos comerciais em gerenciadores de banco de dados foram marcados

pelos esforos da CODASYL, com o Data Base Task Group (DBTG, 19691971) e o projeto IMS (19661969) da Agncia Espacial norte-americana (NASA), que inuenciou o produto IMS/360 da IBM. A abordagem do DBTG foi propor uma extenso a COBOL para a manipulao de bancos de dados. Esta abordagem foi adotada por diversos produtos, entre os quais destacam-se o IDMS (Integrated Data Management System), desenvolvido pela IBM para IBM System/360; IDMS-11 e DBMS-10, implementaes de IDMS pela Digital Equipment Corporation para suas mquinas PDP11/45 e PDP-10, respectivamente; e o IDS/II, uma adaptao de IDS realizada pela Honeywell para adequao ao padro DBTG. O projeto IMS foi resultado de um desenvolvimento conjunto das empresas Rockwell, IBM e Caterpillar para apoio ao programa Apollo, da NASA. Foram frutos deste projeto os produtos ICS/DL/I (Information Control System, Data Language/I), da Rockwell; e IMS/360, da IBM desenvolvido para suas mquinas da famlia System/360.

2.3 O modelo relacional de dados


A maior contribuio dos primeiros gerenciadores de dados foi introduzir a separao entre os dados armazenados e a descrio da estrutura dos dados, o esquema de dados. As restries sobre tipos de dados e de esquemas que so permitidos por um sistema constituem seu modelo de dados.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

A abordagem proposta pelo grupo CODASYL/DBTG suporta um modelo de dados conhecido posteriormente como o modelo rede (network), enquanto que a abordagem de IMS introduziu o modelo de dados hierrquico. Ambos modelos de dados tm por princpio o estabelecimento de ligaes entre grupos de registros. No modelo de dados rede os registros so organizados na forma de grafos dirigidos. No modelo de dados hierrquico cada registro tem um nico antecessor, limitando a organizao dos dados a uma estrutura de rvore, ou hierarquia. Apesar do avano em relao aos primeiros sistemas gerenciadores de dados, os modelos rede e hierrquico apresentavam como limitao uma forte dependncia entre as estruturas internas de armazenamento e a representao abstrata dos dados, inuenciando assim os mecanismos de manipulao. Uma caracterstica genrica dos produtos baseados nestes modelos estava no modo como as ligaes entre registros era armazenada, usualmente utilizando endereos fsicos, com uma forte dependncia entre a representao do armazenamento e a mquina onde o sistema estava implementado. No entanto, para aquela poca portabilidade no era uma questo maior, pois muitos clientes concentravam suas aplicaes em uma nica mquina de grande porte. Um grande marco na evoluo em modelos de dados foi a proposta do modelo relacional [12], que apresentava um modelo matemtico para a representao e manipulao de dados totalmente independente de caractersticas de implementao. O modelo relacional oferece uma viso do conjunto de dados como uma coleo de tabelas ou relaes (no sentido matemtico da palavra), onde cada tabela um conjunto de registros ou tuplas,

-uplas ordenadas de valores literais pertencentes a domnios atmicos. O modelo oferece a possibi

lidade de expressar consultas e manipulaes sobre a base de dados usando linguagens independentes de sistemas, baseadas em lgebra relacional e em clculo relacional [26]. A lgebra relacional oferece operaes bsicas como seleo de tuplas dentre as pertencentes a uma relao ( ), a projeo de colunas da tabela gerando uma nova relao com apenas as colunas selecionadas ( ), o produto cartesiano de duas relaes gerando uma nova relao com todas as combinaes possveis de tuplas entre as duas relaes originais ( ), a unio de duas relaes com estruturas compatveis ( ) e a diferena de duas relaes com estruturas compatveis ( ), onde o resultado uma terceira relao que contm as tuplas da primeira relao que no esto presentes na segunda relao. As principais operaes derivadas das operaes bsicas na lgebra relacional incluem:

a interseo de conjuntos, que pode ser expressa em termos de diferenas,


 
 
  

a juno com predicados, que pode ser expressa em termos de seleo e produto cartesiano,

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

a juno natural, onde o predicado de juno a igualdade entre valores de atributos com domnios compatveis nas duas relaes envolvidas. A lgebra relacional permite expressar as operaes elementares que devem ser seguidas, em

ordem, para a obteno do resultado desejado. Neste sentido, uma linguagem procedimental, pois suas expresses denem sequncias de operaes. No entanto, no uma linguagem procedimental completa, pois no inclui as construes de controle de execuo usualmente presentes em linguagens de programao. O clculo relacional baseado em construes no-procedimentais, usando descries formais do que desejado na manipulao. Duas variantes bsicas so o clculo relacional de tuplas e o clculo relacional de domnios. possvel mostrar que estas trs linguagens relacionais a lgebra, o clculo de tuplas e o clculo de domnios tm poder equivalente de expresso [26]. As linguagens relacionais, matemticas, ofereceram os fundamentos para o desenvolvimetno de diversas linguagens computacionais de consulta e manipulao de bases de dados. A linguagem SQL usa uma combinao de construes da lgebra e do clculo relacionais. Outras linguagens de consulta conhecidas incluem Quel (baseada no clculo relacional de tuplas) e QBE (baseada no clculo relacional de domnios). As vantagens do modelo relacional podem ser resumidas em dois pontos principais. O primeiro seu forte suporte terico para descrio da representao e da manipulao dos dados. O segundo a facilidade oferecida para o mapeamento de tuplas para os dispositivos de armazenamento, com uma associao praticamente direta para registros de dimenso xa em arquivos com acesso direto em disco. Estas vantagens motivaram os pesquisadores da poca a investir no estudo de mecanismos de suporte implementao de sistemas gerenciadores de banco de dados relacionais. A dcada de 1970 foi assim marcada pelo desenvolvimento de prottipos de sistemas relacionais. Os principais projetos desta fase foram o System R, da IBM, e INGRES, da Universidade da Califrnia em Berkeley. O System R [2, 6] foi um projeto-prottipo do laboratrio de pesquisa da IBM em San Jose, Califrnia, iniciado em 1974. Concludo em 1979, deu ainda origem ao produto SQL/Data System (1981) e ao projeto R* para estudo de sistemas de bancos de dados distribudos. Posteriormente, em 1983, a IBM lanou tambm o produto DB2 para manipulao de grandes bases de dados relacionais. As principais contribuies deste projeto foram a denio da linguagem de consulta SQL, a introduo de mecanismos para a compilao e otimizao de consultas, a introduo de mecanismos de integrao da linguagem de consulta a linguagens de programao, e a introduo dos conceitos de locking em duas fases e com mltiplas granularidades. INGRES [45, 46] foi um sistema gerenciador de banco de dados experimental desenvolvido por um grupo de pesquisa da Universidade de Berkeley. Posteriormente, um produto do mesmo nome derivado deste projeto foi lanado pela empresa Relational Technology, Inc., sendo atualmente comercializado pela empresa Ingres Inc. O prottipo inicial do sistema foi desenvolvido em um PDP-11, com sistema operacional Unix. INGRES foi projetado como um sistema gerenciador com diversos

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

processos concorrentes com mecanismos de comunicao inter-processos. A linguagem Quel foi introduzida por este projeto, juntamente com um mecanismo de embedding para a linguagem de programao C. As tcnicas de otimizao de consulta no eram realizadas por pr-compilao, como em System R, mas durante a interpretao das consultas, atravs de um processo de decomposio de consultas. Deste projeto derivou-se tambm o projeto POSTGRES [41], sistema gerenciador de banco de dados relacional com caractersticas avanadas de controle de restries e apoio a novos tipos de dados. Estes prottipos inuenciaram o desenvolvimento de muitos produtos, e sistemas gerenciadores de banco de dados relacionais atingiram grande sucesso comercial. Entretanto, o desenvolvimento da tecnologia computacional vem motivando a implementao de aplicaes cada vez mais complexas, cujas necessidades de representao de informao nem sempre eram adequadamente atendidas por tais produtos. Assim, o modelo relacional de dados enfrentou (e continua enfrentando) algumas crticas, das quais se destacam: 1. apenas adequado para aplicaes estruturalmente simples; 2. o poder de expresso das tabelas limitado; 3. desenvolver um bom projeto relacional, normalizado, no tarefa simples. a partir de situaes como essas que a busca por novos mecanismos de expresso de dados motivada. Neste caso, havia uma necessidade de se buscar modelos de dados com maior poder de expresso que o modelo relacional de dados. As abordagens resultantes podem ser resumidas em trs grandes categorias de modelos: os modelos relacionais estendidos, os modelos de dados conceituais e os modelos orientados a objetos. Os modelos relacionais estendidos incorporam mecanismos no previstos na proposta original do modelo relacional [13]. Os principais mecanismos descritos em diversas propostas incluem procedimentos armazenados, verses, objetos binrios (BLOBs) e denio de tipos abstratos de dados. A no existncia de um modelo estendido unicado diculta uma aceitao mais ampla dessa linha de evoluo de modelos. Sistemas representativos desta tendncia incluem op j citado POSTGRES, da Universidade da Califrnia em Berkeley, que evoluiu posteriormente para um produto comercial denominado Montage [50], e Starburst [27], do IBM Almaden Research Center. Os modelos de dados conceituais oferecem construes no nvel mais prximo do projetista para organizao do mundo de interesse [5, 38]. O termo conceitual refere-se ao fato de que as construes oferecidas por estes modelos esto em nveis de abstrao mais prximos do universo de interesse do usurio do que dos aspectos de implementao da mquina. Vrias propostas de arquiteturas de bancos de dados utilizam trs nveis de abstrao para bancos de dados (Fig. 2), embora em geral no haja um consenso sobre os nomes de cada nvel. Aqui adotou-se a nomenclatura de Parsaye [36]. De qualquer modo, os modelos de dados conceituais esto prximos do nvel mais alto.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Conceitual

entidades atributos relaes registros campos tabelas dicionrios definies de dados mtodos de acesso dispositivos de armazenamento

Lgico

Fsico

Figura 2: Arquitetura de banco de dados.

Nesta estruturao de banco de dados em uma arquitetura de trs nveis, a informao do mundo real modelada por usurios independentemente das estruturas computacionais que sero utilizadas no nvel conceitual. Neste nvel, construes para a representao dos dados so (por exemplo) entidades, atributos e relaes. No nvel conceitual, a informao estruturada, onde algumas construes computacionais podem j ser consideradas. Construes para a representao dos dados seriam registros, campos e tabelas. O nvel interno ou fsico corresponde a representaes do dado onde so considerados detalhes de armazenamento, representao e desempenho. Neste nvel seriam consideradas construes computacionais como dicionrios, denies de dados, mtodos de acesso e dispositivos de armazenamento. Algumas das principais propostas no sentido de oferecer modelos de dados conceituais incluem o modelo entidade-relacionamento, que organiza a informao em tipos de entidades e tipos de relacionamentos; os mecanismos de abstraes em bancos de dados, agregao e generalizao; e os modelos semnticos e funcionais, que organizam a informao atravs de objetos e funes. O modelo entidade-relacionamento [11] foi proposto por Chen em 1976 como um modelo conceitual, no estando diretamente relacionado a preocupaes relativas implementao de suas primitivas. Por este motivo, juntamente com a proposta do modelo h descries para realizar o mapeamento do modelo E-R para os modelos relacional e rede, para os quais havia sistemas gerenciadores de banco de dados disponveis. Algumas das caractersticas de interesse do modelo E-R so o encapsulamento dos detalhes estruturais em construes de alto nvel (tipos de entidade e tipos de relacionamento) e mecanismos para manuteno de integridade e consistncia dos dados. Os conceitos de abstrao em bancos de dados, agregao e generalizao, foram propostos

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

por Smith e Smith [44] em 1977 como ferramentas de projeto de banco de dados, juntamente com propostas de mecanismos para seu suporte em sistemas gerenciadores de banco de dados, principalmente relacionais. Estes conceitos bsicos reaparecem em muitos outros modelos sob diferentes formas. Modelos semnticos e modelos funcionais [22, 37] esto voltados principalmente para a integrao entre sistemas de bancos de dados e sistemas de representao de conhecimento, sendo fortemente inuenciados por tcnicas da inteligncia articial. Assim, incorporam mecanismos para expressar tipos complexos, relacionamentos entre objetos (incluindo hierarquias na forma IS-A) e derivao de esquemas. Tambm no houve uma abordagem de modelagem semntica universalmente aceita, da mesma forma como ocorreu com modelos relacionais estendidos. A abordagem de modelagem por orientao a objetos, apesar de prximo em princpio aos modelos de dados conceituais, vem recebendo ateno e aceitao muito mais ampla. Por este motivo, esse tpico ser tratado em mais detalhes na prxima seo.

3 Modelagem de dados orientada a objetos


Os sistemas comerciais de gerncia de banco de dados, baseados principalmente no modelo relacional de dados, obtiveram ampla aceitao e divulgao, em diversos nveis de escala de aplicao. Entretanto, tais sistemas mostraram-se inadequados para uma ampla gama de aplicaes que surgiu com a ampliao do poder de processamento dos computadores modernos. Essas aplicaes incluem, entre outras, atividades em projetos de engenharia (siatemas CASE para engenharia de software, CAD para desenvolvimento de hardware e apoio engenharia mecnica, engenharia civil e arquitetura), autoria e manipulao de documentos eletrnicos, manufatura e controle. O paradigma de orientao a objetos surgiu como uma alternativa para a modelagem de bancos de dados que permitiria incorporar muitos dos conceitos propostos pelas outras abordagens alternativas ao modelo relacional de dados. Embora inicialmente tenha tambm sofrido pelo excesso de abordagens no-compatveis, sua ampla aceitao motivou esforos de padronizao que vm unicando o chamado modelo de objetos. Deste modo, o desenvolvimento de sistemas gerenciadores de bases de objetos (SGBOs) surgiu como uma alternativa com o potencial adequado para atender demanda de tais aplicaes, sendo por este motivo objeto de intenso interesse de pesquisa e desenvolvimento. Antevia-se que tais sistemas ofereceriam o ferramental necessrio para as novas categorias de aplicaes que no estavam sendo adequadamente suportadas por bases de dados relacionais.

3.1 Princpios da orientao a objetos


O conceito de objeto como construo de programao foi inicialmente introduzido na linguagem Simula 67, onde a execuo de um programa era realizada atravs da composio da execuo de vrios objetos inter-relacionados. Objetos com uma mesma estrutura constituam uma classe, que

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

era descrita por uma declarao de classe. Os conceitos introduzidos por Simula estiveram por muito tempo limitados utilizao em aplicaes de simulao. Apenas a partir da dcada de 1980 houve um maior esforo no sentido de valorizar tais conceitos e incorpor-los a outras linguagens de programao. Nygaard [31] dene programao orientada a objetos como . . . o desenvolvimento de um sistema em um processo de informao atravs de transformaes de seu estado. A substncia do processo organizada como componentes do sistema, denominados objetos. Uma propriedade mensurvel da substncia uma propriedade de um objeto. Transformaes de estado so consideradas como aes por objetos. Um aspecto chave em programao orientada a objetos o conceito de abstrao, que permite abstrair (nesta denio) substncia como declaraes de classes; valores e propriedades mensurveis como declaraes de tipos; e aes como declaraes de mtodos ou procedimentos. Um objeto encapsula uma estrutura que s manipulvel atravs de mtodos componentes de uma interface pblica. Como Stroustrup destaca [47], programao orientada a objetos uma tcnica, um paradigma. Uma linguagem de programao orientada a objetos nada mais do que uma linguagem de programao que favorece a aplicao dessa tcnica. Entretanto, possvel realizar programao orientada a objetos sem usar uma linguagem de programao orientada a objetos, assim como no h garantia de que um programa ser orientado a objetos simplesmente porque foi implementado em uma linguagem de programao orientada a objetos. Alm dos conceitos fundamentais de classes, objetos e mtodos, dois conceitos inerentes programao orientada a objetos so herana e polimorsmo. Herana o mecanismo que permite reaproveitar declaraes de classes, criando classes derivadas a partir de declaraes de classes bases j existentes. Juntamente com a tcnica de padres de projeto (design patterns), herana torna-se um mecanismo de reuso poderoso. Polimorsmo o mecanismo que permite expressar que aes similares em classes distintas venham a ter um comportamento uniforme. Por exemplo, espera-se que um mtodo denominado print em duas classes distintas tenha um comportamento comum, independentemente das diferenas internas de sua implementao. Embora Simula tenha introduzido o conceito de objetos em programao, Smalltalk foi a linguagem responsvel por sua popularizao [29]. Em Smalltalk [19] toda a informao sobre o processo de interesse organizada atravs de objetos, por mais simples ou complexa que seja a unidade de informao. Programas manipulam objetos, sendo que a denio sobre a realizao do objeto, assim como de mtodos invocados, ocorre apenas durante o perodo de execuo, atravs do mecanismo de ligao dinmica (ou late binding). A execuo de um programa Smalltalk ocorre por interpretao, podendo haver uma converso de um programa fonte para um programa em formato intermedirio de interpretao, bytecodes. Atualmente, as linguagens de programao orientadas a objetos de maior utilizao so C++ e

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Java. C++ [48], ao contrrio de Smalltalk, uma linguagem fortemente tipada, onde a maior parte das vericaes de operaes sobre objetos so realizadas em tempo de compilao, atravs do mecanismo de early binding. Informao em C++ pode estar representada sob a forma de objetos, representantes de entidades abstratas ou do mundo real, ou sob a forma de literais, representando valores simples como inteiros, nmeros reais, caracteres e strings. Como C++ no uma linguagem interpretada, sua execuo rpida e eciente, fazendo com que C++ seja a linguagem preferencial onde o desempenho das aplicaes um aspecto importante. Crticas linguagem referem-se principalmente sua complexidade e diculdade de se realizar o transporte de aplicaes em C++ entre diferentes plataformas computacionais. Alm disto, C++ uma linguagem que, devido sua proximidade e compatibilidade com a linguagem C, favorece a implementao de programas no-orientados a objetos. Java [20] uma linguagem de programao denida pela Sun Microsystems como uma simplicao de C++, com o objetivo inicial de desenvolver aplicaes de software para sistemas embarcados. Tendo este objetivo, a linguagem deveria ser simples, eciente e oferecer um alto grau de portabilidade entre as possivelmente vrias plataformas de execuo distintas. Inicialmente, considerou-se a utilizao de C++ para atingir este objetivo, mas constatou-se que essa linguagem assim como muitas outras analisadas no era adequada para tal m. Assim, deniu-se uma nova linguagem de programao tomando C++ como base mas onde os seus mecanismos complexos, causadores da maior parte dos erros de programao, foram eliminados. Assim, Java no utiliza ponteiros, templates ou herana mltipla. Para alcanar portabilidade, empregou-se o conceito de compilar programas Java para bytecodes que so interpretados por uma mquina virtual [21]. A portabilidade alcanada a partir do momento em que mquinas virtuais Java estejam disponveis em diversas plataformas.

3.2 Incorporao de orientao a objetos a sistemas de banco de dados


A denio de Nygaard para programao orientada a objetos sugere ser este um paradigma adequado manipulao de sistemas de informao. De fato, alguns destes conceitos estavam presentes em propostas de modelos de dados, como o agrupamento de entidades (objetos) em tipos de entidades (classes) no modelo Entidade-Relacionamento de Chen. Assim, parecia ser o caminho natural de evoluo a fuso de orientao a objetos e sistemas de banco de dados. Entretanto, apesar da proximidade em seus objetivos nais, as duas abordagens de solues de linguagens e de modelos estavam bem distantes naquele momento, em meados da dcada de 1980. De um lado, sistemas de banco de dados atendiam s necessidades das aplicaes que manipulavam dados nos mais diversos tipos de sistemas de processamento de informao. Estes sistemas ofereciam o armazenamento persistente dos dados, ou seja, os dados registrados no sistema tinham um perodo de vida que se estendia alm do perodo de vida dos processos que os manipulavam. Em um programa orientado a objetos, variveis tipicamente se extingem com o nal da execuo do programa. Sistemas de banco de dados tambm eram ecientes em oferecer aramzenamento eciente para grandes volumes de registros, muito maiores que a capacidade de memria principal dos

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

computadores. Outro aspecto bem atendido por sistemas de banco de dados referia-se ao oferecimento de mecanismos de alto nvel para a interao com usurios, tais como a denio de linguagens de consulta declarativas e mecanismos para a gerao de formulrios de interao. A operao de bases de dados em ambientes distribudos j apresentava solues sob a forma de sistemas de banco de dados distribudos. Mesmo que a soluo no fosse a ideal, uma vez que os problemas de ambientes com bases de dados heterogneas e ambientes multidatabases ainda so objetos de estudo [23], era muito mais do que oferecido por qualquer linguagem de programao. Outro aspecto melhor atendido por sistemas de banco de dados era a questo do suporte a mltiplos usurios em acesso concorrente s bases de dados. Sistemas de banco de dados tambm ofereciam mecanismos interessantes de manuteno de consistncia dos dados, como os mecanismos de controle de transaes atmicas; de recuperao de dados em casos de falhas; e sistemas de regras (triggers) para a avaliao de condies durante a manipulao de dados que permitiam disparar procedimentos de vericao e manuteno da consistncia. Acima de tudo, a utilizao de sistemas de banco de dados permitia que aplicaes alcanassem a independncia de dados, ou seja, era possvel implementar aplicaes sem que fosse preciso conhecer a estrutura interna de como os seus dados estavam registrados. Duas conseqncias desta propriedade eram fundamentais para a implementao de aplicaes em sistemas de informao. Em primeiro lugar, mudanas na estrutura interna de armazenamento no afetavam a implementao da aplicao. Em segundo lugar, era possvel compartilhar os dados entre diversas aplicaes, permitindo a manuteno simplicada de um nico repositrio de dados para as aplicaes de uma corporao. Apesar da distncia entre linguagens de programao orientadas a objetos e sistemas de banco de dados, as vantagens antevistas para a integrao entre as duas abordagens era evidente. A perspectiva de se ter um modelo de objetos, onde entidades do mundo real pudessem ser representadas univocamente no esquema da base de dados por uma construo com alto nvel de abstrao (o objeto), parecia ser a soluo ideal para o problema do gap semntico entre modelagens e o mundo real. Desta forma, houve um grande investimento da parte dos pesquisadores da rea de banco de dados em se desenvolver modelos integrando os conceitos de orientao a objetos com funcionalidades de bancos de dados. As motivaes, assim como as necessidades, para se obter mecanismos de modelagem de objetos eram muitas, como descrito a seguir [10]. Identicadores de objetos. Em aplicaes de engenharia, de projeto e em algumas aplicaes comerciais, a identicao de entidades por valores de atributos pode ser articial e sujeita a inconsistncias. Por este motivo, ter uma identicao nica, independente de valores de atributos e gerenciada pelo sistema, importante para tais aplicaes.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Objetos compostos. Sistemas de banco de dados relacionais no lidavam de modo adequado com o conceito de objetos formados pela agregao de outros objetos. A importncia deste conceito j havia sido enfatizada pelo trabalho de Smith e Smith sobre abstrao de dados, sendo essencial em sistemas de banco de dados de apoio a projetos de engenharia. Nestas aplicaes, usual a necessidade de se oferecer mecanismos para denir objetos que contm outros objetos, assim como de oferecer operaes de acesso a subcomponentes nas hierarquias que denem tais objetos. Referncias e integridade. Composio por agregao apenas um caso especial de uma necessidade maior, que o estabelecimento de associaes entre objetos. fundamental a capacidade de se expressar relacionamentos genricos entre objetos, com mecanismos adequados para se utilizar esta informao. Adicionalmente, preciso que o sistema seja capaz de manter a integridade dessas referncias. Hierarquias de tipos. O mecanismo de herana presente em linguagens de programao orientadas a objetos deve ser oferecido como um mecanismo de denio de esquemas de dados e objetos, sendo importante para a maior parte das aplicaes. Procedimentos associados. interessante que a base de objetos possa registrar tanto a estrutura quanto o comportamento dos objetos da aplicao, onde o comportamento expresso pelos procedimentos (mtodos) que manipulam o contedo dos objetos. Em sistemas tradicionais, o comportamento relevado aplicao. Encapsulao de objetos. Isolar a estrutura interna de objetos da aplicao um mecanismo importante para obter reuso, inter-operabilidade e modularizao das aplicaes. A base de objetos deve oferecer subsdios para que este mecanismo das linguagens de programao orientadas a objetos reita-se no sistema gerenciador da base de objetos. Colees ordenadas. Sistemas relacionais operam exclusivamente com o conceito de conjuntos (colees no ordenadas), mas h diversas aplicaes onde a ordem dos elementos de uma coleo importante. Um sistema gerenciador da base de objetos deve oferecer mecanismos adicionais para a representao de colees mais genricas que simplesmente conjuntos. Grandes blocos de dados. Alguns atributos de objetos podem ocupar espaos de armazenagem muito maior que o espao usualmente ocupado pela representao de valores literais. Exemplos so registros de textos, imagens e sons. O mecanismo de BLOBs presentes am alguns sistemas relacionais estendidos, apesar de permitir o armazenamento destes volumes de dados, no oferece mecanismos para a interpretao destes dados, delegando tal tarefa exclusivamente aplicao.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Acesso remoto. Em ambientes de projeto, a operao de computadores em redes a regra geral e no a exceo. importante que um sistema gerenciador da base de objetos oferea mecanismos ecientes para acesso remoto aos objetos, com mecanismos de checkout, locking por perodos que podem ser extensos e checkin de objetos. Evoluo de esquema. Aplicaes de projeto, mais que outras, necessitam facilidades para introduzir modicaes no esquema de objetos ao longo de sua execuo, pois nesse tipo de aplicao a denio do esquema parte da atividade de projeto. Assim, importante ter um sistema gerenciador da base de objetos no qual modicaes de esquema possam ocorrer sem maiores impactos sobre os dados j armazenados. Interfaces de programao. Em sistemas gerenciadores de banco de dados tradicionais, a manipulao dos dados ocorre atravs de uma linguagem de consulta, no procedimental, semanticamente distante da linguagem de programao da aplicao. Nas aplicaes utilizando um sistema gerenciador da base de objetos, ao contrrio, interessante que haja uma maior integrao entre a base de objetos e a linguagem de programao orientada a objetos usada pela aplicao, uma vez que ambas adotam o mesmo paradigma. Mltiplas verses. Em aplicaes de projeto o conceito de verses dos objetos essencial, tanto para a manuteno da evoluo histrica do projeto como para expressar alternativas concorrentes para os objetos de projeto. importante que um sistema gerenciador da base de objetos permita expressar essa multiplicidade de representaes para um mesmo objeto. Embora tais motivaes tenham sido expostas principalmente a partir das necessidades de um sistema gerenciador da base de objetos para aplicaes de projeto em engenharia, claramente diversos desses mecanismos so interessantes para outras categorias de aplicao. A importncia em se obter uma combinao destes novos mecanismos com os mecanismos tradicionalmente oferecidos por sistemas gerenciadores de banco de dados foi logo observada, motivando diversas linhas de pesquisa com o objetivo de analisar e propor como tal integrao poderia ocorrer. Anal, um sistema gerenciador da base de objetos incorporando tais mecanismos constitui uma ferramenta poderosa para aplicaes futuras e para a evoluo de aplicaes tradicionais.

3.3 Prottipos pioneiros


Nesta seo sero apresentados alguns dos esforos pioneiros no desenvolvimento de sistemas gerenciadores que incorporassem, de algum modo, o conceito de orientao a objetos. Alguns dos primeiros desenvolvimentos em sistemas gerenciadores da base de objetos incluem os sistemas Iris, ORION e GemStone [25]. Iris [17] foi um prottipo desenvolvido na Hewlett-Packard para explorar as novas funcionalidades de um sistema gerenciador da base de objetos. A abordagem adotada em Iris pode ser classicada

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

como uma extenso de sistemas funcionais para orientao a objetos. Entre os objetivos do projeto buscava-se incorporar novos mecanismos de modelagem e de construo de tipos de dados, suporte a inferncias no banco de dados, suporte a transaes longas e a mltiplas verses das bases de dados. Aplicaes poderiam interagir com o sistema gerenciador da base de objetos atravs de vrias linguagens, que teriam suas construes mapeadas para as construes internas do gerenciador de objetos. A arquitetura bsica do sistema apresentada na Fig. 3. Para o mdulo gerenciador de armazenamento, um sistema gerenciador de banco de dados relacional da prpria HP foi utilizado. O sistema foi implementado em C em estaes de trabalho Unix (HP-9000).

Object SQL

Editor Grfico

Objetos C Objetos Lisp Lisp-Iris C-Iris

Gerenciador de objetos

tipos, objetos, funes, consultas, atualizaes, otimizao, verses

Gerenciador de armazenamento

concorrncia, recuperao, indexao, buffering, clustering

dados estruturados

dados no estruturados

Figura 3: Arquitetura do sistema Iris.

Do ponto de vista da aplicao, trs abordagens de interface foram propostas para este sistema. A primeira abordagem reetia a interface usual para sistemas gerenciadores de banco de dados de ento atravs de comandos de uma linguagem, OSQL, embutidos em alguma linguagem de programao. A segunda abordagem apresentava o sistema gerenciador da base de objetos como um objeto para a aplicao, que interagiria com o sistema atravs de mtodos aplicados ao objeto. Finalmente, a terceira abordagem procurava explorar o conceito de persistncia de objetos, onde objetos da aplicao seriam manipulados pelo sistema gerenciador da base de objetos de forma transparente para o programador. Um editor grco, implementado em Lisp, oferecia facilidades para a criao e manipulao de esquemas de objetos. Algumas caractersticas particulares de Iris incluam a possibilidade de examinar esquemas como quaisquer outros dados, a possibilidade de associar um objeto a mais de um tipo, e um mecanismo simples de controle de verses por checkout e checkin. Iris deu origem posteriormente a um produto da HP, OpenODB. ORION [24] foi resultado de um projeto desenvolvido no Programa Advanced Computer Architecture da MCC (Microelectronics and Computer Corporation), empresa de Austin, Texas. O

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

objetivo do projeto era inicialmente suportar as necessidades de manipulao de dados de Proteus, uma plataforma para sistemas especialistas. Foram implementadas em ORION funes tais como controle de verses e noticao de modicaes, objetos compostos e BLOBs, herana mltipla, evoluo dinmica de esquemas, gerncia de transaes, consultas e armazenamento de dados multimdia. Verses de objetos e referncias eram suportadas atravs de time stamps. A arquitetura do sistema apresentada na Fig. 4. O sistema, inicialmente mono-usurio, foi implementado em Common Lisp para Symbolics (mquina Lisp) e estaes de trabalho Unix. Posteriormente o sistema apresentou uma segunda verso com mltiplos clientes e uma terceira verso com mltiplos servidores.
subsistema de objetos

manipulador de mensagens

subsistema de transaes

subsistema de armazenamento

Figura 4: Arquitetura do Sistema ORION.

A interao da aplicao com ORION foi denida atravs de mensagens, que poderiam ser mtodos denidos por usurios, para a denio e armazenamento de dados; mensagens de acesso, para a recuperao e atualizao de valores de atributos de uma classe; e funes denidas pelo sistema, para realizar tarefas tais como denio de esquemas, gerncia de transaes, criao e remoo de instncias. As principais nfases no projeto ORION foram na implementao de bases distribudas e em evolues de esquema [4]. Duas formas de evoluo de esquema eram suportadas: mudanas na denio de classes (atributos e mtodos) e mudanas na estrutura de classes (classes e associaes). O sistema ORION deu posteriormente origem a um sistema de banco de dados comercial, Itasca [3]. Itasca apresenta uma arquitetura de mltiplos clientes e mltiplos servidores, adotando formatos neutros para representao interna de dados. Assim, dados do sistema podes ser compartilhados por aplicaes com interface de programao C++, C, CLOS, Lisp e Ada. GemStone [7, 8, 14] foi um produto da Servio Logic Corporation que estendeu a linguagem Smalltalk para incorporar manipulao de bases de dados. A linguagem resultante, OPAL, implementava um modelo de dados baseado em teoria de conjuntos, STDM (Set Theoretic Data Model). Entre outras caractersticas, GemStone incorporava o conceito de histria de objetos. Uma viso simplicada da arquitetura do sistema GemStone apresentada na Fig. 5. Gem oferecia compilao de programas em OPAL, vericava autorizao de usurios, e oferecia um conjunto pr-denido de classes e mtodos em OPAL para uso da aplicao. Caso atuasse no servidor, era

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

sesso

sesso
interpretador, compilador concorrncia, armazenamento, transaes, autorizao, replicao, recuperao

Gem

Stone

Figura 5: Arquitetura do Sistema GemStone.

tambm o mdulo encarregado por controlar conexes com as sesses clientes, recebendo bytecodes para um submdulo interpretador. Opcionalmente, este mdulo poderia ser alocado mquina cliente. Stone era o gerenciador de dados, mdulo onde as funcionalidades de sistemas de banco de dados, tais como entrada e sada de disco, controle de concorrncia, servios de transao e de recuperao, eram efetivamente implementadas. O prottipo inicial de GemStone, suportando a linguagem OPAL, foi implementado em hardware especco. Posteriormente, o sistema tambm foi oferecido com possibilidade de integrao a aplicaes em C++. Assim, GemStone foi o primeiro sistema a oferecer integrao atravs de mais de uma linguagem.

4 Manipulao e implementao de gerenciadores de bases de objetos


Nesta seo so descritos os aspectos do gerenciamento de dados que so especcos para sistemas gerenciadores de base de objetos [10]. Inicialmente apresentada uma viso conceitual dos mecanismos de manipulao de objetos, seguida por uma apresentao dos principais aspectos de implementao.

4.1 Objetos e atributos


Na orientao a objetos, objetos tm uma identicao nica que no depende de valores de seus atributos. Esta identicao de objeto (OID) utilizada para referncias a objetos, tanto internas como (possivelmente) externas. Deste modo, limitaes relacionadas ao processamento de chaves (primrias, estrangeiras) em sistemas de banco de dados relacionais no estariam presentes em sistemas de banco de dados orientados a objetos. No obstante, o conceito de um atributo chave est presente em muitas aplicaes. Deste modo, apesar de no ser um conceito da orientao a objetos, vrios sistemas gerenciadores de base de objetos oferecem a denio de atributos chaves como um mecanismo de acesso adicional ao identicador de objeto, mais prximo da compreenso dos usurios e oferecendo as mesmas restries de

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

integridade presentes em sistemas gerenciadores de banco de dados relacionais. Atributos de objetos esto presentes em qualquer sistema gerenciador de banco de dados, sendo que em sistemas tradicionais usualmente tais atributos esto restritos a valores literais e atmicos. Uma diferena em sistemas gerenciadores de base de objetos est na maior exibilidade oferecida para a denio destes atributos, que podem simples ou complexos. Atributos simples so aqueles cujos valores so literais. Em muitas aplicaes, valores multimdia so considerados atributos simples, onde o BLOB referente ao objeto multimdia considerado um valor literal, atmico e no-estruturado. Um sistema gerenciador de banco de dados multimdia essencialmente um sistema gerenciador de base de objetos onde os dados multimdia recebem tratamento diferenciado, no sendo considerados simples BLOBs literais. Atributos complexos podem ser de trs tipos: referncias, colees ou virtuais. Referncias ou associaes estabelecem relacionamentos entre objetos, tendo como valores identicadores de objetos. Um aspecto fundamental em sistemas gerenciadores de base de objetos a manuteno da consistncia entre referncias a objetos. Atributos complexos do tipo coleo so utilizados para denir conjuntos, listas ou arranjos de valores. Colees so exemplos de tipos parametrizados presentes em sistemas gerenciadores de base de objetos; os trs tipos citados so as construes parametrizveis fundamentais, porm outras podem estar presentes em distintas implementaes. Atributos virtuais ou derivados so aqueles cujos valores no esto explicitamente armazenados na base de dados, mas ao invs so computados atravs de procedimentos. Em geral, tais atributos so denidos como read-only, sendo raro o oferecimento de mecanismos para atualizar seus valores.

4.2 Aspectos comportamentais


Um sistema gerenciador de base de objetos precisa oferecer mais que simplesmente novos mecanismos de estruturao de dados. Alm da orientao a objetos estrutural, preciso suportar a orientao a objetos comportamental [1], que pode ser obtida atravs da denio de mtodos, procedimentos que permitem encapsular a semntica de um objeto. Em geral, atributos de um objeto so propriedade privada e exclusiva do objeto, sendo que apenas atravs dos mtodos pblicos a informao associada ao objeto pode ser manipulada. Este mecanismo de encapsulao fundamental para atingir independncia de dados em sistemas gerenciadores de base de objetos. A denio estrita de encapsulao exige a satisfao de trs critrios: 1. Apenas mtodos podem ser pblicos; 2. Mtodos so denidos em uma linguagem procedimental; 3. Mtodos podem manipular apenas dados do prprio objeto. Esta denio satisfeita em Smalltalk. H no entanto diversas outras linguagens de programao orientadas a objetos e sistemas gerenciadores de base de objetos que relaxam uma ou mais destas

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

restries para oferecer um melhor desempenho de execuo s custas de se aceitar um grau menor de encapsulao. A representao de comportamento em sistemas gerenciadores de base de objetos permite denir dados ativos, que incluem os atributos derivados, regras e agentes. Atributos derivados j foram apresentados anteriormente. Regras ou triggers so denidos como pares padro-ao, onde as aes so ativadas quando modicaes base de dados tornam verdadeiro o predicado expresso no padro da regra. Restries de integridade so casos particulares de regras onde as aes esto limitadas a sinalizaes de condies de erro. Agentes so caracterizados por processos associados ao sistema gerenciador de base de objetos, porm independentes, podendo realizar aes que extrapolam o ambiente da base de dados por exemplo, enviar uma mensagem por correio eletrnico.

4.3 Tipos e herana


Objetos com estrutura similar so agrupados em classes, sendo que o tipo do objeto denido atravs de uma declarao de classe. Usualmente, tipos so criados atravs de uma linguagem de denio de dados ou, mais especicamente em sistemas gerenciadores de base de objetos, atravs de uma linguagem de denio de objetos. Uma diferena entre uma linguagem de denio de dados e uma linguagem de denio de objetos que esta ltima pode permitir, como j observado, a denio de procedimentos associados estrutura, como no caso de atributos virtuais, incorporando assim aspectos de linguagem de manipulao de dados. Um conceito avanado que pode estar presente um uma linguagem de denio de objetos o conceito de herana, que permite denir novos tipos de objetos a partir de tipos j existentes. Herana um mecanismo de implementao do conceito de generalizao, importante para bancos de dados como ressaltado no trabalho de Smith e Smith sobre abstrao de dados. Os novos subtipos podem ser diferenciados dos tipos dos quais foram derivados por mecanismos tais como especializao, com o acrscimo de novos atributos, ou sobrecarga (overloading), onde oferece-se uma implementao diferenciada para um mtodo j existente no tipo ancestral. Deste modo, o esquema de tipos de objetos dene uma rvore ou hierarquia de tipos relacionados. Herana mltipla refere-se ao mecanismo de herana atravs do qual um novo tipo de objeto pode ser derivado a partir de mais de um tipo ancestral. Entretanto, a semntica de herana mltipla nem sempre clara. Ademais, a implementao de herana mltipla requer cuidados adicionais para lidar com situaes como o conito de resoluo para atributos ou mtodos. Quando herana mltipla suportada, o esquema de tipos de objetos passa a ser organizado como uma malha ou grafo de tipos. Em um sistema gerenciador de base de objetos, a modicao de um tipo implica na modicao do esquema de dados. Em um sistema gerenciador de banco de dados tradicional, modicaes no esquema eram aes que afetavam extremamente as aplicaes, muitas vezes necessitando de processamento off-line para converter os dados de um esquema para o outro. Em um sistema gerenciador de base de objetos, esta evoluo de esquemas deve ocorrer de forma mais natural. So trs as categorias de modicaes que implicam em evoluo do esquema: mudanas em componentes (atributos

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

ou mtodos) de um tipo, mudanas na hierarquia (ou malha) de tipos, ou mudanas na denio de tipos, atravs de modicao de nome, incluso ou remoo de tipos.

4.4 Consultas
Um dos principais aspectos a se considerar na manipulao de bases de dados o mecanismo oferecido para expressar operaes sobre os dados. Em geral, aplicaes usando bases de dados so desenvolvidas em alguma linguagem de programao e integram expresses de manipulao de dados aos programas. A diferena entre estas linguagens de programao e de manipulao de dados d origem ao problema de descasamento de impedncias (impedance mismatch) entre as linguagens, que endereado de maneiras distintas em diversos sistemas gerenciadores de base de objetos. Entretanto, nenhuma destas abordagens, descritas a seguir, consegue eliminar completamente o problema do descasamento de impedncias entre as aplicaes. Uma estratgia de integrao de linguagens o query download, onde todos os objetos relevantes para a operao da aplicao so recuperados da base de dados, traduzidos para a representao adequada para a linguagem de programao, manipulados, re-traduzidos e armazenados de volta base de dados. Uma variante deste esquema limita a operao a um nico objeto por interao, com o objetivo de maximizar a concorrncia de acesso base de dados. Outra alternativa ainda armazenar objetos da linguagem de programao como BLOBs na base de dados, que nesta situao no conteria nenhuma informao sobre a estrutura do objeto. Em outra direo de integrao, alguns sistemas estendem linguagens de manipulao de dados com construes procedimentais. Sybase adotou esta abordagem ao estender SQL com construes de controle de execuo para sistemas relacionais. Outros sistemas oferecem novos tipos de dados na linguagem de programao para reetir tipos e operaes referentes base de dados. Uma abordagem mais transparente de integrao entre linguagens de programao orientadas a objetos e sistemas gerenciadores de base de objetos a incorporao de mecanismos de persistncia de objetos linguagem de programao. Nesta situao, a base de dados utilizada de forma implcita e transparente como meio de manuteno do estado de objetos da aplicao entre sesses. Mtodos de especicao de persistncia em sistemas gerenciadores de base de objetos podem ser por tipo, por invocao explcita ou por referncia. Na especicao por tipo, apenas alguns tipos prdenidos so persistentes. Uma crtica a este modelo que persistncia e especicao de tipos so conceitos ortogonais, e que associar persistncia a apenas alguns tipos fere essa ortogonalidade. Na especicao de persistncia por invocao explcita, a aplicao solicita explicitamente ao sistema gerenciador de base de objetos o armazenamento persistente do objeto em questo. Na especicao por referncia, um ou mais objetos (as razes) so declarados como persistentes, e todos os objetos por eles referenciados tornam-se automaticamente persistentes. Este o mecanismo mais transparente, mas que exige mais em termos de processamento da parte do sistema gerenciador de base de objetos. Outro aspecto importante relativo a consultas em sistemas gerenciadores de base de objetos refere-se ao tipo de resultado que uma consulta gera. Em sistemas relacionais, existe um nico tipo

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

(a relao); portanto, operandos e resultados de consultas so relaes. Em sistemas gerenciadores de base de objetos, o grau de liberdade maior. Alguns sistemas podem limitar a resposta obtida a alguns tipos especcos, embora a tendncia seja permitir a manipulao de resultados abertos literal, objeto, colees de objetos ou at mesmo relaes (arranjos tabulares de dados). Consultas envolvendo mltiplos objetos necessitam de alguma forma de mecanismo de juno. Duas variantes da operao de juno em sistemas gerenciadores de base de objetos so a juno por referncia e a juno por valor. A juno por referncia utiliza associaes denidas na base de objetos para obter objetos associados. A juno por valor, assim como a juno de sistemas relacionais, realizada sobre valores de atributos que compartilham um domnio comum, no necessitando portanto de associaes explcitas para sua realizao.

4.5 Concorrncia e recuperao


Como dados em uma base de dados so persistentes e usualmente compartilhados por vrias aplicaes e/ou usurios, preciso que haja mecanismos para controle de acesso concorrente, de recuperao de dados em caso de operaes falhas e de manuteno de integridade dos dados. Em um sistema gerenciador de base de objetos, diferentemente do que ocorre em sistemas tradicionais, uma aplicao manipula de forma natural dados transientes e dados persistentes, o que pode criar diculdades adicionais na manuteno de consistncia dos dados. Operaes sobre objetos persistentes so usualmente denidas no escopo de transaes, assim como ocorre em sistemas gerenciadores de banco de dados tradicionais. Uma possvel diferena que sistemas gerenciadores de base de objetos podem (e geralmente o fazem) incluir transaes longas e, em alguns casos, transaes aninhadas. Verses oferecem um mecanismo alternativo para controle de concorrncia. Atravs do mecanismo de verses libera-se o sistema de manter uma nica cpia de um objeto na base, o que alivia uma eventual degradao que poderia ocorrer com a incorporao de transaes (e consequentemente locks) longas. Com verses, evolues alternativas nos estados dos objetos so permitidas. Um conceito relacionado a este congurao, um conjunto de verses de objetos mutuamente consistente. Conguraes equivalem a snapshots (ou vises instantneas) consistentes da base de objetos.

4.6 Implementao de identicadores


Um dos fatores mais importantes no desempenho de um sistema gerenciador de base de objetos a forma de implementao da representao de seus objetos como so armazenados, identicados e recuperados da base de dados. A representao de identicadores de objetos pode ser fsica ou lgica. A representao fsica contm o endereo real do objeto, como ocorre em linguagens de programao orientadas a objetos onde objetos so identicados por sua posio na memria. A representao lgica envolve algum mecanismo de mapeamento entre uma representao interna e o endereo do objeto.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

As quatro abordagens bsicas de implementao de identicadores so utilizao simples do endereo, um identicador fsico; utilizao de endereos estruturados, que contm uma componente lgica e outra fsica; utilizao de surrogates, identicadores lgicos que so mapeados para endereos fsicos atravs de um ndice ou de uma tabela; e a utilizao de surrogates tipados, onde a informao sobre o tipo do objeto includa no identicador lgico. A unicidade de um identicador de objeto um aspecto fundamental para a manuteno da consistncia de uma base de objetos. Identicadores de objetos so utilizados tanto pelas aplicaes como pela prpria base de objetos, para representar associaes entre objetos. O mecanismo para garantir unicidade pode variar entre implementaes distintas. Alguns sistemas garantem que identicadores de objetos removidos no so reaproveitados; outros buscam garantir unicidade entre mltiplas bases de objetos interligadas em rede, incorporando o endereo da mquina servidora no identicador de objeto. Identicadores de objetos puramente fsicos, por endereos, oferecem o melhor potencial de desempenho para recuperao de objetos. Porm, xar a posio do objeto na base torna-a menos exvel, dicultando operaes como relocao de objetos. A relocao pode ser necessrio para ampliar o espao de armazenamento associado a um objeto ou realizar uma compactao ou reclustering da base de objetos. Por este motivo, endereos fsicos no so utilizados na prtica. ONTOS e Objectivity/DB utilizam endereos estruturados, GemStone e POSTGRES utilizam surrogates, e ORION e Itasca adotam surrogates tipados. Alm da referncia a objetos por identicadores de objetos, diversos sistemas oferecem a possibilidade de se localizar um objeto atravs de atributos chaves. Em geral, a implementao deste mecanismo em sistemas gerenciadores de base de objetos similar quela de sistemas tradicionais, onde valores de atributos chaves so mapeados a identicadores de objetos atravs de ndices hash ou B-trees.

4.7 Swizzling
Swizzling o processo de converso entre a representao persistente do objeto, na base de objetos, e sua representao dinmica, na linguagem de programao orientada a objetos adotada pela aplicao, onde o objeto ser efetivamente manipulado. Evidentemente, um processo importante na manipulao de objetos, sendo determinante para o desempenho do sistema gerenciador de base de objetos. A converso que deve ocorrer atravs de swizzling envolve tipicamente tradues de referncias e, eventualmente, modicaes na estrutura e no formato de representao de dados. Referncias dinmicas so tipicamente ponteiros na linguagem de programao, e no identicadores de objetos. A traduo de identicadores de objetos para referncias a objetos na linguagem de programao a principal atividade desempenhada durante o swizzling. Mudanas na estrutura podem ocorrer atravs da incorporao de cabealhos e campos para utilizao em tempo de execuo. Mudanas na representao interna dos dados podem ser necessrias principalmente quando a base de objetos

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

compartilhada em ambientes heterogneos. Swizzling pode ocorrer em momentos distintos, de acordo com a implementao adotada para este mecanismo. Tipicamente, uma das quatro abordagens a seguir adotada: 1. A converso ocorre no momento em que o objeto transferido da base de objetos para o espao de memria da aplicao (checkout). 2. A converso ocorre no momento em que o objeto, j transferido para a memria, referenciado pela primeira vez pela aplicao. 3. A converso ocorre no momento em que a aplicao a solicita explicitamente. 4. A converso ocorre quando no possvel reaproveitar um endereo fsico designado anteriormente, o qual registrado tambm na base de dados. Esta ltima abordagem adotada em ObjectStore, que busca explorar a grande capacidade de endereamento virtual dos processadores modernos para alocar um objeto sempre mesma posio de memria virtual.

4.8 Granularidade de transferncia


Bases de objetos podem transferir informao entre o disco e a memria em unidades de dimenso, ou granularidades, distintas. Tipicamente, as granularidades adotadas so pginas, objetos ou resultados de consultas. A abordagem mais utilizada nas implementaes de sistemas gerenciadores de base de objetos passar para a aplicao uma imagem do disco, adotando granularidade de uma pgina (Fig. 6). Esta abordagem simplica o trabalho do servidor de pginas, onde o processamento ser mnimo. Entretanto, o trfego de dados pela rede ampliado, pois uma pgina pode conter mais informao que a solicitada pela aplicao. Quando a granularidade adotada um objeto ou um resultado de consulta, o trfego de dados pela rede reduzido, pois garante-se que a aplicao estar recebendo apenas o que foi solicitado. Entretanto, exige-se nessas situaes que o servidor de objetos j realize algum processamento sobre a base de objetos. Se o sistema gerenciador de base de objetos for compartilhado por muitas aplicaes, um alto nmero de requisies simultneas pode ter impacto signicativo no desempenho do servidor. A abordagem de imagem do disco, embora eciente, pode apresentar riscos integridade dos dados presentes na pgina. Este risco est presente principalmente quando a aplicao utiliza uma linguagem de programao onde permitido aos programas examinar e alterar qualquer posio de seu espao de memria como ocorre em C++, por exemplo. Em tais situaes, seria necessrio que o sistema gerenciador de base de objetos impusesse mecanismos adicionais de manuteno da integridade dos dados em uma pgina manipulada pela aplicao, evitando sua degradao atravs de

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

rea de memria da aplicao aplicao pgina objeto (3) (2)

(4) rea de armazenamento do servidor pgina objeto

(1)

Figura 6: Abordagem de imagem do disco com servidor de pginas: (1) transferncia de pgina (checkout) do servidor para cliente; (2) swizzling; (3) manipulao do objeto pela aplicao; (4) reconverso para formato do disco e transferncia de pgina (checkin) do cliente para o servidor.

aes inadvertidas ou maliciosas. Entretanto, as implementaes correntes de sistemas gerenciadores de base de objetos no incorporam mecanismos com este m. Citou-se como uma das atividades durante o swizzling a incorporao de informao para manipulao de objetos em tempo de execuo. Informao tpica de run time para um objeto inclui o mapeamento de um identicador de objeto para endereo fsico, o registro de quais objetos esto na memria da aplicao, manuteno de dirty bits para indicar se objetos foram atualizados ou apenas consultados, e contadores de referncias para sustentar atividades internas de swapping e garbage collection. Abordagens para manipulao deste tipo de informao incluem a manuteno de tabelas em memria, utilizao de descritores de objetos e incorporao de status bits no prprio objeto.

4.9 Atributos
A forma de implementao mais simples para a representao de atributos de um objeto seria utilizar relaes, com campos de dimenso xa, como foi proposto por alguns prottipos iniciais de sistemas gerenciadores de base de objetos. Entretanto, esta alternativa limita severamente a exibilidade de representao para objetos, no permitindo operar de modo eciente com atributos de dimenses variveis, com colees com quantidade varivel de elementos, a evoluo de esquema pela incluso de atributos e o armazenamento eciente para atributos no utilizados por um objeto. Listas de propriedades oferecem um mecanismo mais verstil de implementao de atributos de um objeto. Uma lista de propriedades composta por elementos contendo trs campos, representando um identicador de atributo, o tamanho do valor do atributo e o valor. Este mecanismo exvel,

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

porm demanda um maior grau de processamento da parte dos mtodos que manipulam a estrutura interna do objeto. Herana outro aspecto que traz impacto na representao de atributos. Em sistemas onde apenas herana simples permitida, o mecanismo de lista de propriedades ainda adequado. Neste caso, a lista de propriedades de um objeto composta pela concatenao dos atributos do tipo do objeto com os atributos do tipo de objeto ancestral, e assim recursivamente at encontrar os atributos do tipo de objeto que a raiz da hierarquia. Para lidar com herana mltipla, mecanismos mais elaborados so necessrios para estabelecer priridades na concatenao e resolver conitos entre tipos ancestrais com atributos de mesmo nome. Manipulao de colees outro aspecto crtico em sistemas gerenciadores de base de objetos, sendo esse mecanismo amplamente utilizado na descrio de estrutura de atributos de objetos e no retorno de consultas. Como colees podem ser demasiadamente extensas e/ou conter objetos grandes, preciso oferecer mecanismos que permitam manipul-las de modo mais eciente. O principal mecanismo adotado a utilizao de objetos iteradores. Um iterador um objeto temporrio que contm referncias aos membros da coleo, oferecendo mtodos tais como produzir o prximo elemento da coleo (lista) ou buscar o -simo elemento da coleo (arranjo). A manipulao de atributos do tipo BLOB usualmente implementada atravs de interfaces stream. Assim como iteradores, um stream permite referenciar objetos sem que esses estejam completamente concretizados em memria, com mtodos para posicionar, ler e escrever blocos de dados binrios. Alternativas para a manipulao de BLOBs incluem a paginao por demanda e utilizao de piece streams. Na paginao por demanda, a aplicao tem o objeto completo em memria virtual, sendo que pginas do objeto so transferidas para a aplicao medida que seus bytes so referenciados. Um piece stream um mecanismo de stream com facilidades adicionais que permitem a atualizao de contedo do BLOB, tais como insero e remoo de bytes na posio corrente.

4.10 Associaes
A implementao de relacionamentos no precisa reetir diretamente a forma como a aplicao os dene conceitualmente. A estratgia de implementao pode depender da multiplicidade das associaes. Por exemplo, um relacionamento um-para-muitos pode ser representado por contiguidade fsica, por indexao, por ligao ou atravs de objetos intermedirios criados pelo sistema gerenciador de base de objetos. Um tipo de associao implcita entre os elementos de uma coleo a ordenao. Apesar de estar presente em muitas aplicaes, nem sempre este mecanismo suportado em sistemas gerenciadores de base de objetos, onde apenas colees do tipo conjunto (assim como relaes, sem critrios de ordenao entre elementos) so suportadas. A importncia da ordenao da coleo reconhecida de longa data; o modelo CODASYL denia associaes de ordenao manual (critrio de ordenao estabelecido pela aplicao) e automtica (estabelecido pelo sistema sobre algum atributo da coleo).

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Outro aspecto importante na implementao de associaes a manuteno da integridade referencial. O mecanismo mais amplamente adotado para este m a utilizao de pares de atributos inversos. Assim, se a aplicao dene uma referncia de um objeto

   , o sistema gerenciador de base de objetos cria internamente a referncia  . Alternati-

para um objeto , denotada

vamente, o sistema pode implementar um contador de referncias para o objeto, s permitindo sua remoo quando o valor deste contador for nulo.

4.11 Clustering
A incorporao do conceito de objeto complexo em sistemas gerenciadores de base de objetos introduz grande exibilidade de estruturao dos dados. Por outro lado, a recuperao de objetos complexos pode introduzir degradao no desempenho dos sistemas. Anal, o contedo de um objeto complexo composto por outros objetos, que potencialmente podem estar distribudos em diversas pginas espalhadas pelo disco. Assim, recuperar o contedo de um objeto complexo pode acarretar em vrias solicitaes de pginas do servidor para o cliente. Clustering um mecanismo que pode ser adotado para minimizar esta degradao no desempenho. Simplesmente colocado, o conceito de clustering adotar alguma estratgia de alocao de objetos no sistema de armazenamento de modo a minimizar a quantidade de pginas necessrias para manipular objetos. As estratgias de clustering mais utilizadas so: Objetos complexos: adota o relacionamento de agregao para identicar objetos que devem ser armazenados prximos preferencialmente, na mesma pgina ou em pginas contgas. Referncias: adota a existncia de relacionamentos quaisquer entre objetos para direcionar a proximidade de armazenamento. A estratgia de clustering por objetos complexos um caso especial desta estratgia. Tipos de objetos: adota o critrio de aproximar o armazenamento de objetos de uma mesma classe. Este um critrio equivalente ao adotado pela maior parte dos sistemas gerenciadores de banco de dados relacionais, onde tuplas de uma mesma relao so armazenadas contigamente. ndices: adota o valor de um atributo como critrio de ordenao dos objetos, e aproxima o armazenamento de objetos com valores prximos neste atributo. Denio do usurio: utiliza um indicativo da aplicao, em tempo de execuo, para buscar a melhor posio de armazenamento de um objeto. Um exemplo de implementao utiliza um identicador de um objeto existente como parmetro na criao de um novo objeto, indicando que os dois devem ser armazenados em posies prximas. A seleo de um critrio de clustering deve depender da forma de recuperao mais adotada para o objeto na aplicao. Por exemplo, em sistemas CAD provavelmente a estratgia de objetos

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

complexos seria a preferencial, enquanto que para uma aplicao comercial, envolvendo seqncias de recuperaes em ordem alfabtica, a estratgia de ndices seria a mais adequada.

4.12 Evoluo de esquemas


Em grande parte dos sistemas gerenciadores de base de objetos, o esquema de dados em si armazenado como um objeto. Entretanto, este objeto nem sempre diretamente manipulvel pela aplicao em tempo de execuo; restries de acesso so impostas como forma de manuteno da integridade da base de objetos. Mudanas no esquema devem obedecer a tais restries, determinando como esquemas podem evoluir. H quatro estratgias bsicas que determinam como um esquema pode evoluir: tipo de uma escrita, atualizao imediata, atualizao posterior, e mapeamento de esquema. Tais estratgias so brevemente apresentadas a seguir. A estratgia de tipos de uma escrita (ou tipos write-once) a abordagem mais simples, que determina que qualquer tipo que j contenha pelo menos uma instncia no pode ser modicado. Modicaes no tipo, tal como a incluso de um novo atributo, deve ser explicitamente desempenhada pela aplicao atravs da criao de um novo tipo e cpia do contedo de objetos j existentes para objetos do novo tipo. A estratgia de atualizao imediata a mais adotada em sistemas gerenciadores de base de objetos correntes. Nesta estratgia, qualquer modicao no tipo de um objeto imediatamente reetida para os objetos. Assim, a incluso de um novo atributo em um tipo faria com que todos os objetos daquele tipo tivessem sua estrutura atualizada oara conter um campo adicional contendo o valor nulo. Na estratgia de atualizao posterior, a estrutura de um objeto cujo tipo tenha sido modicado no alterada a no ser no primeiro momento em que o objeto acessado aps a alterao do tipo. Nesta abordagem, preciso que o sistema gerenciador de base de objetos mantenha informao histrica sobre a evoluo de esquemas e sobre procedimentos de converso para poder manter a consistncia da base. A estratgia de mapeamento de esquema equivale a uma estratgia de atualizao posterior onde o momento de atualizao postergado indenidamente, at o momento em que uma reorganizao da base de objetos seja explicitamente solicitada. Nesta estratgia preciso manter os mapas de converso entre todas as possveis verses de esquema, o que possibilitaria que usurios pudessem ter vises de um mesmo objeto sob diferentes verses de esquema. Entretanto, a implementao de tal estratgia seria extremamente complexa, no tendo sido implementada em nenhum sistema gerenciador de base de objetos at o momento.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

5 Exemplos
Nesta seo sero descritos alguns exemplos de sistemas gerenciadores de base de objetos. Devese observar, entretanto, que em se tratando de sistemas comerciais geralmente no possvel obter informao detalhada sobre os mecanismos de implementao do sistema. Por este motivo, apresentase inicialmente um prottipo sobre o qual informao sobre a implementao bem conhecida.

5.1 UniCOSMOS
UniCOSMOS (University of Campinas Object Storage Management System) foi um prottipo desenvolvido na UNICAMP no perodo 19851989 para aplicaes em engenharia [28, 39]. Efetivamente, UniCOSMOS no era um sistema gerenciador de base de objetos, mas sim um ncleo para tais sistemas onde alguns dos mecanismos bsicos de manipulao de objetos persistentes poderiam ser avaliados. A arquitetura de UniCOSMOS apresentada na Fig. 7. A parte superior da gura representa mdulos relativos ao esquema de objetos, enquanto que a parte inferior representa mdulos que manipulam instncias (ou seja, objetos).
nome do tipo id

subsistema de acesso a tipos

nome

domnio de tipos de objetos


iv

ir id io id io

domnio de trades

domnio,valor

subsistema de acesso a objetos

iv

domnio de valores

domnio de
iv

objetos

Figura 7: Arquitetura de UniCOSMOS.

Neste sistema, tipos de objetos so identicados por um nome. O subsistema de acesso a tipos mantm uma tabela hash que associa os nomes de objetos a surrogates tipados (id). Um mecanismo de sinnimos suportado, sendo possvel associar mais de um nome para um mesmo tipo de objeto. O domnio de tipos de objetos registra a informao sobre o esquema da base de dados. Para cada tipo de objeto, cinco listas internas mantm informao sobre: 1. os nomes do tipo de objeto; 2. os atributos do tipo de objeto; 3. as associaes com outros tipos de objeto;

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

4. os tipos de objetos componentes, caso o objeto seja complexo; 5. os tipos de objetos que contm este tipo como componente, caso o objeto faa parte de um objeto complexo. Associaes so representadas internamente por trades, ou associaes binrias. A ligao entre

# %& . Para facilitar a manuteno $ da integridade referencial, o domnio de trades armazena todas as permutaes de cada associao. Assim, tambm so armazenadas neste domnio as trades '()# e *)#+, . Cada trade
referncia mapeada internamente para uma trade registrada neste domnio identicada por um surrogate ir. No nvel de instncias, objetos so representados atravs de listas de propriedades armazenadas no domnio de objetos. A exibilidade das listas de propriedades permite manipular adequadamente atributos com valores nulos, multivalorados e de dimenso varivel. Cada lista de propriedades identicada por um surrogate de objeto (io), e cada elemento da lista formado por um identicador de atributo (referente ao identicador do tipo de objeto, id) e por um identicador de valor (iv). Os valores so armazenados de fato no domnio de valores, onde cada domnio (no sentido matemtico da palavra, o conjunto de elementos dos quais os valores de atributos so tomados) composto por uma lista de propriedades para valores. Cada elemento desta lista, identicado por um surrogate iv, contm a dimenso e a representao interna do valor. O subsistema de acesso a objetos tem por objetivo apoiar atividades de consultas por valor base de objetos. Neste mdulo so implementados os mecanismos para agilizar acesso informao, tais como estruturas de ndices. Como domnios podem ser compartilhados por vrios tipos de objeto, as respostas a consultas so organizadas na forma de listas de surrogates io. Para restringir a busca a um nico tipo de objeto, preciso combinar este resultado com o resultado de uma busca no nvel de esquema, atravs do nome do objeto. Para agilizar a realizao destas combinaes, diversos mtodos de manipulao de surrogates so oferecidos s aplicaes de UniCOSMOS. O sistema foi implementado em linguagem C, em estaes de trabalho Unix. Desenvolvimentos relacionados a UniCOSMOS incluram o tratamento de transaes convencionais e longas [35], tratamento de regras e de restries [30], manipulao de herana [43] e a implementao de um gerenciador de dados para projetos de engenharia manipulando esquemas entidade-relacionamento estendidos com mecanismos para objetos complexos e evoluo de esquemas [40].

dois tipos de objetos estabelecida por um terceiro tipo de objeto, criado internamente. Assim, uma

 !"

5.2 O

O desenvolvimento do Sistema O [15] iniciou-se como um prottipo de pesquisa, posteriormente convertido para um produto comercial da empresa francesa O Technology. O sistema foi desenvolvido em C++ para plataformas Unix. O principal mdulo do sistema o EngenhoO , estruturado em trs camadas:

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Gerenciador de esquema, responsvel por monitorar criao, recuperao, atualizao e remoo de classes, mtodos e nomes globais; Gerenciador de objetos, camada intermediria que fornece identicao de objetos e implementa estratgias de indexao e clustering; Gerenciador de disco, responsvel por implementar as estruturas de arquivos (paginados) que armazenam sicamente os dados dos objetos do sistema. As camadas mais elevadas do sistema so organizadas na forma de uma aplicao cliente, que pode executar em uma mquina conectada ao servidor ba base de dados, onde a aplicao gerenciador de disco atua como um servidor de pginas. Identicadores de objetos so registrados internamente sob a forma de endereos estruturados, com campos para identicao de um volume de dados (2 bytes), combinado com uma identifcao de pgina no volume (4 bytes) e uma posio (slot) na pgina (2 bytes). Para a aplicao, descritores de objetos so utilizados. Objetos em O podem ser atmicos (inteiros, reais, booleanos, strings e bits) ou complexos, criados a partir de construtores de tuplas, conjuntos, bags e arranjos. Persistncia denida por referncia; objetos que so derivados de uma raiz persistente, direta ou indiretamente, so persistentes. A interao de uma aplicao com o sistema pode ocorrer atravs de interfaces de programao em C ou C++, atravs de uma linguagem declarativa (O C) ou atravs de O SQL, uma extenso de SQL para lidar com objetos complexos.

5.3 ObjectStore
ObjectStore [32] um sistema comercial de banco de dados orientado a objetos desenvolvido pela Object Design Inc., de Burlington, Massachusetts. Um dos objetivos iniciais no desenvolvimento deste sistema era fazer de C++ uma linguagem de programao de banco de dados. Por este motivo, ObjectStore um dos sistemas mais prximos desta linguagem em termos semnticos. ObjectStore oferece suporte para identicao de objetos, atributos inversos, herana mltipla, acesso paginado a BLOBs e aplicaes interativas para visualizao de contedo e criao de esquemas. Manipulao de colees oferecida atravs de bibliotecas de tipos de colees, que inclui conjuntos, bags, listas, arranjos e dicionrios. Bags so conjuntos que permitem duplicao de elementos. Dicionrios so bags onde a cada elemento associada uma chave. Um tipo genrico, coleo, tambm oferecido. A Fig. 8 apresenta uma rvore de deciso associada denio da melhor forma de coleo para uma aplicao [33]. A interao entre ObjectStore e a aplicao pode ocorrer atravs de uma linguagem de manipulao de dados ou atravs de interfaces de programao em C, em C++ e, desde a verso 5.0, em Java. O mecanismo de mapeamento de objetos para o espao de memria virtual torna a persistncia natural em ObjectStore, onde qualquer dado pode se tornar persistente. Assim, o mecanismo

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Permite mudanas entre colees ordenadas e desordenadas, ou entre desordenadas com duplicatas e desordenadas sem duplicatas
sim no

os_Collection

Mantm a ordem de insero


no sim

Associa chave a cada elemento


sim no

Adio automtica de nmero especificado de elementos nulos


no sim

os_Dictionary

Permite duplicatas
no sim

os_List

os_Array

os_Set

os_Bag

Figura 8: rvore de deciso para tipos complexos em Object Store.

de persistncia ortogonal hierarquia de tipos. Um aspecto negativo nesta estratgia que este mecanismo exige a manuteno de mecanismos de pr-processamento, dicultando a portabilidade do sistema entre plataformas distintas. Por outro lado, uma vez que objetos sejam transferidos para a memria principal aps um page fault, sua manipulao to rpida como a de qualquer objeto no persistente da linguagem de programao. Aplicaes de ObjectStore utilizam dois processos para sua execuo. O servidor de pginas o ObjectStore Server, que est executando permanentemente em uma mquina onde os dados esto armazenados. O lado cliente de ObjectStore implementado atravs de um Cache Manager, que ativado automaticamente pela aplicao (Fig. 9). Um cliente pode acessar informao de diversos servidores, caracterizando ObjectStore como tendo uma arquitetura mltiplos clientes e mltiplos servidores.

6 Esforos correntes e direes futuras


Nesta seo nal feito um breve apanhado de esforos correntes que podero afetar o desenvolvimento futuro de sistemas gerenciadores de base de objetos, com nfase nos aspectos de padronizao e futuras aplicaes.

6.1 ODMG
ODMG (Object Database Management Group) um consrcio, formado em 1991 por diversos fabricantes de sistemas gerenciadores de base de objetos, que tem por objetivo criar um padro para bancos de dados orientados a objetos que permita ampliar o grau de portabilidade das aplicaes

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

aplicao servidor cache manager

...

servidor cache manager aplicao

cache manager aplicao aplicao

Figura 9: Processos na arquitetura de ObjectStore.

desenvolvidas para os seus diferentes sistemas [9]. Assim como SQL permite oferecer para uma aplicao uma viso comum de bases de dados relacionais, independente do fabricante, busca-se com ODMG atingir um grau de padronizao similar para sistemas gerenciadores de base de objetos. Os participantes do consrcio ODMG incluem Object Design, ONTOS, O Technology, Versant, Objectivity, Digital Equipment, Hewlett-Packard, Itasca, Intellitic, Poet Software, Servio e Texas Instruments. Pelo menos estas empresas concordaram em tornar seus produtos compatveis com o padro ODMG para sistemas gerenciadores de base de objetos. Deve ser enfatizado que no h uma padronizao da implementao, ou seja, os produtos de cada empresa no so idnticos; apenas oferecem uma interface comum para as aplicaes. O foco deste padro foi na integrao de sistemas gerenciadores de base de objetos a linguagens de programao. Entretanto, para poder denir interfaces padronizadas entre sistemas gerenciadores de base de objetos e linguagens de programao era necessrio inicialmente ter uma viso comum de como um sistema gerenciador de base de objetos deveria estar estruturado e de quais seriam os seus componentes. O resultado deste primeiro esforo foi a denio de uma arquitetura comum, apresentada na Fig. 10. O padro ODMG est organizado em duas componentes principais, framework e bindings. Em framework denem-se aspectos comuns a todas as linguagens de programao, tais como a arquitetura, o modelo de objetos, a linguagem de declarao (ODL) e uma linguagem declarativa de consulta (OQL). O conjunto de bindings, estabelece o mapeamento das construes do padro para aquelas de linguagens de programao. Atualmente, C++, Smalltalk e Java so contempladas no padro. O modelo de objetos de ODMG sumariza diversos conceitos suportados por sistemas gerenciadores de base de objetos. Ele oferece objetos e literais como primitivas de modelamento. Literais

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Declaraes em ODL

Programa aplicao

pr-processador

compilador

SGBO runtime

Cdigo objeto

metadados ligador acesso aos dados

base de dados

Cdigo executvel

Figura 10: Arquitetura de um sistema gerenciador de base de objetos no padro ODMG.

podem ser atmicos (Long, Float, Octet,. . . ), coleo (Set, Bag, List e Array) ou estruturados (Date, Time, Timestamp,. . . ). Objetos podem ser atmicos ou coleo. O estado de um objeto denido por suas propriedades, que podem ser atributos ou relacionamentos. O comportamento do objeto denido pelo conjunto de operaes que podem ser executadas sobre o objeto. Objetos e literais so categorizados por seus tipos; elementos de um mesmo tipo tm estrutura e comportamento comuns. Algumas vezes, um objeto denominado uma instncia de um tipo. Um banco de dados armazena objetos, permitindo que estes sejam compartilhados por mltiplos usurios e aplicaes. Um banco de dados baseado em um esquema que denido em uma linguagem de denio de objetos e contm instncias de tipos denidos por seu esquema.

6.2 OMG
OMG (Object Management Group) [34] um consrcio industrial, formado em 1989, cujo objetivo denir padres para permitir inter-operabilidade em sistemas distribudos heterogneos, adotando para tal o paradigma de objetos distribudos. Atualmente o consrcio engloba mais de 800 participantes. O principal resultado do OMG foi a denio de uma arquitetura para o desenvolvimento de aplicaes por objetos distribudos. Esta arquitetura, CORBA (Common Object Request Broker Architecture) (Fig. 11), estabelece a funcionalidade de uma camada middleware, o ORB (Object Request Broker) e as funcionalidades de servios de objetos padres, CORBAservices, que incluem servios de busca de objetos por nome (naming), busca por propriedades (trader), servios de segurana, de transaes e de noticao de eventos, entre outros.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Common Facilities

Domain interfaces

Application interfaces

ORB

CORBAservices

Figura 11: Arquitetura de gerenciamento de objetos (OMA).

Alm disto, outros tipos de servios podem estar agrupados em Common Facilities, Domain Interfaces ou Application Interfaces [42]. Assim como CORBAservices, Common Facilities incluem servios de propsito geral; porm, tais servios esto mais prximos em nvel de abstrao do usurio nal, enquanto CORBAservices apresentam nvel de abstrao baixo. Um exemplo de uma facilidade nesta categoria o Distributed Document Component Facility, para a manipulao de documentos compostos. As interfaces de domnio so servios especializados para dadas categorias de aplicaes, como em rea nanceira, telecomunicaes e medicina. As interfaces de aplicao so componentes da arquitetura especcos de uma aplicao, no sendo portanto objeto de padronizao. Como mostra a Fig. 12, ORB e bancos de dados aderentes proposta ODMG apresentam alguma sobreposio de funcionalidades, mas apresentam um alto grau de complementao de servios oferecidos. Antev-se que a combinao destas duas linhas de desenvolvimento seja a direo para as novas aplicaes de sistemas de informao em ambientes distribudos.
ORB traduo localizao heterogeneidade invocao remota SGBO descrio identificao distribuio armazenamento transaes verses consultas

Figura 12: Funcionalidades ORB e ODMG.

Uma anlise da integrao entre sistema gerenciador de base de objetos e CORBA, particularmente para aplicaes multimdia, foi apresentada por Tobar [49]. Similarmente, outras categorias de aplicao poderiam analisar qual plataforma atende melhor s suas necessidades para selecionar a estratgia de implementao.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

6.3 Concluses
A tecnologia de orientao a objetos est permeando praticamente todas as novas aplicaes computacionais. O que h algum tempo atrs era apenas uma buzzword que dava um ar de modernidade para algumas aplicaes atualmente uma tecnologia relativamente madura, com utilizao efetiva nas mais diversas categorias de aplicao. Banco de dados apenas uma das reas que vem se beneciando desta tecnologia. Provavelmente, mais do que simplesmente oferecer a capacidade de ter um repositrio orientado a objetos para aplicaes isoladas, a importncia de sistemas gerenciadores de base de objetos ser permitir a integrao de aplicaes em ambientes de objetos distribudos. Nesta abordagem, os servios de um sistema gerenciador de base de objetos podero ser incorporados a aplicaes de forma uniforme e transparente, da mesma maneira que assim o sero servios de interfaces grcas com usurios ou invocao dinmica de servios distribudos. A chave para atingir esta prxima etapa na tecnologia de banco de dados est na generalidade. Ao contrrio do paradigma de desenvolvimento que dominou o nal da dcada de 1970 e praticamente toda a dcada de 1980, quando havia dezenas ou centenas de sistemas gerenciadores de banco de dados especializados para a aplicao cada aplicao. Esta abordagem de oferecimento de servios atende de forma muita adequada s novas categorias de aplicao em sistemas de informao, incluindo a manipulao de informao multimdia e hipermdia. Dicilmente seria possvel desenvolver um sistema gerenciador de banco de dados especializado que atendesse adequadamente s necessidades de todas aplicaes multimdia ou hipermdia, pois estas variam muito de acordo com o carter da aplicao. No entanto, perfeitamente vivel imaginar que tais aplicaes sero atendidas atravs da combinao de servios especializados de armazenamento, de consulta, de pesquisa, e assim por diante. O oferecimento de tais servios torna-se interessante medida que eles no so de uso exclusivo de um banco de dados ou de uma aplicao. Assim, o mesmo servio de pesquisa que utilizado por uma aplicao multimdia poderia ser utilizado em uma outra aplicao em data mining, por exemplo. Em suma, h atualmente produtos em bancos de dados orientados a objetos que utilizam uma tecnologia que j est razoavelmente amadurecida, atendendo a muitas aplicaes. H ainda, no entanto, uma necessidade de se estender as funcionalidades desses servios de bancos de dados para qualquer aplicao desenvolvidas em frameworks de objetos distribudos. Para atingir este objetivo, as pesquisas nesta rea seguem duas diretrizes fundamentais. A primeira pode ser resumida atravs das palavras generalidade e adaptabilidade. Desenvolvimentos em design patterns so emblemticos desta diretriz. A segunda pode ser resumida pela palavra inter-operabilidade, onde a tecnologia de objetos distribudos vem se destacando.

ou para a aplicao , o objetivo atual oferecer servios

bsicos, possivelmente congurveis, que possam ser integrados de acordo com as necessidades de

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

Referncias
[1] S. Abiteboul e P. Kanellakis. The two facets of object-oriented data models. IEEE DB Engineering Bulletin, 14(2), Junho 1991. [2] M. M. Astrahan, M. W. Blasgen, D. D. Chamberlin, K. P. Eswaran, , J. N. Gray, P. P. Grifths, W. F. King, R. A. Lorie, P. R. McJones, J. W. Mehl, G. R. Putzolu, I. L. Traiger, B. W. Wade, e V. Watson. System R: Relational approach to database management. ACM Transactions on Database Systems, 1(2):97137, Junho 1976. [3] T. R. Ayers, D. K. Barry, J. D. Dolejsi, J. R. Galareneau, e R. V. Zoeller. Development of ITASCA. Journal of Object-Oriented Programming, 4(4):4649, Julho 1991. [4] Jay Banerjee, Won Kim, Hyoung-Joo Kim, e Henry F. Korth. Semantics and implementation of schema evolution in object-oriented databases. Em Proceedings of the ACM SIGMOD Conference, pginas 311322. 1987. [5] J. H. ter Bekke. Semantic Data Modeling. Prentice Hall, 1992. [6] M. W. Blasgen, M. M. Astrahan, D. D. Chamberlin, J. N. Gray, W. F. King, B. G. Lindsay, R. A. Lorie, J. W. Mehl, T. G. Price, G. R. Putzolu, M. Schkolnick, P. G. Selinger, D. R. Slutz, H. R. Strong, I. L. Traiger, B. W. Wade, e R. A. Yost. System R: An architectural overview. IBM Systems Journal, 20(1):4162, 1981. [7] Robert Bretl, David Maier, Allen Otis, Jason Penney, Bruce Schuchardt, Jacob Stein, E. Harold Williams, e Monty Williams. The GemStone data management system. Em Kim e Lochovsky [25], captulo 12, pginas 283308. [8] P. Butterworth, A. Otis, e J. Stein. The GemStone object database management system. Communications of the ACM, 34(10):6477, Outobro 1991. [9] R. G. G. Cattell, editor. The Object Database Standard: ODMG93. MorganKaufmann Publishers, San Mateo, CA, 1993. [10] R. G. G. Cattell. Object Data Management: Object-Oriented and Extended Relational Database Systems. Addison-Wesley, 1994. Revised edition. [11] Peter P. Chen. The entity-relationship model toward a unied view of data. ACM Transactions on Database Systems, 1(1):936, Maro 1976. [12] E. F. Codd. A relational model of data for large shared data banks. Communications of the ACM, 13(6):377387, Junho 1970. [13] E. F. Codd. Extending the database relational model to capture more meaning. ACM Transactions on Database Systems, 4(4):397434, Dezembro 1979.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

[14] George Copeland e David Maier. Making Smalltalk a database system. Em Proceedings of the SIGMOD Conference, pginas 316325. ACM, 1984. [15] O. Deux, C. Delobel, D. DeWitt, Y. Ioannidis, et al. The story of O2. IEEE Transactions on Knowledge and Data Engineering, 2(1), Maro 1990. [16] Ramez Elmasri e Shamkant B. Navathe. Fundamentals of Database Systems. Benja-

min/Cummings Publishing Company, segunda edio, 1994. [17] D. H. Fishman, J. Annevelink, D. Beech, E. Chow, T. Connors, J. W. Davis, W. Hasan, C. G. Hoch, W. Kent, S. Leichner, P. Lyngbaek, B. Mahbod, M. A. Neimat, T. Risch, M. C. Shan, e W. K. Wilkinson. Overview of the Iris DBMS. Em Kim e Lochovsky [25], captulo 10, pginas 219250. [18] J. P. Fry e E. H. Sibley. Evolution of data-base management systems. ACM Computing Surveys, 8(1):742, Maro 1976. [19] Adele Goldberg e David Robson. Smalltalk-80, The Language. Addison-Wesley Series in Computer Science. Addison-Wesley, Setembro 1989. [20] J. Gosling, B. Joy, e G. Steele. The Java Language Specication. Java Series. Addison-Wesley, 1996. http://java.sun.com/doc/language_specification/index.html. [21] James Gosling e Henry McGilton. The Java Language Environment: A White Paper. Sun Microsystems, Inc., Mountain View, CA, Maio 1996. http://www.javasoft.com/docs/ white/langenv/ . [22] Richard Hull e Roger King. Semantic database modeling: Survey, applications, and research issues. ACM Computing Surveys, 19(3):201260, Setembro 1987. [23] Won Kim, editor. Modern Database Systems: The Object Model, Interoperability and Beyond. ACM Press, 1995. [24] Won Kim, Nat Ballou, Hong-Tai Chou, Jorge F. Garza, e Darrel Woelk. Features of the ORION object-oriented database system. Em Kim e Lochovsky [25], captulo 11, pginas 251282. [25] Won Kim e Frederick H. Lochovsky, editores. Object-Oriented Concepts, Databases, and Applications. Frontier Series. ACM Press, 1989. [26] Henry F. Korth e Abraham Silberschatz. Database System Concepts. McGraw-Hill, 1986. [27] George Lapis, Guy M. Lohman, e Hamid Pirahesh. Starburst is born. SIGMOD Record (ACM Special Interest Group on Management of Data), 19(2), Junho 1990.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

[28] Lo P. Magalhes, Armando L. N. Delgado, Ivan L. M. Ricarte, Regina C. Ruschel, e Carlos Jos M. Olgun. Implementao de um banco de dados no-convencional: a experincia GERPAC/UniCOSMOS. Em IV SBBD Simpsio Brasileiro de Banco de Dados, pginas 7789. Campinas, SP, Abril 1989. [29] Oscar Nierstrasz. A survey of object-oriented concepts. Em Kim e Lochovsky [25], captulo 1, pginas 321. [30] Farid Nourani e Lo Pini Magalhes. Um sistema de tratamento de restries de projeto no contexto GERPAC/UniCOSMOS. Em VI Simpsio Brasileiro de Banco de Dados. Manaus, AM, Maio 1991. [31] Kristen Nygaard. Basic concepts in object oriented programming. SIGPLAN Notices,

21(10):128132, Outobro 1986. [32] Object Design, Inc., Burlington, MA. ObjectStore Technical Overview; Release 2.0, Julho 1992. [33] Object Design, Inc. ObjectStore C++ API User Guide. Burlington, MA, Junho 1995. [34] Object Management Group. OMG home page. http://www.omg.org/, 1998. [35] Carlos Jos M. Olgun e Lo Pini Magalhes. Um gerenciador de transaes no contexto do GERPAC/UniCOSMOS. Em V Simpsio Brasileiro de Banco de Dados. Rio de Janeiro, RJ, Abril 1990. [36] Kamran Parsaye, Mark Chignell, Setrag Khoshaan, e Harry Wong. Intelligent Databases: Object-Oriented, Deductive, Hypermedia Technologies. John Wiley and Sons, 1989. [37] Joan Peckham e Fred Maryanski. Semantic data models. ACM Computing Surveys, 20(3):153 189, Setembro 1988. [38] Walter D. Potter e Robert P. Trueblood. Traditional, semantic, and hyper-semantic approaches do data modeling. IEEE Computer, pginas 5363, Junho 1988. [39] Ivan L. M. Ricarte. MOODS: a modular, object-oriented design database system. Em F. Kimura e A. Rolstads, editores, Computer Applications in Production and Engineering, pginas 225 229. North-Holland, 1989. [40] Ivan L. M. Ricarte e Armando L. N. Delgado. GERPAC um SGBD para PAC. Em II Simpsio Brasileiro de Banco de Dados, pginas 2238. Porto Alegre, RS, Maio 1987. [41] Lawrence A. Rowe e Michael R. Stonebraker. The POSTGRES data model. Em Proceedings of the 13th VLDB Conference, pginas 8396. Brighton, UK, 1987.

Ivan L. M. Ricarte

Bancos de Dados Orientados a Objetos

[42] Doug Schmidt.

Overview of CORBA.

http://www.cs.wustl.edu/~schmidt/

corba-overview.html, Agosto 1998. [43] Mamede Augusto Machado da Silveira. Extenso do Ncleo UniCOSMOS para Suporte Orientao por Objeto. Tese de mestrado, Faculdade de Engenharia Eltrica, UNICAMP, Abril 1991. [44] John Miles Smith e Diane C. P. Smith. Database abstractions: Aggregation and generalization. ACM Transactions on Database Systems, 2(2):105133, Junho 1977. [45] Michael Stonebraker. Retrospection on a database system. ACM Transactions on Database Systems, 5(2):225240, Junho 1980. [46] Michael Stonebraker, Eugene Wong, Peter Kreps, e Gerald Held. The design and implementation of INGRES. ACM Transactions on Database Systems, 1(3):189222, Setembro 1976. [47] Bjarne Stroustrup. What is object-oriented programming? IEEE Software, pginas 1020, Maio 1988. [48] Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley, segunda edio, 1991. [49] Carlos M. Tobar e Ivan L. M. Ricarte. Multiware database, a distributed object database system for multimedia support. Em Open Distributed Processing: Experiences with Distributed Environments, Proceedings of the IFIP International Conference on Open Distributed Processing, ICODP95, pginas 439450. Fevereiro 1995. [50] M. Ubell. The Montage extensible DataBlade architecture. SIGMOD Record (ACM Special Interest Group on Management of Data), 23(2):482482, Junho 1994.

Você também pode gostar