Hallo allerseits,
Und zwar steh ich hier grad vor einem ziemlich "großen" Problem und würde mich sehr über paar Tipps freuen. Genauer genommen geht es darum, dass ich ca. 9000 Jsonl Dateien in eine Mongo DB Tabelle umwandeln und Strings in Objekten auf verschiedene Werte durchsuchen muss. Das Problem ist hierbei, dass allein jede einzelne Tabelle im json Format mit rund 1 Mio Zeileneinträgen bereits ca. 500 MB groß ist und das x 9000 alleine das Importieren der Daten (bei ca. 3 minuten pro Datei) mehrere Monate dauern wird, selbst wenn ich theoretisch den ganzen Tag dran wäre. Zusammen noch mit dem Durchsuchen und Filtern der Tabellen käme das auf eine Arbeit von Jahren...
Mich würde nun interessieren ob es Methoden gibt, wie das alles etwas schneller gehen kann bzw. ob Mongo überhaupt das richtige Werkzeug für so ein Vorhaben ist. Immerhin geht es deutlich schneller als z.b mit einer MySQL Datenbank, aber es ist für diese Datenmenge immer noch inakzeptabel langsam. Gibt es bei dieser DB evtl. eine Möglichkeit nur ausgewählte Strings / Tabellenspalten zu importieren und redundante Daten zu eliminieren oder seriell mehrere Tabellen gleichzeitig? Denn im Prinzip sind letztendlich nur 20% der Daten wirklich wichtig. Oder hat einer zufällig ein Script mit dem man mehrere große json Dateien in einem Verzeichnis filtern und zu einer zusammenfügen kann?
Desweiteren brauch ich wahrscheinlich Hilfe eine (php?) Suchfunktion zu erstellen, die mehrere hundert lokale Datenbanken / Indexe / Tabellen gleichzeitig durchsuchen kann, da ich nicht weiß wieviel Einträge man in soeinem einzelnen Index speichern kann. In meiner aktuellen Konfiguration dauert bereits das Durchsuchen von 1 Mio Einträgen zwischen 0,9 u. 2 Sekunden (wobei bereits jetzt irgendwas nicht richtig funktioniert) ich muss allerdings zumindest sagen wir 500 Mio - 1 Milliarde in einem einzigen Schub problemlos durchsuchen und verarbeiten können, ohne das es zu lange dauert oder abschmiert. Ich möchte das Ganze zunächst nur lokal auf einem Windows Rechner laufen lassen. Vielleicht gibt es da auch eine effektive Mögichkeit wie es ganz ohne Umwandlung in DB-Tabellen geht...?
Wer kennt sich aus oder hat mit der Thematik Erfahrung?
Und zwar steh ich hier grad vor einem ziemlich "großen" Problem und würde mich sehr über paar Tipps freuen. Genauer genommen geht es darum, dass ich ca. 9000 Jsonl Dateien in eine Mongo DB Tabelle umwandeln und Strings in Objekten auf verschiedene Werte durchsuchen muss. Das Problem ist hierbei, dass allein jede einzelne Tabelle im json Format mit rund 1 Mio Zeileneinträgen bereits ca. 500 MB groß ist und das x 9000 alleine das Importieren der Daten (bei ca. 3 minuten pro Datei) mehrere Monate dauern wird, selbst wenn ich theoretisch den ganzen Tag dran wäre. Zusammen noch mit dem Durchsuchen und Filtern der Tabellen käme das auf eine Arbeit von Jahren...
Mich würde nun interessieren ob es Methoden gibt, wie das alles etwas schneller gehen kann bzw. ob Mongo überhaupt das richtige Werkzeug für so ein Vorhaben ist. Immerhin geht es deutlich schneller als z.b mit einer MySQL Datenbank, aber es ist für diese Datenmenge immer noch inakzeptabel langsam. Gibt es bei dieser DB evtl. eine Möglichkeit nur ausgewählte Strings / Tabellenspalten zu importieren und redundante Daten zu eliminieren oder seriell mehrere Tabellen gleichzeitig? Denn im Prinzip sind letztendlich nur 20% der Daten wirklich wichtig. Oder hat einer zufällig ein Script mit dem man mehrere große json Dateien in einem Verzeichnis filtern und zu einer zusammenfügen kann?
Desweiteren brauch ich wahrscheinlich Hilfe eine (php?) Suchfunktion zu erstellen, die mehrere hundert lokale Datenbanken / Indexe / Tabellen gleichzeitig durchsuchen kann, da ich nicht weiß wieviel Einträge man in soeinem einzelnen Index speichern kann. In meiner aktuellen Konfiguration dauert bereits das Durchsuchen von 1 Mio Einträgen zwischen 0,9 u. 2 Sekunden (wobei bereits jetzt irgendwas nicht richtig funktioniert) ich muss allerdings zumindest sagen wir 500 Mio - 1 Milliarde in einem einzigen Schub problemlos durchsuchen und verarbeiten können, ohne das es zu lange dauert oder abschmiert. Ich möchte das Ganze zunächst nur lokal auf einem Windows Rechner laufen lassen. Vielleicht gibt es da auch eine effektive Mögichkeit wie es ganz ohne Umwandlung in DB-Tabellen geht...?
Wer kennt sich aus oder hat mit der Thematik Erfahrung?
Kommentar