Liste der In-Memory-Datenbanken

1. Übersicht

In-Memory-Datenbanken basieren auf Systemspeicher und nicht auf Speicherplatz für die Speicherung von Daten. Da der Speicherzugriff schneller ist als der Festplattenzugriff, sind diese Datenbanken natürlich schneller.

Natürlich können wir eine In-Memory-Datenbank nur in Anwendungen und Szenarien verwenden, in denen Daten nicht beibehalten werden müssen oder um Tests schneller auszuführen. Sie werden häufig als eingebettete Datenbanken ausgeführt. Dies bedeutet, dass sie beim Starten eines Prozesses erstellt und beim Beenden des Prozesses verworfen werden. Dies ist zum Testen sehr komfortabel, da Sie keine externe Datenbank einrichten müssen.

In den folgenden Abschnitten werden einige der am häufigsten verwendeten In-Memory-Datenbanken für die Java-Umgebung und die jeweils für sie erforderliche Konfiguration vorgestellt .

2. H2-Datenbank

H2 ist eine in Java geschriebene Open Source-Datenbank, die Standard-SQL für eingebettete und eigenständige Datenbanken unterstützt. Es ist sehr schnell und in einer JAR von nur ca. 1,5 MB enthalten.

2.1. Maven-Abhängigkeit

Um H2- Datenbanken in einer Anwendung zu verwenden, müssen Sie die folgende Abhängigkeit hinzufügen:

 com.h2database h2 1.4.194 

Die neueste Version der H2- Datenbank kann von Maven Central heruntergeladen werden.

2.2. Aufbau

Um eine Verbindung zu einer H2 In-Memory - Datenbank, können wir eine Verbindung verwenden String mit dem Protokoll mem, durch die Datenbanknamen gefolgt. Die Eigenschaften driverClassName, URL, Benutzername und Kennwort können in einer .properties- Datei abgelegt werden, die von unserer Anwendung gelesen werden kann:

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

Diese Eigenschaften stellen sicher, dass die myDb- Datenbank beim Start der Anwendung automatisch erstellt wird.

Wenn eine Verbindung zur Datenbank geschlossen wird, wird standardmäßig auch die Datenbank geschlossen. Wenn die Datenbank so lange gültig sein soll, wie die JVM ausgeführt wird, können wir die Eigenschaft DB_CLOSE_DELAY = -1 angeben

Wenn wir die Datenbank mit Hibernate verwenden, müssen wir auch den Hibernate-Dialekt angeben:

hibernate.dialect=org.hibernate.dialect.H2Dialect

Die H2- Datenbank wird regelmäßig gepflegt und bietet eine detailliertere Dokumentation auf h2database.com.

3. HSQLDB ( HyperSQL- Datenbank)

HSQLDB ist ein Open-Source-Projekt, das ebenfalls in Java geschrieben wurde und eine relationale Datenbank darstellt. Es folgt den SQL- und JDBC-Standards und unterstützt SQL-Funktionen wie gespeicherte Prozeduren und Trigger.

Es kann im In-Memory-Modus verwendet oder für die Verwendung von Festplattenspeicher konfiguriert werden.

3.1. Maven-Abhängigkeit

Um eine Anwendung mit HSQLDB zu entwickeln , benötigen wir die Maven-Abhängigkeit:

 org.hsqldb hsqldb 2.3.4 

Sie finden die neueste Version von HSQLDB auf Maven Central.

3.2. Aufbau

Die Verbindungseigenschaften, die wir benötigen, haben das folgende Format:

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

Dadurch wird sichergestellt, dass die Datenbank beim Start automatisch erstellt wird, sich für die Dauer der Anwendung im Speicher befindet und nach Beendigung des Prozesses gelöscht wird.

Die Hibernate Dialekt Eigenschaft für HSQLDB ist:

hibernate.dialect=org.hibernate.dialect.HSQLDialect

Die JAR-Datei enthält auch einen Datenbankmanager mit einer GUI. Weitere Informationen finden Sie auf der Website hsqldb.org.

4. Apache Derby-Datenbank

Apache Derby ist ein weiteres Open Source-Projekt, das ein relationales Datenbankverwaltungssystem enthält, das von der Apache Software Foundation erstellt wurde .

Derby basiert auf SQL- und JDBC-Standards und wird hauptsächlich als eingebettete Datenbank verwendet. Es kann jedoch auch im Client-Server-Modus mithilfe des Derby Network Server- Frameworks ausgeführt werden.

4.1. Maven-Abhängigkeit

Um eine Derby- Datenbank in einer Anwendung zu verwenden, müssen Sie die folgende Maven-Abhängigkeit hinzufügen:

 org.apache.derby derby 10.13.1.1 

Die neueste Version der Derby- Datenbank finden Sie auf Maven Central.

4.2. Aufbau

Die Verbindungszeichenfolge verwendet das Speicherprotokoll :

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

Damit die Datenbank beim Start automatisch erstellt wird, müssen Sie in der Verbindungszeichenfolge create = true angeben . Die Datenbank wird beim Beenden der JVM standardmäßig geschlossen und gelöscht.

Wenn Sie die Datenbank mit Hibernate verwenden , müssen Sie den Dialekt definieren:

hibernate.dialect=org.hibernate.dialect.DerbyDialect

Weitere Informationen zur Derby- Datenbank finden Sie unter db.apache.org/derby.

5. SQLite-Datenbank

SQLite ist eine SQL-Datenbank, die nur im eingebetteten Modus ausgeführt wird, entweder im Speicher oder als Datei gespeichert. Es ist in der Sprache C geschrieben, kann aber auch mit Java verwendet werden.

5.1. Maven-Abhängigkeit

Um eine SQLite- Datenbank zu verwenden, müssen Sie den JDBC-Treiber JAR hinzufügen:

 org.xerial sqlite-jdbc 3.16.1 

Die sqlite-jdbc-Abhängigkeit kann von Maven Central heruntergeladen werden.

5.2. Aufbau

Die Verbindungseigenschaften verwenden die Treiberklasse org.sqlite.JDBC und das Speicherprotokoll für die Verbindungszeichenfolge:

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

Dadurch wird die myDb- Datenbank automatisch erstellt, wenn sie nicht vorhanden ist.

Derzeit bietet Hibernate keinen Dialekt für SQLite an , obwohl dies in Zukunft sehr wahrscheinlich sein wird. Wenn Sie SQLite mit Hibernate verwenden möchten , müssen Sie Ihre HibernateDialect- Klasse erstellen .

Weitere Informationen zu SQLite finden Sie unter sqlite.org.

6. In-Memory-Datenbanken im Spring Boot

Spring Boot macht die Verwendung einer In-Memory-Datenbank besonders einfach, da die Konfiguration für H2 , HSQLDB und Derby automatisch erstellt werden kann .

Alles, was wir tun müssen, um eine Datenbank eines der drei Typen in Spring Boot zu verwenden, ist, ihre Abhängigkeit zur Datei pom.xml hinzuzufügen . Wenn das Framework auf die Abhängigkeit vom Klassenpfad stößt, wird die Datenbank automatisch konfiguriert.

7. Fazit

In diesem Artikel haben wir einen kurzen Überblick über die am häufigsten verwendeten In-Memory-Datenbanken im Java-Ökosystem sowie deren Grundkonfigurationen gegeben. Obwohl sie zum Testen nützlich sind, beachten Sie, dass sie in vielen Fällen nicht genau die gleiche Funktionalität bieten wie die ursprünglichen Standalone-Funktionen.

Die in diesem Artikel verwendeten Codebeispiele finden Sie auf Github.