development:schema
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
development:schema [2010/07/23 01:34] – angelegt steffenvogel | development:schema [2015/02/18 16:30] (aktuell) – [Typen] Auswertung präzisiert andig | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== | + | ====== |
- | Hier habe ich mal eine Übersicht aller Daten (Enities) | + | Auf dieser Seite beschreibe |
- | ===== Daten ===== | + | |
- | ==== Kanäle | + | ===== Objekte (" |
- | Kanäle sind laut unserer [[development: | + | |
- | Folgende Daten sind mit einem Kanal verbunden: | ||
- | * ein Name | ||
- | * eine Beschreibung | ||
- | * eine globale UCID - **U**nique **c**hannel **ID** (ist weltweit eindeutig, und wird für die Controller -> Server API benötigt) | ||
- | * eine interne ID | ||
- | * die Messgröße des Kanals | ||
- | * die Auflösung/ | ||
- | * die Kosten des Kanals (hauptsächlich für Pulszähler interessant) | ||
- | ==== Messwerte | + | ==== Typen ==== |
- | Die Messwerte bestehen aus folgenden Daten: | + | |
- | * Referenz auf Kanal (Foreign Key über interne Kanal-ID) | + | |
- | * Zeitstempel (ordnet jeden Messwert einem genauen Zeitpunkt zu, sollte mindestens in Millisekunden Auflösung gespeichert werden) | + | |
- | * Wert (enthält den absoluten Messwert eines Sensors oder die Anzahl der Pulse eines Pulszählers nach dem letzten Messwert, je nach Typ des durch Kanal[ID] referenzierten Kanals) | + | |
- | ==== Gruppierung | + | [[http:// |
+ | |||
+ | === Kanäle (" | ||
+ | Kanäle sind nach unserer [[development: | ||
+ | |||
+ | Sie können [[# | ||
+ | |||
+ | === Gruppierung (" | ||
Die Gruppierung der Zähler hat mehrere Aufgaben: | Die Gruppierung der Zähler hat mehrere Aufgaben: | ||
Zeile 33: | Zeile 26: | ||
* sie kann gruppierte Kanäle gemeinsam auswerten | * sie kann gruppierte Kanäle gemeinsam auswerten | ||
* Visualisierung | * Visualisierung | ||
- | * Summe | ||
- | * statistisch (Durchschnitt, | ||
* ein Kanal kann in mehreren Gruppen enthalten sein | * ein Kanal kann in mehreren Gruppen enthalten sein | ||
* eine Gruppe kann selbst in mehreren Gruppen enthalten sein (Rekursion) | * eine Gruppe kann selbst in mehreren Gruppen enthalten sein (Rekursion) | ||
- | ===== Referenzierung ===== | + | ==== Eigenschaften (" |
- | ==== global (weltweit) ==== | + | [[https://github.com/ |
- | Im Daten Abschnitt fielen schon mehrmals die Begriffe UCID, UGID usw. Gemeint sind damit [http://de.wikipedia.org/wiki/Universally_Unique_Identifier UUID]s gemäß [http://tools.ietf.org/html/rfc4122 RFC4122]. | + | |
- | Diese IDs können eine Gruppe, einen Kanal usw. weltweit | + | ==== Referenzierung ==== |
+ | |||
+ | === global (weltweit) === | ||
+ | Ein wichtiger Bestandteil unserer API ist die weltweit eindeutige Referenzierung aller Entities durch eine [[http:// | ||
+ | |||
+ | Die UUID's werden immer durch die Middleware zufällig generiert um die Kollisionsgefahr | ||
Das ganze hat Vorteile: | Das ganze hat Vorteile: | ||
- | * einmal installiert behält ein Zähler immer seine UCID | + | * einmal installiert behält ein Zähler immer seine UUID |
- | * das Mergen von Backends | + | * das Mergen von Middlewares |
* bieten durch ihre Komplexität einen gewissen Zugriffsschutz | * bieten durch ihre Komplexität einen gewissen Zugriffsschutz | ||
Zeile 54: | Zeile 49: | ||
* schwer zu merken | * schwer zu merken | ||
- | ==== lokal (auf dem Backend) ==== | + | === lokal (auf der Middleware) === |
- | Um Speicherplatz zu sparen nutzt das Backend | + | Um Speicherplatz zu sparen nutzt die Middleware |
+ | |||
+ | === mysql Database === | ||
+ | The mysql database structure can be analyzed with the mysql command line client. | ||
+ | The following results are as of 2014-05-22: | ||
+ | |||
+ | <code sql> | ||
+ | show tables; | ||
+ | </ | ||
+ | |||
+ | Tables_in_volkszaehler | ||
+ | * aggregate | ||
+ | * data | ||
+ | * entities | ||
+ | * entities_in_aggregator | ||
+ | * properties | ||
+ | |||
+ | <code sql> | ||
+ | describe entities; | ||
+ | </ | ||
+ | |||
+ | ^ Field ^ Type ^ Null ^ Key ^ Default ^ Extra ^ | ||
+ | | id | int(11) | ||
+ | | uuid | varchar(36) | ||
+ | | type | varchar(255) | NO | ||
+ | | class | varchar(255) | NO | ||
+ | |||
+ | <code sql> | ||
+ | describe properties; | ||
+ | </ | ||
+ | |||
+ | ^ Field ^ Type ^ Null ^ Key ^ Default ^ Extra ^ | ||
+ | | id | int(11) | ||
+ | | entity_id | int(11) | ||
+ | | pkey | varchar(255) | NO | ||
+ | | value | longtext | ||
+ | |||
+ | <code sql> | ||
+ | describe data; | ||
+ | </ | ||
+ | ^ Field ^ Type ^ Null ^ Key ^ Default ^ Extra ^ | ||
+ | | id | int(11) | ||
+ | | channel_id | int(11) | ||
+ | | timestamp | ||
+ | | value | double | ||
+ | |||
+ | <code sql> | ||
+ | describe aggregate; | ||
+ | </ | ||
+ | |||
+ | ^ Field ^ Type ^ Null ^ Key ^ Default ^ Extra ^ | ||
+ | | id | int(11) | ||
+ | | channel_id | int(11) | ||
+ | | type | smallint(6) | NO | ||
+ | | timestamp | ||
+ | | value | double | ||
+ | | count | int(11) | ||
+ | |||
+ | <code sql> | ||
+ | describe entities_in_aggregator; | ||
+ | </ | ||
+ | |||
+ | ^ Field ^ Type ^ Null ^ Key ^ Default ^ Extra ^ | ||
+ | | parent_id | int(11) | NO | PRI | NULL | | | ||
+ | | child_id | ||
+ | |||
+ | ===== Messwerte (" | ||
+ | Die Messwerte bestehen aus folgenden Daten: | ||
+ | * Referenz auf Kanal (Foreign Key über interne Kanal-ID) | ||
+ | * Zeitstempel (ordnet jeden Messwert einem genauen Zeitpunkt zu, sollte mindestens in Millisekunden Auflösung gespeichert werden) | ||
+ | * Wert (enthält den absoluten Messwert eines Sensors oder die Anzahl der Pulse eines Pulszählers nach dem letzten Messwert, je nach Typ des durch Kanal[ID] referenzierten Kanals) |
development/schema.1279841669.txt.gz · Zuletzt geändert: 2011/05/29 13:09 (Externe Bearbeitung)