howto:datenmengen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
howto:datenmengen [2018/11/29 15:45] – wf_bitplan.com | howto:datenmengen [2021/08/11 13:30] – docker besonderheiten eingefügt mr.gosh | ||
---|---|---|---|
Zeile 29: | Zeile 29: | ||
delete FROM `data` where timestamp< | delete FROM `data` where timestamp< | ||
</ | </ | ||
- | Das Beispiel löscht alle Daten die vor den letzten 24h liegen. | + | Das Beispiel löscht alle Daten die vor den letzten 24h liegen. |
=== weich === | === weich === | ||
Zeile 35: | Zeile 35: | ||
Dazu steht das Script [[https:// | Dazu steht das Script [[https:// | ||
< | < | ||
- | mysql --user=root -praspberry | + | sudo mysql --user=root -praspberry |
Welcome to the MySQL monitor. | Welcome to the MySQL monitor. | ||
Your MySQL connection id is 37217 [..] | Your MySQL connection id is 37217 [..] | ||
Zeile 55: | Zeile 55: | ||
===== Performance der Middleware erhöhen: Datenaggregation / Cache ===== | ===== Performance der Middleware erhöhen: Datenaggregation / Cache ===== | ||
- | Bleiben die Daten in voller Auflösung erhalten, wird mit der Zeit die Middleware immer langsamer, da es aus den Daten die zur Anzeige benötigten suchen muss. Gerade bei grossen | + | Bleiben die Daten in voller Auflösung erhalten, wird mit der Zeit die Middleware immer langsamer, da es aus den Daten die zur Anzeige benötigten suchen muss. Gerade bei großen |
Abhilfe schafft hier die Daten ganzer Zeiträume, wie z.B. eines Tages, in einzelnen Datenpunkten zusammenzufassen (etwa Durchschnittstemperatur an diesem Tag). Dies erzeugt zwar mehr Daten in der Datenbank und benötigt somit mehr Platz auf der Festplatte. Allerdings kann auf die Daten effizienter zugegriffen werden, so dass sich unter dem Strich die Geschwindigkeit erhöht. | Abhilfe schafft hier die Daten ganzer Zeiträume, wie z.B. eines Tages, in einzelnen Datenpunkten zusammenzufassen (etwa Durchschnittstemperatur an diesem Tag). Dies erzeugt zwar mehr Daten in der Datenbank und benötigt somit mehr Platz auf der Festplatte. Allerdings kann auf die Daten effizienter zugegriffen werden, so dass sich unter dem Strich die Geschwindigkeit erhöht. | ||
Die Lösung besteht aus zwei Komponenten. Die eine ist bereits im Frontend eingebaut und aktiviert sich automatisch, | Die Lösung besteht aus zwei Komponenten. Die eine ist bereits im Frontend eingebaut und aktiviert sich automatisch, | ||
- | Zunächst muss die Option in der volkszaehler.conf.php aktiviert werden: (die findet ihr unter: / | + | |
- | < | + | |
Die folgende Zeile aggregiert alle bestehenden Daten. Der Vorgang kann daher einige Stunden benötigen: | Die folgende Zeile aggregiert alle bestehenden Daten. Der Vorgang kann daher einige Stunden benötigen: | ||
Zeile 73: | Zeile 72: | ||
</ | </ | ||
- | Mit den folgenden Einträgen in einer crontab hält man den Cache aktuell. Erstellt wird die crontab mit: ' | + | Mit den folgenden Einträgen in einer crontab hält man den Cache aktuell. Erstellt wird die crontab mit: '' |
Das Script legt nur an, was noch nicht angelegt wurde und läuft daher nur kurz: | Das Script legt nur an, was noch nicht angelegt wurde und läuft daher nur kurz: | ||
< | < | ||
Zeile 95: | Zeile 94: | ||
</ | </ | ||
Anm.: Die Einträge für " | Anm.: Die Einträge für " | ||
+ | |||
+ | === Im Falle eines Docker-Setups zu beachten === | ||
+ | Bei dem Einsatz von docker funktionieren bestimmte Teile der Anleitung etwas anders. Es muss z.B. erstmal der Docler Container betreten werden. Welceh ID der Docker-Container hat findet Ihr mittels des folgenden Befehls heraus: | ||
+ | < | ||
+ | docker ps | grep volkszaehlerorg_volkszaehler | ||
+ | </ | ||
+ | |||
+ | danach könnt ihr den docker Container betreten mittels des folgenden Befehls: | ||
+ | < | ||
+ | docker exec -it --user root hier-die-id-von-eben-eintragen sh | ||
+ | </ | ||
+ | |||
+ | hier kann die aggregation dann mittels des leicht angepassten Befehls von oben durchgeführt werden: | ||
+ | < | ||
+ | php / | ||
+ | </ | ||
=== Aggregation prüfen === | === Aggregation prüfen === | ||
Zeile 112: | Zeile 127: | ||
=== duplicates === | === duplicates === | ||
- | Es kann vorkommen | + | Es kann vorkommen, dass sich ein Zählerstand oder Momentanwert über längere Zeit nicht verändert. Dennoch geht vzlogger davon aus, dass jeder gleich wichtig ist und schickt ihn an die Middleware weiter was zu aufeinander folgenden Datensätzen mit identischem Wert führt. // |
<code | vzlogger.conf> | <code | vzlogger.conf> | ||
" | " | ||
Zeile 134: | Zeile 149: | ||
^ " | ^ " | ||
^ " | ^ " | ||
- | |||
- | ===== Aggregieren mit mySQL ===== | ||
- | Das folgende mySQL Script erzeugt eine " | ||
- | Im Beispiel werden die Werte für den Zeitraum 2014-01-01 bis 2018-11-30 aufsummiert. | ||
- | |||
- | Als Basis diente eine SQL-Abfrage zur Erzeugung einer Liste von Tagen siehe: https:// | ||
- | |||
- | < | ||
- | create table daily as | ||
- | select | ||
- | dates.from_date, | ||
- | from ( | ||
- | select | ||
- | date_add(' | ||
- | date_add(' | ||
- | from ( | ||
- | SELECT @row := @row + 1 as row FROM | ||
- | (select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) t, | ||
- | (select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) t2, | ||
- | (select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) t3, | ||
- | (select 0 union all select 1 union all select 3 union all select 4 union all select 5 union all select 6 union all select 6 union all select 7 union all select 8 union all select 9) t4, | ||
- | (SELECT @row:=-1) r | ||
- | ) sequence | ||
- | where date_add(' | ||
- | join entities | ||
- | join properties p on e.id=p.entity_id | ||
- | join properties r on e.id=r.entity_id | ||
- | where p.pkey=' | ||
- | and e.type=' | ||
- | </ | ||
===== Aufrüstung: | ===== Aufrüstung: |
howto/datenmengen.txt · Zuletzt geändert: 2024/05/18 10:16 von jau