Banco de dados rodando na memória – Java

Banco de dados rodando na memória – Java

Banco de dados relacional rodando na memória

Abaixo vou mostrar como utilizar um banco de dados 100% em memória, sem a necessidade de nenhuma instalação ou configuração. Essa abordagem pode ser muito útil para gravar dados temporários e utilizar todos os benefícios de um banco relacional, como restrições de integridade, sequences, etc.

O banco de dados é o H2. Ele é muito utilizado como banco local em aplicações stand alone, com persistência no disco e dados não voláteis, mas também pode ser usado apenas para gravar dados temporários.

Estou desenvolvendo funcionalidades para uma aplicação que importa dados e sempre, antes da execução, eu tinha que limpar o banco – e que mais pessoas acessavam. Então passei a utilizar o H2 com a execução um script DDL antes do processamento.

[java]
package h2;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

public class H2Test {
@Test
public void testDatabaseH2() throws SQLException, IOException {
Connection connection = DriverManager.getConnection("jdbc:h2:cnis");
Statement s = connection.createStatement();
try {
for (String linha:getConteudoArquivo("D:\\Temp\\drop_tables.txt")
.toString().split(System.lineSeparator())) {
if (!linha.isEmpty()) {
s.execute(linha);
}
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}
try {
s.execute(getConteudoArquivo("D:\\Temp\\create_tables.txt").toString());
} catch (SQLException sqle) {
sqle.printStackTrace();
}
s.close();
connection.close();
}

private StringBuilder getConteudoArquivo(String caminho) throws IOException {
StringBuilder retorno = new StringBuilder();
BufferedReader buf = new BufferedReader(
new InputStreamReader(new FileInputStream(caminho)));

String linha = null;
while ((linha=buf.readLine())!=null) {
retorno.append(linha + System.lineSeparator());
}

buf.close();
return retorno;
}
}
[/java]

Boa sorte.

142 Replies to “Banco de dados rodando na memória – Java”

Deixe uma resposta

O seu endereço de e-mail não será publicado.