Welche Strategie um Daten zu speichern?

Stoke

Grünschnabel
Hallo,

ich befinde mich in der Konzeptionsphase einer mittelmäßig komplexen Desktopapplikation die auf eine RCP aufbauen soll. Meine Wahl fiel auf die Netbeans Platform, die auf Swing setzt. Jedoch bin ich hier nicht fixiert, sollte es eine bessere Alternative geben werde ich mir die gerne anschauen.

Die Applikation verwaltet eine unbestimmte Anzahl an Projekten, die verschiedene Typen haben können, etwa vergleichbar mit Java Projekten. Ein Projekt wiederum besitzt eine Menge an Entitäten, ich schätze so etwa 200 - 1000 Datensätze pro Projekt. Eine Kommunikation zwischen Projekten findet nicht statt, sie sind also komplett abgretrennt.

Nun frage ich mich wie ich diese Daten speichern sollte. Es gibt dazu zwei brauchbare Möglichkeiten: Entweder mit einer embedded DB oder Dateibasiert.
Da ich viel mit Datenbanken arbeite war mein erster Gedanke SQLite. Ich nehme an dass die Performance einer Dateibasierten Lösung weit überlegen sein müsste, ebenso erscheint mir die Organisation der Daten einfacher bzw logischer. Der Nachteil ist jedoch, dass die Daten relativ kompliziert exportiert und importiert bzw synchronisiert werden müssen.
Die einfache Übertragung der Daten an verschiedene Workstations ohne Internetanschluss ist allerdings eine wichtige Anforderung.
Ich denke hierbei zB an Word; man erstellt ein Dokument, speichert es als eine einzige Datei und öffnet diese einfach auf einem beliebigen anderen PC. Simpel.
In dieser Art möchte ich das auch handhaben. Ist das in Java sinnvoll umsetzbar? Ein .docx File ist ja im Grunde auch nur ein ZIP Archiv, somit müsste sich das mit dem Filesystem der Netbeans Platform umsetzen lassen?

Hat vielleicht jemand ähnliche Erfahrungen gemacht und kann mir hierbei ein paar Tipps geben? Oder denke ich gerade in die falsche Richtung?

Vielen Dank :)
 
Bei der Masse von Daten Sätzen würde ich eher zur eine DB Tendieren, wobei ein Datei Basierter Ansatz aufgrund der Anforderung sinnvoller ist.

Von der Dynamic her würde ich DB Empfehlen diese Kann leichter Dynamisch ein und auslesen werden und da auch nur die Daten die ich wirklich brauche, während das Streamen von Daten etwas zeit benötigt und unter Umständen overhead mit geladen wird. Netbeans sowie Eclipse (Mein Favorit) machen die Verwaltung via Datein.

Also eine schwere Entscheidung :) Schau dir am besten an wie die Datensätze strukturiert werden sollen (oder wie du es möchtest) nicht jeder Ansatz macht mit DB Sinn und passt zu den Anforderungen ;) und dann entscheide dich. Alternativ könntest du die Daten in einer DB vorhalten und zusätzlich einen Datei in-/export anbieten.

Zu dem Word Format -wenn du dieses mit Java umsetzten willst Apache-POI
 
Danke für die Antwort. Wie gesagt, mein erster Gedanke war auch eine Datenbank.

Aber bei näherer Betrachtung, ist die "Einfachheit" wesentlich wichtiger als Performance, solange die Performance noch in einem sinnvollen Bereich bleibt. Bei der Zielgruppe kann ich nicht davon ausgehen dass sie mit den Begriffen "exportieren" oder "importieren" etwas anfangen können, geschweige denn sich Gedanken darüber machen wie sie ihre Daten handhaben sollten.
Deshalb ist eine Dateibasierte Speicherung deshalb wohl (leider) die einzige Lösung. Dabei sollte es genau eine Datei pro Projekt geben.

Ich glaube dass Apache-POI nicht das ist was ich suche, ich will ja nicht mit den MS Office Formaten arbeiten, ich will nur die Idee der Archive als Datei "stehlen"... ^^

Wieso favorisierst du Eclipse?
 
Ich habe mich mal mit Netbeans versucht. War nicht mein Geschmack. Eclipse hingegen kann man so "versauen" :D
Zudem gibt es einige IT Firmen die Auf Eclipse 100% wert legen. Und bis heute waren alle die mir rahtschläge gegeben haben Eclipseuser ;)

Es gibt Zahlreiche Plugins die immer weiter ausgearbeitet werden und eine Vielseitigkeit garantieren.

Zum Beispiel das man mit eclipse Java Programiert ist auch nur ein feature eines Plugins welches meist beim Download mit geliefert wird. Man kann Eclipse mit zum beispiel C Compler erweitern oder andere dinge. Ein Freund hat zum beispiel eine eingabe maske für eclipse geschrieben mit der man nicht nur ein Projekt erzeugt sondern alle Klassen und packages welche von seinen Chef vorgeschrieben werden. Ich habe eine Eclipseversion die "R" besser steuert als alle original "R" Compiler.


Wenn du es Datei Mäßig machst Bau dir mal von Hand solch eine Datei an der du dich lang arbeitest, alle datein werden mit einem Stream reader eingelesen wie du die genau anwendest liegt aber je nach Datei Format die Nachbearbeitung immer anders.

Bei XML zum Beispiel gibt es fertige API's welche mit zahlreichen guten Tutorials gut erklärt sind. da muss man sich kaum Gedanken über das einlesen machen.
Beim simplen stream (FileInput) ist das einlesen schon etwas aufwendiger auch wenn alle API's dies auf die selbe weise tuen nehmen sie etwas Arbeit ab ;)
Aber wie gesagt alles reine Geschmacks und Anforderung sache.
 
Zuletzt bearbeitet:
Hi,

vielleicht ist es hier sinnvoll beide Ansätze zu vermischen, in dem Du intern mit der DB arbeitest, aber beim Speichern/Exportieren den Datenstand in eine Datei auslagerst.

Intern kannst Du dann bequem mit der Datenbank arbeiten, kannst aber aber den Datenstand einfach austauschen.

Für die Datei könntest Du XML nehmen, das sich ja auch gut komprimieren lässt.

Oder Du nimmst gleich SQLite http://de.wikipedia.org/wiki/SQLite

Gruß twagi
 
Zuletzt bearbeitet:
Danke für die Antworten.
Ich werde versuchen beide Ansätze zu vermischen, wobei ich jetzt (...höchstwahrscheinlich) doch hauptsächlich auf eine Datenbank setzen werde. HQSLDB werd ich mir mal genauer anschauen, danke für den Tip :)
 
Zurück