O banco de dados H2 é adequado como banco de dados embutido com grandes tabelas?

Joaquim Oliveira

Nosso aplicativo atualmente usa H2 como um banco de dados integrado e temos o seguinte cenário:

  • O H2 é usado como um "banco de dados temporário". Os dados inseridos em H2 são periodicamente enviados / inseridos em um banco de dados Oracle (o "oficial") a cada 30 minutos por uma tarefa do aplicativo, e os excluídos do H2;

  • Esta "tabela temporária" principal tem uma média de 183 linhas inseridas por hora em uma única tabela.

  • Temos duas outras tabelas grandes (21 milhões e 1,5 milhão de registros, respectivamente) usadas pela tarefa principal do aplicativo apenas para consulta. Há outra tarefa de aplicativo que atualiza incrementalmente essas tabelas do Oracle, atualizando nas linhas H2 que foram criadas / atualizadas / excluídas no Oracle desde a última sincronização. Também acontece a cada 30 minutos.

Temos usado H2 por 1,5 anos até agora sem problemas, mas encontramos o seguinte aviso sobre H2 na documentação oficial da Red Hat :

No entanto, ele não deve ser usado em um ambiente de produção. É uma fonte de dados muito pequena e independente que oferece suporte a todos os padrões necessários para testar e criar aplicativos, mas não é robusta ou escalonável o suficiente para uso em produção.

H2 é projetado e confiável para ser usado em ambiente de produção em um cenário como este?

Existem benchmarks que suportam isso? O benchmark de desempenho oficial H2 mostra tempos de execução e uso de desempenho, mas não diz nada sobre o volume de dados.

Dean Clark

O banco de dados H2 integrado está na memória ou é persistente? Minha principal preocupação seria o failover. Se sua JVM cair, você perderá todos os dados desde o último ponto de sincronização do Oracle.

Além disso, o banco de dados H2 integrado só pode ser usado na mesma JVM de seu aplicativo. Portanto, você não seria capaz de expandir para uma arquitetura de alta disponibilidade com vários JVMs, cada JVM teria seu próprio banco de dados H2 e você não seria capaz de compartilhar esses dados entre JVMs.

Finalmente, há a questão do heap. Se você estiver usando uma JVM na memória, seu heap aumentará conforme o volume de dados aumenta e, eventualmente, você pode ficar sem RAM e causar sobrecarga, pois o coletor de lixo tenta impedir que você fique sem heap.

Outros limites podem ser encontrados aqui: http://www.h2database.com/html/advanced.html#limits_limitations

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Crescimento do banco de dados - como lidar com grandes tabelas

Como verificar se o banco de dados embutido h2 foi criado?

Como regenerar banco de dados H2 com jhipster

Como salvar a duração no banco de dados H2

Tamanho das tabelas de banco de dados H2

Como selecionar dados do banco de dados com duas tabelas

banco de dados h2 embutido não está funcionando

Como determinar se o servidor de banco de dados ou banco de dados embutido é apropriado

Teste de primavera com H2 no banco de dados de memória truncar todas as tabelas

Como posso usar o banco de dados H2 com laravel?

Como editar o formulário com dados de tabelas de banco de dados no laravel

As tabelas de banco de dados H2 incorporadas do Intellij não aparecem

tabelas de dados ou paginação php para grandes consultas de banco de dados

Como armazenar e recuperar o YouTube embutido no banco de dados MySQL com PHP?

Banco de dados Spring Boot H2 - Tabelas não exibidas

Banco de dados Spring Boot H2 - Tabelas não exibidas

Como especificar a codificação utf8 para db e tabelas, usando o banco de dados embutido MariaDB no aplicativo Spring?

Como o banco de dados H2 difere do Postgresql? H2 cria tabelas por conta própria quando usado em um microsserviço

Banco de dados Wildfly 9.0.2 + H2 (jdbc: h2: arquivo não mostra tabelas)

Compare tabelas com BOOLEAN no banco de dados

Como aplicar a restrição de chave estrangeira na exclusão com o banco de dados JPA e H2

Inicialização do banco de dados H2 na memória com dados

Como conectar 3 tabelas no banco de dados?

mysqldump um banco de dados com condição nas tabelas

Como exportar banco de dados persistente para o banco de dados na memória em h2 do terminal

Mesmo depois de fechar a conexão, os dados ainda existem nas tabelas do banco de dados H2

Crie um ChartJS com 2 tabelas de banco de dados

Como acessar o banco de dados h2 após a implantação do aplicativo play 2 com boxfuse

Função de contagem de 2 tabelas no banco de dados

TOP lista

quentelabel

Arquivo