Auf dieser Seite beschreibe ich die Datenstruktur unserer Middleware und der damit verbundenen Datenbank.
Kanäle sind nach unserer definitions jede Art von Zähler oder Sensor (Strom, Wasser, Gas bzw. Temperatur, Luftdruck, Feuchtigkeit etc).
Sie können Messwerte speichern.
Die Gruppierung der Zähler hat mehrere Aufgaben:
Ein wichtiger Bestandteil unserer API ist die weltweit eindeutige Referenzierung aller Entities durch eine UUID gemäß RFC4122.
Die UUID's werden immer durch die Middleware zufällig generiert um die Kollisionsgefahr zu minimieren.
Das ganze hat Vorteile:
und Nachteile:
Um Speicherplatz zu sparen nutzt die Middleware intern nur 2byte lange IDs. Diese werden mit Foreign Keys in der Datenbank untereinander verknüpft. Das sorgt dafür das wir zusätzlich zur Absicherung in der Middleware keine inkonsistenten Daten bekommen können.
The mysql database structure can be analyzed with the mysql command line client. The following results are as of 2014-05-22:
SHOW TABLES;
Tables_in_volkszaehler
DESCRIBE entities;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | int(11) | NO | PRI | NULL | auto_increment |
uuid | varchar(36) | NO | UNI | NULL | |
type | varchar(255) | NO | NULL | ||
class | varchar(255) | NO | NULL |
DESCRIBE properties;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | int(11) | NO | PRI | NULL | auto_increment |
entity_id | int(11) | YES | MUL | NULL | |
pkey | varchar(255) | NO | NULL | ||
value | longtext | NO | NULL |
DESCRIBE DATA;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | int(11) | NO | PRI | NULL | auto_increment |
channel_id | int(11) | YES | MUL | NULL | |
timestamp | bigint(20) | NO | NULL | ||
value | double | NO | NULL |
DESCRIBE aggregate;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | int(11) | NO | PRI | NULL | auto_increment |
channel_id | int(11) | YES | MUL | NULL | |
type | smallint(6) | NO | NULL | ||
timestamp | bigint(20) | NO | NULL | ||
value | double | NO | NULL | ||
count | int(11) | NO | NULL |
DESCRIBE entities_in_aggregator;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
parent_id | int(11) | NO | PRI | NULL | |
child_id | int(11) | NO | PRI | NULL |
Die Messwerte bestehen aus folgenden Daten: