Parte II - Modos de Acesso, Configuração, Performance e Outras Opções
O primeiro artigo da
série dessa série teve uma repercussão surpreendente. Imaginava que havia
um interesse por tecnologias pós-relacionais, mas não imaginei que o interesse fosse
tão grande assim. Em contato com a equipe do
db4o foi me revelado que houve um número alto de visitas a partir
do site Linha de Código e que antes desse artigo o Brasil já era o 7º colocado em
visitas, dentre os mais de 190 países que já visitaram o site www.db4o.com e com isso, conquistamos um fórum em português no site do db4o.
Nesse segundo artigo vou começar a aprofundar alguns detalhes na utlização do db4o:
modos de acesso, configuração, performance, índices, operações em cascata, etc.
Modos de Acesso
O db4o possui 3 modos de acesso: direto, cliente/servidor e cliente/servidor embutido.
Acesso direto
O acesso direto foi o modo utilizado no exemplo do primeiro artigo. Nesse modo acessamos
o arquivo com os objetos diretamente, da mesma forma que se faz quando se trabalha
com uma "base" Access:
ObjectContainer _container = Db4o.OpenFile("arquivo.yap");
|
|
Conexão direta(C#)
|
|
Esse modo de acesso deve ser utilizado preferencialmente apenas em aplicações desktop
standalone, aplicações para dispositivos móveis e aplicações embarcadas. Em aplicações
onde há acesso simultâneo de 2 ou mais usuários (aplicações web e c/s) esse tipo
de acesso não é recomendado.
Em aplicações standalone você pode abrir um ObjectContainer no início da aplicação
e deixá-lo aberto por todo tempo de vida da aplicação. Isso vai facilitar o seu
desenvolvimento.
Acesso client/server
Essa é a clássica forma onde há um programa "servidor" e um ou mais programas"clientes"
acessando esse servidor.
O db4o permite trabalhar com servidores de uma forma transparente. A classe container
é a mesma, mas agora ela é instanciada através de Db4o.OpenClient ao invés de Db4o.OpenFile.
Obviamente você precisa criar uma aplicação a mais, que será o seu "servidor".
O programa servidor deverá ter as seguintes linhas de código:
ObjectServer db4oServer = Db4o.OpenServer("arquivo.yap", porta);
db4oServer.GrantAccess(nomeusuario1,senhausuario1);
db4oServer.GrantAccess(nomeusuario2, senhausuario2);
...
db4oServer.GrantAccess(nomeusuariox,senhausuariox);
|
|
Servidor db4o(C#) |
|
Db4o.OpenServer abre um arquivo com objetos e monta o servidor
na porta indicada (um número de porta TCP/IP). Não existe um valor padrão para a
porta.
db4oServer.GrantAccess define o nome e senha dos usuários que podem
acessar esse servidor. Você pode criar um usuário padrão ou definir um nome
e senha para cada usuário.
Do lado cliente, você deverá fazer:
ObjectContainer _container = Db4o.OpenClient(host, porta, usuário, senha);
|
|
Cliente db4o(C#) |
|