Liste der In-Memory-Datenbanken

Liste der In-Memory-Datenbanken

1. Überblick

In-Memory-Datenbanken basieren auf dem Systemspeicher und nicht auf dem Speicherplatz für die Datenspeicherung. 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 wirdwe 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-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

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


    com.h2database
    h2
    1.4.194

Die neueste Version vonH2 database kann von Maven Central heruntergeladen werden.

2.2. Aufbau

Um eine Verbindung zu einer speicherinternenH2-Datenbank herzustellen, können Sie eine VerbindungString mit dem Protokollmem, gefolgt vom Datenbanknamen verwenden. Die EigenschaftendriverClassName, URL, username undpassword können in eine.properties-Datei eingefügt 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 Datenbank vonmyDbbeim 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 EigenschaftDB_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 Datenbank vonH2wird regelmäßig gepflegt und bietet eine detailliertere Dokumentation zuh2database.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 mitHSQLDB zu entwickeln, benötigen wir die Maven-Abhängigkeit:


    org.hsqldb
    hsqldb
    2.3.4

Sie finden die neueste Version vonHSQLDB 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 Arbeitsspeicher befindet und nach Beendigung des Vorgangs gelöscht wird.

Die DialekteigenschaftHibernate fürHSQLDB lautet:

hibernate.dialect=org.hibernate.dialect.HSQLDialect

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

4. Apache Derby Datenbank

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

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

4.1. Maven-Abhängigkeit

Um eineDerby-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 vonDerby database finden Sie auf Maven Central.

4.2. Aufbau

Die Verbindungszeichenfolge verwendet das Protokollmemory:

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 Siecreate=true in der Verbindungszeichenfolge angeben. Die Datenbank wird beim Beenden von JVM standardmäßig geschlossen und gelöscht.

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

hibernate.dialect=org.hibernate.dialect.DerbyDialect

Weitere Informationen zurDerby-Datenbank finden Sie unterdb.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 dieSQLite-Datenbank zu verwenden, müssen Sie den JDBC-Treiber JAR hinzufügen:


    org.xerial
    sqlite-jdbc
    3.16.1

Die Abhängigkeit vonsqlite-jdbckann von Maven Central heruntergeladen werden.

5.2. Aufbau

Die Verbindungseigenschaften verwenden die Treiberklasseorg.sqlite.JDBCund das Protokollmemoryfür die Verbindungszeichenfolge:

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

Dadurch wird die DatenbankmyDbautomatisch erstellt, wenn sie nicht vorhanden ist.

Derzeit bietetHibernate keinen Dialekt fürSQLite, obwohl dies in Zukunft sehr wahrscheinlich sein wird. Wenn SieSQLite mitHibernate verwenden möchten, müssen Sie IhreHibernateDialect-Klasse erstellen.

Um mehr überSQLite zu erfahren, gehen Sie zusqlite.org.

6. In-Memory-Datenbanken im Spring Boot

Spring Boot macht die Verwendung einer In-Memory-Datenbank besonders einfach, da die Konfiguration fürH2,HSQLDB, undDerby 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 zupom.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 uns kurz mit den am häufigsten verwendeten In-Memory-Datenbanken im Java-Ökosystem und ihren Grundkonfigurationen befasst. Beachten Sie, dass sie zwar zum Testen nützlich sind, in vielen Fällen jedoch nicht genau die gleiche Funktionalität wie die ursprünglichen eigenständigen Funktionen bieten.

Sie finden die in diesem Artikel verwendeten Codebeispieleover on Github.