MySQL Lesen und schreiben von großen Datenmengen

Java-san

Neues Mitglied
Hallo,

ich fall gleich mal mit der Tür ins Haus.

Ich arbeite zur Zeit an einem Programm, welches viele Datenbankoperationen ausführen muss. Zum Beispiel muss ich sichergehen, dass Werte in einer bestimmten Spalte einzigartig sind. Ich löse dies momentan so, dass ich mir die Daten der Spalte durch ein Select-Statement aus der Datenbank ziehe und im Speicher aufbewahre. Das funktioniert ganz gut und es ist relativ schnell nur habe ich das Problem, dass mit steigener Datensätze auch der Bedarf an Speicher steigt. Das ist mein erstes Problem.

Mein zweites Problem ist das ich gleichzeit auch viele neue Datensätze schreiben muss und somit die Tabelle und die Daten im Speicher aktualisieren muss (es ist einfach keine schöne Lösung meiner Meinung nach).

Es handelt sich hier um ca. 600 000 Datensätze die in einer XML-Datei vorliegen. Wenn ich also von Null anfange das heißt die Tabelle komplett lösche und mein Programm starte muss ich 1. 600 000 mal Datensätze in die Datenbank schreiben.
2. sicherstellen das gewisse Werte (z.b. Name) in diesen 600 000 Datensätzen einzigartig sind. Ich muss also 600 000 mal überprüfen ob der Name bereits verwendet wird. Und dann wie gesagt
3. den Bestand der tatsächlich in der Tabelle steht mit meinen Daten im Speicher synchronisieren.

Ich hoffe ich habe den Sachverhalt einigermaßen verständlich erläutert.

Meine Frage an euch ist einfach. Gibt es in Java effiziente Möglichkeiten solche Aufgaben schnell und möglichst Ressourcen-sparend zu lösen?

Bin leider ein relativer Java-Neuling. Sowas wie Bulkinserts allerdings kenne ich bereits kann ich allerdings nur (zumindest mein jetziger Wissensstand) bedingt gebrauchen.

Ich freue mich auf eure Antworten
 
N

nillehammer

Gast
Die Datenbank ist der einzige Punkt Deiner Anwendung, wo alle Daten zusammenlaufen. Dort musst du für die Durchsetzung der Constraints sorgen. Ein Zwischenpuffern im Speicher ist auf Dauer sicher nicht performant und außerdem sehr fehleranfällig (Hast du bspw. Mehrfachzugriff bedacht?). Deswegen zu:
2. sicherstellen das gewisse Werte (z.b. Name) in diesen 600 000 Datensätzen einzigartig sind.
Benutze einen UNIQUE-Constraind beim erstellen der Tabelle. Wenn du dann versuchst, einen Namen doppelt zu vergeben, verhindert das die Datenbank.
3. den Bestand der tatsächlich in der Tabelle steht mit meinen Daten im Speicher synchronisieren.
Verzichte auf dieses Konstrukt mit Deinem Speicher. Sammele Daten, bau Deine Statements, setzte sie auf die Datenbank ab. Nicht mehr nicht weniger.
1. 600 000 mal Datensätze in die Datenbank schreiben.
Das hört sich nicht übermäßig viel an. Kann man mit plain JDBC und einfachen Inserts machen. Evtl. hast Du auch Lust, ein (JPA-)Persistenz-Framework wie Hibernate oder EclipseLink zu verwenden
 

parabool

