Input/Output Arbeiten mit extrem vielen Dateien

Marc T.

Bekanntes Mitglied
Hallo,

ich muss unglaublich viele Dateien erstellen (so ca. 43 Millionen).
Inhalt der Dateien sind serialisierte Objekte.
Das läuft jetzt ungefähr so:

Ich habe eine 230GB große Datei mit völlig unsortierten Daten, die
im RDF-Format, also in Triples, gespeichert sind. Jedes Triple bezieht
sich dabei auf ein bestimmtes Objekt identifiziert durch eine ID.

Also z.B.

xyz name tom
abc typ baum
...

Ich nehm mir also die ID, gucke ob die Datei schon vorhanden ist
(deserialisiere), schreibe die neuen Daten ins Objekt und schreibe
sie dann auf die Festplatte (serialisiere).

Das ganze geht am Anfang natürlich schnell, jetzt wo ich bereits bei
1.4 Millionen erzeugten Dateien bin benötigt das Programm aber
schon eine Sekunde um eine Datei zu erstellen. Da warte ich ewig.

Wie gehe ich also am besten mit dieser Menge an Dateien um,
damit das ganze schneller geht.... denn mal ehrlich, noch 40 Millionen
Sekunden warten... naja ^^
 

javampir

Bekanntes Mitglied
hi,
das ist jetzt vielleicht nicht grad die lösung für dein problem, aber wenn es um performance geht, ist java in aller regel die falsche adresse. ich weiß leider überhaupt nicht, was du bei deiner aufgabe an zeit einsparen könntest.
nur mal ein keiner spontaner einfall von mir
javampir
 

Joose

Top Contributor
Viele Dateien erstellen sollte für Java kein Problem sein :)
Java selbst ist nicht das schnellste, aber alle mal schnell genug für solche Sachen.
Das erstellen von Dateien kann aber auch durch die Hardware beschränkt sein (langsame Hardware -> Dateien können auch nur langsam erstellt werden).

Ich tippe darauf das das überprüfen ob die Datei schon vorhanden ist der Flaschenhals ist was die Performance angeht! Wie überprüfst du denn ob eine Datei schon vorhanden ist? Gehst du alle 1,4 Millionen Dateien durch und überprüfst den Namen oder vergleichst du mit einer Liste die dein Programm verwaltet?
 
Zuletzt bearbeitet:

Deros

Bekanntes Mitglied
43 Mio Daten müsste eine DB doch noch mit umkönnen,
ansonsten der Standard beim sortieren von großen Datenmengen (darin lässt sich dann auch viel leichter suchen) wäre es wohl die Datei anhand der ID auzuteilen.
Sprich du zerlegst die Datei anhand der ID nach dem Motto in Datei aaaaa kommen alle Werte die mit der ID aaaaa beginnen dann kommt aaaab uns so weiter.
Musst dir natürlich vorher ein bissel Gedanken um die Verteilung deiner IDs machen.
In den kleinen Dateien sollte sich dann auch zügig feststellen lassen ob der Eintrag schon vorhanden ist oder nicht.

Ansonsten musst dir ja ständig alle bisherigen Datensätze in den Speicher laden...
 

DrZoidberg

Top Contributor
Der Flaschenhals ist hier nicht die Geschwindigkeit von Java, sondern die der Festplatte/des Dateisystems.
Am besten versuchst du das Ganze unter Linux, da geht das Erstellen einer großen Menge an Dateien um einiges schneller als unter Windows. Eine SSD hilft auch.
Außerdem solltest du einen möglichst großen Teil der Daten im RAM haben.

Und wieso fällt die Geschwindigkeit im Laufe der Zeit stark ab? Das lässt sich bestimmt irgendwie verhindern.
 
Zuletzt bearbeitet:

Deros

