Liste des bases de données en mémoire

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. L'accès à la mémoire étant plus rapide que l'accès au disque, ces bases de données sont naturellement plus rapides.

Bien entendu, 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 conservées 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 lors du 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,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. 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 fichier JAR d’environ 1,5 Mo.

2.1. Dépendance Maven

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


    com.h2database
    h2
    1.4.194

La dernière version desH2 database peut être téléchargée depuis Maven Central.

2.2. Configuration

Pour se connecter à une base de données en mémoireH2, nous pouvons utiliser une connexionString avec le protocolemem, suivi du nom de la base de données. Les propriétésdriverClassName, URL, username etpassword 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éesmyDb 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 deH2 est régulièrement maintenue et fournit une documentation plus détaillée surh2database.com.

3. HSQLDB (base de donnéesHyperSQL)

HSQLDB est un projet open source, également écrit en Java, représentant une base de données relationnelle. Il respecte 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 configuré pour utiliser un stockage sur disque.

3.1. Dépendance Maven

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


    org.hsqldb
    hsqldb
    2.3.4

Vous pouvez trouver la dernière version deHSQLDB 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, restera en mémoire pendant toute la durée de l'application et sera supprimée à la fin du processus.

La propriété de dialecteHibernate pourHSQLDB est:

hibernate.dialect=org.hibernate.dialect.HSQLDialect

Le fichier JAR contient également un gestionnaire de base de données avec une interface graphique. Pour plus d'informations, consultez le site Web dehsqldb.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 lesApache Software Foundation.

Derby est basé sur les standards SQL et JDBC et est principalement utilisé comme base de données embarquée, mais il peut également être exécuté en mode client-serveur en utilisant le frameworkDerby Network Server.

4.1. Dépendance Maven

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


    org.apache.derby
    derby
    10.13.1.1

La dernière version deDerby database est disponible sur Maven Central.

4.2. Configuration

La chaîne de connexion utilise le protocolememory:

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écifiercreate=true dans la chaîne de connexion. La base de données est fermée et supprimée par défaut à la sortie de la machine virtuelle Java.

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

hibernate.dialect=org.hibernate.dialect.DerbyDialect

Vous pouvez en savoir plus sur la base de donnéesDerby à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 intégré, 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 Maven

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


    org.xerial
    sqlite-jdbc
    3.16.1

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

5.2. Configuration

Les propriétés de connexion utilisent la classe de piloteorg.sqlite.JDBC et le protocolememory 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éesmyDb si elle n'existe pas.

Actuellement,Hibernate ne fournit pas de dialecte pourSQLite, bien qu'il le soit très probablement à l'avenir. Si vous voulez utiliserSQLite avecHibernate, vous devez créer votre classeHibernateDialect.

Pour en savoir plus surSQLite, 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 pourH2,HSQLDB, etDerby.

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 auxpom.xml. Lorsque la structure rencontre la dépendance sur le chemin de classe, elle 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 solutions autonomes d'origine.

Vous pouvez trouver les exemples de code utilisés dans cet articleover on Github.