H2 (DBMS) - H2 (DBMS)

H2 Database Engine
H2-logo.png
lançamento inicial Dezembro de 2005 ; 15 anos atrás ( 2005-12 )
Versão estável
1.4.200 / 14 de outubro de 2019 ; 20 meses atrás ( 14/10/2019 )
Repositório Edite isso no Wikidata
Escrito em Java
Sistema operacional Plataforma cruzada
Modelo Sistema de gerenciamento de banco de dados relacional
Licença Eclipse Public License ou Mozilla Public License 2.0
Local na rede Internet h2database .com

H2 é um sistema de gerenciamento de banco de dados relacional escrito em Java . Ele pode ser incorporado em aplicativos Java ou executado no modo cliente-servidor.

O software está disponível como software de código aberto Mozilla Public License 2.0 ou como Eclipse Public License original .

Principais características

Uso de SQL

Um subconjunto do padrão SQL (Structured Query Language) é suportado. As principais APIs de programação são SQL e JDBC , no entanto, o banco de dados também suporta o uso do driver ODBC PostgreSQL , agindo como um servidor PostgreSQL.

Tipos de Tabela

É possível criar tabelas na memória, bem como tabelas baseadas em disco. As tabelas podem ser persistentes ou temporárias. Os tipos de índice são hash table e tree para tabelas na memória e b-tree para tabelas baseadas em disco. Todas as operações de manipulação de dados são transacionais . O bloqueio no nível da tabela e o controle de simultaneidade multiversão são implementados. O protocolo 2-phase commit também é suportado, mas nenhuma API padrão para transações distribuídas é implementada.

Recursos de segurança

Os recursos de segurança do banco de dados são: direitos de acesso baseados em funções , criptografia da senha usando SHA-256 e dados usando o AES ou o Tiny Encryption Algorithm, XTEA . Os recursos criptográficos também estão disponíveis como funções dentro do banco de dados. As conexões SSL / TLS são suportadas no modo cliente-servidor, bem como ao usar o aplicativo de console.

O banco de dados oferece suporte à proteção contra injeção de SQL , impondo o uso de instruções parametrizadas. Em H2, esse recurso é denominado 'literal de desativação'.

Capacidade de pesquisa de texto completo

Duas implementações de pesquisa de texto completo estão incluídas, uma implementação nativa e outra usando Lucene .

Alta disponibilidade

Uma forma simples de alta disponibilidade é implementada: quando usado no modo cliente-servidor, o mecanismo de banco de dados oferece suporte a hot failover (normalmente conhecido como clustering). No entanto, o modo de cluster deve ser ativado manualmente após uma falha.

Versão na nuvem

Desde a versão 1.1.111, o banco de dados na memória H2 pode ser executado dentro do Google App Engine .

Desafios que afetam a durabilidade dos bancos de dados relacionais

A documentação H2 explica em detalhes várias maneiras nas quais os problemas no hardware subjacente e em sistemas de energia específicos podem afetar a durabilidade dos bancos de dados relacionais.

De acordo com a documentação H2, tais problemas estão relacionados não apenas ao projeto do motor DB, mas também ao mecanismo de armazenamento em cache. Como os dispositivos de armazenamento usam o cache de gravação para aumentar a velocidade, em uma situação de falta de energia, os dados do cache do dispositivo são perdidos. Os administradores devem então avaliar o equilíbrio comum entre velocidade e riscos de perda de dados no contexto dos requisitos de negócios e devem considerar cuidadosamente o projeto da fonte de alimentação e UPS dos servidores críticos.

Em alguns casos, é possível forçar o armazenamento a gravar no cache com frequência ou mesmo imediatamente usando o fsync, o que retarda o processo de gravação ou pode-se aceitar que o cache no buffer do dispositivo apresenta algum risco de perda de dados em caso de falha de energia. A eficácia do uso do fsync é limitada pelo fato de que muitos HDD têm cache de gravação habilitado por padrão de fábrica, caso em que não há nada sobre o design ou as configurações do banco de dados, nem comandos de nível do sistema operacional que serão capazes de eliminar a chance de perda ou inconsistência dados no caso de uma falha de energia repentina. Trabalhar com o sistema operacional e as configurações de hardware para desabilitar todo o cache de modo a gravar dados em tempo real pode ter impactos significativos no desempenho, pois apenas cerca de 100 operações de gravação por segundo seriam alcançáveis ​​com o uso de discos giratórios.

A documentação H2 faz um esforço para descrever em detalhes os problemas potenciais com durabilidade (parte do ACID ) resultantes da perda potencial de dados de transações confirmadas em caso de falha de energia .

Considerando as limitações de hardware em relação à preservação de dados em caso de perda repentina de energia e a ineficácia das abordagens comumente empregadas pelos desenvolvedores para evitar esses tipos de perdas, muitos mecanismos de banco de dados não chamam por padrão FileDescriptor.sync () nem FileChannel.force () nem fsync ou equivalentes para cada confirmação porque eles degradam significativamente o desempenho do sistema sem aumentar significativamente a durabilidade.

A documentação do HSQLDB faz referência a soluções alternativas para um conjunto semelhante de problemas em sua documentação.

A Base de Dados de Conhecimento da Microsoft descreve o impacto que esses problemas, falhas de energia, cache de gravação, etc. podem ter no desempenho e na durabilidade. A base de conhecimento discute as compensações entre o desempenho e a vulnerabilidade do cache de gravação de disco, bem como as configurações que um administrador pode usar para equilibrar isso.

Serviços de utilidade pública

Um servidor da web embutido com um aplicativo de console baseado em navegador está incluído, bem como ferramentas de linha de comando para iniciar e parar um servidor, fazer backup e restaurar bancos de dados e uma ferramenta shell de linha de comando.

História

O desenvolvimento do mecanismo de banco de dados H2 começou em maio de 2004 e foi publicado pela primeira vez em dezembro de 2005. O mecanismo de banco de dados foi escrito por Thomas Mueller. Ele também desenvolveu o mecanismo de banco de dados Java Hypersonic SQL. Em 2001, o projeto Hypersonic SQL foi interrompido e o Grupo HSQLDB foi formado para continuar a trabalhar no código Hypersonic SQL. O nome H2 significa Hypersonic 2, entretanto H2 não compartilha código com Hypersonic SQL ou HSQLDB. H2 é construído do zero.

Veja também

Referências

links externos