Hallo zusammen.
Ich bin neu hier und bräuchte mal ein paar Ideen.
Und zwar habe ich hier eine Aufgabe vor mir, die ich vermutlich nur effizient mit einer Datenbank lösen kann. Allerdings möchte ich hier nicht mit dem Kopf durch die Wand, ohne dass ich vorher mal drüber gesprochen habe
Also, ich habe tatsächlich tonnenweise ASCII Files. Und zwar zwei in etwa gleich große Haufen in der Größenordnung von jeweils mehreren Gigabyte. Haufen 1 kenne ich bereits aus einer vorherigen Auswertung, das sind ca. 75-80 Millionen Zeilen Text. Haufen 2 wird ähnlich groß sein, diesen erhalte ich Anfang Januar.
Inhalt der Dateien aus Haufen 1:
Warum das Ganze?
Ich möchte nun im Grunde die Haufen übereinander legen und wissen, wie viel Speicherplatz auf dem Storage alloziert wird durch Dateien, welche nicht mehr in der Datenbank referenziert sind.
Ich denke es macht wenig Sinn, wenn ich mir nun im zweiten Haufen Zeile 1 anschaue und diese dann mit 75 Millionen Zeilen aus Haufen 1 vergleiche und bei einem Treffer aufsummiere.
Sprich, nur in Python, komplett ohne Datenbank.
Also würde ich nun die beiden Datenberge jeweils parsen und in zwei Tabellen rein schreiben, welche ich dann hoffentlich hinterher "einfach" joinen kann über diesen alphanum. Code.
Gibt es hier etwas zu beachten, damit das ganze innerhalb von einer vertretbaren Zeit (z.B. Wochenende) durch läuft? Oder werde ich hier zwangsläufig in größere Performance-Probleme rein laufen?
Sollte ich die Daten irgendwie sortieren in den Tabellen?
Ich habe einen i7 Workstation-Laptop mit 16 GB RAM und SSD. Falls das aussichtslos ist, könnte ich das evt. auch auf anderer Hardware laufen lassen, würde es aber gerne erst mal lokal probieren.
#
Anregungen sind herzlichen Willkommen.
Viele Grüße und einen guten Rutsch,
Marcus
Disclaimer: Ich bin kein ausgebildeter ITler
Ich bin neu hier und bräuchte mal ein paar Ideen.
Und zwar habe ich hier eine Aufgabe vor mir, die ich vermutlich nur effizient mit einer Datenbank lösen kann. Allerdings möchte ich hier nicht mit dem Kopf durch die Wand, ohne dass ich vorher mal drüber gesprochen habe
Also, ich habe tatsächlich tonnenweise ASCII Files. Und zwar zwei in etwa gleich große Haufen in der Größenordnung von jeweils mehreren Gigabyte. Haufen 1 kenne ich bereits aus einer vorherigen Auswertung, das sind ca. 75-80 Millionen Zeilen Text. Haufen 2 wird ähnlich groß sein, diesen erhalte ich Anfang Januar.
Inhalt der Dateien aus Haufen 1:
- Kosolenausgabe von du auf einem Enterprise Storage
- Die Zeilen beinhalten Dateigröße in kB und die Pfadangabe zur Datei.
- Der Dateiname einzigartig über einen unique alphanumerischen String. (z.B. something_a1b2c3d4e5f6g7.pdf)
- Für mich interessant ist hier nur die Dateigröße (Integer) und dieser alphanum. String.
- Für Haufen 1 habe ich bereits im Sommer einen Python Parser geschrieben, der mir diese Sachen in eine MariaDB importiert. Dieser läuft etliche Stunden und befüllt eine Tabelle der Datenbank.
- Das ist ein Report aus einer Enterprise PLM Applikation. (Teamcenter).
- Die Zeilen beinhalten:
- interner Datenbank Identifier
- externer Identifier (das ist der alphanum. String von oben!)
- Information ob diese Datei noch referenziert wird aus der Datenbank oder nicht.
Warum das Ganze?
Ich möchte nun im Grunde die Haufen übereinander legen und wissen, wie viel Speicherplatz auf dem Storage alloziert wird durch Dateien, welche nicht mehr in der Datenbank referenziert sind.
Ich denke es macht wenig Sinn, wenn ich mir nun im zweiten Haufen Zeile 1 anschaue und diese dann mit 75 Millionen Zeilen aus Haufen 1 vergleiche und bei einem Treffer aufsummiere.
Sprich, nur in Python, komplett ohne Datenbank.
Also würde ich nun die beiden Datenberge jeweils parsen und in zwei Tabellen rein schreiben, welche ich dann hoffentlich hinterher "einfach" joinen kann über diesen alphanum. Code.
Gibt es hier etwas zu beachten, damit das ganze innerhalb von einer vertretbaren Zeit (z.B. Wochenende) durch läuft? Oder werde ich hier zwangsläufig in größere Performance-Probleme rein laufen?
Sollte ich die Daten irgendwie sortieren in den Tabellen?
Ich habe einen i7 Workstation-Laptop mit 16 GB RAM und SSD. Falls das aussichtslos ist, könnte ich das evt. auch auf anderer Hardware laufen lassen, würde es aber gerne erst mal lokal probieren.
#
Anregungen sind herzlichen Willkommen.
Viele Grüße und einen guten Rutsch,
Marcus
Disclaimer: Ich bin kein ausgebildeter ITler