Liste des bases de données en mémoire

1. Vue d'ensemble

Les bases de données en mémoire reposent sur la mémoire système plutôt que sur l'espace disque pour le stockage des données. Étant donné que l'accès à la mémoire est plus rapide que l'accès au disque, ces bases de données sont naturellement plus rapides.

Bien sûr, nous ne pouvons utiliser une base de données en mémoire que dans les applications et les scénarios où les données n'ont pas besoin d'être persistantes ou dans le but d'exécuter des tests plus rapidement. Ils sont souvent exécutés en tant que bases de données intégrées, ce qui signifie qu'ils sont créés au démarrage d'un processus et supprimés à la fin du processus, ce qui est très pratique pour les tests car vous n'avez pas besoin de configurer une base de données externe.

Dans les sections suivantes, nous examinerons certaines des bases de données en mémoire les plus couramment utilisées pour l'environnement Java et la configuration nécessaire pour chacune d'elles .

2. Base de données H2

H2 est une base de données open source écrite en Java qui prend en charge SQL standard pour les bases de données intégrées et autonomes. Il est très rapide et contenu dans un JAR d'environ 1,5 Mo seulement.

2.1. Dépendance de Maven

Pour utiliser les bases de données H2 dans une application, nous devons ajouter la dépendance suivante:

 com.h2database h2 1.4.194 

La dernière version de la base de données H2 peut être téléchargée à partir de Maven Central.

2.2. Configuration

Pour se connecter à une base de données H2 en mémoire, nous pouvons utiliser une chaîne de connexion avec le protocole mem, suivi du nom de la base de données. Les propriétés driverClassName, URL, nom d'utilisateur et mot de passe peuvent être placées dans un fichier .properties pour être lu par notre application:

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

Ces propriétés garantissent que la base de données myDb est créée automatiquement au démarrage de l'application.

Par défaut, lorsqu'une connexion à la base de données est fermée, la base de données est également fermée. Si nous voulons que la base de données dure aussi longtemps que la JVM est en cours d'exécution, nous pouvons spécifier la propriété DB_CLOSE_DELAY = -1

Si nous utilisons la base de données avec Hibernate, nous devons également spécifier le dialecte Hibernate:

hibernate.dialect=org.hibernate.dialect.H2Dialect

La base de données H2 est régulièrement maintenue et fournit une documentation plus détaillée sur h2database.com.

3. HSQLDB ( base de données HyperSQL )

HSQLDB est un projet open source, également écrit en Java, représentant une base de données relationnelle. Il suit les normes SQL et JDBC et prend en charge les fonctionnalités SQL telles que les procédures stockées et les déclencheurs.

Il peut être utilisé en mode mémoire, ou il peut être configuré pour utiliser le stockage sur disque.

3.1. Dépendance de Maven

Pour développer une application utilisant HSQLDB , nous avons besoin de la dépendance Maven:

 org.hsqldb hsqldb 2.3.4 

Vous pouvez trouver la dernière version de HSQLDB sur Maven Central.

3.2. Configuration

Les propriétés de connexion dont nous avons besoin ont le format suivant:

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

Cela garantit que la base de données sera créée automatiquement au démarrage, résidera en mémoire pendant toute la durée de l'application et sera supprimée à la fin du processus.

La propriété de dialecte Hibernate pour HSQLDB est:

hibernate.dialect=org.hibernate.dialect.HSQLDialect

Le fichier JAR contient également un gestionnaire de base de données avec une interface graphique. Plus d'informations peuvent être trouvées sur le site Web hsqldb.org.

4. Base de données Apache Derby

Apache Derby est un autre projet open source contenant un système de gestion de base de données relationnelle créé par Apache Software Foundation .

Derby est basé sur les normes SQL et JDBC et est principalement utilisé comme base de données intégrée, mais il peut également être exécuté en mode client-serveur à l'aide de la structure Derby Network Server .

4.1. Dépendance de Maven

Pour utiliser une base de données Derby dans une application, nous devons ajouter la dépendance Maven suivante:

 org.apache.derby derby 10.13.1.1 

La dernière version de la base de données Derby est disponible sur Maven Central.

4.2. Configuration

La chaîne de connexion utilise le protocole de mémoire :

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

Pour que la base de données soit créée automatiquement au démarrage, nous devons spécifier create = true dans la chaîne de connexion. La base de données est fermée et supprimée par défaut à la sortie de JVM.

Si vous utilisez la base de données avec Hibernate , nous devons définir le dialecte:

hibernate.dialect=org.hibernate.dialect.DerbyDialect

Vous pouvez en savoir plus sur la base de données Derby sur db.apache.org/derby.

5. Base de données SQLite

SQLite est une base de données SQL qui s'exécute uniquement en mode embarqué, soit en mémoire, soit enregistrée sous forme de fichier. Il est écrit en langage C mais peut également être utilisé avec Java.

5.1. Dépendance de Maven

Pour utiliser une base de données SQLite , nous devons ajouter le pilote JDBC JAR:

 org.xerial sqlite-jdbc 3.16.1 

La dépendance sqlite-jdbc peut être téléchargée depuis Maven Central.

5.2. Configuration

Les propriétés de connexion utilisent la classe de pilote org.sqlite.JDBC et le protocole de mémoire pour la chaîne de connexion:

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

Cela créera automatiquement la base de données myDb si elle n'existe pas.

Actuellement, Hibernate ne fournit pas de dialecte pour SQLite , bien qu'il le soit très probablement à l'avenir. Si vous souhaitez utiliser SQLite avec Hibernate , vous devez créer votre classe HibernateDialect .

Pour en savoir plus sur SQLite , accédez à sqlite.org.

6. Bases de données en mémoire dans Spring Boot

Spring Boot facilite l'utilisation d'une base de données en mémoire, car il peut créer automatiquement la configuration pour H2 , HSQLDB et Derby .

Tout ce que nous devons faire pour utiliser une base de données de l'un des trois types de Spring Boot est d'ajouter sa dépendance au pom.xml . Lorsque le framework rencontre la dépendance sur le chemin de classe, il configure automatiquement la base de données.

7. Conclusion

Dans cet article, nous avons examiné rapidement les bases de données en mémoire les plus couramment utilisées dans l'écosystème Java, ainsi que leurs configurations de base. Bien qu'ils soient utiles pour les tests, gardez à l'esprit que dans de nombreux cas, ils ne fournissent pas exactement les mêmes fonctionnalités que les fonctionnalités autonomes d'origine.

Vous pouvez trouver les exemples de code utilisés dans cet article sur Github.