Bekanntes Mitglied
Ein UNIQUE-Constraint wäre eine Lösung. Aber bei steigender Tabellengröße steigt
auch die Dauer eines Insert. (UNIQUE-Constraint muss über mehr Daten geprüft werden.

Hatte ähnliche Problemstellung, waren aber 5 Attribute die als doppelt erkannt sollten.
Vielleicht funktioniert es bei einen Attribut noch rel. schnell.

Eine mögliche Lösung: Suche nach doppelten Namen nach dem Import.
d.h.:
- Abfrage von Teilmengen möglicher Doppelfälle (Index oder Teilindex auf das betreffende Feld)
z.B. Alle Namen die mit "Schu" anfangen. Ergibt bei insges. 600000 DS vielleicht 1000 DS.

EDIT: Bei 2 Anfangsbuchstaben = 26 * 26 Abfragen auf Teilmengen (kann ev. noch eingeschränkt werden)

- Diese kannst du dann programmatisch nach Doppelfällen durchsuchen.
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Ein UNIQUE-Constraint wäre eine Lösung. Aber bei steigender Tabellengröße steigt
auch die Dauer eines Insert. (UNIQUE-Constraint muss über mehr Daten geprüft werden.
Ja und? Ich kann mir nicht vorstellen, dass man die Funktionalität in Java auch nur annähernd so performant nachgebaut bekommt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O mit Multi-Thread Daten aus Datenbank lesen und schreiben Datenbankprogrammierung 22
P MySQL jpmdbc: Kann lesen aber nicht schreiben? Datenbankprogrammierung 3
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
D HSQLDB Aus einzelner Zelle lesen? Datenbankprogrammierung 3
D Komplette Zeile lesen und einem Konstruktor übergeben. Datenbankprogrammierung 3
D Grants lesen Datenbankprogrammierung 3
0 Alle Tabellen aus DB lesen Datenbankprogrammierung 2
F ORA 17410 Keine weiteren Daten aus Socket zu lesen Datenbankprogrammierung 2
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
S File lesen Datenbankprogrammierung 10
W MySQL Daten aus bestimmter Spalte lesen Datenbankprogrammierung 2
M FindBugs und PreparedStatement aus einer Datei lesen Datenbankprogrammierung 11
P Daten aus MySql Datenbank lesen??? Datenbankprogrammierung 6
H Wie kann ich eine Datenbank Connection aus XML-Datei lesen! Datenbankprogrammierung 2
S Matrix vom Typ Double aus .txt lesen und in ein Array speich Datenbankprogrammierung 3
G beim lesen der db alte daten bekommen? Datenbankprogrammierung 5
G Int aus MySQL-Tabelle lesen? Datenbankprogrammierung 5
thE_29 Vor dem ersten Posten bitte lesen! Datenbankprogrammierung 0
jehof Char/Varchar aus MySQL lesen und zurückschreiben Datenbankprogrammierung 3
L ImageIcon in/aus Datenbank speichern/lesen Datenbankprogrammierung 4
G Rundungsfehler beim Lesen von Fliesskommazahlen... Datenbankprogrammierung 2
U MySQL Aus Servlet in Datenbank schreiben Datenbankprogrammierung 4
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
M MySQL wie Listen oder arras in Tabelle(n) schreiben Datenbankprogrammierung 10
M In MySql Datenbank schreiben Datenbankprogrammierung 6
M Derby/JavaDB einen Null-Wert in die Datenbank schreiben Datenbankprogrammierung 7
T 3 GB Große CSV Datei einlesen und in SQL-DB schreiben Datenbankprogrammierung 12
E Daten einer SQL-Datenbank aus Combobox in labels schreiben Datenbankprogrammierung 6
H Aus Arraylist in Textfeld schreiben Datenbankprogrammierung 4
S SqlObject - eine objektorientierte Art SQL-Statements zu schreiben. Datenbankprogrammierung 4
M Ein kleine Anwendung mit Java Schreiben Datenbankprogrammierung 2
E Datenbank Abfragen in eine GUI schreiben Datenbankprogrammierung 8
N [XLS]Strings in Excel-Tabelle schreiben (poi) Datenbankprogrammierung 2
N Einzelne Spalte in MySQL-DB-Tabelle schreiben Datenbankprogrammierung 7
H Daten in/aus Datenbank schreiben Datenbankprogrammierung 2
S MySQL Koreanische Schriftzeichen in MySQL Datenbank schreiben Datenbankprogrammierung 11
T Problem beim schreiben von daten Datenbankprogrammierung 4
M Bild schreiben und einlesen Datenbankprogrammierung 2
achillesat ausgelesene Datei in Datenbank schreiben Datenbankprogrammierung 9
B String aus txtDatei auslesen und in Datenbank schreiben. Datenbankprogrammierung 8
D Csv auslesen und in mysql db schreiben Datenbankprogrammierung 9
J Ausgewählte Datensätze in DB-Tabelle schreiben Datenbankprogrammierung 13
S Daten aus jTextfiled in DB schreiben - SQL Befehl Datenbankprogrammierung 2
T ResultSet-Inhalt in Arrays schreiben Datenbankprogrammierung 3
G Mit Prepared Statement in MDB schreiben Datenbankprogrammierung 7
M Java Objekt in Datenbank schreiben :( Datenbankprogrammierung 8
H Daten in DB schreiben Datenbankprogrammierung 4
A Kundendaten anlegen oder gleich in DB schreiben? Datenbankprogrammierung 8
M H2 DAtenbank in .sql datei schreiben/abfragen ? Datenbankprogrammierung 3
angel_sanctuary CSV Dateien schreiben mit Java Datenbankprogrammierung 2
A Probleme beim Schreiben in eine CSV-Datei aus einer H2-DB Datenbankprogrammierung 2
M Daten aus Tabelle 1 in Tabelle 2 schreiben Datenbankprogrammierung 11
G Problem beim Schreiben eines Dateipfads in MySQL-DB Datenbankprogrammierung 9
G DB auslesen und in ein JTextArea schreiben Datenbankprogrammierung 3
P in DB schreiben Datenbankprogrammierung 3
P Inhalt einer Variable in Datenbank schreiben Datenbankprogrammierung 13
G Sybase IMAGE-Daten zu MySQL als BLOB schreiben. Datenbankprogrammierung 2
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
T String in DB(Oracle) schreiben mit Leerzeichen Datenbankprogrammierung 4
S in datenbank schreiben Datenbankprogrammierung 8
G csv in datenbank schreiben Datenbankprogrammierung 6
G PDF aus Oracle ins Filesystem schreiben Datenbankprogrammierung 2
G Daten korrekt in DB schreiben Datenbankprogrammierung 9
G Vector in hsqldb schreiben Datenbankprogrammierung 5
V Werte über Konsole in Datenbank schreiben Datenbankprogrammierung 2
G Kann nicht in Access DB schreiben Datenbankprogrammierung 3
F suche MySQl-Befehl um Datensatz an Tabellenende zu schreiben Datenbankprogrammierung 2
G In Access-Datenbank schreiben Datenbankprogrammierung 10
B ResultSet in Tabelle schreiben ... Datenbankprogrammierung 4
E MySQL Befüllen einer MySQL DB mit großen Daten Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben