Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Option um Daten älter als x Monate/Jahre aus Datenbank automatisch zu entfernen #264

Closed
Wookbert opened this issue Dec 25, 2020 · 6 comments
Labels
Verbesserung Verbesserungswunsch Verwaltung Verwaltung der Zeitreihen
Milestone

Comments

@Wookbert
Copy link

NOOB-Frage/-Request: Falls noch nicht existent, wäre es schön eine Option zu haben, dass Daten die älter als x Monate/Jahre sind, automatisch aus der Datenbank entfernt werden, damit der USB-Stick nicht irgendwann überläuft.

Einstellbar global, evtl. aber auch für einzelne Datenpunkte mit unterschiedlichen Laufzeiten ... und das kombinierbar (globaler Wert, der durch einzeln gesetzte Werte für den entsprechenden Datenpunkt ersetzt wird).

@mdzio
Copy link
Owner

mdzio commented Dec 29, 2020

Siehe auch #159.

@mdzio mdzio added the Verwaltung Verwaltung der Zeitreihen label Dec 29, 2020
@mdzio
Copy link
Owner

mdzio commented Jan 26, 2022

Mit dem Skript "Alte Zeitreihendaten löschen" kann der Löschvorgang nun zumindest manuell ausgeführt werden.

Ein automatische Ausführung des Löschvorgangs, würde ich dann allgemein mit einer neuen Funktionalität für eine geplante Ausführung von Skripten erschlagen.

@the-other-martin
Copy link

the-other-martin commented Aug 21, 2022

Hallo Mathias! Danke für das Skript - dadurch laufen Diagramm Darstellungen wieder flot!
Frage: Ich würde gerne Alte Zeitreihendaten löschen automatisch auf meinem RaspberryPI laufen lassen. Wie sollte das script dazu aussehen?
etwa so: CCU Historian stop, Alte Zeitreihendaten löschen, CCU Historian start ?

#!/bin/bash
# MG

# stop ccu-historian
sudo bash /etc/init.d/ccu-historian stop
echo

# calculate expiration date
exp=$(date -d "-30 days" +%F)
echo "expiration date: " $exp

# start ccu-historian with option clean
sudo java -jar /opt/ccu-historian/ccu-historian.jar -clean $exp
echo

# start ccu-historian
sudo bash /etc/init.d/ccu-historian start
echo

@mdzio
Copy link
Owner

mdzio commented Aug 25, 2022

Ja, das sollte funktionierten. Eventuell kannst Du dann noch ein -compact ausführen, damit die Datenbankdatei auch kleiner wird.
Das ganze Skript kann dann noch per cron-Job regelmäßig gestartet werden.

@mdzio mdzio added this to the 3.2.0 milestone Aug 27, 2022
@mdzio
Copy link
Owner

mdzio commented Aug 27, 2022

Ich arbeite gerade daran, dass Skripte (s.a. Skriptumgebung) zyklisch automatisch ausgeführt werden können (ab V3.2.0). Die Aufgabenstellung könnte dann mit einem Skript in der ccu-historian.config gelöst werden:

database.tasks.clean.enable=true
database.tasks.clean.cron="0 0 2 * * ?"
database.tasks.clean.script={
	/*
	Alte Zeitreihendaten löschen V1.0.0
	Wichtig: Vor Anwendung des Skripts ein Backup der Datenbank erstellen!
	*/
	
	// *** Konfiguration ***
	
	// Anzahl der Tage, die in der Datenbank verbleiben sollen.
	def daysToKeep = 365
	
	// Testlauf durchführen? Bei einem Testlauf wird die Datenbank nicht verändert.
	// (Ja: true, Nein: false)
	def testRun = true
	
	// *** Skript ***
	
	log.info "Alte Zeitreihendaten werden gelöscht:"
	def deleteDate=new Date()-daysToKeep
	log.info "Löschdatum: ${deleteDate.format("dd.MM.YYYY")}"
	def totalCnt=0
	database.dataPoints.each { dp ->
	    def cnt
	    if (testRun) {
	        cnt=database.getCount(dp, null, deleteDate)
	    } else {
	        cnt=database.deleteTimeSeries(dp, null, deleteDate)
	    }
	    totalCnt+=cnt
	    log.info "$dp.displayName: $cnt Einträge"
	}
	log.info "Gesamtanzahl der gelöschten Einträge: $totalCnt"
}

Hinweis: Jeweils um 2 Uhr nachts werden alle Einträger älter als 365 Tage gelöscht. Damit das Skript auch die Datenbank verändert, die Zeile def testRun = true auf def testRun = false abändern.

@mdzio mdzio closed this as completed in e4011bc Aug 27, 2022
@the-other-martin
Copy link

Hallo Mathias!
Großartig! Vielen Dank! Ich habe heute auf V3.2.0 upgraded und das script oben auf 31 Tage gestellt.
Schöne Grüße, Martin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Verbesserung Verbesserungswunsch Verwaltung Verwaltung der Zeitreihen
Projects
None yet
Development

No branches or pull requests

3 participants