Hallo,
ich habe ein kleines Tool geschrieben welches alle 2ms Werte aus einem Netzwerkteilnehmer ausließt.
Es handelt sich hierbei um 3xFloat, String sowie Integer Werte.
Mir stellt sich nun die Frage, wie ich die Daten am geschicktesten abspeichere.
Die neuen Datensätze welche alle 2 Millisekunden kommen in eine MySQL Datenbank schreiben oder eher am Filesystem (.csv) Datei bleiben?
Welche Vor bzw. Nachteile bringen die Systeme?
Gerne bin ich auch offen für andere Datensysteme.
LG RobotSox
Evaluieren, welches System Deine Anforderungen erfüllt, ist der Job für Dich als Entwickler.
Nur Du kennst Deine konkreten Anforderungen. Für uns ist das Glaskugelraten.
Das musst also leider selbst machen.
Was Du mit "alle 2ms" aussagen willst und was das für eine Quelle sein soll, würde mich allerdings interessieren.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Die Quelle ist eine Maschine welche über Ethernet ausgelesen wird.
Ausgelesen wird der Strom der Antriebe, Drehzahl und co.
Dies soll gesichert werden um eine Kurve der Antriebsdaten zu bekommen.
Dann lohnt sich evtl ein gepuffertes System, falls zB die Datenbank für einige Sekunden nicht erreichbar ist und Du so keine Daten verlierst?
Umsetzung macht man für solche Systeme zB. Event-basiert.
Maschinenvernetzung ist mein Hauptthema im Job; und das kann auch ganz schnell sehr komplex und leistungshungrig werden, wenns mal größer wird.
Aber im Endeffekt musst Du Dir selbst eine Übersicht der Anforderungen schaffen und dann Systeme und Bausteine evaluieren, wie Du verwenden willst.
Das macht man bevor man eine Zeile Code umsetzt 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo RobotSox ,
eine ... Datenbank schreiben oder eher am Filesystem (.csv) Datei bleiben?
...
Dies soll gesichert werden um eine Kurve der Antriebsdaten zu bekommen.
D.h. schreibend und lesend können zeitgleich stattfinden? Falls ja, so würde ich stark zu einer Datenbank tendieren welche für solche Zwecke ausgelegt sind und problemlos damit umgehen können.
(CSV-) Dateien sind im Grunde nicht gleichzeitiges Lesen und Schreiben ausgelegt und die Gefahrt ist groß, dass die Datei "zerschossen" wird. Rechne einfach mal aus wieviele Werte so in einer Stunde gesammelt werden und überleg dann ob CSV sinnvoll sein kann od. nicht.
Um jedoch das wirklich beurteilen zu können siehe Abts Antwort(en) und bedenke auch:* Soll der Datenspeicher auf einem Server laufen als der "Lese-Dienst"?
Es gibt auch jede Menge Datenbank-Systeme und auch spezielle Time-Series Datenbanken. Auch hier lässt sich nicht pauschal beurteilen was am besten geignet ist.
Wenn du das evaluierst so werden sich ein paar Fragen von dir von selbst erklären 😉
gesichert werden um eine Kurve der Antriebsdaten zu bekommen
Wenn ein Diagramm der Antriebsdaten das Ziel sein soll, so werden dort sicherlich nicht die Datenpunkte aller 2ms Intervalle dargestellt werden können. Das überlastet die UI (außer es soll ein Oszilloskop werden). Spätestens beim Visualisieren müssen die Daten aggregiert werden um sinnvoll damit arbeiten zu können. Daher kann es auch sinnvoll sein, die Daten nach dem Lesen und im Zuge des "Sicherns" bereits zu Filtern und Aggregieren um die Datenmenge zu reduzieren.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"