Interne Änderung: Neue Speichermethode für Aktivitäten

In den letzten Monaten haben wir an einer großen internen Umstellung gearbeitet. Als wir vor vielen Jahren mit der Programmierung von RUNALYZE begonnen haben, war es zunächst nur für einen einzigen Benutzer gedacht – erst danach haben wir den Mehrbenutzerbetrieb ermöglicht. Dieser läuft inzwischen sehr flüssig, aber die Datenhaltung war bisher nicht für die großen Datenmengen optimiert, mit denen wir aktuell und zukünftig zu tun haben. Es macht einen großen Unterschied, ob man die Aktivitätsdaten eines einzelnen Benutzers oder die von über 30.000 Benutzern speichern muss.

Die richtige Lösung finden

Diese Datenmengen dauerhaft in einer relationalen Datenbank abzulegen, ist suboptimal. Aktuell sprechen wir von rund sieben Millionen Aktivitäten, die mit GPS-Daten und allen weiteren Sensordaten wie Herzfrequenz etc. bestückt sind. Langfristig musste zwingend eine andere Lösung her, welche inzwischen – unter Berücksichtigung vieler Aspekte wie Implementierungsaufwand und laufende Kosten – auch gefunden wurde.

Die Krux dabei: Etwa 80% der Aktivitäten werden einmal hochgeladen, häufig nur einmal aufgerufen und anschließend nahezu nie wieder benötigt. Allerdings eben nur nahezu nie wieder. Neuberechnungen für zukünftige Features, das Postertool oder auch die Sicherung aller deiner bei uns gespeicherten Daten müssen natürlich auf die Daten zugreifen können.

Ein Vorteil der neuen, dateibasierten Lösung: Neue Datenfelder können deutlich schneller hinzugefügt und ausgewertet werden. In dieser Hinsicht sind gerade auf einen Schlag gleich mehrere Felder hinzugekommen, die zukünftig aus den Sensordaten gelesen werden können. Dazu gehören die „Cycling Dynamics“, die zum Beispiel bei Garmin Vector-Pedalen aufgezeichnet werden (Links-Rechts-Balance, Drehmoment-Effektivität, Pedal Smoothness, Platform Center Offset und Power Phase-Metriken), sowie weitere Daten von Stryd (Form Power und Leg Spring Stiffness) und die kontinuierliche Performance Condition von Garmin. Mehr Details zu den neuen Werten folgen in einem separaten Blogartikel.

Ein kleiner Nachteil der neuen Lösung sind leichte Performance-Einbußen. So dauert zum Beispiel die Erstellung der Poster etwas länger als bisher. Hier besteht aber noch Verbesserungspotential, welchem wir ins zukünftig noch widmen werden.

Die Migration

Die Migration, also der Akt der Umstellung selbst, war ein spannendes Thema. Anfangs planten wir, eine Ausfallzeit von 24 Stunden in Kauf nehmen zu müssen, um die Änderungen durchführen zu können. Bei ersten Tests zeigte sich, dass 24 Stunden keinesfalls ausreichen würden. Zum Glück konnten wir den größten Teil der Datenverarbeitung bereits parallel zum Live-Betrieb durchführen. Etwa zwei bis drei Wochen lang liefen zwei Server unter voller Last, um all Eure Daten in das neue Format zu bringen. Für den Tag der Umstellung blieb am Ende nur noch ein sehr geringer Zeitaufwand übrig.

Checkout the features of RUNALYZE and go ahead and create your account for analyzing your activities at RUNALYZE.com for free.

Donate via Paypal

or support us by buying a RUNALYZE shirt at shop.runalyze.com> or buy things/gifts at amazon.de or at amazon.com.

We spend our leisure time to make RUNALYZE as good as possible and we still have tons of great ideas, but time is scarce and after a hard training we first need some fruits or a smoothie. You can support the development of RUNALYZE with every financial contribution — We highly appreciate every grant.

One thought on “Interne Änderung: Neue Speichermethode für Aktivitäten

  1. Hi, vielen Dank an dieser Stelle für eure tolle und intensive Arbeit für uns alle! Ich finde toll hier einen technischen Einblick in Runalyze zu bekommen und würde mir in Zukunft häufiger diese Art vom Blogposts wünschen. Macht weiter so, Jan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.