Datenmodell Zuglaufdaten

Benrath

Community-Forum
Mitglied seit
19.05.2003
Beiträge
18.812
Reaktionen
459
Es könnte sein, dass ich ne Menge Daten zu Zugläufen bekommen. Wir reden von ca. 50.000 Zugnummern (ZN) mit im Schnitt je 150 Stoppunkten (BST) also 6 Mio Zeilen pro Tag. Das Format sollte mehr oder weniger so aussehen. BTG ist Datum, ZN die Zugnummer, Index 1 bis N für die Stops, BST ist der Haltepunkt und dann Ankunft und Abfahrt.

1662057906083.png
Ich frage mich jetzt wie ich das am besten speichere oder ob ich es einfach so speichere und dann sind es schnell recht viele Zeilen. Oder wäre das egal?

Eine Sache macht es vermutlich schwerer.
Die ZN können mit unterschiedlichen Läufen an unterschiedlichen Tagen vorkommen und vermutlich ändern Sie sich von Jahr zu Jahr.
IC123 kann meinetwegen am Anfang des Jahres von Köln nach Kiel fahren und am Ende von München nach Berlin
Ein großer Teil sollte jedoch über die Zeit konstant sein.
z.B. gehe ich davon aus, dass regelmäßige Züge jeden Tag (BTG) mit der selben Zugnummer (ZN) um 8:00 losfahren und irgendwo ankommen.
Also dass IC321 im ganzen Jahr den gleichen Lauf hat.

Daher hatte ich überlegt, ob ich das trenne und in der Tabelle Zuglauf nur die Zugnummer (ZN) mit dem Zuglauf und einer generischen Zuglauf_id speicher und in der anderen Tabelle nur die Zugnummer und den Tag mit der Zuglauf_id

1662058246130.png


Hätte gedacht, dass ich dann mit dem ersten Tag die Tabelle Zuglauf fülle und die ID pro Zugnummer vergebe und dann die Unique Rows von ZN, BTG und Zuglauf_id in Zugnummer speichere. Was mach ich dann am 2. Tag? Könnte erst mal gucken, ob die ZN schon mal vorkommt und dann irgendwie gucken, ob der Zuglauf identisch ist und dann könnte ich ZN, BTG und Zuglauf_Id in Zugnummer speichern und nichts neues in Zuglauf. Das klingt naiv son bischen wie ein merge von long data auf long date, aber wie mach ich das? Am ehesten in R :) oder was ist das stichwort was ich dazu suche?

Oder reduziere ich den Zuglauf so, dass ich die Kombination von Index, BST, Ankunft und Abfahrt pro ZN in einen String zusammenbringe und gucke obs den String schon mal gibt? Also klassisch merge?

Have fun :)
 

parats'

Tippspielmeister 2012, Tippspielmeister 2019
Mitglied seit
21.05.2003
Beiträge
18.459
Reaktionen
939
Ort
Hamburg
Hängt von Kontext deiner Hardware und auch vom Anwendungsfall ab. Grundsätzlich würde ich wahrscheinlich alle Datensätze vorhalten und dazu einige Dimensionen auf Basis der Bewegungsdaten erzeugen. Interessant dürfte wohl ein Distinct auf ZN, erster/letzter Stop sein und dann zusätzliche measures für Interstop-Daten (Durchschnitte/Verweildauer etc. Pp).
Spricht bei dem Volumen was gegen eine vollumfängliche Speicherung? Ich finde 6mio pro Tag jetzt nicht außergewöhnlich viel, aber es kommt natürlich immer auf den Kontext an.
Wir haben hier bspw. Alle 5 Sekunden einen GPS Heartbeat über einen Zeitraum von 10 Stunden für knapp 12k Endgeräte. Und das kriegt man noch zuverlässig auf Karten geplottet, bei deutlich breiteren Datensätzen.
Du hast zum Glück keine wirkliche Breite, was grundsätzlich der Performance entgegen kommt. ;)
 
Mitglied seit
21.08.2010
Beiträge
6.997
Reaktionen
412
objektorientiert denken, jede strecke/jeder zuglauf eine zeile in einer strecken-tabelle … jede tatsächliche fahrt eine zeile in einer fahrten-tabelle (hier das datum rein). indizes auf die interessanten spalten. wenn der zuglauf nicht 100% eindeutig durch die zugnummer beschrieben ist, dann definitiv eine eigene ID für den zuglauf. stops auch in eine eigene tabelle. usw.

von der menge der daten würde ich das entspannt sehen weil jede zeile relativ klein ist wie parats schon schrieb.

für die performance interessant wäre noch, ob es variablen gibt die sich für eine partitionierung anbieten.
 

parats'

Tippspielmeister 2012, Tippspielmeister 2019
Mitglied seit
21.05.2003
Beiträge
18.459
Reaktionen
939
Ort
Hamburg
Meist bietet sich ja das Datum als Monat oder Quartal an. Würde zumindest eine einigermaßen gleichmäßige Verteilung über den Datensatz darstellen und sollte ein logischer Filter beim abfragen sein.
Ich glaube aber eh, dass @Benrath seinen Thread vergessen hat. :p
 

Benrath

Community-Forum
Mitglied seit
19.05.2003
Beiträge
18.812
Reaktionen
459
Ne vergessen nicht und Ich freue mich über jede Antwort :)

Bin nur gerade nicht im Dienst. Kind gekommen, dann corona und nun wieder Kind. Nächste Woche schau ich wieder da.

Aktuell verzögert sich dass auch noch mit den Daten...
 
Oben