Você está na página 1de 19

Objectivity/ DB

Banco de Dados Orientado a Objetos

Alexandre Gonzaga Pablo Rangel

Objectivity/DB
SGBDOO desenvolvido pela Objectivity Inc. Compatvel com os conceitos do grupo ODMG Possui arquitetura distribuda Suporta linguagens C++; Java; Smalltalk entre outras. Possui verso para Windows, Linux e Solaris

Instalao
Windows
Possui apenas verso 32 bits Requisitos
Framework .Net 2.0 TCP/IP instalado

Download do instalador no endereo http://www.objectivity.com/ Basta executar o setup.exe e seguir as instrues do assistente

Instalao

Instalao
Linux
Possui verso 32 e 64 bits Requitisos
C++ Shared Library X Windows System

Descompactar o arquivo obtido no site Executar o script install.sh Seguir as instrues do assistente de instalao.

Manipulao de Dados
As interfaces C++, Java e Smalltalk atendem ao padro ODMG 3.0 Na interface C++, o padro implementado atravs de biblioteca de funes que implementam os conceitos definidos do ODMG O acesso aos objetos feito por referncia Tambm oferece suporte ao padro SQL-92

Controle e acesso
feita ajustando as permisses de acesso aos arquivos de dados, journal files, boot files

Armazenamento e Organizao de Arquivos


O sistema funciona como um banco de dados federado. Cada banco de dados armazena
O schema do BD Indexes Escopo de nomes Etc.

Cada banco de dados possui um identificador nico, que referenciado pelo arquivo boot

Armazenamento e Organizao de Arquivos


Cada sistema coordena um conjunto de recursos, entre estes recursos esto o
Boot file: Utilizado para localizar e abrir um banco de dados e contem as propriedades do mesmo. Journal Directory: diretrio de arquivos journal Lock server: gerencia o acesso aos dados para garantir a consistncia

Armazenamento e Organizao de Arquivos


Schema: Modelo de dados que descreve todos os tipos e classes utilizados A criao do schema depende da linguagem de programao Em Objectivity/C++, o schema criado utilizando Objectivity/C++ DDL. Em Java e Smalltalk o schema criado automaticamente. Em SQL o schema criado junto com a tabela.

Armazenamento e Organizao de Arquivos


Os objetos so armazenados em estruturas chamadas Containers storage page a unidade mnima de crescimento de um arquivo e de transferencia da rede. Ao ler um objeto do disco, o storage page que contem o objeto colocado em cache. Se a aplicao for multithread, cada thread ter seu cache.

Concorrncia e Recuperao de Falhas


Todas as informaes de uma transao registrada no Journal File. Cada Thread cria que utiliza o BD cria um arquivo Journal. O arquivo automaticamente deletado quando o processo termina com sucesso Quando uma falha ocorre, o Objectivity pode fazer roll back automaticamente para a ultima ao realizada com sucesso

Concorrncia e Recuperao de Falhas


Para permitir o acesso simultneo por vrios usurios, o Objectivity implementa um Lock Server a consistncia garantida utilizando um lock no objeto enquanto a operao no terminar.

Concorrncia e Recuperao de Falhas


Quando uma aplicao inicia uma transao, o kernel do objectivity
aloca e abre as propriedades do arquivo. Requisita um lock do lock Server carrega o objeto requisitado do disco para memria escreve no disco se requisitado grava qualquer atualizao no journal file

Criando uma Aplicao


1. Criar o banco de dados utilizando a ferramenta oonewfd; 2. Criar os arquivos de modelagem contendo a declarao de todas as classes a ser utilizadas na aplicao. Os header devem ter a extenso
.ddl;

3. Processar o modelo de dados (.ddl) utilizando o processador DDL (ooddlx); 4. Codificao da aplicao em si;

Criando uma Aplicao


5. Compilar a aplicao e os arquivos gerados pelo DDL 6. Fazer o link entre a aplicao e os .ddl com a biblioteca runtime do Objectivity/C++.

/* cliente.ddl */ #include "Cliente.h" #include <string> #include <classDefFile_ref.h> class Cliente : public ooObj { public: Cliente(string nome , string email , string senha, float credito, char sexo, int idade, string cidade, string cpf); Coletanea criarColetanea( Faixa faixas[]); bool comprarCredito(float valor); bool realizarCompra(Carrinho carro[]); ooRef(Conta) contas[] <-> contasGeradas;// 1:n association ooRef(Coletanea) coletaneaCriada[] <-> criadaPor;// 1:n association void finalizarCompra(Carrinho carro[]); private: string nome; string email; string senha; float credito; char sexo; int idade; string cidade; string cpf; };

Você também pode gostar