byto hat gesagt.:
Du meinst 50.000 Objekte !?
Ich denke, er meint 50.000
Schulklassen. :wink:
Anwendungen ohne Datenbank in die Micky Maus/HelloWorld-Schublade abzulegen ist sicher nicht ganz richtig. Es gibt durchaus größere Anwendungen welche große Datenmengen ohne Datenbank verwalten (z.B. Mailserver). Aber die Mailordner lassen sich auch sehr gut mit einer Verzeichnisstruktur nachbilden. Solange ich also keine übergreifenden Abfragen (über mehrere Ordner) benötige, fallen die Nachteile auch nicht groß auf.
Aber im Normalfall hat man nicht so viele "unstruktierte Daten" wie ein Mail-Server.
Eine Datenbank "rechnet" sich (mMn) vom Aufwand schon bei kleinen Aufgaben. Viele Datenabfragen wie: "Volltextsuche, Sortierung, Gruppierung, Summenfunktionen, kleinster- und größter Wert" lassen sich meiner einer SQL-Zeile bewerkstelligen. Auch Anforderungen wie "Gibt es diese Person/den Datensatz" oder eine Änderung für eine ganze Datengruppe produzieren wesentlich mehr Javacode als SQL-Code.
Aber die "unausweichlichen" Argumente für eine Datenbank sind:
Mehrbenutzerbetrieb
Wenn mehrere Programme/User das selben File ändern wollen, wird es kompliziert. Bei Files kann ich nur das gesamte File sperren, in der Datenbank kann ich einzelne Sätze sperren.
Transaktionskontrolle
Zusammengehörige Updates wie z.B. eine Buchung in der Finanzbuchhaltung (Update Sollkonto + Update Habenkonto) sind eine Transaktion und werden von der DB immer ganz oder bei Fehlern gar nicht durchgeführt.
Sicherheit
Je gibt es noch einige Möglichkeiten die DB ausfallssicher zu machen z.B. Spiegelung.
Performance
Bei großen (strukurierten) Daten ist eine Datenbank mit ihren vorangelegten Suchindexen um Häuser schneller. Files kann man außerdem nur für eine Suchart struktuieren - bei Datenbanken kann ich (fast) bebliebig viele Suchwege/Indexe anlegen.
Zum Thema Schülerverwaltung:
Bei einer Schülerverwaltung spricht normalerweise NICHTS gegen eine Datenbank. Nur weil ein Computer stark genug ist, 50.000 Schulklassen zu verwalten, ist die Lösung noch nicht automatisch "skalierbar". Eine reine Filelösung hat sicher einige Nachteile gegebenüber einer Datenbank (wie gesagt Mehrbenutzerbetrieb, Performance, Ausfallsschutz usw.). Diese Nachteile selber zu lösen, hätte was vom "Rad neu erfinden".
@Gast:
Wenn man User keine extra Installation der DB zumuten will, gibt
es embedded Java-Datenbanken (Derby, HSQL und mein neuer Liebling H2), welche einfach mit dem Programm gebundelt werden können.
Beruflich verwende ich hauptsächlich DB2, daneben noch Oracle, MSSQL, PostgreSQL, H2 und (leider) auch Access.
Wenn es eine eigenständig DB sein soll/darf empfehle ich PostgreSQL + pgAdmin. Ansonsten eine von den oben angeführten einbauten Javadatenbanken.
MySQL find ich nicht so toll, da der SQL-Syntax nich ANSI-SQL-Norm ist.