Benutzer-Werkzeuge

Webseiten-Werkzeuge


development:schema

Dies ist eine alte Version des Dokuments!


Daten & Referenzierung

Hier habe ich mal eine Übersicht aller Daten (Enities) und deren Referenzierung im Volkszähler Projekt erstellt.

Daten

Kanäle

Kanäle sind laut unserer definitions jede Art von Zähler oder Sensor (Strom, Wasser, Gas, Luftdruck, Feuchtigkeit etc).

Folgende Daten sind mit einem Kanal verbunden:

  • ein Name
  • eine Beschreibung
  • eine globale UCID - Unique channel 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/Genauigkeit des Kanals (hauptsächlich für Pulszähler interessant)
  • die Kosten des Kanals (hauptsächlich für Pulszähler interessant)

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)

Gruppierung

Die Gruppierung der Zähler hat mehrere Aufgaben:

  • sie strukturiert die Kanäle nach ihren realen oder virtuellen Gegebenheiten
    • z.B. alle Temperatursensoren in einer Stadt
    • z.B. die Drei Phasen eines Haushalts
    • z.B. mehrere Parteien an einem Hausanschluss
    • z.B. WGs
    • z.B. alle Wohnungen eines Vermieters
  • sie kann gruppierte Kanäle gemeinsam auswerten
    • Visualisierung
    • Summe
    • statistisch (Durchschnitt, Min, Max etc.)
  • ein Kanal kann in mehreren Gruppen enthalten sein
  • eine Gruppe kann selbst in mehreren Gruppen enthalten sein (Rekursion)

Referenzierung

global (weltweit)

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 eindeutig referenzieren. Aufgrund der vielen Möglichkeiten ist eine Absprache, Reservierung über die Nutzung von UUIDs nicht nötig, da die Kollisionsgefahr sehr gering ist (vgl. sha1-Hashes bei git).

Das ganze hat Vorteile:

  • einmal installiert behält ein Zähler immer seine UCID
  • das Mergen von Backends mit ihren Messwerten wäre möglich
  • bieten durch ihre Komplexität einen gewissen Zugriffsschutz

und Nachteile:

  • relativ viel Daten (16byte vs. 2byte für eine normale Interger-ID)
  • schwer zu merken

lokal (auf dem Backend)

Um Speicherplatz zu sparen nutzt das Backend 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 im Backend keine inkonsistenten Daten bekommen können.

development/schema.1279841669.txt.gz · Zuletzt geändert: 2011/05/29 13:09 (Externe Bearbeitung)