speichern von Daten in seeeeeehr großen Tabellen (nicht DB)

Status
Nicht offen für weitere Antworten.

H2SO3-

Bekanntes Mitglied
Hallo,

ich tüftle nun schon eine weile an einem problem von mir. Hoffe hier hat jemand eine idee.

Ich muss sehr viele Daten irgendwie im Speicher speichern (halten)
Es handelt es sich hierbei um den inport von csv Daten. Ich habe also Spalten und Reihen. Allerdings müssen es nicht immer die selben anzahl von Spalten sein.

Bisher habe ich die Daten in einer ArrayList<ArrayList<String>> gespeichert. Klappt auch ganz gut bis zu einer gewissen größe der csv dateien. Wenn diese sehr groß werden zb. 100 spalten und 500.000 Zeilen bekomme ich irgendwann eine out of memory exeption.

Das Problem ist hierbei wohl die menge an Strings die gespeichert werden. Wenn ich nähmlich das Programm durchlaufen lasse ohne das ich den Inhalt in die Strings abspeichere (das array wird jedoch angelegt) geht alles gut durch.
Habe auch schon Probiert die Strings in int[] umzuwandeln und so zu speichern, oder eine LinkedList statt einer ArrayList zu nehmen.

Die Linked List bringt gar nichts und das int[] bringt zwar etwas aber nicht genügend.

Hatt jemand eine Idee wie ich das Problem lösen könnte.
(klar ich kann die VM hochsetzen, nur ist eine blöde methode da dies per hand gemacht werden muss)

hier mal noch ein kurzes codebeispiel falls es jemand durchspielen möchte.

int row = 0;
int col = 0;
try
{
ArrayList<ArrayList<String>> csvData = new ArrayList<ArrayList<String>>();
for(row = 0; row < 500000; row++)
{
csvData.add(new ArrayList<String>());
for(col = 0; col < 100; col++)
{
String value = "dies ist ein neuer String denich da jetzt reinpacke mit der nummer" + row + col;
csvData.get(row).add(value);
}
}
}
catch(final java.lang.OutOfMemoryError e)
{
throw e;
}

boolean geschafft = false;
geschafft = true;
 
Zuletzt bearbeitet:

Wildcard

Top Contributor
Wenn du den Speicher brauchst, dann brauchst du ihn eben und dann musst du ihn der VM auch zur Verfügung stellen.
 

H2SO3-

Bekanntes Mitglied
@ Wildcard
ist klar soweit, nur hätte ich halt gerne eine möglichkeit, mit der ich nicht so viel Speicher brauche.
 

Wildcard

Top Contributor
Ohne Kenntniss der Daten kann man dazu wenig sagen. Sicher, Komprimierung ist zB denkbar, allerdings wird die Sache dadurch deutlich langsamer.
 

H2SO3-

Bekanntes Mitglied
die daten sind einfach erklärt. Eingelesen wird eine csv Datei, Die Daten liegen also in erster Instanz alle als String dar. Geparsed werden sie erst später in einem extra Programm. Deshalb werden alle Daten auch in einem String array gespeichert.
eventuell währe noch das Abspeichern in char[] oder den entsprechenden int[] möglich. Das Speichern ansich liegt unter einem interface, da kann ich also rumbauen wie ich will.
 
G

Gelöschtes Mitglied 5909

Gast
parse jede zeile, mach ein objekt draus und schreib das objekt auf die platte. Wenn alle zeilen geparst sind kannst du die objekte gemütlich von der platte lesen und magic damit machen ;)
 

Wildcard

Top Contributor
Geparsed werden sie erst später in einem extra Programm
Wenn dieses Programm von dir ein vollständiges String[] erwartet, dann brauchst du genug Speicher um das komplette Array vorzuhalten, wenn nicht, siehe raiL und lagere Teile der Daten auf die Festplatte aus.
 
J

JohannisderKaeufer

Gast
Was spricht eigentlich gegen den Einsatz einer DB. H2 Derby etc.

Eine Tabelle vom Format

int row | int col | String daten

könnte die Daten halten, auch mit unterschiedlicher Anzahl von Spalten.

Die Performance könnte zwar leiden, aber eine Out of Memory entspricht einer Performance von 0,
 

H2SO3-

Bekanntes Mitglied
vielen Dank erstmal für die vielen Ideen, leider ist davon nichts zu gebrauchen, warum erkläre ich gerne gleich:

(wie kann ich hier eigentlich ein zitat machen?)
@rail
parse jede zeile, mach ein objekt draus und schreib das objekt auf die platte. Wenn alle zeilen geparst sind kannst du die objekte gemütlich von der platte lesen und magic damit machen

das Programm ist ein Teil einer Bibliothek, die zt. auch über netztwerke und internet usw. angesprochen wird. Dabei ist nicht sichergestellt, das ich schreibrechte auf die Platten des Rechners bzw. des Servers habe. Die Daten, in irgendeiner Art datei zwischenzulagen ist also schlecht. Zudem habe ich Sie ja gerade aus einer Datei ausgelesen.

