web-dev-qa-db-fra.com

Pourquoi mon programme H2 intégré écrit-il dans un fichier .mv.db

J'ai suivi le guide de démarrage rapide sur le site Web de la base de données h2 pour créer une nouvelle base de données une table et insérer des données. L'application fonctionne sans problème et peut lire et écrire dans la base de données sans problème.

Quickstart h2

  • Ajoutez le h2 * .jar au chemin de classe (H2 n'a pas de dépendances)
  • Utilisez la classe de pilote JDBC: org.h2.Driver
  • L'URL de la base de données jdbc: h2: ~/test ouvre le test de la base de données dans votre répertoire personnel
  • Une nouvelle base de données est automatiquement créée

Maintenant, je veux regarder les données avec la console web-frontend h2 mais chaque fois que j'essaie d'ouvrir ma base de données, cela crée simplement une nouvelle base de données.

Après une longue recherche, j'ai remarqué que mon Java-App, qui utilise la version embarquée h2, écrit dans un fichier appelé ".mv.db" tandis que l'interface Web crée le fichier ".h2.db" (qui est beaucoup plus logique pour moi)

De plus, lorsque mon application écrit dans la base de données, elle utilise des quantités d'espace extrêmes (80 Mo pour environ 600 valeurs entières)
Comment puis-je utiliser l'extension ".h2.db" pour ma base de données intégrée?

38
FelixZett

Ceci est désormais automatiquement activé depuis la version 1.4.177 Beta (2014-04-12).

Vous pouvez le désactiver en ajoutant ;MV_STORE=FALSE et ;MVCC=FALSE à l'URL de la base de données

Par défaut, l'option MV_STORE est activée, elle utilise donc le nouveau stockage MVStore. Le paramètre MVCC est par défaut défini sur les mêmes valeurs que le paramètre MV_STORE, il est donc également activé par défaut. Pour les tests, les deux paramètres peuvent être désactivés en ajoutant "; MV_STORE = FALSE" et/ou "; MVCC = FALSE" à l'URL de la base de données.

http://www.h2database.com/html/changelog.html

Vous devez nous dire quelle version exacte de H2 vous utilisez.

47
Daniel Ruf

. mv.db - les fichiers sont pour le type de stockage à venir/bêta "MVStore" pour H2.

Voici du http://www.h2database.com/html/changelog.html :

Nouveau moteur de table "org.h2.mvstore.db.MVTableEngine" qui utilise en interne le MVStore pour conserver les données. Pour l'essayer, ajoutez "; DEFAULT_TABLE_ENGINE = org.h2.mvstore.db.MVTableEngine" à l'URL de la base de données. Ceci est encore très expérimental et de nombreuses fonctionnalités ne sont pas encore prises en charge. Les données sont stockées dans un fichier avec le suffixe . Mv.db .

11
Martin Wickman