Komponenten der Vereinheitlichung
Standardisierung der Formate
Alle aus verschiedenen Quellen stammenden Daten werden in ein einziges Format umgewandelt.
Die Daten von IoT-Geräten liegen beispielsweise im JSON-Format vor:
|
|
Vereinheitlichung der Datenstruktur
Definition einer einzigen Struktur für alle Daten, unabhängig von ihrer Quelle.
Alle Daten werden in der Tabelle channel_data
gespeichert, die sie mit Geräten, Sitzungen, Kanälen und Maßeinheiten verknüpft:
Feld | Typ | Beschreibung |
---|---|---|
id |
bigint |
Eindeutiger Datensatzbezeichner (Primärschlüssel). |
equipment_id |
bigint |
Referenz auf Ausrüstung (equipment.id ). |
seance_id |
bigint |
Verweis auf Sitzung (seances.id ). |
channel_id |
bigint |
Verweis auf den Kanal (channels.id ). |
unit_id |
bigint |
Verweis auf die Maßeinheit (units.id ). |
archive_type_id |
integer |
Referenz auf den Archivtyp (referenceparameters.id ). |
event_time |
integer |
Der Zeitpunkt des Ereignisses (z.B. Zeitstempel). |
value |
Character varying(100) |
Der vom Kanal empfangene Wert. |
created_at |
timestamp(6) without time zone |
Zeitpunkt, zu dem der Eintrag erstellt wurde. |
updated_at |
timestamp(6) without time zone |
Zeitpunkt, zu dem der Eintrag zuletzt aktualisiert wurde. |
Wo:
equipment_id
: Eindeutige Kennung des Geräts.seance_id
: Eindeutige Kennung der Sitzung.channel_id
: Eindeutige Kennung des Kanals.unit_id
: Eindeutiger Bezeichner der Maßeinheit.
Bei der Speicherung von Daten aus verschiedenen Geräten in einem zentralen Speicher:
- Die Daten werden in ein einheitliches Format und eine einheitliche Struktur umgewandelt;
- in einer einheitlichen Datentabelle
channel_data
gespeichert.
Semantische Vereinheitlichung
Alle Daten haben in allen Systemen die gleiche Bedeutung und Interpretation.
Zum Beispiel:
- Alle Zeitstempel sind im Format
UTC
. Dies wurde in der Systementwurfsphase eingeführt. - Alle Systeme verwenden die gleichen Maßeinheiten (z. B. Grad Celsius).
Um die Maßeinheiten zu vereinheitlichen, wurde dem System das Modell Units hinzugefügt, in dem die für die Kanaldaten verwendeten Maßeinheiten gespeichert werden.
Feld | Typ | Beschreibung |
---|---|---|
id |
bigint |
Eindeutiger Datensatzbezeichner (Primärschlüssel). |
Name |
Zeichen variierend(30) |
Name der Maßeinheit. |
Varname |
Zeichen variierend(30) |
Kurzer Variablenname für die Maßeinheit. |
Beschreibung |
Zeichen variierend(100) |
Beschreibung der Maßeinheit. |
conversion_factor |
double precision |
Umrechnungsfaktor für eine Maßeinheit. |
rundung |
smallint |
Anzahl der Dezimalstellen, auf die gerundet wird. |
Synonyme |
Character varying[] |
Array von Synonymen für die Maßeinheit. |
created_at |
timestamp(6) without time zone |
Zeitpunkt, zu dem der Eintrag erstellt wurde. |
updated_at |
timestamp(6) without time zone |
Zeitpunkt, zu dem der Eintrag zuletzt aktualisiert wurde. |
Normalisierung der Daten
Das Systemdatenmodell ist auf die (dritte) Normalform von Boyce-Codd in Form von atomaren (skalaren) Werten reduziert. Einige Entitäten des Datenmodells verwenden zusammengesetzte Strukturen, um die Arbeit mit seltenen Nicht-Standard-Attributen zu optimieren.
Die Daten sind in logische Tabellen unterteilt (equipment
, channels
, units
, sesances
), wodurch Redundanz und Doppelarbeit vermieden werden.
Zum Beispiel:
- Die Tabelle
channel_data
verweist über Fremdschlüssel auf die Tabellenequipment
,channels
,units
undsessions
.
Verwendung vereinheitlichter Daten
Vereinheitlichte Daten können für Analysen, Visualisierung, maschinelles Lernen und andere Aufgaben verwendet werden.
Datenanalyse mit SQL
SELECT equipment_id, AVG(value) as avg_value
FROM channel_data
WHERE archive_type_id = 4 AND channel_id = 3
GROUP BY equipment_id
ORDER BY equipment_id
Abfrage von Daten über REST API
Beispielanfrage:
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3
Beispielantwort:
[
{
"id": 123,
"equipment_id": 1,
"seance_id": 2,
"channel_id": 3,
"archive_type_id": 4,
"value": 42.5,
"event_time": 1739950861
}
]