Komponenten der Vereinheitlichung

Die Bausteine der Datenvereinheitlichung — Formatstandardisierung, Strukturvereinheitlichung, semantische Vereinheitlichung, Normalisierung und Nutzung vereinheitlichter Daten.

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
{
  "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:

FeldTypBeschreibung
idbigintEindeutiger Datensatzbezeichner (Primärschlüssel).
equipment_idbigintReferenz auf Ausrüstung (equipment.id).
seance_idbigintVerweis auf Sitzung (seances.id).
channel_idbigintVerweis auf den Kanal (channels.id).
unit_idbigintVerweis auf die Maßeinheit (units.id).
archive_type_idintegerReferenz auf den Archivtyp (referenceparameters.id).
event_timeintegerDer Zeitpunkt des Ereignisses (z.B. Zeitstempel).
valueCharacter varying(100)Der vom Kanal empfangene Wert.
created_attimestamp(6) without time zoneZeitpunkt, zu dem der Eintrag erstellt wurde.
updated_attimestamp(6) without time zoneZeitpunkt, 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.

FeldTypBeschreibung
idbigintEindeutiger Datensatzbezeichner (Primärschlüssel).
NameZeichen variierend(30)Name der Maßeinheit.
VarnameZeichen variierend(30)Kurzer Variablenname für die Maßeinheit.
BeschreibungZeichen variierend(100)Beschreibung der Maßeinheit.
conversion_factordouble precisionUmrechnungsfaktor für eine Maßeinheit.
rundungsmallintAnzahl der Dezimalstellen, auf die gerundet wird.
SynonymeCharacter varying[]Array von Synonymen für die Maßeinheit.
created_attimestamp(6) without time zoneZeitpunkt, zu dem der Eintrag erstellt wurde.
updated_attimestamp(6) without time zoneZeitpunkt, 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

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:

bash
GET /api/v1/channel_data?equipment_id=1&archive_type=daily&channel_id=3

Beispielantwort:

json
[
  {
    "id": 123,
    "equipment_id": 1,
    "seance_id": 2,
    "channel_id": 3,
    "archive_type_id": 4,
    "value": 42.5,
    "event_time": 1739950861
  }
]
Zuletzt aktualisiert am

War diese Seite hilfreich?