Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Influx-DB - Daten wie lang im Ram?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Influx-DB - Daten wie lang im Ram?

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      ptr last edited by

      Hallo zusammen,

      ich bin gerade in der erweiterten Konzeptphase zu einer Anwesenheitserkennungslogik mit JS/Blockly & mehreren Raumsensoren.
      Dabei ergibt sich eine einigermaßen aufwändige Zustandsabfrage von Sensorwerten aus der nahen Vergangenheit. Also suche Wert zu einem bestimmten Zeitpunkt von Variable X. Zeiträume: "in den letzten 10 Sekunden", "in der letzten Minute", "in den letzten 3 Minuten".
      Es erfolgen bei einem Raumdurchgang ca um die 12 Abfragen eines solchen Historienwertes.
      Bisher habe ich ein Skript extra dafür laufen, der die Historie jedes Sensorwertes in einen DP schreibt. Das lesen geht dann sehr schnell, weil ich ja einfach den DP-Wert in eine variable schreibe (und die DP-Werte ja eh im Ram liegen).
      Hier würde ich mir aber eine Optimierung wünschen, da ich ja eigentlich damit nur eine Datenbank nachbaue. Was eine unnötige Dopplung/Verkomplizierung wäre die ich nur warten muss.

      Es gäbe jedoch eine (vermutlich) stabilere, unaufwendigere Lösung um solche gerade vergangenen Datenwerte zu erhalten.

      • Die Sensor-DPs einfach per influx-DB mitloggen. Dann per Datenbankabfrage nach dem gewünschten Wert suchen!

      -> Hier die Frage danach jedoch ob das performant genug läuft? 12 Werte abzufragen innerhalb 10ms. Oder ob so eine Datenbankabfrage grundsätzlich nicht in einem Prozess laufen sollte, der insgesamt nicht länger als 10ms dauern sollte... Falls das zu langsam oder unkalkulierbar in der Geschwindigkeit wäre, müsste ich von vornherein das Konzept anpassen....

      -> Wie lange werden geloggt DP-Werte vom influx-db-Adapter im Ram oder woanders gehalten? Im Ram wäre das ja superschnell schätze ich. Die eigentliche Influx-DB liegt in einem parallel-LXC unter Proxmox, (also denke 10gbit-Ethernet Emulation)

      Vielen Dank für diese Einschätzung.

      BananaJoe 1 Reply Last reply Reply Quote 0
      • BananaJoe
        BananaJoe Most Active @ptr last edited by

        @ptr also ...

        12 Werte in "kurzer Zeit" sind kein Problem für eine Datenbank. Wenn diese es nicht in der Zeit schafft dann dauert es eben länger, wenn diese Schneller ist ... geht es schneller.
        Meine Webseite basiert auf einem Framework welches die Webseite anhand der Daten aus einer MySQL-Datenbank "on the fly" zusammenbaut. Das sind hunderte von SQL-Abfragen bis die Seite steht und trotzdem ist die quasi sofort da.

        Da mach dir mal - in diesem Maßstab - keine Gedanken drüber. Wenn es zu langsam wird kannst du damit anfangen.

        Wie lange die Daten im RAM gehalten werden? Das Entscheidet die Datenbank anhand von internen Parametern selbst. In der Regel bis der Platz gebraucht wird. Der Datenbank würde RAM zur verfügung gestellt, den nutzt diese in der Regel auch aus. Hat die Datenbank zur verfügung 2GB werden diese genutzt, sind es 8 dann werden 8 genutzt.
        Aus meiner Praxis: in 7 von 10 Fällen wollen die Applikationen die Daten die eben geschrieben wurde sofort wieder auslesen. Weshalb fast alle Datenbanken die zuletzt geschriebenen Werte erst einmal im RAM behalten.
        Wenn er merkt das du bestimmte Sachen linear abfragt wird die Datenbank ggf, anfangen die schon mal ins RAm zu holen.

        Und wenn es passt nimmt er sowieso fast alles ins RAM.

        Ich schreibe mal auch hier zu: Mach dir da nicht zu viele Gedanken, das ist Aufgabe der Datenbank das selbst zu regeln.

        Bisher habe ich ein Skript extra dafür laufen, der die Historie jedes Sensorwertes in einen DP schreibt. Das lesen geht dann sehr schnell, weil ich ja einfach den DP-Wert in eine variable schreibe (und die DP-Werte ja eh im Ram liegen).

        Wenn das schnell geht - dann lass doch dem Umweg weg und frag immer direkt die Datenbank. Hast du Performance- oder Zeit-Probleme?
        Die Datenbank wird immer schneller werden, die lernt von den Abfragen und versucht das zu optimieren (sollte diese jedenfalls).

        P 1 Reply Last reply Reply Quote 0
        • P
          ptr @BananaJoe last edited by

          @bananajoe Vielen Dank, das reicht mir um am Datenbankkonzept festzuhalten!

          Performance-Probleme hätte ich nur an der Stelle gesehen, dass die eigentliche influx-dB „entfernt“ auf einem anderen LXC liegt. Ich vertraue mal auf den influxdb-Adapter also, dass er die Daten im ioBroker vorhält. Bzw, dass die glaube 10gbit-Anbindung (zwischen LXCs) für das alles keine Latenzen >ca. 1ms erzeugt.
          Mein Anwendungsfall ist letztendlich: „welchen Wert hatte BewegungssensorX vor 10/30/60 Sekunden“

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate
          FAQ Cloud / IOT
          HowTo: Node.js-Update
          HowTo: Backup/Restore
          Downloads
          BLOG

          915
          Online

          31.9k
          Users

          80.1k
          Topics

          1.3m
          Posts

          2
          3
          169
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo