Lista de bancos de dados na memória

Lista de bancos de dados na memória

1. Visão geral

Os bancos de dados na memória dependem da memória do sistema, em vez do espaço em disco para armazenamento de dados. Como o acesso à memória é mais rápido que o acesso ao disco, esses bancos de dados são naturalmente mais rápidos.

Claro, só podemos usar um banco de dados na memória em aplicativos e cenários onde os dados não precisam ser persistidos ou com o propósito de executar testes mais rapidamente. Eles geralmente são executados como bancos de dados incorporados, o que significa que são criados quando um processo é iniciado e descartados quando o processo termina, o que é superconfortável para teste porque você não precisa configurar um banco de dados externo.

Nas seções a seguir,we will take a look at some of the most commonly used in-memory databases for the Java environment and the configuration necessary for each of them.

2. H2 Database

H2 é um banco de dados de código aberto escrito em Java que oferece suporte a SQL padrão para bancos de dados integrados e independentes. É muito rápido e está contido em um JAR de apenas cerca de 1,5 MB.

2.1. Dependência do Maven

Para usar bancos de dadosH2 em um aplicativo, precisamos adicionar a seguinte dependência:


    com.h2database
    h2
    1.4.194

A versão mais recente doH2 database pode ser baixada do Maven Central.

2.2. Configuração

Para conectar a um banco de dados na memóriaH2, podemos usar uma conexãoString com o protocolomem, seguido pelo nome do banco de dados. As propriedadesdriverClassName, URL, usernameepassword podem ser colocadas em um arquivo.properties para serem lidas por nosso aplicativo:

driverClassName=org.h2.Driver
url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1
username=sa
password=sa

Essas propriedades garantem que o banco de dadosmyDb seja criado automaticamente na inicialização do aplicativo.

Por padrão, quando uma conexão com o banco de dados é fechada, o banco de dados também é fechado. Se quisermos que o banco de dados dure enquanto a JVM estiver em execução, podemos especificar a propriedadeDB_CLOSE_DELAY=-1

Se estamos usando o banco de dados com o Hibernate, também precisamos especificar o dialeto do Hibernate:

hibernate.dialect=org.hibernate.dialect.H2Dialect

O banco de dadosH2 é mantido regularmente e fornece uma documentação mais detalhada sobreh2database.com.

3. HSQLDB (HyperSQL Banco de dados)

HSQLDB é um projeto de código aberto, também escrito em Java, representando um banco de dados relacional. Ele segue os padrões SQL e JDBC e suporta recursos SQL, como procedimentos armazenados e gatilhos.

Pode ser usado no modo de memória ou pode ser configurado para usar armazenamento em disco.

3.1. Dependência do Maven

Para desenvolver um aplicativo usandoHSQLDB, precisamos da dependência Maven:


    org.hsqldb
    hsqldb
    2.3.4

Você pode encontrar a versão mais recente deHSQLDB no Maven Central.

3.2. Configuração

As propriedades de conexão que precisamos têm o seguinte formato:

driverClassName=org.hsqldb.jdbc.JDBCDriver
url=jdbc:hsqldb:mem:myDb
username=sa
password=sa

Isso garante que o banco de dados seja criado automaticamente na inicialização, permaneça na memória durante a duração do aplicativo e seja excluído quando o processo terminar.

A propriedade de dialetoHibernate paraHSQLDB é:

hibernate.dialect=org.hibernate.dialect.HSQLDialect

O arquivo JAR também contém um Gerenciador de Banco de Dados com uma GUI. Mais informações podem ser encontradas no sitehsqldb.org.

4. Banco de dados Apache Derby

Apache Derby é outro projeto de código aberto que contém um sistema de gerenciamento de banco de dados relacional criado porApache Software Foundation.

Derby é baseado em padrões SQL e JDBC e é usado principalmente como um banco de dados embutido, mas também pode ser executado no modo cliente-servidor usando a estruturaDerby Network Server.

4.1. Dependência do Maven

Para usar um banco de dadosDerby em um aplicativo, precisamos adicionar a seguinte dependência Maven:


    org.apache.derby
    derby
    10.13.1.1

A versão mais recente deDerby database pode ser encontrada no Maven Central.

4.2. Configuração

A string de conexão usa o protocolomemory:

driverClassName=org.apache.derby.jdbc.EmbeddedDriver
url=jdbc:derby:memory:myDb;create=true
username=sa
password=sa

Para que o banco de dados seja criado automaticamente na inicialização, temos que especificarcreate=true na string de conexão. O banco de dados é fechado e eliminado por padrão na saída da JVM.

Se estiver usando o banco de dados comHibernate, precisamos definir o dialeto:

hibernate.dialect=org.hibernate.dialect.DerbyDialect

Você pode ler mais sobre o banco de dadosDerby emdb.apache.org/derby.

5. Banco de Dados SQLite

SQLite é um banco de dados SQL executado apenas no modo integrado, seja na memória ou salvo como um arquivo. Está escrito na linguagem C, mas também pode ser usado com Java.

5.1. Dependência do Maven

Para usar um banco de dadosSQLite, precisamos adicionar o driver JDBC JAR:


    org.xerial
    sqlite-jdbc
    3.16.1

A dependênciasqlite-jdbc pode ser baixada do Maven Central.

5.2. Configuração

As propriedades da conexão usam a classe do driverorg.sqlite.JDBC e o protocolomemory para a string de conexão:

driverClassName=org.sqlite.JDBC
url=jdbc:sqlite:memory:myDb
username=sa
password=sa

Isso criará o banco de dadosmyDb automaticamente se ele não existir.

Atualmente,Hibernate não fornece um dialeto paraSQLite, embora provavelmente o fará no futuro. Se você quiser usarSQLite comHibernate, você deve criar sua classeHibernateDialect.

Para saber mais sobreSQLite, vá parasqlite.org.

6. Bancos de dados na memória no Spring Boot

O Spring Boot torna especialmente fácil usar um banco de dados na memória - porque pode criar a configuração automaticamente paraH2,HSQLDB,eDerby.

Tudo o que precisamos fazer para usar um banco de dados de um dos três tipos no Spring Boot é adicionar sua dependência apom.xml. Quando a estrutura encontra a dependência no caminho de classe, ela configura o banco de dados automaticamente.

7. Conclusão

Neste artigo, vimos rapidamente os bancos de dados em memória mais usados ​​no ecossistema Java, juntamente com suas configurações básicas. Embora sejam úteis para testes, lembre-se de que, em muitos casos, eles não oferecem exatamente a mesma funcionalidade que os autônomos originais.

Você pode encontrar os exemplos de código usados ​​neste artigoover on Github.