[vz-dev] Unittests für die Middleware

2013-10-12 Diskussionsfäden Andreas Goetz
Hallo Zusammen,

unter https://github.com/andig/volkszaehler.org/tree/unittest/test steht
ein erster Satz Unit Tests bereit. Getestet werden können damit v.a. die
verschiedenen Meter (z.B. DataMeterTest).
Das Ganze ist als work in progress zu betrachten, ängst nicht alle Tests
sind imlementiert und der Code ist sicher auch nicht so elegant wie die MW
selbst.
Aktuell baue ich weitere Tests auf um eine Datenaggregation zur
Performanceoptimierung einzubauen.

Kommentare bitte direkt mittels git issues.

vg
Andreas


[vz-dev] HUGE performance improvement for grouped queries

2013-10-12 Diskussionsfäden Andreas Goetz
Hallo Zusammen!

Um der Performance meiner VZ Installation auf dem Raspi etwas nachzuhelfen
habe ich Aggregation von Daten als neues Feature zum VZ hinzugefügt.
Anstatt wie bei vzcompress2 Daten zu löschen werden diese in einer
separaten Tabelle aggregiert- in der aktuellen Version auf Tagesebene.

Wenn die MW jetzt Abfragen nach aggregierten Daten stellt, wie z.B.
from=1.1.2000 to=now group=month dann werden die SQL statements so
umgebaut, dass die Daten aus der Agrgegationstabelle kommen statt aus der
Datentabelle. Da hier _deutlich_ weniger Daten liegen gehts natürlich
schneller.

Bisher nicht implementiert ist ein automatisches Tuning eingehender
Anfragen. Wenn z.B. das Frontend obenstehende Anfrage mit tuples=200
ausführt, wird es ohne vzcompress immer noch sehr lange dauern. Denkbar
wäre eine Automatik einzubauen die je nach Aggressivität eine Gruppierung
nach Tag oder Stunde hinzuschaltet.

Added data aggregation:
1. create aggregate table using misc/sql/aggregation.sql
2. run initial aggregation using misc/sql/aggregation.sql
3. set $config['aggregate'] = true in etc/volkszaehler.conf.php
4. setup CRON to run delta aggregation using misc/sql/aggregation.sql

https://github.com/andig/volkszaehler.org/tree/aggregate

Jetzt würde ich mich über Feedback und vor allem Tests freuen!

Gruss,
Andreas