simultanes Schreiben/Lesen von .txt oder binary Dateien

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    simultanes Schreiben/Lesen von .txt oder binary Dateien

    Hi,

    ich bin mal wieder auf ein Problem gestoßen.

    Ich bekomme(wie in anderen Fragen schon öfters mal erwähnt :) ) relativ viele Daten (ca. 5000 Werte pro Sekunde). Diese Daten werden dargestellt. Um den Arbeitsspeicher zu entlasten, da der sonst
    überläuft, wollte ich die Daten nun gleich abspeichern und für die Darstellung lediglich einen Ausschnitt und/oder reduzierte Daten benutzen. Soweit so gut. Aber nun kommt mein Problem. Damit es benutzerfreundlicher ist sollte der User auch reinzoomen und einen anderen/vorherigen Ausschnitt darstellen können. Aber die Daten dafür sind ja in der Datei. Das heißt ich muss die Datei wieder einlesen
    während ich aber weiter in die Datei schreibe.Nacheinander geht das ja aber simultan auch? Gibt es da nicht Probleme mit dem Pointer des Streams der ja nicht auf zwei Stellen gleichzeitig zeigen kann?

    Das nächste Problem ist das Lesen selbst. Da die Dateien sehr groß sein können (Mehrere Millionen Daten pro Datei) ist es keine Option die Datei beim reinzoomen komplett einzulesen. Also muss ich in der Lage sein von einer bestimmten Position lesen können. Soweit ich richtig gelesen habe geht das nur mit einer binary Datei. Richtig? Hat jemand schon Erfahrung mit eigenen binary Dateien?

    Also Kurz: Ist es möglich wirklich simultan eine Datei zu lesen und zu schreiben?
    Brauche ich wirklich eine binary Datei um von einer bestimmten Position lesen zu können?

    Danke schonmal
    Guten Abend

    Das macht für mich nicht so wirklich sinn, da du jedesmal wo du die Daten einliest ja wieder Arbeitsspeicher braucht. Ich würde dafür einen externen Server verwenden mit einer Datenbank da streamst du nun deine Daten hin und kannst sie ja Datensatz für Datensatz eintragen lassen. Wenn du nun wieder etwas neues brauchst kannst du einen "Dreckigen" Zugriff auf die Daten machen so erhälst du zumindest eine Antwort auch wenn es möglicherweise schon wieder etwas neuer Daten gibt.

    Edit: Du kannst die Datenbank auch lokal haben dann besteht allerdings wieder die Gefahr dass das ganze sehr langsam wird.

    Eggord schrieb:

    Also Kurz: Ist es möglich wirklich simultan eine Datei zu lesen und zu schreiben?
    Ich denke schon, dass das möglich ist - probiert habichs nicht, aber probier du das doch mal aus, kann ja nicht so schwer sein.

    Es wird sicherlich kritisch, wenn du beim Lesen in den Bereich gerätst, der noch im Schreiben inbegriffen ist.

    In der Umsetzung würde ich das klar trennen, evtl. sogar 2 verschiedene Anwendungen machen.
    1. ein Data-Ticker, der kontinuierlich mit-liest. Tatsächlich sollte der garnet auf die Datei greifen, sondern eben wirklich die eingehenden Daten mit-lesen
    2. ein Data-Browser, der in der/den Datei/en herumstöbert.
    Meine Vorstellung ist dabei am EEG orientiert, da hat der Doktor auch einen Mit-leser, und einen Browser - so habich das jdfs. mal mitbekommen.

    noelelias schrieb:

    Du kannst die Datenbank auch lokal haben dann besteht allerdings wieder die Gefahr dass das ganze sehr langsam wird.


    Also Server ist keine Option aber ich habe auch schon an eine lokale Datenbank gedacht. Aber erstens wusste ich nicht, ob die schnell genug ist und wieviel Speicher die braucht im Verhältnis zu einem binären Datei(Werden multimillionen Daten sein) und zweitens habe ich einfach keine Erfahrung mit Datenbanken.

    ErfinderDesRades schrieb:

    ein Data-Ticker, der kontinuierlich mit-liest. Tatsächlich sollte der garnet auf die Datei greifen, sondern eben wirklich die eingehenden Daten mit-lesen
    ein Data-Browser, der in der/den Datei/en herumstöbert.


    Also es sollte schon in einer Anwendung sein. Aber so ganz verstehe ich deine Idee auch nicht. Keiner der beiden schreibt in die Datei. Und wenn Data-Ticker mitliest muss er wieder alle Daten im Memory haben- und das will ich ja vermeiden.

    ErfinderDesRades schrieb:

    Meine Vorstellung ist dabei am EEG orientiert, da hat der Doktor auch einen Mit-leser, und einen Browser - so habich das jdfs. mal mitbekommen

    Ich habe mal im Internet geschaut konnte dort aber nichts finden. Vielleicht findest du ja mal ein Foto/video damit ich das verstehe was du mit Data-ticker und browser meinst.
    Ich habe auf jeden Fall einen "Chart" der mir die Daten anzeigt. Darunter ist ein Slider und 3 Buttons. über 2 der 3 Buttons kann ich das Zeitintervall einstellen welches mir der Chart anzeigt. Der dritte Button regelt ob der Chart immer die neuen Daten anzeigt-somit ändert sich x-achse ständig während das Zeitintervall gleich bleibt(slider ist dabei immer auf der max Stellung)- oder ob das Zeitintervall statich stehen bleibt. Dabei kann man sehen, dass der Slider immer weiter nach rechts wandert, da ja ständig Daten "rechts" angehängt werden. Und in genau dieser Stellung kann der User auch über den Slider die Position des statischen Intervalls ändern und sich somit die Daten von vor einer Stunde ansehen.
    Ich hoffe ich habe das einigermaßen verständlich rübergebracht.
    bei so vielen Daten solltest du unbedingt eine Datenbank verwenden.
    Auch ist die Performance oft deutlich besser als von einem File zu lesen. Da ja ansonsten immer das ganze File in den Arbeitsspeicher geladen werden muss um auch nur eine Zeile zu erhalten.

    Schau dir doch mal die BigTable von google oder Hbase oder sowas in der Art. Damit hast du auch das Problem nicht dynamisch Tabellen erstellen zu wollen :D