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.
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.
deixe-me dizer algumas palavras