Question

Est-ce que Java a (ou est-il une bibliothèque disponible) qui me permet d'avoir un disque basé HashMap? Il n'a pas besoin d'être atomique ou quoi que ce soit, mais il est accessible via plusieurs threads et ne doit pas se bloquer si deux accèdent au même élément en même temps.

Quelqu'un sait de quoi que ce soit?

Était-ce utile?

La solution

Soit fichiers ou Berkeley DB peut-être ce que vous cherchez. Lui-même met en œuvre java.util.Properties java.util.Map et fournit des méthodes pour load de et store dans un fichier. Le Berkeley DB est souvent recommandé comme une paire légère valeur clé datastore.

Autres conseils

MapDB

MapDB fournit TreeMap simultanée et HashMap soutenu par le stockage sur disque ou hors segment de mémoire. Il est un moyen rapide, évolutive et facile à utiliser le moteur de base de données intégré Java. Il est emballé avec des fonctionnalités telles que les transactions, l'espace sérialisation efficace, par exemple le cache et la compression / chiffrement transparent. Il a également des performances exceptionnelles ad'égal que les moteurs db natifs embarqués.

http://www.mapdb.org/

jdbm2

Embarqué base de données Valeur clé Java.

https://code.google.com/p/jdbm2/

On dirait que vous besoin de quelque chose près d'un db léger. Avez-vous regardé / Java DB? Une lumière db avec une seule table, indexée serait essentiellement un sur disque, carte de hachage thread-safe.

JDBM2 est exactement ce que vous demandez. Il fournit un HashMap sauvegardé par la mémoire de disque (entre autres cartes). Son rapide, thread-safe et l'API est très simple.

projet Voldemort est aussi un très rapide / évolutive / réplication "hashmap". Il est utilisé à LinkedIn une performance est également très bon:

Une citation de leur site:

  

Voici le débit que nous voyons d'un   seul client multithread parler   un seul serveur où les données « à chaud »   ensemble est en mémoire sous artificiellement   lourde charge dans notre laboratoire de performance:

     

Reads: 19384 req / sec
   Écrit: 16559 req / s

Chronique carte met en œuvre ConcurrentMap et de données sur le disque via persiste la cartographie de sa mémoire dans un fichier.

Chronique La carte est conceptuellement très similaire à MapDB (API fournit constructeur similaire et une interface Map), mais Chronicle La carte est

Dans 2018 le plus léger magasin key value persistant est H2 base de données avec sa MVStore :

  

Le MVStore est persistant, connectez-vous structuré mémoire de valeur clé. C'est   prévu pour être le prochain sous-système de stockage de H2, mais il peut aussi être   utilisé directement dans une application, sans utiliser JDBC ou SQL.

     
      
  • MVStore signifie "magasin multi-version".

  •   
  • Chaque magasin contient un certain nombre de cartes accessibles via l'interface java.util.Map.

  •   
  • la persistance à base de fichiers sont pris en charge et le fonctionnement en mémoire.   
  • Il est destiné à être rapide, simple à utiliser, et petit.

  •   
  • En même temps de lecture et les opérations d'écriture sont pris en charge.

  •   
  • Les opérations sont prises en charge (y compris les opérations simultanées et 2 phases).

  •   
  • L'outil est très modulaire. Il prend en charge les types de données enfichables et la sérialisation, le stockage enfichable (dans un fichier, la mémoire hors tas), les mises en œuvre de la carte enfichable (B-tree, R-tree, B-arbre concurrent a), le stockage de BLOB, et une abstraction du système de fichiers à en charge les fichiers chiffrés et les fichiers zip.

  •   

H2 est également contenu dans une seule bibliothèque de 1.8 meg

Je aussi:

  • MapDB (dépendances de 13 meg)
  • chronique-carte (dépendances 5.5 meg - rapide en option distribuée)
  • lmdbjava (2 meg dépendances java + bibliothèque lmdb C) - le plus rapide, mais pas la mise en œuvre thread safe de la boîte.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top