Bekanntes Mitglied
natürlich fällt die Zeit ab, er muss ja im Zweifel alle vorherigen Daten wieder durchsuchen um festzustellen ob der Datensatz schon da ist und das dauert bei mehr Daten länger. Und bei 230 gb Daten kannst du kaum nen großen Teil der Daten im Ram haben, geht halt darum den richtigen Teil der Daten wieder zu laden...darum ja das Aufteilen der Daten in einzelne Dateien.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
monsterherz Arbeiten mit Random Java Basics - Anfänger-Themen 12
T Mit jedem Wert in der for-Schleife weiter arbeiten Java Basics - Anfänger-Themen 3
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
B Zeitgleiches Arbeiten am Code mit mehreren Personen? Java Basics - Anfänger-Themen 7
D Erste Schritte Sinvolle Architektur und paketübergreifendes Arbeiten Java Basics - Anfänger-Themen 2
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
F Arbeiten mit Arrays Java Basics - Anfänger-Themen 2
B Kann man eine Tabelle in Eclipse erzeugen und damit arbeiten? Java Basics - Anfänger-Themen 8
P Erste Schritte Arbeiten mit Klassen Java Basics - Anfänger-Themen 8
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
G Graphische Darstellung (Arbeiten mit einem Window) Java Basics - Anfänger-Themen 1
N Mit der gleichen BlockingQueue in zwei Klassen arbeiten Java Basics - Anfänger-Themen 12
M Neuen Ordner im Überverzeichnis erstellen, und dadrin arbeiten Java Basics - Anfänger-Themen 4
A Mit Enums in Methoden arbeiten Java Basics - Anfänger-Themen 8
D Wie mit Bibliotheken ohne API arbeiten? Java Basics - Anfänger-Themen 16
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
M Erste Schritte Arbeiten mit SuM (Stifte und Mäuse) Java Basics - Anfänger-Themen 20
S Arbeiten mit arrays Java Basics - Anfänger-Themen 4
D Arbeiten mit Twitter4J Java Basics - Anfänger-Themen 2
R mit klassen-instanzen arbeiten in packages Java Basics - Anfänger-Themen 10
H Arbeiten mit Properties Java Basics - Anfänger-Themen 8
hdi Worst-Performance-Award für Arbeiten mit ListModel Java Basics - Anfänger-Themen 7
G Mit Javadoc arbeiten Java Basics - Anfänger-Themen 13
L Arbeiten mit Vectoren in einer Hashtable Java Basics - Anfänger-Themen 2
Y Mit Interface arbeiten Java Basics - Anfänger-Themen 9
G mit Threads arbeiten Java Basics - Anfänger-Themen 2
N Herangehensweise - mit vielen Variablen arbeiten Java Basics - Anfänger-Themen 6
M Arbeiten mit ArrayList Java Basics - Anfänger-Themen 9
G mit Strings arbeiten Java Basics - Anfänger-Themen 7
G in Java mit Schnittstellen arbeiten Java Basics - Anfänger-Themen 5
G Arbeiten mit einem Fenster Java Basics - Anfänger-Themen 11
G erstes Arbeiten mit Collections Java Basics - Anfänger-Themen 17
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
C Arbeiten mit MDI Java Basics - Anfänger-Themen 2
J Arbeiten mit Strings Java Basics - Anfänger-Themen 5
E Aus Datei einlesen und weiter mit arbeiten! Java Basics - Anfänger-Themen 15
Z In Bild-dateien(jpg) zeichnen und arbeiten. Java Basics - Anfänger-Themen 4
A Arbeiten mit mehreren Klassen Java Basics - Anfänger-Themen 4
M Simpler Algorithmus läuft extrem langsam. Java Basics - Anfänger-Themen 3
1 Extrem große Variable Java Basics - Anfänger-Themen 1
C Extrem einfache Aufgabe falsch beantwortet :$ Java Basics - Anfänger-Themen 6
P Datentypen extrem viele Fehler nur irgendwie seh ich den Grund ned... Java Basics - Anfänger-Themen 3
D extrem noob komplett neuanfang mit java Java Basics - Anfänger-Themen 5
M Arrayliste mit beliebig vielen Namen befüllen Java Basics - Anfänger-Themen 4
F HttpURLConnection mit vielen Parametern Java Basics - Anfänger-Themen 3
W Geodaten API mit vielen zusätzlichen Infos Java Basics - Anfänger-Themen 4
P Taschenrechner mit unendlich vielen Eingabemöglichkeiten Java Basics - Anfänger-Themen 1
V Erste Schritte Taschenrechner mit beliebig vielen Zahlen Java Basics - Anfänger-Themen 5
B Datenbank: Entity mit vielen Referenzen? Ansatz so ok? Java Basics - Anfänger-Themen 8
J Unit Testing mit vielen Bedingungen - Best Practice? Java Basics - Anfänger-Themen 9
JDimi Textdatei mit beliebig vielen Zeilenumbrüchen erstellen Java Basics - Anfänger-Themen 2
B Schreiben von zu vielen Einträgen in einer Datenbank Java Basics - Anfänger-Themen 9
K Ein zentrales Objekt in vielen anderen Klassen nutzen? Java Basics - Anfänger-Themen 22
B Input/Output File.length() gibt bei vielen Ordnern 0 zurück Java Basics - Anfänger-Themen 9
P Wie reagiere ich auf Strings mit zu vielen Chars ? Java Basics - Anfänger-Themen 6
S Variablen Prüfen, ob einer von vielen boolean true ist Java Basics - Anfänger-Themen 8
H Die Eingabe von beliebig vielen Zahlen in ein Array - ich kann es nicht Java Basics - Anfänger-Themen 6
M aus vielen backsalshs einen machen Java Basics - Anfänger-Themen 6
V ActionListener bei vielen Modulen Java Basics - Anfänger-Themen 3
Luk10 Problem mit vielen Timer(-Events) Java Basics - Anfänger-Themen 17
L Arrays mit unbestimmt vielen Feldern Java Basics - Anfänger-Themen 7
K ArrayListe erstellen mit vielen (unendlichen) Weren ??? Java Basics - Anfänger-Themen 29
K 50 errormeldungen- komme auch nach vielen Nachmittagen nicht weiter. bitte helfen Java Basics - Anfänger-Themen 39
G Verzeichnis auslesen mit sehr sehr vielen Bildern Java Basics - Anfänger-Themen 6
C Gleichbehandlung von vielen jTextFields Java Basics - Anfänger-Themen 11
B Einen Array aus vielen Vectoren Java Basics - Anfänger-Themen 3
W sleep "hängt" bei vielen Threads Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben