XML/SQLite sinnvoll?

JuleXYZ

Mitglied
Hallo zusammen,

ich habe ein Java-Programm (f(x)), welches ausgehend von einem Übergabeparameter (x) ein Ergebnis y berechnet und zurückgibt. Während der Berechnung von f(x) sollen Zwischenergebnisse gespeichert werden. Da es von einem anderen Programm aufgerufen wird, weiß es weder wann es das erste Mal noch wann es das letzte Mal aufgerufen wird. Außerdem kann es sein, dass mehrere Instanzen gleichzeitig ausgeführt werden!

Zunächst hatte ich überlegt für jede Berechnung eine XML-Datei zu erstellen. Ich hätte dann quasi einen Ordner mit vielen XML-Dateien, eben für jeden Aufruf. Das finde ich allerdings für eine spätere Auswertung unhübsch (schließlich muss zunächst der gesamte Ordner eingelesen werden bevor die Daten ausgewertet werden können). Außerdem würden redundante Daten gehalten.

Eine nächste Idee ist, die Ergebnisse in einer SQLite-Datei zu sichern. (Auf eine SQL-DB würde ich wegen Installationsaufwand für die späteren Endnutzer sehr gerne verzichten!) Nun ist aber das Problem, dass unter Umständen mehrere Schreibzugriffe gleichzeitig erfolgen könnten. Kann man an der Stelle warten bis die Datei wieder unlocked ist? Oder wird mit einer Exception abgebrochen?

Oder hat jemand vielleicht eine bessere Idee?

Schonmal lieben Dank für alle Anregungen! :)
 

Thallius

Top Contributor
Mal davon abgesehen, dass gerade dafür ein DB da ist, damit man eben mit mehreren Task auf die gleichen Dante schreiben kann: In welchem Fall würden denn zwei Task gleichzeitig auf die selbe Row in der gleichen Table schreibend zugreifen?

Gruß

Claus
 

JuleXYZ

Mitglied
Erstmal vielen Dank für die Antwort!

Was passieren kann ist, dass das äußere Programm zwecks Parallelisierung mehrere Instanzen von f(x) aufruft. (Das liegt nicht in meiner Hand..) Das heißt zwei Instanzen könnten gleichzeitig in die eine Datei schreiben wollen(nur einfügen). Nicht aber auf die selbe Row! Meinem Verständnis nach wird die SQLite-Datei bei einem Schreibvorgang aber komplett gesperrt, oder?
 

Thallius

Top Contributor
Das stimmt. SQLite ist da leider sehr limitiert... Ist halt die Frage wie oft überhaupt geschrieben wird. Wenn es alle paar 1/10tel sekunden nur einmal ist, sollte es eh kein Problem sein. Wenn du alle paar millisekunden speichern must dann hast du ein Problem das du mit so kleinen Boardmitteln eh nicht gelöst bekommst.

Gruß

Claus
 

JuleXYZ

Mitglied
Vielen Dank für die schnelle Rückmeldung! :)

Die Berechnung von f(x) dauert sehr lange, sodass ein Schreiben nur alle paar Sekunden geschehen würde, ich gehe davon aus, dass eine "Kollision" somit auch nicht häufig passieren würde. Regelt SQLite das dann von alleine? Oder müsste ich eine Routine schreiben, die wartet bis die Datei unlocked ist?
 

Thallius

Top Contributor
Das würde ich einfach mal ausprobieren. Man kann SQLite mit ganz vielen verschiedenen Parametern kompilieren. Ich habe keine Ahnung welche Version Du da dann hast.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Json Objekt sinnvoll plätten? XML & JSON 1
G xml sinnvoll? XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben