Datenbankwartung, Daten ausdünnen

Hallo zusammen

Ich habe hier einige Variablen welche mit relativ hoher Datendichte gelogged werden.
Die hohe Dichte ist aber nur für die nähere Vergangenheit notwendig, ältere Daten sollten aber ausgedünnt werden.

Wie stelle ich das denn am besten an ?
Hat da jemand etwas das er teilen könnte ?

Idealerweise immer zwei Werte zu jeweils einem zusammenfassen (Mittelwert).
In den aktuellen AC_ Befehlen sehe ich immer noch kein AC_SetLooggedvalue.

Die standardmäßige Aggregierung von einer Stunde ist mir aber wiederum viel zu grob.

schönen Dank schon mal
bb

Das kannst du mit der 3.4 nicht wirklich lösen. Mit der 4.0 würde ich die CSV Dateien direkt bearbeiten und die Mittelwerte wünschgemäß umwandeln. Dabei jeweils nie den aktuellen Monat anfassen, sondern nur vorherige Monate, damit du nicht beim Schreiben mit IP-Symcon in den Konflikt gerätst.

paresy

Danke paresy
Ja das mit der 3.4 nix geht weiß ich.
Hatte lange gehofft das sich mit 4.0 was tut.
Insbesondere das IPS irgendwann von sich aus Tools zur Datenbankpflege bereithält.
Habt ihr da ggfl. auch langfristig was geplant, oder ist das eurerseits kein Thema ?

Es gibt ja wohl mehrere Workarounds, oder auch händisch per Script läßt sich was machen.
Aber das ist halt immer mit Programmier- und dann auch Konfigurationsaufwand verbunden.

Werd ich wohl in den sauren Apfel beißen müssen und mir selbst was stricken - oder denn das ist eigentlich der Auslöser- die Highcharts Implementierung umbauen. :frowning:

schöne Grüße, und ja ich trauere immer noch der alten RRD Datenbank nach
bb

hallo bb
hast du mittlerweile was gefunden, um alte (verwaiste) Daten zu löschen ? bei mir dümpeln noch etliche alte csv´s in den Verzeichnissen rum. Die aggregierten Monats-Jahresdaten war einfach (uraltes Datum).

Hi Axel

leider konnte ich mich noch nicht aufraffen diesbezüglich was zu tun. Ist irgendwie so mühsam, finde da immer andere Dinge die mehr Spass machen.

gruß
bb

Hallo zusammen.

Gibt es hier mittlerweile Boardmittel von Symcon wie ich geloggte Variablen ausdünnen kann ?
Ich habe ein SMA Meter, der alle 600ms Daten pusht und diese meine Variablen füllt. Andere Variablen die auf diese reagieren verändern sich dadurch auch alle 600ms und werden auch immer größer. 91 Millionen Datensätze in einer geloggten Variable sind bestimmt nicht gesund und stören vermutlich mein verwendetes Grafana Modul.

Wie kann ich die geloggten Variablen aus den letzten Jahren ausdünnen, so dass ich vielleicht nur noch Werte alle 60 sec behalte. statt jede 0,6 sec

Grüße

Noch nicht :wink:

paresy

Schade. Gibt es denn eine einfache Möglichkeit aus den CSV Dateien maschinell Datensätze zu entfernen ? Oder gibt es Scripte / externe Tools die dieses können ? Manuell ist das ja nicht wirklich praktikabel. Was wäre hier denn euer Ansatz ?

Hi, ich nütze jetzt einmal diesen alten Thread für ein ähnliches Problem.
Durch die dropbox Sicherung bin ich draufgekommen ich bräuchte 8 GB Speicher (habe aber nur 2GB). Ich muss also aufräumen.
Ich habe viele (Mess-)variable. Viele davon will ich sekundengenau Anzeigen bräuchte aber in der Aufzeichnung nur alle 1, 5 oder 10 Minuten (nicht den jeweils aktuellen, sondern den aggregierten Wert).
Ich sehe mehrere Möglichkeiten:

  1. Sehr fraglich: Alle alten Originaldaten löschen (mir reichen die Aggregierten). Werde dann bei einer Neuaggregation die aggregierten auch gekillt?
  2. Wenig praktikabel: Alle Variabeln durchforsten und ausdünnen (mühsam, trotzdem noch viele) dann fehlt mir in einem Monat genau eine von den gelöschten.
  3. Gibt es dazu ein Skript?: Zu jeder Variablen eine 2. Hinzufügen. Eine die sekündlich anzeigt und nicht aufzeichnet und eine 2. die über die Zeit (alle 1, 5 oder 10 Minuten) die 1. Aggregiert und dann aufzeichnet.
  4. Ein Programm (skript) das (bei den alten) CSV Daten 20, 100 oder 500 Zeilen aggregiert, diese löscht und den aggregierten Wert einträgt.

Bitte um Rückmeldung welches Methode am sinnvollsten ist, macht das schon wer?
Herzlichen Dank
Walter

Einfach die Jahresordner löschen, die du nicht mehr brauchst - oder einfach auf ein externes Gerät verschieben, sodass es nicht im Backup ist. Nach der Aggregation sind die Daten natürlich nicht mehr verfügbar.

Wir planen für die 6.x weiterhin eine Archiv Life-Cycle Feature womit du genau das tun können wirst.

paresy

Danke, hab es gemacht in ProgrammData/Symcon db alte. Jetzt ist das Backup 1,28 GB :smiley:
Wenn es fertig ist (dauert glaub ich Stunden) probier ich was nach der reaggregation aller Variablen (Archivmodul) passiert. Kann dann gleich das Restore testen. :+1:
Danke

die alten Jahresordner habe ich auch gesichert und dann gelöscht. Ich arbeite nur mit den letzten 3 Jahren. Eigentl habe ich noch nie in den letzten 13J auf alte Daten geschaut :grinning:

@Axel37:
Hi, bei mir sind es nur 6 Jahre. und es gibt schon Daten die im jaresvergleich interessant sind (Energieverbrauch, PV erzeugung…).
Aber „wichtig“ sind sie nicht.

@paresy:
Ja danke, das hat funktioniert. Nur Reaggregieren darf man dann nicht mehr.
Vielleicht eine Kopie einiger weniger Variablen (nur die, die man im Jahresvergleich braucht) im original db Verzeichnis belassen - ist halt einmal ein gefummel, aber das war´s dann.

Gibts irgendwo eine Beschreibung von dem geplanten Feature?
Danke Walter

Ich erzähle ein wenig dazu in der Keynote vom letzten Event im Januar :slight_smile:

paresy

Um nicht mehr benutzte Daten aus dem Archiv älter als z.B. 1 Monat zu löschen, nutze ich ein Script, das ich von Zeit zu Zeit aufrufe.
Ich habe auch viele Leistungsdaten, die nach ein paar Tagen nicht mehr benötigt werden, da keine Diagramme mehr erzeugt werden müssen
Das funktioniert bis jetzt für mich ganz gut.
Lässt sich ja beliebig erweitern …

Gruß,
Doc

// Script zum Löschen von nicht benötigten Archivdaten

$ID_Archiv = 10204;

// **************************************************************

AC_DeleteVariableData($ID_Archiv, 36301, 0, strtotime("-1 month"));                           // Bezug Leistung aktuell 

AC_DeleteVariableData($ID_Archiv, 53579, 0, strtotime("-1 month"));                           // Verbrauch Leistung aktuell 

AC_DeleteVariableData($ID_Archiv, 19925, 0, strtotime("-1 month"));                           // ESS gesamt Leistung aktuell

AC_DeleteVariableData($ID_Archiv, 42236, 0, strtotime("-1 month"));                           // mögliche Leistung aktuell (ESS)

AC_DeleteVariableData($ID_Archiv, 19925, 0, strtotime("-1 month"));                           // Leistung ESS gesamt

AC_DeleteVariableData($ID_Archiv, 35077, 0, strtotime("-1 month"));                           // ESS Leistung ist

AC_DeleteVariableData($ID_Archiv, 16887, 0, strtotime("-1 month"));                           // Leistung Carport aktuell

AC_DeleteVariableData($ID_Archiv, 45083, 0, strtotime("-1 month"));                           // Leistung Garage aktuell 

AC_DeleteVariableData($ID_Archiv, 48924, 0, strtotime("-1 month"));                           // Leistung Fronius aktuell 

Klar kann man sowas machen, ist aber unheimlich mühsam einzurichten. Du musst dich ja um jede Variable extra kümmern.
Sowas ist IMHO klar Aufgabe der Datenbank selbst.
Naja, kommt Zeit kommt Rat. Ist ja bald wieder Weihnachten. - das wievielte eigentlich seit den ersten Diskussionen „…da was machen zu wollen…“ ? :smiling_imp:

Verstehe aber natürlich das es schwierig ist für alle passende Prioritäten zu setzen. Meinerseits hätte ich bspw. gerne auf den ganzen Modul und Ablaufplandingens verzichten können wenn dafür die Datenbank modernisiert worden wäre. Von der Pro/WebKonsole und neuem Forum red ich mal gar nicht.

gruß
bb

Es geht mir hier ja nur um die Variablen, die teilw. sekündlich gelogged werden und dadurch schnell eine gewisse Größe bekommen.
Die anderen bleiben ja so wie sie sind, das ist schon überschaubar.

Grüße,
Doc

Danke,
@ paresy, Danke
@ Doctor_Snuggles: Nein löschen will ich ja nicht.
@ bbeernhard: ja ich werde auch warten, der workaround mit dem auslagern geht ja (einigermaßen)