db4o Developer Community

db4o open source object database, native to Java and .NET
Welcome to db4o Developer Community Sign in | Join
in Search
More Search Options

Grandes Coleções de Objetos

Last post 10-30-2008, 10:59 AM by tapgyn. 5 replies.
Sort Posts: Previous Next
  •  09-02-2008, 04:34 AM 50870

    Grandes Coleções de Objetos

    Bom dia.
    Sou iniciante no DB4O e estou avaliando seu funcionamento. Por tanto, fiz alguns testes e estou com uma dúvida.
    Em um microcomputador com 512MB de memória RAM, processador de 1,2GHz é possivel almazenar em uma coleção de objetos com mais de 500000 objetos? Cada objeto deve conter aproximadamente 500 bytes.
    Existe um mecanismo de paginação no banco de dados?

  •  09-05-2008, 06:30 PM 50927 in reply to 50870

    Re: Grandes Cole??es de Objetos

    Ola Fabio.

    > Sou iniciante no DB4O e estou avaliando seu funcionamento. Por tanto,
    > fiz alguns testes e estou com uma dúvida.
    > Em um microcomputador com 512MB de memória RAM, processador de 1,2GHz
    > é possivel almazenar em uma coleção de objetos com mais de t
    > objetos? Cada objeto deve conter aproximadamente 500 bytes.

    N�o entendi o que voc� quer dizer com "da para armazenar".

    O db4o pode criar bases de at� 254GB (como explicado aqui :
    http://developer.db4o.com/Resources/view.aspx/Reference/Tuning/Performance_Hints/Increasing_The_Maximum_Database_File_Size)

    Mesmo que voc� necessite mais de 254GB de dados ainda � poss�vel particionar os dados em v�rias
    bases de dados (o gerenciamento deste particionamento deve ser feito pelo programador)

    Ou voc� deseja saber se o db4o ser� r�pido o suficiente para sua aplica��o? Se for isto, bom,
    o melhor a fazer � rodar alguns testes (os mais pr�ximos o poss�vel da aplica��o final) na m�quina
    em que a aplica��o ser� executada.

    Esta p�gina:

    http://developer.db4o.com/Resources/view.aspx/Reference/Tuning

    apresenta formas para se fazer "tunig" do db4o.



    > Existe um mecanismo de paginação no banco de dados?
    >

    Acredito que voc� estaja preocupado com o uso de mem�ria, correto?

    Db4o mant�m uma refer�ncia em mem�ria para todos os objetos recem armazenados e/ou recuperados
    atrav�s de uma query

    Para maiores informa��es veja o link:
    http://developer.db4o.com/Resources/view.aspx/Reference/Basic_Concepts/Object_Identity/Weak_References

    Espero ter ajudado.

    --
    *Adriano Carlos Verona*
  •  09-07-2008, 05:19 AM 50944 in reply to 50927

    Re: Grandes Cole??es de Objetos

    Olá Adriano.
    Desculpe-me talves me expressei mal. O que quero dizer é o seguinte.
    Imagine que eu tenha um objeto que contenha uma coleção (Db4oList) de objetos muito grande e ao passo que vou inserindo novo objetos a instância dessa coleção ocupa cada vez mais memória principal. O consumo de memória vai crescendo proporcionalmente ao tamanho da lista até chegar ao ponto em que o espaço da memória heap(tamanho reservado para a máquina vitual alocar) termine. Fiz testes para simular esta situação, onde foram adicionados aproximadamente 300000 objetos do tipo String com tamanho de 50 caracteres, uns 400 bytes aproximadamente. Minha pergunta é a seguinte. Quais recursos eu possuo para tratar de coleções grandes?

    Vou dizer o que eu imagino que esteja acontecendo.
    Como você disse, o Db4o mantem as últimas referências, porém neste caso creio eu que todas elas exitiram até o último objeto adicionado. Usei uma String para não existirem vários niveis, que alocariam mais memória ainda. Eu imagino que uma coleção que trate de uma estrutura de dados para memória secundária(Disco), deva realizar estas tarefas paginando e mantendo um pequeno conjunto de objetos na memória. A coleção deve recuperar apenas os outros objetos quando solicitados por meio de um interador ou chamada explica de um método get, como faz o ObjectSet.
    Sendo assim fica minha pergunta, quais classes devo utlizar para resolver este tipo de tarefa? Obrigado.
  •  09-09-2008, 11:18 AM 50999 in reply to 50944

    Re: Grandes Cole??es de Objetos

    Ola Fabio.

    o db4o nao ira paginar (no sentido que voce colocou), pelo menos,
    nao o "reference cache" (RC) pois o mesmo necessita saber quais objetos
    se encontram armazenados na base para decidir se uma solicitacao
    de armazenamento deve ser entendida como um "insert" ou como um
    "update"

    Eu vejo algumas possibilidades para minimizar o uso de memoria:

    - Remover objetos do RC : para tanto utilize o metodo #purge(). Mas para isto
    funcionar voce tambem deve fazer com que os objetos sejam passiveis de serem coletados
    pelo GC.

    - Nao utilizar uma lista : ao inves de uma lista voce poderia armazenar algum identificador
    junto com o objeto assim seria possivel recuperar todos os objetos relacionados.

    - Qual a configuracao de heap que voce esta usando? Se n�o me engano, a VM Java por default

    define uma limite de 64 Mb para alocacoes do heap (veja argumento -xmx do aplicativo java.exe)

    Espero ter ajudado.

    --
    *Adriano Carlos Verona* � *db4objects*
  •  09-10-2008, 02:13 AM 51012 in reply to 50999

    Re: Grandes Cole??es de Objetos



    Olá Adrino.
    Ajudou sim, muito obrigado é exatamente isso que eu precisava para resolver o problema. Irei ajustar o sistema e parâmetros para a JVM.

    Obrigado.
  •  10-30-2008, 10:59 AM 51790 in reply to 50999

    Re: Grandes Cole??es de Objetos

    Adriano Verona:
    Nao utilizar uma lista : ao inves de uma lista voce poderia armazenar algum identificador junto com o objeto assim seria possivel recuperar todos os objetos relacionados.

     

    Parabéns pela sugestão,

    as vezes ficamos tão preocupados em fazer um sistema ORIENTADO A OBJETOS que esquecemos de detalhes triviais...

    gostaria da sua opinião sobre esse post meu

    http://developer.db4o.com/forums/51789/ShowThread.aspx#51789

View as RSS news feed in XML