Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Datensätze alle 2ms speichern
RobotSox
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

Datensätze alle 2ms speichern

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16216

beantworten | zitieren | melden

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 - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
RobotSox
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16216

beantworten | zitieren | melden

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 - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7578
Herkunft: Waidring

beantworten | zitieren | melden

Hallo RobotSox ,
Zitat
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"?
  • Was soll mit diesen Daten sonst noch passieren? Dabei auch versuchen etwas in die Zukunft zu denken.
  • Ist es nur eine Maschine od. sollen das für mehrere Maschinen durchgeführt werden? Um z.B. Korrelationen zu finden, etc.
  • Sollen die Daten (langzeit) archiviert werden?
  • Welche Datenmenge fallen an über einen Tag, Monat, Jahr -- das lässt sich ja recht gut abschätzen / errechnen?
  • Können Cloud-Lösungen verwendet werden?

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 ;-)
Zitat
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!"
private Nachricht | Beiträge des Benutzers