Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:middleware:datenbank

Dies ist eine alte Version des Dokuments!


Middleware-Datenbank

Für die Speicherung der Daten wird eine Datenbank eingesetzt. Da nahezu jede Datenbank dazu verwendet werden kann, wird hier beispielhaft nur die Verwendung von MySQL beschrieben. MySQL ist eine kostenlose Datenbank für viele Betriebssysteme und kann auch auf den hier interessanten Kleinstrechnern unter Linux betrieben werden.

Das Datenbankschema für den Volkszähler ist einfach. Es besteht aus vier Tabellen:

  • data: Tabelle der Datenwerte mit Zeitstempel und Zuordnung zum Anzeigegerät
  • entities: Die Anzeigegeräte und ihre ID (UUID)
  • entities_in_aggregator: <weiss nicht>
  • properties: Die Bezeichnung und andere Eigenschaften der Anzeigegeräte wie Auflösung und ob sie öffentlich auswählbar sind, oder nicht

(das datenbankschema wird durch das fuer die middleware verwendete doctrine-framework automatisch generiert!)

Datenbank administrieren

Die einfachste Möglichkeit besteht darin, das ganze über die Webobefläche zu administrieren. Für den Fall des Rasperrpi ist das dann :

 "http://raspberrypi/phpmyadmin/" 

Als Benutzername/Passwort dann entwender vz/demo oder der richtige Administratorzugang (root/raspberry) der in

 /etc/mysql/debian.cnf 

steht.

Datenbank sichern

Da ich den Rasperrypi verwende, möchte ich der SD-Karte unnötige Schreibzugriffe ersparen. Daher landen die zu sichernden Daten direkt auf einem Backuprechner.

destssh0=/home/backup/`uname -n`/
destssh2=${destssh0}/`date +%Y%m%d`
mysqldump -uvz -pdemo volkszaehler --single-transaction | gzip -c | ssh root@backuprechner "cat > $destssh2.mysql_backup.gz"

Achtung: bevor das Script funktioniert, MUSS der SSH Fernzugriff ohne Passwort aktiviert sein. Ich habe hier auf die Anleitung http://mathias-kettner.de/lw_ssh_anmeldung_ohne_passwort.html zurückgegriffen.

Datenbank zurückspielen

mysql -uvz -pdemo volkszaehler < 20131124.mysql_backup

Datenbank nach CSV exportieren

Um die Daten sich in Excel oder Openoffice anzusehen, ist es sinnvoll diese nach CSV zu exportieren. Dazu habe ich recht viel im Internet suchen müssen, bin aber am Ende zu folgendem Ergebnis gekommen:

#!/bin/bash

database=volkszaehler
table=data

echo 'SELECT * FROM ' ${table} | mysql -B -uvz -pdemo ${database} | gzip -c >  ${database}_${table}_`date '+%Y-%m-%d-%H%M'`.txt.gz 
software/middleware/datenbank.1441888767.txt.gz · Zuletzt geändert: 2015/09/10 14:39 von udo1