Bases de Dados OO
O caso do Object Store
Gabriel David
Faculdade de Engenharia da Universidade do Porto
[email protected]
BDOO - 0
Persistência
 Persistência em LPOO
1. Ficheiros do sistema operativo: texto estruturado ou registos sem apontadores
 só permite armazenar alguns tipos de objectos
2. Imagem da sessão: guardar toda a sessão, o estado dos objectos, as variáveis e o
ambiente
 potencialmente ineficiente; difícil partilhar objectos concorrentemente.
O objectivo é tornar a persistência ortogonal ao tipo de objectos.
 objectos persistentes, transacções, falhas e recuperação
 níveis de persistência
dados locais a procedimentos
dados que persistem durante uma transacção completa
dados da sessão (várias transacções) como user-name e variáveis de ambiente
dados que persistem para além da sessão: são os objectos que se guardam na BD
e os únicos que são recuperáveis
BDOO - 1
Persistência e BDOO
 Extensões persistentes
- criar uma tabela SQL cria o tipo e a extensão
- uma classe especifica o tipo e o comportamento; é útil, nas classes com muitas
instâncias, considerar que a classe é o contentor de todas as suas instâncias e que há
iteradores para navegar eficientemente nos objectos
- métodos de lidar com extensões persistentes
1. ao criar uma instância de uma classe persistente guarda-se esta na extensão
2. objectos individuais podem ser declarados persistentes no momento da criação,
por exemplo no próprio construtor new
3. usar uma operação explícita de escrita na BD persistente
 Persistência por atingibilidade (PS-Algol)
- raiz do espaço de objectos: database é um objecto tuplo persistente
- se pT é um objecto tuplo persistente, então cada atributo de pT é um objecto
persistente
- se pS é um objecto conjunto persistente então cada elemento de pS é persistente
- em vez de uma só raiz podem existir várias raízes com nome a funcionar de pontos de
entrada para o subespaço persistente respectivo
 Instâncias persistentes [Object Store]
- independente de a classe ser ou não persistente
- vários pontos de entrada
BDOO - 2
Implementação da identidade
Problema: tornar persistentes as referências [permitem construir espaços de objectos
estruturados em grafos com partilha referencial]
 espaço transitório versus persistente
-
aumentar espaço endereçável — esquema de memória virtual com endereços de 32
bits e mecanismo de detectar referências para objectos não locais com transferência
transparente [LOOM Smalltalk, Object Store]
 endereço versus indirecção
•
endereço pode ser
- endereço de memória virtual
- endereço de memória secundária
- nome estruturado num ambiente distribuído
•
indirecção por
- tabela em memória [Smalltalk inicial]
- índice para objectos em memória secundária
BDOO - 3
Endereço ou indirecção
•
Indirecção
' um passo extra relativamente a ter o endereço
' deixa mover o objecto (garbage collection)
•
Endereço
' usar directamente o endereço de memória virtual como apontador
1. representação dupla em memória e em disco, com conversão à medida
que é necessária
2. armazém persistente organizado como uma memória virtual
' identificadores de registo: nº da página no disco + nº da linha; indirecção local;
usado em sistemas relacionais
' identificadores estruturados: indicação do caminho até ao objecto, através de
uma convenção de nomes; usado em sistemas distribuídos
' delegados (surrogates): identificadores únicos globais, gerados pelo sistema,
independentes do nome, estado, tipo e endereço do objecto; requer indirecção
na determinação do endereço
BDOO - 4
Bases de dados OO
Sumário
 Conceitos gerais
 Exemplo do ObjectStore)







Arquitectura
Criação de objectos
Gestão da concorrência
Colecções
Perguntas
Índices
Associações
BDOO - 5
Introdução ao ObjectStore
ObjectStore é um SGBDOO que permite
• criar e modificar objectos C++ (ou Smalltalk) em vez de tabelas, linhas e colunas
• aceder aos dados com o mesmo formato em que existem na aplicação
•
•
descrever, memorizar e pesquisar dados complexos
memorizar persistentemente dados independentemente do tipo
 Base de dados é uma localização na memória para objectos persistentes
• BD contém segmentos; segmentos são feitos de páginas
• página é a unidade de transferência mínima (8K); não limita o tamanho dos
objectos
• os segmentos crescem automáticamente e não podem ser fixados num local
 Tipos de BD
