Ab wann Datenbank verwenden

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo Zusammen,

welche Kriterien verwendet hier, um zu entscheiden, ob ihr die Daten Eueres Programms in einer Datenbank oder in Dateien speichert?

KLar die Anzahl der Datensätze, aber ab wann würde sich eine Datenbank lohnen und wann reichen Dateien?

Danke für Euere Tipps...
 

Wildcard

Top Contributor
Unter anderem sind folgende Kriterien zu beachten:
Sind die Daten auch für andere Programme interessant
Sollen die Daten nach verschiedenen Kriterien durchsuchbar sein
Sollen die Daten zentral oder dezentral abgelegt werden.
Versionskontrolle erforderlich
Muss das System skalierbar sein
 
G

Gast

Gast
Also 50.000 Datensätze habe ich natürlich nicht, im Maximalfall 1000 pro Datei.

Mich würde interessieren, wie Du die Datensätze speicherst. Ein Wert pro Zeile oder mehre Werte pro Zeile, durch irgendetwas getrent? Ich habe mal irgendwo gelesen, das es problematisch sein könnte mit eine Streamtokinizer die Datensätze irgendwie zu trennen, aber wahrscheinlich nur dann wenn man vergessen hat, den User daran zu hindern das Trennezeichen selber einzugeben bzw. \n oder so...

Gruß
 

dhachim

Bekanntes Mitglied
naja es kommt ja auch drauf an ob du deine Dateien Persistent speichern willst. --> ACID Prinzip (Transaktionen)

Ich geniese es wenn mir meine Datenbank auch kontrolliert, was ich da so ablege, und dass ich ne hohe Datensicherheit bekomme, also ich immer sicher sein kann das das was ich schreibe auch wirklich da steht wo ich es hinhaben will.

Recovery ist ja auch noch ein Thema, das man in Java Programmen nicht abfangen kann. Wenn einmal die JVM abschmiert sind auch meine geplanten Eingaben futsch.

UNd dann natürlich die Performance. Resultsets bringen ja immer mächtig speed in die Sache.


Ein weiteres Kriterium ist die komplexität der Anwendung, ich versuche immer möglichst viel auszulagern.
 

robertpic71

Bekanntes Mitglied
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.
 

Balian

Bekanntes Mitglied
Danke erstmal für Deine Informationen...

Ich denke an eine embedded-Datenbank, bin mir nur nicht sicher welche die Richtige ist. Wichtig ist mir persönlich die Lizenzfrage. Man weis ja nir ob ein programm mal kommerziell wird und ich würde natürlich dem User nur eine .jar_datei ausliefern wollen.(nicht stisch verlinken usw)

Gruß
 

robertpic71

Bekanntes Mitglied
dhachim hat gesagt.:
DB2 *hust*

Unschlagbarer Vorteil von MySQl ... Plugable Storege Engines

Hauptmotivation für die pluggable Storage Engines war sicher die Unabhängigkeit von InnoDB, nachdem diese ja von Oracle aufgekauft wurde.... Aber vielleicht wird ja aus MySQL mal wirklich eine Hochleistungs-Datenbank *undwegduck* - denn auf diese Weise können sich auch andere Firmen auf den MySQL-Zug aufspringen. Aber im Moment würde ich ich das nicht unbedingt als "unschlagbaren Vorteil" sehen.