Das Direkte parsen ist auch schwierig. Was ist, wenn zeile 0 spalte 0 den wert 2 hat (w#hre ein int) jedoch zeile 1 und spalte 0 hat den wert "haus" (währe ein string). Kann also erst wenn ich alle Daten habe ein einigermaßen sicheres parsen machen.

@JohannisderKaeufer
Was spricht eigentlich gegen den Einsatz einer DB. H2 Derby etc.

Das gleiche Problem wie mit der idee auf die Platte zu schreiben. Das Teil ist eine Bibliothek wo ich keine Ahnung habe wo die Läuft, also eine DB anzusprechen geht gar nicht.

Naja, läuft wohl alles darauf hinaus, das ich doch den VM Speicher hochsetzen muss.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
K Große Mengen an Daten speichern Allgemeine Java-Themen 9
J Daten persistent speichern Allgemeine Java-Themen 14
K Input/Output Daten speichern / laden Allgemeine Java-Themen 2
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
L Speichern von Daten in JKS Allgemeine Java-Themen 5
C Daten speichern und verwalten Allgemeine Java-Themen 3
A Java Projekt (Daten Eingeben, Speichern und in Listen Ausgeben) Allgemeine Java-Themen 6
D (Viele) Daten performant speichern und lesen Allgemeine Java-Themen 5
G Excel-Daten in Datenbank speichern - Problem mit leeren Feldern Allgemeine Java-Themen 7
I daten dauerhaft speichern Allgemeine Java-Themen 17
DStrohma Daten in JAR speichern geht nicht?? Allgemeine Java-Themen 22
J Daten bei dem Benutzer speichern Allgemeine Java-Themen 6
E Nicht Business-Logik Daten also Einstellungen wo speichern? Allgemeine Java-Themen 2
DEvent grosse daten speichern Allgemeine Java-Themen 2
R Daten Speichern Allgemeine Java-Themen 6
Q Speichern & Wiederherstellen von Daten (-objekte) Allgemeine Java-Themen 7
G Daten aus einer For Schleife zwischen speichern Allgemeine Java-Themen 4
S Einlesen von Daten aus .txt Dateien und speichern in Variabl Allgemeine Java-Themen 3
M Daten Speichern Allgemeine Java-Themen 6
OnDemand Zugangsdaten externer Systeme sicher speichern Allgemeine Java-Themen 8
Z Passwort Versuche speichern Allgemeine Java-Themen 8
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
temi Lösung zum Speichern von Deltafiles Allgemeine Java-Themen 6
J Java Filechooser Speichern Allgemeine Java-Themen 8
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
MiMa Werte in liste speichern? Allgemeine Java-Themen 3
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
H ArrayListe in CSV Datei speichern Allgemeine Java-Themen 6
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
T Speichern von Objekten Allgemeine Java-Themen 2
D .txt Datei in .jar Datei speichern Allgemeine Java-Themen 3
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
Aruetiise Funktion(y = mx+n) in String speichern und berechnen Allgemeine Java-Themen 9
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
offi Excel mit Inhalten aus DB öffnen ohne zu speichern Allgemeine Java-Themen 8
MiMa Speichern von Programmeinstellungen in Datei Allgemeine Java-Themen 7
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
@SupressWarnings() Feste Kosten speichern Allgemeine Java-Themen 4
N ZIp datei direkt im eclipse speichern Allgemeine Java-Themen 4
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
C Best Practice Speichern kleineren Mengen Stammdaten? Allgemeine Java-Themen 3
X Mehrere booleans in Datei Speichern, Updaten und Laden Allgemeine Java-Themen 1
F Json in sql speichern und lesen Allgemeine Java-Themen 10
F Alte Passörter mit Gson und Json in SQL speichern? Allgemeine Java-Themen 5
K API-Key sicher speichern Allgemeine Java-Themen 2
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
Tacofan Bilder in Resource speichern Allgemeine Java-Themen 6
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
O Klassen Bruch im gleichen Objekt Speichern Allgemeine Java-Themen 1
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
U Variablen Stringarrays mit wenig verschiedenen Zeichen effizienter speichern Allgemeine Java-Themen 10
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
R HtmlUnit: Canvas als Bild speichern Allgemeine Java-Themen 0
E KeyCode in anderer Klasse speichern Allgemeine Java-Themen 2
M YouTube-Video herunterladen und speichern Allgemeine Java-Themen 10
C Position speichern von verschiebbaren Elementen auf JPanel Allgemeine Java-Themen 3
S Wertepaar in LinkedList/PriorityQueue speichern Allgemeine Java-Themen 3
Developer_X Input/Output Serialisiertes Objekt speichern und laden Allgemeine Java-Themen 1
J Arraylist speichern und laden? Allgemeine Java-Themen 5
S speichern von RSA-Keys Allgemeine Java-Themen 1
3 OOP Instanzen aus einer Klasse persistent speichern. Allgemeine Java-Themen 9
GUI-Programmer Mp3 Dateien bearbeiten und speichern Allgemeine Java-Themen 3
G Suchweg durch Binärbaum speichern Allgemeine Java-Themen 4
D IP-Cam live stream speichern Allgemeine Java-Themen 9
javampir Lange Bitfolge speichern Allgemeine Java-Themen 3
M Methoden in Rescources speichern Allgemeine Java-Themen 4
L iText PDF-Generierung ohne Speichern Allgemeine Java-Themen 10
U Screenshot erstellen und speichern Allgemeine Java-Themen 6
OnDemand Input/Output Variablen in Datei Speichern um sie wieder auszulesen Allgemeine Java-Themen 4
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
S XML lesen, verarbeiten, speichern klappt in Eclipse, aber nicht in der JAR Allgemeine Java-Themen 4
H JPA (EclipseLink) Neuer Eintrag in Collection speichern (unidirektional) Allgemeine Java-Themen 3
J RC4 Key als String speichern? Allgemeine Java-Themen 5
F Java Api Bilder speichern Allgemeine Java-Themen 3
T UTF-16LE String aus LDAP lesen und als ISO-8859-1 in DB speichern? Allgemeine Java-Themen 2
M Einstellungen in JAR speichern Allgemeine Java-Themen 8
F Problem beim Speichern eines Attachments Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben