Was wäre in diesem Fall das empfohlene Java-Datenbankmodell?

Ich habe eine App geschrieben, die ein Video (720*576 px, 30 fps, RGB-Format) mit OpenCVunder verarbeitet Java. Ich berechne nur 5 Int-Variablen als Ergebnis meiner Verarbeitung für jeden Frame. Ich möchte diese 5 int-Variablen mit dem aktuellen Frame in einem Datensatz speichern und muss dies daher mehrmals pro Sekunde tun (ideal wären 30 Mal / Sekunde, aber ich könnte mit weniger auskommen, indem ich die Daten gruppiere, denke ich ...).

Was wäre die richtige Datenbankwahl für so etwas? Ich dachte HDF5, wäre das eine geeignete Lösung?

Antworten (2)

So ziemlich alles würde funktionieren.

Das Problem „30 Mal pro Sekunde“ sollte in der Leistungsfähigkeit jedes Datenbank- oder Datensatzdateiformats liegen. Wenn es Probleme gibt, mitzuhalten, können sie behandelt werden:

  • entweder durch Stapeln der Einfügungen (für eine Datenbank oder Zugriffsbibliothek),

  • durch Schreiben in einen gepufferten Strom, oder

  • durch Verwendung einer In-Memory-Warteschlange und separater Java-Threads für die Frame-Verarbeitung und das Speichern der extrahierten Daten. (Vorausgesetzt, Sie verarbeiten Frames in Echtzeit.)

Ich würde eine Datenbank / Bibliothek / ein Format basierend auf den anderen Dingen auswählen, die Sie tun möchten. Die Leistung sollte für das, was Sie vorschlagen, keine Rolle spielen.

Sie könnten (auf den meisten modernen Systemen) problemlos 5 Ganzzahlwerte, 4 Kommas und einen Zeilenvorschub mit 30 Schreibvorgängen pro Sekunde und mit einem viel geringeren Overhead als eine DB in eine Datei auf der Festplatte schreiben. Versuchen Sie es einfach zu halten und schreiben Sie in eine CSV-Datei - die meisten Datenbanken können problemlos aus einer CSV-Datei importieren, wenn Sie sie später in einer Datenbank benötigen.

Ja, aber ich wollte auch den aktuell verarbeiteten Frame hinzufügen, was bedeutet, dass ich 720 * 576 * 3 = 1244160 Float-Variablen + 5 Int-Variablen bei 30 Schreibvorgängen / Sek. setzen würde ... Gilt Ihre Antwort in diesem Fall noch oder nicht? Glaubst du, ich brauche dann eine alternative Lösung?