Alle 5 Minuten Datenschreiben und lesen auf HDD.

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Alle 5 Minuten Datenschreiben und lesen auf HDD.

    Moin! :)
    Ich möchte wissen um dieser Weg sinnvoll ist.
    Wenn mein Projekt auf einen Computer 24 Stunden lang aktiv ist.
    Dieser alle 5 Minuten eine Datei, als Text Speichert und dann wieder ausliest in ein Listview1.
    Mein Gedanke wäre, ob dies der Festplatte schadet, wenn Sie immer etwas lesen und schreiben muss.
    Oder ist das egal, weil eine Festplatte dazu gemacht ist. !? ?(
    Freue mich auf eure Antwort.
    BIG THX
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    Oder ist das egal, weil eine Festplatte dazu gemacht ist. !?
    Genau so isses.
    Server laufen rund um die Uhr, und da wird dauernd was gelesen und geschrieben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Kann man machen, muss man aber nicht.

    Wenn sich über 6h nichts verändert, schreibst du 72x die Datei ohne Änderungen ... ziemlich ineffizient.
    Dazu kommt noch das du damit die Festplatte vom Standby abhalten könntest und wenn es sich um eine SSD oder ein NVMe drive handelt, sie unnötig belastest.
    Das ganze Vorhaben kommt dir selbst doch schon fragwürdig vor, sonst würdest du diese Frage erst gar nicht stellen.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @an alle
    Danke, für eure Antwort. :)
    Ich werde weiter dran arbeiten….
    Vielleicht, finde ich einen Weg um die Datei nur zu speichern, wenn es Änderungen gibt.
    Da ich nicht schuld sein möchte, wenn mein Programm die HDD Lebensdauer verkürzt.
    Visual Basic.NET 8o
    MS-SQL
    8o
    Gegenfrage: Was soll's denn werden, wenn's fertig ist? Nicht, dass es in die falsche-Denke-Richtung geht wie hier:
    P1: »Was brauche ich, um einen 5000 m Berg zu erklimmen?«
    P2: »Was hast Du vor?«
    P1: »Ab der Höhe fängt Wasser bei Raumtemperatur an zu kochen.«
    P2: »Kauf Dir n Wasserkocher.«
    (physikaliche Angaben rein fiktiv)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Mach dir einen Boolean Something_has_actually_changed, den du auf true setzt, wenn sich tatsächlich etwas verändert hat, und wieder auf false setzt, wenn nicht (nicht vergessen). Dann prüfst du
    Pseudocode:

    Quellcode

    1. If Something_has_actually_changed Then
    2. 'dies und das
    3. End If


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Bartosz“ ()

    Da du die Daten schreibst und danach wieder einliest, ist die Frage, warum du sie überhaupt speichern möchtest?

    Wenn es hier um ein Backup geht, macht es - wie die Vorredner schon sagten - nur Sinn, wenn es tatsächlich Änderungen gibt. Zwei Dateien, die exakt gleich sind, sind redundant und damit unnötig.
    Geht es hier aber beispielsweise um weiterführende Daten -> Datenwerte, die für alle x Minuten aktualisiert dargestellt und gespeichert werden müssen, kann man das machen. Generell gilt: Eine HDD hat kaum Schwierigkeiten beim Lesen und Schreiben und auch die Häufigkeit ist hier relativ egal. sie aber auch nicht die schnellste Krücke, vor allem wenn du viel auf die Scheibe schreibst. Eine SSD hingegen kann es dir schon übel nehmen, aber auch die sind mittlerweile robust genug um auch das ab zu können, zumal sie andere Speichertechnologien nutzen.

    Die Frage, die du dir stellen musst, ist: Ergibt das alles Sinn?

    Warum schreibst du alle 5 Minuten auf die Platte? Alle Daten, die du brauchst, sollten im RAM gehalten werden. Auf Platte brauchst du sie eigentlich nur, wenn sie da auch liegen müssen. Also ist die Frage, ob es nicht ausreicht, die Datei beim Schließen des Programms zu schreiben. Oder alle X-Intervalle. Wenn Intervalle, musst du entscheiden, wie groß die Intervalle sein müssen. Aber ja, generell kann es möglich oder sogar notwendig sein, permanent zu schreiben. Verkehrt machst du nichts, außer, dass du viele IO-Anfragen von deiner App verschickst, was bei modernen Prozessoren aber kaum ein Problem darstellt.
    Die größte Belastung für eine (HDD-)Festplatte ist das Hochfahren.
    Solange sie rotiert ist ein Lese- oder Schreibvorgang diesbezüglich nicht spürbar.
    Wenn du also alle 5 Minuten schreibst, verhinderst du höchstens den StandBy-Modus und verlängerst eher die Lebenszeit.
    Und wenn wir von Minuten reden, ist das doch sowieso ein Zeitraum, der nicht ins Gewicht fällt.
    Das System schreibt u.U. irgendwelche Daten im Sekunden- oder sogar Millisekundenbereich (z.B. Paging).
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    In diesem Kontext:
    Schreib die Information in einen MemoryStream, der alle Stunde oder so auf Platte kopiert wird.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    gut, danke.
    ich werde nun ein anderen lösungsweg suchen.
    ich werde bescheid geben.
    Danke

    edit2:
    Ich habe nun einen anderen Lösungsweg gefunden.Anstatt die Daten alle 5 Minuten auf die Festplatte zu speichern, dann zu lesen.Bin ich auf die Idee gekommen, einfach einen String per TCP/IP zu versenden.Damit kann ich die Lebensdauer der Festplatte erhalten.

    Link:
    Zwei Programme kommunizieren mit TCP/IP und senden Prozessinformationen
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cheffboss“ ()