Pergunta

Existem DBs para Java que podem ser executados em um modo incorporado, com algumas tabelas sendo armazenadas na memória enquanto carregam outras pessoas do disco? H2 e JAVADB parecem ser os dois líderes do Java DBS e eu sei que ambos têm um modo de memória, mas eles fazem você carregar todo o banco de dados na memória ou pode decidir com base na mesa?

Foi útil?

Solução

Este é o FAQ da tabela em cache mencionado no site HSQL.

• O HSQLDB armazena todos os dados na memória. A memória não acaba como resultado?

• Ele armazena todos os dados na memória apenas se você quiser. Por padrão, crie a tabela resulta em uma tabela de memória, pois esse é o melhor tipo para tabelas menores. Para tabelas maiores, use Crie uma tabela em cache e ajuste o tamanho do cache para aproveitar seus requisitos de uso de memória (apenas 8 MB). Consulte o capítulo do guia de problemas de gerenciamento e implantação do sistema. Não há regra simples nem imposição por parte do HSQLDB, pois a flexibilidade máxima é permitida usando apenas algumas configurações. Um uso popular do HSQLDB é para aplicativos de mineração de OLAP, ETL e dados, onde grandes alocações de memória Java são usadas para manter milhões de linhas de dados na memória.

Eu acho que a mesa em cache já é poderosa o suficiente para atender à sua necessidade.

A partir de http://hsqldb.org/web/hsqlfaq.html

Comparação entre a tabela de cache e a tabela de memória

As tabelas de memória e as tabelas em cache são geralmente usadas para armazenamento de dados. A diferença entre os dois é a seguinte:

Os dados para todas as tabelas de memória são lidos no arquivo *.script quando o banco de dados é iniciado e armazenado na memória. Por outro lado, os dados para tabelas em cache não são lidos na memória até que a tabela seja acessada. Além disso, apenas parte dos dados para cada tabela em cache é mantida na memória, permitindo tabelas com mais dados do que pode ser mantido na memória.

Quando o banco de dados é desligado da maneira normal, todos os dados das tabelas de memória são gravados no disco. Em comparação, os dados em tabelas em cache que mudaram foram escritos durante a operação e no desligamento.

O tamanho e a capacidade do cache de dados para todas as tabelas em cache são configuráveis. Isso torna possível permitir que todos os dados em tabelas em cache sejam armazenados em cache na memória. Nesse caso, a velocidade de acesso é boa, mas um pouco mais lenta que as tabelas de memória.

Para aplicações normais, recomenda -se que as tabelas de memória sejam usadas para pequenas quantidades de dados, deixando tabelas em cache para grandes conjuntos de dados. Para aplicações especiais nas quais a velocidade é fundamental e uma grande quantidade de memória livre está disponível, as tabelas de memória também podem ser usadas para tabelas grandes.

Parece que esse recurso ainda não é suportado pelo H2 e Derby (JAVADB). Corrija -me se não for o fato.

Outras dicas

A maioria dos bancos de dados de memória (como HSQLDB tenha capacidade de cache alguns (ou todos) dados para o disco. Geralmente é um nível baixo o suficiente, por isso é transparente para o programador, mas certamente é configurável

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top