# Grundlagenfrage: Best-Practice mit Nutzerdaten



## raphw (24. Okt 2010)

Hallo zusammen,
ich versuche mir seit einer Weile Java selber beizubringen und nutze dafür das von Sun/Oracle bereitgestellte Tutorial. Nun habe ich das Kapitel über IO-Streams abgeschlossen und habe noch immer keine Antwort auf den empfohlenen Umgang mit Daten, die der Nutzer eingibt, gefunden.

Als Training für das Gelernte programmiere ich einen kleinen Vokabeltrainer und rein intuitiv würde ich meine Vokabeln gerne in einer Datenbank ablegen. Nun stellt ja nicht jeder Desktop-PC automatisch eine SQL-Datenbank bereit und so bin ich auf HSQLDB und Apache Derby gestoßen. 

Wäre das denn der best practice für einen solchen Vokabeltrainer? Ab welchen Datenmengen empfiehlt es sich denn auf eine solche Lösung auszuweichen? Ich hatte mir, bevor ich diese Datenbanken gefunden habe, zu Probezwecken eine Klasse geschrieben, die das ganze relativ automatisiert in einer Datei ablegt. Aber eigentlich ist das doch blanker Unsinn, selbst für kleine Datenmengen, da man immer die ganze Datei auslesen müsste oder zumindest eine Indexdatei erstellen sollte, welche die Position anzeigt, alles Aufgaben, die eigentlich das DBMS übernimmt.

Bevor ich mich nun aber in eine untaugliche Lösung verrenne, wollte ich kurz hier nachfragen, was denn eine empfehlbare Lösung wäre.

Vielen Dank und viele Grüße,
Rafael


----------



## SlaterB (24. Okt 2010)

ob eine einfache Datei reicht oder es eine komplizierte DB sein muss hängt von verschiedenen Anforderungen ab,
- wieviele Daten, welcher Zugriff? 50 kb einzulesen kann nie einen Aufwand darstellen, selbst wenn man nur 1 Byte braucht,
1 MB von 50 MB ist schon was anderes,
müssen die gesamten 50 MB nach und nach durchlaufen werden, wird gesucht, sortiert?
- müssen Änderungen sofort gespeichert werden oder reicht es am Programmende, vorherigen Absturz und Verlust einkalkuliert,
wieviele Datenänderungen?, kommt alles in die eine Datei oder gibt es doch mehrere wie bei Texteditoren die einzelnen Dokumente,
- wie viele User greifen gleichzeitig drauf zu, bei einem einfachen Destop-Programm doch wohl nur einer was alles deutlich vereinfacht gegenüber einen komplizierten Webserver mit verschiedenen Gästen gleichzeitig, Transaktionen usw.

wenn ich mir einen Vokabeltrainer als eine Liste von 1000 Wortpaaren vorstelle, die alle paar Wochen erweitert wird, 
evtl. mehrere Bereiche/ mehrere Sprachen unterstützt
sonst im üblichen Programmverlauf einer dieser Bereiche intensiv zur Abfrage zufälliger Kombinationen genutzt wird,
dann denke ich dass eine einfache Datei reicht,
10 MB Datei einzulesen dauert vielleicht beim Start 0.3 sec und belegt bald 1% des Arbeitsspeichers des Rechners, 
das sind keine zwingenden Gründe, ein kompliziertes Framework einzubinden, andererseits kann das schon allein zum Lernen sinnvoll sein

für jede Vokabel neu in der Datei zu suchen wäre allerdings unnötig wie ich bei nochmaligen Lesen deines Postings vermute,
das kann Java intern besser mit Maps, Listen usw.


----------



## Marcinek (24. Okt 2010)

Für ein Vokabeltrainer eignet sich schon eine DBMS, weil diese Möglichkeiten für die Bearbeitung von Mengen bereitstellt.

Das vereinfacht Suche und auch indexierung.

---

Wenn es aber weniger als 1000 5000 Vokabeln sind, wäre es immernoch kaum unterscheidbar, ob da eine Relationale DB hinter steckt oder nicht.


----------

