Ich brauche einen persistenten Speicher in Java für bestimmte (möglicherweise große) Datenstrukturen, wie z.B.:
- dichte und dünnbesetzte Matrizen aus ganzen Zahlen, Doppelzahlen und Booleschen Werten
- gerichtete Graphen mit beschrifteten Knoten und Kanten
- Binärbäume
- Maps: string->string, string->integer (mit schnellem Abruf der Schlüssel mit den größten Werten)
- Mengen von ganzen Zahlen oder Zeichenketten
Ich habe nichts dagegen, wenn es für jede Datenstruktur einen eigenen Speicher gibt, solange alle Speicher ähnliche, konsistente Schnittstellen haben.
Ich muss in der Lage sein, die Datenstrukturen effizient "remote" zu ändern, d. h. ohne die gesamte Struktur in den Arbeitsspeicher zu holen, sie zu ändern und wieder zu speichern. Beispieloperationen: einen Schlüsselwert in eine Karte setzen, einen Knoten aus einem Baum entfernen, die Beschriftung eines Knotens in einem Diagramm ändern, einen Wert zu einer Menge hinzufügen.
Es wäre sehr schön, wenn man auf diese Speicher auch von anderen Programmiersprachen aus zugreifen könnte, vor allem von Python aus. Ich denke dabei an einen RESTful-Service im Backend und Client-APIs in Java und Python.
Motivation: Ich muss eine große Sammlung von Dokumenten verarbeiten und verschiedene Analysen dazu durchführen. Ich möchte verschiedene Ansätze erforschen und schnelle Prototypen erstellen (aus diesem Grund benötige ich einfache, leicht zu verwendende APIs).
Ich schätze, ich bin nicht der erste, der eine solche Funktion benötigt, und ich möchte das Rad nicht neu erfinden. Was mich zu der Frage bringt: Welche Open-Source-Lösungen ermöglichen eine einfach zu handhabende Persistenz von Datenstrukturen in Java?
Vielen Dank im Voraus!