3 Stimmen

Persistente Datenstrukturen in Java

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!

1voto

Michael J. Lee Punkte 12039

Haben Sie daran gedacht, etwas zu verwenden wie MongoDB ? Es scheint perfekt zu sein für das, wonach Sie suchen, und ist sehr beliebt. Es ist eine leistungsstarke, schemafreie, dokumentenorientierte Datenbank und ich liebe die Tatsache, dass sie auf json basiert! Probieren Sie es aus!

Ici ist ein schönes Java-Tutorial.

0voto

Rocky Pulley Punkte 21329

Wie sieht es mit ObjectOutputStream und ObjectInputStream aus?

0voto

Zemzela Punkte 3030

Es ist sehr schwer, das alles zu verdrahten, aber Sie können JPA mit bidirektionalen Mappings und Lazy-Loading verwenden.

0voto

James Scriven Punkte 7198

Es würde wirklich auf Sie Nutzung Muster abhängen, d.h., wie viele Lesungen, wie viele Schreibvorgänge, wie oft, usw., aber ich würde vorschlagen, dass Sie nur Sql verwenden, bis Sie beweisen, dass es nicht funktionieren wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X