Komponenten der Vereinheitlichung

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:

example.json
1
2
3
4
5
{
  "device_id": "sensor-123",
  "temp": 27.3,
  "time":  1739960923
}

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 Tabellen equipment, channels, units und sessions.

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
  }
]
Zuletzt aktualisiert am