• ficheiro do sistema operativo, definido pelo seu caminho (velocidade intermédia)
• sistema de ficheiros crú (rawfs) gerido pelo ObjectStore
- montado directamente numa partição (mais rápido)
- montado em ficheiros do sistema operativo (mais lento)
BDOO - 6
Processos
 Servidor — processo que gere o acesso às bases de dados
• memoriza e disponibiliza páginas de dados persistentes
• arbitra acessos concorrentes
• recuperação de falhas
• arranque automático na inicialização da máquina
 Aplicação cliente — programa do utilizador que pode aceder a várias BD
• num só sistema de ficheiros  um servidor
• sistemas de ficheiros diferentes  vários servidores
• liga-se a biblioteca ObjectStore cliente para
- mapear objectos da BD persistente em endereços de memória virtual
- reservar e libertar memória persistente
- manter cache das páginas recentes e lidar com as faltas pedindo-as ao servidor
 Gestor de cache — processo que corre na máquina da aplicação
• um só por máquina
• coordena o acesso concorrente das várias aplicações aos dados persistentes que se
encontram na cache a partir das mensagens de retorno do servidor
BDOO - 7
Processos
Aplicação
Gestor da cache
Servidor
nó
nó
Servidor
Disco
nó
nó
nó
Gestor da cache
Aplicação
Disco
Gestor da cache
Aplicação
Aplicação
BDOO - 8
Gestão de memória
Espaço de endereços;
dados estão na memória virtual
memória transitória
Heap
Cache
memória persistente
memória
física
Todos os clientes usam o mesmo
espaço de swap
cache
Cache
Uma cache por cliente
memória transitória
Stack
Um espaço de endereços
por cliente
Swap
BDOO - 9
Mapeamento de memória
 Transferência entre a BD e a memória do programa automática e transparente
 ObjectStore detecta qualquer referência a memória persistente e transfere a página
respectiva pela rede para a cache e mapeia para memória virtual — acesso tão rápido
como a dados transitórios
 Dados em C++; apontadores para memória virtual (32 ou 64 bits)
 Nos segmentos da BD existem pseudo-endereços — relocalização
 Mapa de relocalização permanente — determina a localização de um objecto no disco
 Mapa de relocalização transitório — determina localização de objecto cliente na cache
 Relocalização na leitura e na escrita
 Vantagens:
• persistência especificada à instância; independente do tipo, incluindo pré-definidos
(reusar código normal)
•
apontadores processados à velocidade do hardware da memória (virtual) e não
através de apontadores soft
 Requere-se informação sobre o esquema de cada BD e de cada aplicação em ficheiros
fonte e nas próprias BD
BDOO - 10
Construção de aplicações
 Começar por recorrer ao utilitário gerador de esquemas (ossg)
- entrada: ficheiros fonte de esquema + esquemas de biblioteca
- saída: BD do esquema da aplicação e respectivo ficheiro fonte
- o que fica pode ser só o que foi declarado nos ficheiros, ou considerar os declarados
apenas como pontos de entrada e incluir também o que estiver no fecho transitivo
de acesso a partir daqueles
 O ficheiro fonte tem que ser compilado e ligado com a aplicação
- poder ser usado um qualquer compilador de C ou C++, de preferência com templates
- sugere-se cxx no jerry, o compilador da Digital
 Liga-se habitualmente pelo menos a biblioteca base do ObjectStore
#include <ostore/ostore.hh>
e começa-se por chamar a função membro estática
objectstore::initialize()
excepto nos casos em que é necessário chamar
objectstore::set_application_schema_pathname()
objectstore::set_cache_size()
objectstore::set_client_name()
BDOO - 11
Ambiente
•
acrescentar no ficheiro de inicialização de uma sessão no riff
OS_ROOTDIR=/usr/local/ODI/OS5.0
export OS_ROOTDIR
PATH=$PATH:$OS_ROOTDIR/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OS_ROOTDIR/lib
export LD_LIBRARY_PATH
•
a saída do servidor fica registada em /tmp/ostore/oss_out e pode ser
útil para depuração
BDOO - 12
Download

ObjectStore 1 - Universidade do Porto