firebase database clé-valeur de la bibliothèque intégrée java sur disque

Je pense que je cherche une firebase database no-SQL, intégrée à la bibliothèque, sur disque (c.-à-d. Pas en mémoire), accessible à partir de java (et exécutée de préférence dans mon instance de la JVM). Ce n’est pas vraiment une firebase database, et je suis tenté de me lancer. Fondamentalement, je cherche la partie “devrions-nous garder cela en mémoire ou le mettre sur le disque” d’une firebase database.

Notre modèle a atteint plusieurs gigaoctets. En ce moment, tout cela est fait en mémoire, ce qui signifie que nous poussons la JVM vers le haut de plusieurs gigaoctets. Il est actuellement stocké dans un fichier XML plat, sérialisé et désérialisé avec xstream et compressé avec des bibliothèques gzip intégrées à Java. Cela a bien fonctionné lorsque notre modèle rest inférieur à 100 Mo, mais maintenant que sa taille est plus grande que cela, cela devient un problème.

Lâchement parlant ce modèle peut être décomposé en

  • Projet
    1. composant de configuration (graph-acyclique-dirigé), pas du tout convivial à la firebase database
    2. une liste d’une douzaine de structures “expérimentales”
      • chacun contenant une liste d’environ une douzaine de structures de “modèles d’exécution”.
        1. chaque modèle d’exécution contient des centaines de mégas de données. Une fois écrits, ils ne sont jamais édités.

Ce que j’aimerais faire, c’est que quelque chose soit conforme à une interface cartographique, telle que guid -> run-model. Cette mini firebase database garderait une table plate de ces objects. Sur notre modèle d’expérience, nous remplacerions la liste des modèles d’exécution par une liste d’aides et appendions, au niveau de la couche d’application, un appel à get à cette mappe, qui extrairait celle-ci du disque et dans la mémoire.

Cela signifie que nous pouvons conserver la configuration de notre programme en XML (ce dont je suis très heureux) et conserver un tableau des mégadonnées dans un SGBD qui nous évitera de consumr plusieurs Go de mémoire. Au démarrage et à la fermeture du programme, je pouvais ensuite charger et décharger les deux parties de notre modèle (la section config en XML et les modèles d’exécution au format firebase database) à partir d’un format d’archivage.

Je me sens un peu gung-ho à ce sujet et je pense que je pourrais probablement le mettre en œuvre avec certaines des stratégies d’inspection XML de X-Stream et une implémentation de carte personnalisée, mais quelque chose me dit une voix dans le dos. devrait trouver une bibliothèque pour le faire à la place.

Devrais-je lancer le mien ou existe-t-il une firebase database suffisamment petite pour répondre à ce projet de loi?

Merci les gars,

-Geoff

http://www.mapdb.org/

Jetez également un coup d’oeil à cette question: Alternative à BerkeleyDB?

Comme MapDB est une solution possible à votre problème, Chronicle Map mérite également d’être examiné. Il s’agit d’un magasin de valeurs-clés Java intégrable, éventuellement persistant, offrant un modèle de programmation très similaire à MapDB: via l’interface vanilla java.util.Map et la sérialisation transparente des clés et des valeurs.

La principale différence est que, selon les points de repère tiers, Chronicle Map est plus rapidement que MapDB .

En ce qui concerne la stabilité, aucun bogue n’a été signalé concernant le stockage des données Chronicle Map depuis des mois, alors qu’il est activement utilisé dans de nombreux projets.

Disclaimer: Je suis le développeur de Chronicle Map.