Athomas hat geschrieben: Do Nov 09, 2023 4:08 pmDeshalb habe ich ja auch die portionsweise Verarbeitung angeregt, die auch nur bei speziellen Aufgaben einfach durchführbar ist - der Mittelwert gehört aber sicherlich dazu...
Ok, portionsweise Verarbeitung muss ja die Antwort sein, egal wie. Rechnen kann das DBMS ja auch nur im RAM und nicht auf der Platte. Einen Mittelwert aus Teilmengen zu berechnen wird leichter sein als beispielsweise einen Median. Man müsste halt alle gestellten Teilaufgaben durchgehen mit der Frage, ob der Algorithmus zum Berechnen aus Teilmengen banal ist und selbst gefunden werden kann oder ob darunter komplexe Fragen sind, die man lieber nicht selbst programmiert, sondern sich freut, wenn ein schlauer Mensch schon darüber nachgedacht und etwas optimiert hat.
Das habe ich nicht verstanden!?
Nun, beispielsweise ist die Timestamp im CSV als String mit 24 Zeichen hinterlegt. Also mindestens 24 Byte. Als Zahl passt so ein Timestamp aber bestimmt in eine 64 Bit Zahl. Die Zahl 0.83987 braucht in CSV sieben Bytes, kann im RAM aber als einfaches float repräsentiert werden. Die Kommas im CSV braucht ein data.table gar nicht und so weiter. Kleine Einsparung pro Zeile mal sehr, sehr viele Zeilen. Wenn ich also eine von fünf 200GB Dateien in den RAM lese und dabei das Datum konvertiere, dann wird das im RAM hoffentlich weniger als 200GB brauchen. Wenn ich wirklich den gesamten Datensatz in den RAM lesen wollte, bräuchte ich hoffentlich weniger als 1 TB freien RAM. Ich wollte also nur anerkennen, dass man weniger als 1 TB RAM bräuchte, aber der Einspareffekt wäre niemals so groß, dass man das in ein paar GB unterbringen kann. Das Problem löst sich also nicht deshalb auf, weil man für 200GB CSV weniger als 200GB im RAM braucht.
Ich glaube inzwischen, dass der Knackpunkt in Bezug auf die Performance des vorliegenden Problemchens (in jeder Herangehensweise) die Frage ist, ob der "Zeitstempel" wirklich in ein Datum konvertiert werden muss oder lediglich als Textlabel für bestimmte Messwerte mitgeschleppt werden kann.
Ich weiß nicht, ob diese Konvertierung wirklich so ein großer Performance-Fresser wäre, aber in jedem Fall hast Du soweit Recht, dass man über die 15 Einzelaufgaben im Detail nachdenken muss und das nicht beantworten kann, solange die nicht benannt sind.
So, jetzt gibt es Pizza. Schönen Abend,
Bernhard