als Nachteile von MySQL sehe ich:
- SQL-Syntax nicht ANSI-Norm (nervt wenn man viel mit verschiedenen DB's arbeitet)
- nicht wirklich frei (wie z.B. PostgreSQL)
- bei großen Datenmengen deutlich langsamer als Oracle und MSSQL (DB2 mit Vorbehalt: wir verwenden DB2 nur auf Hostsystemen)
 
G

Guest

Gast
robertpic71 hat gesagt.:
dhachim hat gesagt.:
DB2 *hust*

Unschlagbarer Vorteil von MySQl ... Plugable Storege Engines

Hauptmotivation für die pluggable Storage Engines war sicher die Unabhängigkeit von InnoDB, nachdem diese ja von Oracle aufgekauft wurde.... Aber vielleicht wird ja aus MySQL mal wirklich eine Hochleistungs-Datenbank *undwegduck* - denn auf diese Weise können sich auch andere Firmen auf den MySQL-Zug aufspringen. Aber im Moment würde ich ich das nicht unbedingt als "unschlagbaren Vorteil" sehen.

als Nachteile von MySQL sehe ich:
- SQL-Syntax nicht ANSI-Norm (nervt wenn man viel mit verschiedenen DB's arbeitet)
- nicht wirklich frei (wie z.B. PostgreSQL)
- bei großen Datenmengen deutlich langsamer als Oracle und MSSQL (DB2 mit Vorbehalt: wir verwenden DB2 nur auf Hostsystemen)
Die Typen von MySQL haben SAPDB an sich gekrallt. Wenn künftige Versionen von MySQL darauf
basieren werden (z.Z. nur MaxDB), dann hast du deine Hochleisungs-Datenbank ... für Arme. ;)
 
G

Gast

Gast
Sagt mal kann man PostgreSQL auch als embedded-DB verwenden?

Danke
 

robertpic71

Bekanntes Mitglied
Gast hat gesagt.:
Sagt mal kann man PostgreSQL auch als embedded-DB verwenden?

Danke

Dazu müsste es schon eine Java-DB sein.

Das höchste der Gefühle wäre ein Installer, welcher auch die Installation der Postgre-Datenbank mitmacht. Das wird meiner Erfahrung nach aber eine ziemliche Bastelei und schaut für jede Plattform (Windows, Linux) komplett anders aus.

Der Betrieb wäre dann der normale Client/Server. Wenn man Pech hat, spuckt einem die lokale Firewall (beim User) in die Suppe.

Mit HSQL und Derby stehen aber 2 ausgereifte Java-DB's zur Verfügung. Die Java-DB H2 gibt es noch nicht so lange, aber Probleme hatte ich damit auch keine. H2 ist unter der Mozilla Public Lizenz und frei - auch im Einsatz von (weiterverkauften) kommerziellen Lösungen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Exceptions - wann / wie verwenden? Allgemeine Java-Themen 4
LimDul Spezifkation, wann es deprecation Warnings gibt Allgemeine Java-Themen 1
N Streams wann .filtern? Allgemeine Java-Themen 2
perlenfischer1984 Wann ist ein Parameter Check sinnvoll Allgemeine Java-Themen 7
T GUICE- Dependency Injection- WANN nutze ich Providers? Allgemeine Java-Themen 2
B Erkennen, wann Prozess beendet ist, dann Thread beenden. Allgemeine Java-Themen 6
D Wann sollte ich statische Methoden und Variablen benutzen? Allgemeine Java-Themen 44
Rudolf Wann System.exit und wann dispose? Allgemeine Java-Themen 9
L Checkstyle: Wann ist eine Methode für Vererbung entworfen? Allgemeine Java-Themen 13
X Wann ist Runtime.getRuntime().exec mit Copy fertig? Allgemeine Java-Themen 10
M Wann ist MVC sinnvoll? Allgemeine Java-Themen 14
M Wann Membermethoden, wann statische Utility-Methoden? Allgemeine Java-Themen 24
Ark Wann 64 Bit-Befehle im Einsatz? Allgemeine Java-Themen 6
G Wann normale Exception und wann Runtimeexception Allgemeine Java-Themen 12
Y Wann folgende Technologien benutzen Allgemeine Java-Themen 5
G Parameter oder Attribut (wann nehme ich was?) Allgemeine Java-Themen 12
M Wann verwendet man PropertyChangedEvents, wann eigene? Allgemeine Java-Themen 3
F Wann und wie Exceptions einsetzen? Allgemeine Java-Themen 13
G Wann statische Methoden, statische Attributen? Allgemeine Java-Themen 7
B Wann Interface und wann Adapter Allgemeine Java-Themen 4
B ObjectInputStream - Wann ist Ende erreicht? Allgemeine Java-Themen 10
D Wann ist das ergebnis einer Rechnung eine Double? Allgemeine Java-Themen 7
M Maximal verfügbarer Hauptspeicher? Ab wann wird ausgelagert? Allgemeine Java-Themen 13
P Wann kommt denn nun 1.5 überhaupt? Allgemeine Java-Themen 6
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
S Kochbuch bzw. Rezepte-Datenbank app mit Swing..? Allgemeine Java-Themen 5
N relativier Pfad für sqlite-Datenbank in Gradle/IntelliJ Allgemeine Java-Themen 2
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
B API Token in Datenbank ablegen? Allgemeine Java-Themen 9
S Einzigartigen String in Datenbank finden und löschen Allgemeine Java-Themen 23
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
Meeresgott Kapselung Tabellen der Datenbank erzeugen. Allgemeine Java-Themen 7
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
looparda Unit Test - Abgänigkeit zur Datenbank isolieren Allgemeine Java-Themen 3
T Datentypen MNIST Datenbank auslesen (.gz) Allgemeine Java-Themen 0
O 2 Combobox in Abhängigkeit von der 1 Combobox (Datenbank) Allgemeine Java-Themen 1
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
F OOP Datenbank-Klasse überall verfübar Allgemeine Java-Themen 2
R Test Umgebung für Datenbank erstellen, was braucht es? Allgemeine Java-Themen 14
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
T Zugriff auf Datenbank Allgemeine Java-Themen 1
G Datenbank von nöten? Allgemeine Java-Themen 7
3 Backup von h2-Datenbank-Datei erstellen Allgemeine Java-Themen 6
S Java DateTime für Datenbank Allgemeine Java-Themen 4
F Alternative sun.jdbc.odbc.JdbcOdbcDriver (Access Datenbank) Allgemeine Java-Themen 2
vandread Daten verschlüsseln mit Java oder Datenbank Allgemeine Java-Themen 15
P MYSQL Datenbank Dump einspielen Allgemeine Java-Themen 1
M SQL Datenbank in JAVA Projekt Allgemeine Java-Themen 3
P iTunes Datenbank manipulieren Allgemeine Java-Themen 2
A Ausführbare Java-Datei aus Projekt und Datenbank Allgemeine Java-Themen 3
T Datenbank oder Filesystem? (E-Learning) Allgemeine Java-Themen 2
N Datei aus Datenbank öffnen mit Standardanwendung Allgemeine Java-Themen 2
J Datenbank und OO-Aufsatz Allgemeine Java-Themen 9
M BufferedReader: Vom Logfile zur Datenbank Allgemeine Java-Themen 6
P Klassen Template-Klasse für Datenbank-Abfragen erstellen Allgemeine Java-Themen 2
E JAVA Alternativen zur Datenbank? Allgemeine Java-Themen 7
Dit_ GeoKoordinaten Datenbank (nicht nur Städte) Allgemeine Java-Themen 6
J Progress Bar während Datenbank Erstellung Allgemeine Java-Themen 2
C Datenbank - Textfiles - Anderes Allgemeine Java-Themen 34
T Datenbank lässt sich un Entwicklungsumgebung öffnen, aus .jar aber nicht Allgemeine Java-Themen 9
G JNDI/LDAP/Datenbank Allgemeine Java-Themen 2
Meldanor Speichern der Datenbank - Lohnen sich mehrere Threads? Allgemeine Java-Themen 2
hdi [Free Download] Film-Datenbank Allgemeine Java-Themen 30
G Excel-Daten in Datenbank speichern - Problem mit leeren Feldern Allgemeine Java-Themen 7
K von List getSelected auf ResultSet Datenbank löschen Allgemeine Java-Themen 2
C Java Polling, Server Prozedur oder doch Datenbank? Allgemeine Java-Themen 4
H .dbf (IV) Datenbank einlesen Allgemeine Java-Themen 9
D Recipes / Codeschnipsel Datenbank für Java? Allgemeine Java-Themen 3
T MySQl Datenbank als Array ausgeben Allgemeine Java-Themen 11
M Rechenweg in Datenbank speichern und nutzen Allgemeine Java-Themen 6
O viele Datensätze aus Datenbank - Java Heap Space - Excepion Allgemeine Java-Themen 25
E Datenbank/iBatis Fehlermeldung Allgemeine Java-Themen 4
G Datenbank zur laufzeit wechseln Allgemeine Java-Themen 11
N ClassLoader - Laden von Bytecode aus einer Datenbank Allgemeine Java-Themen 6
S Speicherung von Daten: Datenbank(sql) oder xml? Allgemeine Java-Themen 9
F Vector in eine Datenbank speichern? Allgemeine Java-Themen 3
A Problem beim Starten der H2-Datenbank Allgemeine Java-Themen 4
S Datenbank Abfragen mit großen Datenmengen Allgemeine Java-Themen 22
G Datenbank-Anwendung schnell erstellen. Allgemeine Java-Themen 7
P Datenbank Tabelle spiegeln Allgemeine Java-Themen 22
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
P Zugriff auf die DatenBank Allgemeine Java-Themen 44
H Daten aus MySQL datenbank auslesen und in ArrayList stecken Allgemeine Java-Themen 8
P Timestamp in eine Firebird-Datenbank einfügen Allgemeine Java-Themen 6
P Java Acces Datenbank Problem ! (Brauche eine Abfrage) Allgemeine Java-Themen 5
B Datenbank anlegen Allgemeine Java-Themen 10
N Datenbank vs. Filesystem Allgemeine Java-Themen 5
F datenbank oder csv etc Allgemeine Java-Themen 6
V Brauche Beratung in Sachen Java+Datenbank+Web Allgemeine Java-Themen 8
H sichere Datenbank-Verbindung Allgemeine Java-Themen 4
H Datenbank an ein Java Client Server Programm anschliessen Allgemeine Java-Themen 3
F lizenzfreie Datenbank für JAVA-Anwendung Allgemeine Java-Themen 3
S Zeilenausgabe Datenbank Allgemeine Java-Themen 2
S Datenbank Allgemeine Java-Themen 9
G Sichere Passwortübergabe bei Datenbank Allgemeine Java-Themen 14
L Datenbank Abfrage (Felder&Tabelle nicht fix) in ArrayLis Allgemeine Java-Themen 4
S Java Datenbank auf Festplatte installieren Allgemeine Java-Themen 2
G JComboBox mit Werten aus einer Access Datenbank füllen Allgemeine Java-Themen 18

Ähnliche Java Themen

Neue Themen


Oben