Diese Seite erklärt, was Hermetry schreibt, wenn ein Flow einen Messwert speichert, und warum. Das hilft Ihnen vorherzusagen, was ein Diagramm oder die API zurückgibt, und warum manche Werte an einer Stelle erscheinen, an einer anderen aber nicht.
Nur Flows speichern Daten
Eine Gerätenachricht wird gespeichert, weil ein Flow dies vorgibt. Jede Organisation beginnt mit einem Default root flow, der jede Gerätenachricht empfängt und Telemetrie sowie Client-Attribute speichert. Der Block Save telemetry ist der einzige Weg, auf dem Telemetrie geschrieben wird:
- Entfernen Sie den Block (oder den Zweig, der zu ihm führt), werden die Messwerte nicht mehr gespeichert. Das Gerät wird weiterhin als online angezeigt, da die Verbindung separat erfasst wird.
- Nur
msg.payloadwird gespeichert. Die Metadaten der Nachricht (das Topic, der Transport, der Gerätename) werden nie gespeichert. - Ein Testlauf eines Flows speichert nie etwas.
Siehe Hosts, der Root-Flow und Profil-Root-Flows.
Eine Zeile pro Nachricht
Wenn der Block Save telemetry einen Datensatz schreibt, fügt der Speicher eine Zeile für den gesamten Datensatz hinzu, nicht eine Zeile pro Schlüssel:
| Teil der Zeile | Enthält |
|---|---|
| Gerät und Zeit | Die ID des Geräts und der Zeitstempel des Datensatzes (Millisekunden, UTC) |
| Zahlen | Jeder numerische Wert, gespeichert nach Schlüssel-ID |
| Andere Werte | Boolesche Werte, Text und JSON-Werte, gespeichert nach Schlüsselname |
| Nachrichten-Fingerabdruck | Ein Hash der Werte, der verwendet wird, um dieselbe doppelt zugestellte Nachricht zu erkennen |
Ein Datensatz mit 8 Schlüsseln ist eine Zeile. Dadurch bleibt der Speicherbedarf gering und die API kann eine ganze Nachricht auf einmal zurückgeben.
Das Schlüsselverzeichnis
Jeder Schlüssel, den Ihre Organisation verwendet, erhält beim ersten Speichern eine kleine Nummer in einem Verzeichnis pro Organisation. Das Verzeichnis wird von allen Ihren Geräten gemeinsam genutzt: temperature ist ein Schlüssel, egal ob ihn ein Gerät oder zehntausend senden.
- Schlüssel werden nie umbenannt oder wiederverwendet. Ein Schlüssel bleibt im Verzeichnis, nachdem die Geräte, die ihn gesendet haben, gelöscht wurden.
- Ihr Tarif kann die Anzahl unterschiedlicher Schlüssel begrenzen. Ein neuer Schlüssel über dem Limit wird nicht gespeichert, während die übrigen Schlüssel desselben Datensatzes gespeichert werden. Siehe Telemetrie-Schlüssel.
Aktuelle Werte
Neben dem Verlauf speichert der Speicher pro Gerät und Schlüssel einen aktuellen Wert mit seinem Zeitstempel. Die Wertkarten der Dashboards, der Reiter Telemetry der Geräteseite und der Block Latest values im Flow lesen diesen Wert.
Der aktuelle Wert wird nur auf einen strikt neueren Zeitstempel aktualisiert:
- Ein Messwert mit älterem Zeitstempel (ein zwischengespeicherter Rückstau, der nach einem neueren eintrifft) wird im Verlauf gespeichert, ersetzt aber den aktuellen Wert nicht.
- Eine korrigierte erneute Sendung mit demselben Zeitstempel wird als eigene Nachricht gespeichert, wenn ihre Werte abweichen, der aktuelle Wert behält jedoch den ersten.
Auf diese Weise stimmen Verlauf, aktuelle Werte und die Live-Ansicht immer überein.
Aggregate und Rollups
Zahlen werden außerdem zusammengefasst, damit lange Zeiträume schnell gelesen werden können:
| Ebene | Inhalt | Befüllt durch |
|---|---|---|
| 1-Minuten-Aggregate | Pro numerischem Schlüssel und Minute: Summe, Anzahl, Minimum, Maximum und der letzte Wert | Ein Job, der jede Minute läuft |
| Stunden-Rollups | Dieselben fünf Kennzahlen pro Stunde | Abgeleitet aus den Minuten-Aggregaten |
| Tages-Rollups | Dieselben fünf Kennzahlen pro Tag (UTC) | Abgeleitet aus den Minuten-Aggregaten |
Text, boolesche Werte und JSON-Werte werden nicht aggregiert. Ein Messwert, der verspätet für eine Minute eintrifft, die bereits zusammengefasst wurde, markiert diese Minute für einen weiteren Durchlauf, sodass verspätete Daten eingerechnet werden. Siehe Aggregate und Rollups.
Welche Quelle eine Abfrage verwendet
| Zeitfenster | Gelesen aus |
|---|---|
| Bis zu 24 Stunden | Die Rohnachrichten-Zeilen (jeder Messwert) |
| Länger | Das feinste Rollup, das unter 10.000 Intervallen bleibt: Minuten, dann Stunden, dann Tage |
Sie können in der API auch eine bestimmte Auflösung anfordern. Siehe Die History-API.
Aufbewahrung
Jede Ebene wird für ihre eigene Zeitspanne aufbewahrt. Rohzeilen werden höchstens 90 Tage aufbewahrt, Minuten-Aggregate höchstens 31 Tage, und Stunden- und Tages-Rollups für die volle Aufbewahrungsklasse Ihres Tarifs. Siehe Wie lange Daten aufbewahrt werden.
Live-Werte
Nachdem ein Speichervorgang abgeschlossen ist, werden die neuen Werte an offene Dashboards und Geräteseiten übertragen, die das Gerät beobachten. Ein Wert, der nicht gespeichert wurde (zum Beispiel ein Schlüssel, den der Root-Flow herausfiltert), erscheint nie live. Die Live-Übermittlung erfolgt höchstens viermal pro Sekunde und Schlüssel; dazwischenliegende Werte werden trotzdem gespeichert.
Wenn ein Gerät gelöscht wird
Beim Löschen eines Geräts werden seine Messwerte, Minuten-Aggregate, Rollups und aktuellen Werte im Hintergrund entfernt, jeweils ein Tag Daten nach dem anderen. Die von ihm verwendeten Schlüssel bleiben im Verzeichnis.
Zählung
| Zähler | Bedeutung |
|---|---|
| IoT-Nachrichten | Von Geräten empfangene Telemetrie- und Attributnachrichten, gezählt bei Eingang, unabhängig davon, ob ein Flow sie speichert |
| Gespeicherte IoT-Datenpunkte | Die Werte, die der Speicher tatsächlich eingefügt hat. Ein vom Speicher verworfenes Duplikat wird nicht gezählt. Kein Kontingent. |

