Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. SQL-Adapter, Werte nach Alter verdichten

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    SQL-Adapter, Werte nach Alter verdichten

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

      Hi all,
      als Nicht-SQL-Spezialist suche ich eine Möglichkeit, die per SQL-Adapter in Mysql geloggten Werte nach Alter zu verdichten. Also z.B. die Außentemperatur pro Tag im laufenden Monat laufend bei Änderung, nach 1 Monat nur noch Höchst-/Niederst- und Durchschnittstemperaturen pro Tag und von Vorjahren ggf. diese nur noch pro Woche oder Monat vorzuhalten. Dabei sollten die Intervalle und Verdichtungstypen allgemein und je Adapter und Datenpunkte parametrierbar sein.
      Hat so etwas jemand schon gemacht?
      Wäre dies eine Anregung für die Weiterentwicklung des SQL-Adapters?
      Dank & Gruß

      OliverIO Azrael42 2 Replies Last reply Reply Quote 0
      • OliverIO
        OliverIO @tomrey last edited by OliverIO

        @tomrey

        Generell ist das machbar
        Datenbanken und SQL sind in der Regel darauf ausgelegt kontinuierliche Aufzeichnungen zu haben und dann bei der Abfrage die entsprechenden Aggregation durchzuführen.
        In deinem Fall wären das zwei Abfragen, einmal für den laufenden Monat beziehungsweise meinst du sicherlich für die letzten X Tage
        Und einmal für die Höchst und Tiefstwerte für die Zeit davor.
        Wenn das beispielsweise alles in einem Diagramm angezeigt werden soll, kann man diese beiden Abfragen auch mit einem UNION zusammenfassen.

        Wenn du eine echte Bereinigung der Tabellen haben möchtest, könnte man die Höchst und Tiefstwerte mit einer anfüge Abfrage hinzufügen (insert into) und die dann überflüssigen Einzelwerte löschen.

        Wenn Festplatten Speicherplatz nicht unbedingt so die Rolle spielt und die Tabellen richtig indiziert sind, würde ich die erste Möglichkeit ohne löschen empfehlen. Lieber dann irgendwann mal alte Daten, wenn sie wirklich nicht mehr benötigt werden dann löschen. Beispielsweise nach einem Jahr

        Wenn du dich für das Löschen entscheidest, würde ich die Werte aber in eigenen Tabellen vorhalten

        1 Reply Last reply Reply Quote 0
        • Azrael42
          Azrael42 @tomrey last edited by Azrael42

          @tomrey
          Ich gruppiere regelmäßig die geloggten Werte in der MariaDB.
          Ich zeichne viele Werte im 20 Sekunden Takt auf und habe die Historie der letzten Jahre in der DB gesammelt. Die ich natürlich auch ungern verlieren möchte. Aktuell laufen pro Jahr ca 30 Millionen Datensätze auf, Tendenz steigend. Da mein winziger DB Server damit überfordert ist, aggregiere ich die Werte ab und an.
          Das mache ich über einen GROUP BY auf eine Zeitperiode. Im ersten Jahr sind es bei mir 10 Min, dann immer länger.
          Da das Skript nicht so häufig läuft, mache ich das per Hand und für alle ID's.

          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

          488
          Online

          32.3k
          Users

          81.0k
          Topics

          1.3m
          Posts

          3
          3
          76
          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