Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. Introdução
SGBDOO seguem o modelo de programação orientada a objetos no que diz respeito
a forma com que o dados são tratados por conceitos como objetos, encapsulamento,
herança, polimorfismo. Sua motivação deve-se ao fato que SGBD relacionais não tra-
tam bem dados complexos além do problema da resistência.
4. Padrões
A padronização visa oferecer portabilidade de aplicações que usam SGBDO. O principal
consórcio para criação de um padrão é o ODMG (Object Database Menegement Group),
descrito na Seção 6. Outro bastante utilizado é o JDO (Java Data Objects).
5.1. Objectivity/DB
Trata-se de um BDOO comercial, desenvolvido pela Objectivity, Inc. Provê suporte às
linguagens C, C++, Java, Python e Smalltalk, e aos sistemas operacionais Linux, LynxOS,
UNIX e Windows. As interfaces para C++, Java e Smalltalk atendem ao padrão ODMG
93 [Wikipedia 2007c]. Aplica-se bem a sistemas distribuı́dos e de missão crı́tica. O
mesmo pode ser obtido em http://www.objectivity.com/.
5.2. FastObjects
5.3. EyeDB
5.5. Outros
Outros bancos de dados orientados a objetos estão disponı́veis. Destacamos ainda os
bancos Perst1 (software livre da McObject) e O2 (IBM). Está ainda sendo desenvol-
vido o banco Magma na linguagem Squeak, uma implementação livre de Smalltalk
[Wikipedia 2007b].
6. O padrão ODMG
O ODMG (Object Database Management Group) publicou uma série de especificações,
a fim de permitir a escrita de aplicações portáveis para bancos de dados de objetos e
ferramentas de mapeamento objeto-relacional [Wikipedia 2007a].
A especificação mais recente é a ODMG 3.0, de 2001 [Wikipedia 2007b], e inclui
um modelo de dados, extensões de persistência para as linguagens de programação C++,
Smalltalk e Java, além de linguagens para definição e manipulação de objetos, descritas a
seguir.
r e l a t i o n s h i p S e t <Emprestimo > e m p r e s t o u
i n v e r s e Emprestimo : : e m p r e s t a n t e ;
r e l a t i o n s h i p S e t <Agencia > t e m c o n t a e m
i n v e r s e Agencia : : c l i e n t e s ;
key ( s s n )
}
c l a s s Person {
string firstname ;
s t r i n g lastname ;
i n t age ;
Address addr ;
Person ∗ spouse i n v e r s e Person : : spouse ;
s e t <P e r s o n ∗> c h i l d r e n ;
i n d e x on f i r s t n a m e ;
i n d e x on l a s t n a m e ;
i n d e x on a g e ;
};
c l a s s Employee e x t e n d s P e r s o n {
long s a l a r y ;
};
Para criar uma base de dados com este modelo, utilizamos o comando:
//cria um banco com o nome person_g
# eyedbdbcreate person_g
//determina o acesso padrão a esse banco como leitura/escrita
# eyedbdbaccess person_g rw
//cadastra o modelo no banco
# eyedbodl --update --database=person_g schema.odl
Para inserir dados no banco:
# eyedboql -d person_g -w << EOF
//exemplo de persistência por nomeação
john := new Person(firstname: "john", lastname: "wayne", age: 72);
mary := new Person(firstname: "mary", lastname: "poppins", age: 68);
john.spouse := mary;
add Person(firstname: "baby1", age: 2) to john->children;
add Person(firstname: "baby2", age: 3) to john->children;
add Person(firstname: "baby3", age: 4) to john->children;
\commit
\quit
EOF
Para consultar os dados (o comando eyedboql provê um prompt de comando para
consultas):
# eyedboql -d person_g
? select Person->lastname;
= bag(NULL, NULL, NULL, "poppins", "wayne")
? select Person->firstname;
= bag("john", "mary", "baby2", "baby3", "baby1")
? \quit
9. Conclusão
O modelo orientado a objeto nasceu de uma necessidade de se organizar tipos de dados
mais complexos e que mais se adequam a certas aplicações em áreas gráficas, de rede,
simulações, vı́deo e som. Ele trouxe ao campo de bancos de dados as mesmas vantagens
que o conceito havia trazido às linguagens de programação.
Embora o modelo de gerenciamento de banco de dados orientados a objetos não
tenha feito o sucesso que era esperado, suas vantagens sobre o modelo relacional ainda são
válidas e não estão sendo ignoradas. Ainda há tentativas de se integrar as linguagens de
programação orientadas a objetos nas ferramentas e padrões de bancos de dados, além da
criação de ferramentas de mapeamento de modelos para ajudar na interoperabilidade dos
padrões novos com os padrões antigos. Novas pesquisas envolvendo modelos orientados a
objetos e modelos relacionais podem inclusive ajudar a encontrar um novo paradigma que
tenha as vantagens de ambos os modelos. Enquanto isso não acontece, cabe ao projetista
do banco de dados decidir se ele vai usar o modelo relacional ou o orientado a objeto
para o seu sistema, levando em conta todas as vantagens e desvantagens de cada modelo
[Gonçalves et al. 2007].
Referências
Cattell, R. G. G. (1994). The Object Database Standard: ODMG. Morgan Kaufmann.
db4objects (2007). Product information. Outubro de 2007: http://www.db4o.com/
about/productinformation/.
EyeDB (2006). Eyedb key features. Outubro de 2007: http://www.eyedb.org/
keyfeatures.php.
Filho, H. B. G., Sodré, M., Santana, R., and Jurity, R. A. (2007). Banco de dados de
objetos. Trabalho da disciplina Banco de Dados, Universidade Federal da Bahia, De-
partamento de Ciência da Computação.
George, A., Saccaro, A. M., and Huang, O. (2006). Banco de dados orienta-
dos a objeto. Outubro de 2007: http://www.shammas.eng.br/acad/
sitesalunos0606/bdoo/oo.html.
Gonçalves, G. I., Pesente, G. R., and Lima, R. (2007). Banco de dados orientados a
objetos. Trabalho da disciplina Bancos de Dados B, Pontifı́cia Universidade Católica
do Rio Grande do Sul, Faculdade de Informática.
Mehrotra, S. (2001). Object definition language. Notas de aula da disciplina Database
Management, University of California - Irvine, School of Information and Computer
Sciences.
Silberschatz, A., Korth, H. F., and Sudarshan, S. (2002). Database System Concepts.
McGraw-Hill, 4th edition.
SYSRA (2006a). EyeDB Getting Started. SYSRA. Disponı́vel em (versão 2.7.3): http:
//doc.eyedb.org/manual/html/GettingStarted/.
SYSRA (2006b). EyeDB Overview. SYSRA. Disponı́vel em (versão 2.7.3): http:
//doc.eyedb.org/manual/html/Overview/.
Vassilakis, C. (1998). Omdg oql – object query language. Slides do seminário Temporal
Object-Oriented Databases in Information Systems, disponı́vel em (out/2007): http:
//helios.mm.di.uoa.gr/∼toobis/seminar/OQL/index.htm.
Versant (2007). Powerful advantages: Versant object database. Outubro de 2007: http:
//www.versant.com/en US/products/objectdatabase.
Wikipedia (2007a). Object data management group. Outubro de 2007: http://en.
wikipedia.org/wiki/Object Data Management Group.
Wikipedia (2007b). Object database. Outubro de 2007: http://en.wikipedia.
org/wiki/Object database.
Wikipedia (2007c). Objectivity/db. Outubro de 2007: http://en.wikipedia.
org/wiki/Objectivity/DB.