Banco de Dados rodando 100% em Memória RAM

Existe alguma forma de instanciar em Java um banco de dados inteiramente em memória (RAM) ???

Eu tenho um projeto que prevê a utilização de dois bancos de dados:

– o primeiro deles será normal pare escrita e gravação dos dados do sistema;
– o segundo servirá apenas para leitura (read only) e dele depende a performance do projeto.

Como ele será apenas read only, gostaria de instanciá-lo completamente em memória. Alguém sabe qual banco de dados permite fazer isto ?

Sei que a utilização de cache já ajudaria, mas preciso MESMO de um banco de dados em memória.

Também já pensei em utilizar um XMLM (xml monstro) e instanciar ele em memória mas como os processos são complexos se existir um banco de dados com instruções SQL iria me ajudar em muito durante a modelagem e o suporte do projeto como um todo.

Grato pela ajuda de todos !

Já pensou em utilizar Prevayler?

Eu preferia um banco de dados SQL Ansi, mas o Prevayler não pode ser descartado.

Será que eu consigo instanciar uma base do Prevayler em memória ???

Lembrando que este item do meu projeto é crítico, assim economizar o acesso a disco jogando tudo em memória é um requisito que estou assumindo.

Oi, eu não tenho um grande conhecimento de prevayler, mas acho que resolveria seu problema, tirando as queries SQL.

Que tipo de coisa você precisa?

a) Precisa de um cache que seja acessível por várias aplicações (C/Java/PHP etc.) e que possa ser distribuído por várias máquinas.

Nesse caso, você pode tentar o memcached ( http://danga.com/memcached/ ). Esse é de graça.

b) Precisa de um banco de dados em memória, bem rápido.
Você pode usar algo como o

Oracle TimesTen - http://www.oracle.com/database/timesten.html

É claro que existem outros, favor procurar.

Não recomendaria usar o HSQLDB (mesmo na versão dele que trabalha 100% em memória), se suas tabelas forem um pouco grandes (> 100MB) Talvez você possa usar outra coisa.

Thingol, na verdade eu não queria um cache, queria um banco em memória mesmo. Vc acha que consigo rodar bem o HSQLDB inteiramente em memória caso tivesse tabelas pequenas (este é o meu caso).

A solução da Oracle parece legal, mas queria mesmo um produto gratuíto.

Oi Mauro, vi que o Pravayler roda muito mais rápido que bancos normais… espero que qualquer solução de banco rodando em RAM acompanha esse desempenho :smiley: !!!

Prevayler:
9.000 vezes mais rápidas do que no Oracle com JDBC e
3.000 vezes mais rápidas do que no MySQL com JDBC.

O problema do Prevayler é que ele não rola sob SQL… vi uma idéia que usa o projeto joSQL pra tentar contornar isto (http://www.javafree.org/content/view.jf?idContent=57) mas não sei quanto esta solução iria reduzir a performance do Prevayler.

cara da uma olhada no HSQL, so que nao sei se ele tem driver para PHP.

Se suas tabelas não são grandes, não há nem o que pensar, o HSQLDB será uma ótima solução para vc.

O Apache Derby suporta isso.