DE102021115115A1 - Kodieren und Dekodieren von Metriken aus physikalischen Anlagen - Google Patents

Kodieren und Dekodieren von Metriken aus physikalischen Anlagen Download PDF

Info

Publication number
DE102021115115A1
DE102021115115A1 DE102021115115.5A DE102021115115A DE102021115115A1 DE 102021115115 A1 DE102021115115 A1 DE 102021115115A1 DE 102021115115 A DE102021115115 A DE 102021115115A DE 102021115115 A1 DE102021115115 A1 DE 102021115115A1
Authority
DE
Germany
Prior art keywords
time
values
time value
value
data structure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021115115.5A
Other languages
English (en)
Inventor
Torben Schinke
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WORLDIETY GMBH, DE
Original Assignee
Worldiety GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Worldiety GmbH filed Critical Worldiety GmbH
Priority to DE102021115115.5A priority Critical patent/DE102021115115A1/de
Publication of DE102021115115A1 publication Critical patent/DE102021115115A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F03MACHINES OR ENGINES FOR LIQUIDS; WIND, SPRING, OR WEIGHT MOTORS; PRODUCING MECHANICAL POWER OR A REACTIVE PROPULSIVE THRUST, NOT OTHERWISE PROVIDED FOR
    • F03DWIND MOTORS
    • F03D17/00Monitoring or testing of wind motors, e.g. diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Computerimplementiertes Kodierungsverfahren, umfassend: Empfangen einer Vielzahl physikalischer Messwerte und entsprechender Zeitwerte; Bestimmen der zeitlichen Abstände zwischen aufeinanderfolgenden Zeitwerten; Durchführen einer Lauflängenkodierung der Zeitwerte, wobei die Anzahlen aufeinanderfolgender identischer zeitlicher Abstände ermittelt werden; Speichern der ermittelten Anzahlen und des entsprechenden zeitlichen Abstands sowie aller Messwerte in mehreren Datenstrukturen, wobei in jeder der Datenstrukturen Anzahlen, zeitliche Abstände und Messwerte gespeichert werden, die aufeinanderfolgenden Zeitwerten entsprechen; Speichern eines minimalen Zeitwerts und eines maximalen Zeitwerts in jeder der Datenstrukturen, wobei der minimale Zeitwert den ältesten Zeitwert und der maximale Zeitwert den jüngsten Zeitwert in dieser Datenstruktur angibt; Speichern der Datenstrukturen in einer Datei; und Speichern eines Offsetwerts und einer Länge jeder der Datenstrukturen.

Description

  • TECHNISCHES GEBIET
  • Die Erfindung betrifft effizientes Speichern von Messwerten aus technischen Anlagen, beispielsweise Anlagen zur Energiegewinnung, insbesondere Windkraftanlagen. Die Erfindung betrifft insbesondere das effiziente Speichern besonders großer Datenmengen, die in zeitlichen Abständen erfasst werden.
  • HINTERGRUND
  • Beim Betrieb technischer Anlagen fallen Messwerte an, die in regelmäßigen oder unregelmäßigen Abständen erfasst werden und zu Analysezwecken gespeichert werden können. Eine Reihe solcher Messwerte mit zugehörigen Zeitwerten wird als Zeitreihe bezeichnet. Die konkrete Art der Messung, beispielsweise Temperatur, erbrachte Leistung, Geschwindigkeit etc., wird als Metrik bezeichnet.
  • Die anfallenden Datenmengen können sehr groß werden. Im Fall einer herkömmlichen Windkraftanlage, die 20 Jahre lang alle 10 Minuten die Messwerte von 10 Metriken erfasst, fallen bereits weit über 10 Millionen Datensätze an: 10  Metriken × 20 Jahre × 365 Tage × 24h × 6 Intervalle = 10.512.000.
    Figure DE102021115115A1_0001
  • Zur Erfassung solcher Messwerte wird beispielsweise das SCADA-System (Supervisory Control and Data Acquisition) verwendet. Die Messwerte technischer Anlagen werden durch das System zentral erfasst und gespeichert. Derartige Systeme legen Daten in einer Datenbank ab und ermöglichen direkten Zugriff auf bestimmte Messwerte in benutzerdefinierten Zeiträumen. Eine beispielhafte SQL-Anfrage für die Messwerte eines Jahres für drei Anlagen kann beispielsweise mit der folgenden Syntax formuliert werden:
 AggregateByDay (
 SELECT * FROM data WHERE windkraftanlage = a1 | a2 | a3 AND metrik = m1 | m1 | m3
 AND zeitraum = "letztes Jahr"



 )
  • Eine entsprechende Datenbank kann beispielsweise durch den folgenden Ausdruck definiert sein:
  •  CREATE TABLE data10m (device_id INT, metric_id INT, timestamp_unix BIGINT,
     metric_value DOUBLE)
  • Eine solche Datenbank, die Messwerte für 2000 Anlagen mit durchschnittlich 10 Metriken erfasst, würde ca. 21 Milliarden Messwerte speichern. Ein einzelner Eintrag umfasst unkomprimiert mindestens 24 Byte, so dass pro Anlage ca. 240 MB und für 20 Anlagen entsprechend ca. 280 GB an Daten zu speichern sind. Für Anfragen von Messwerten anhand Zeitwerten ist ein Index über die Zeitwerte der Messwerte erforderlich. Dieser Index belegt bei den genannten Zahlen etwa 313 GB.
  • Datenmengen in dieser Größenordnung erfordern mithin viel Speicherplatz. Der Erfindung liegt die Aufgabe zugrunde, Messwerte effizient zu speichern und Anfragen zügig zu beantworten.
  • ZUSAMMENFASSUNG
  • Der Gegenstand der Erfindung wird durch die beigefügten Ansprüche definiert.
  • Figurenliste
    • 1 zeigt ein erfindungsgemäßes Kodierungsverfahren.
    • 2 zeigt ein erfindungsgemäßes Dekodierungsverfahren.
    • 3 zeigt einen beispielhaften Aspekt des Dekodierungsverfahrens.
    • 4 zeigt einen weiteren beispielhaften Aspekt des Dekodierungsverfahrens.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ausführungsformen der Erfindung umfassen ein Kodierungsverfahren, das fortlaufend Messwerte und entsprechende Zeitwerte erhält und diese speichert. Die Zeitwerte können alternativ durch eine Einheit, die das Verfahren ausführt, nach Erhalt von Messwerten jeweils sofort bestimmt werden. Die Zeitwerte liegen beispielsweise in Form von Zeitstempeln vor und geben die absolute Zeit eines Tages (16:03, 15:49 etc.) an. Alternativ können die Zeitstempel als koordinierte Weltzeit (Coordinated Universal Time, UTC) oder als Unixzeit (Sekunden seit dem 1. Januar 1970, 00:00 Uhr UTC) vorliegen. Vorzugsweise kann der Zeitstempel auch eine Angabe über eine Zeitzone umfassen, aus der die Messwerte stammen. Beispielsweise kann eine Zeitzone aus der Zeitzonen-Dankenbank (tz database) der Internet Assigned Numbers Authority (IANA) gelesen werden. Die Erfassung der Zeitzone kann alternativ auch nachgelagert erfolgen zu einem Zeitpunkt, an dem Messwerte und Zeitwerte aus einer der hier offenbarten Datenstrukturen gelesen werden. Die Zeitzone kann anhand einer Ortsangabe ermittelt werden, die Bestandteil von hier offenbarten Metadaten sein kann.
  • Das Verfahren ermittelt für die Messwerte die zeitlichen Abstände/Differenzen zwischen aufeinanderfolgenden Messwerten, beispielsweise in Sekunden. Außerdem vergleicht das Verfahren Abweichungen zwischen aufeinanderfolgenden Zeitabständen und ermittelt die jeweilige Anzahl aufeinander folgender identischer Zeitabstände. Werden beispielsweise 500 Messwerte in konstantem Abstand von 120 Sekunden erhalten, ermittelt das Verfahren die Anzahl 500 und den Abstand 120. Bei einer Zeitreihe mit den Zeitstempeln 0, 600, 1200, 1800, 1900, 2500, 3100 lauten die ermittelten Abstände 600, 600, 600, 100, 600, 600, und die Anzahlen lauten 3, 1, 2. Gespeichert wird also beispielsweise 3×600, 1×100, 2×600.
  • Die ermittelten Anzahlen und deren Messwerte werden in Datenstrukturen gespeichert, beispielsweise in Arrays, Listen, Tabellen. Da die Anzahl der zu speichernden Werte in bestimmten Anwendungsfällen sehr hoch ist, wird die Anzahl der Werte je Datenstruktur in einer Ausführungsform auf einen maximalen Wert begrenzt, also etwa eine Höchstgrenze an benötigtem Speicher je Datenstruktur oder eine Höchstgrenze der Anzahl von Werten je Datenstruktur. In einer anderen Ausführungsform werden Werte unterschiedlicher Metriken in unterschiedlichen Datenstrukturen gespeichert, so dass eine Datenstruktur je Metrik vorgehalten wird.
  • In jeder Datenstruktur werden zeitlich aufeinander folgende Messwerte gespeichert. Das Verfahren hält für jede Datenstruktur den ältesten und den jüngsten Zeitwert fest und speichert diese entweder in der Datenstruktur selbst oder in einer Metadatei oder gesonderten Datenstruktur. Beispielsweise können in einer gesonderten Datenstruktur sämtliche jüngste und älteste Zeitwerte mit zugehöriger Datenstruktur abgelegt werden. Die Datenstrukturen werden anschließend vorzugsweise in einer einzigen Datei abgelegt, insbesondere in einer Gerätedatei, die die Daten in LittleEndian Byteorder speichert; sie können jedoch auch in mehreren solchen Dateien gespeichert werden. Das Verfahren speichert ferner einen Offsetwert und eine Länge für jede der Datenstrukturen, wiederum entweder in den Datenstrukturen selbst oder in einer Metastruktur. Der Offsetwert gibt beispielsweise eine Speicheradresse relativ zu einer Anfangsspeicheradresse der Datei an, beispielsweise in Byte. Die Länge einer Datenstruktur wird ebenfalls vorzugsweise in Byte angegeben.
  • In einer besonderen Ausführungsform ist für die Daten/Datenstrukturen mit Messwerten einer technischen Anlage genau eine Datei vorgesehen. Dies beschleunigt die Bearbeitung von Anfragen, da Anfragen häufig auf bestimmte Anlagen gerichtet sind. Auf diese Weise wird die Anzahl von einzulesenden Dateien von vornherein begrenzt.
  • In einer weiteren Ausführungsform kann jede der Datenstrukturen in einer Datei die Messwerte einer jeweiligen Metrik speichern. Beispielsweise speichert eine erste Datenstruktur gemessene Temperaturen, eine zweite Datenstruktur Leistungsmessungen, eine dritte Rotationsgeschwindigkeiten. Eine Datenstruktur, die die Messwerte einer Metrik speichert, wird auch als Metrik-Shard bezeichnet. Eine beispielhafte Datei wird unten unter Bezugnahme auf 5 erläutert.
  • Somit liefert das Verfahren die Möglichkeit des Speicherns von Messwerten, wobei aufgrund der Speicherung lediglich von Abständen der Zeitwerte, insbesondere lediglich einmaligem Speichern mehrfach aufeinander folgenden identischen Zeitwerten, der benötigte Speicherplatz erheblich reduziert wird. Dadurch, dass die Datenstrukturen mit ältesten und jüngsten Zeitwerten versehen sind, ermöglicht die Erfindung ein schnelles Auffinden von Messwerten bei gegebenen Zeitwerten, wie etwa durch das nachfolgend erläuterte Dekodierungsverfahren.
  • Ausführungsformen der Erfindung umfassen ein Dekodierungsverfahren, das in der Lage ist, Messwerte aus Zeitreihen anhand eines konkreten Zeitwerts schnell aufzufinden.
  • Das Verfahren erhält einen Zeitwert, für den der zugehörige Messwert nachgeschlagen werden soll. In Ausführungsformen, bei denen Messwerte gleicher Metrik in mehreren Datenstrukturen gespeichert sind, ermittelt das Verfahren unter den Datenstrukturen diejenige Datenstruktur, in der Zeitwerte abgelegt sind, die den erhaltenen Zeitwert umfassen. Zu diesem Zweck wird für jede Datenstruktur der älteste und jüngste Zeitwert ermittelt, und wird geprüft, ob der erhaltene Zeitwert in den Zeitraum zwischen dem ältesten und dem jüngsten Zeitwert fällt. In bestimmen Ausführungsformen kann dies dadurch beschleunigt werden, dass die ältesten und jüngsten Zeitwerte in aufsteigender Reihenfolge gespeichert sind, beispielsweise: Tabelle 1
    Datenstruktur Ältester Zeitwert Jüngster Zeitwert
    1 Tue Jun 1 09:20:00 UTC 2021 Tue Jun 2 15:54:15 UTC 2021
    2 Tue Jun 2 16:04:00 UTC 2021 Tue Jun 3 20:54:15 UTC 2021
    3 Tue Jun 3 21:04:00 UTC 2021 Tue Jun 4 15:54:15 UTC 2021
    (...)
  • In diesem Beispiel enthält die Datenstruktur 1 Zeitwerte vom 1. Juni 2021, 9:20 UTC, bis zum 2. Juni 2021, 15:54:15 UTC. Die Datenstrukturen sind hier nach den aufeinanderfolgenden Zeiträumen geordnet. Liegen nun N Datenstrukturen mit zugehörigen ältesten und jüngsten Zeitwerten geordnet vor, kann zunächst geprüft werden, ob ein Zeitraum einer zeitlich mittleren Datenstruktur, also der Datenstruktur N/2 den erhaltenen Zeitwert enthält. Ist dies der Fall, wird der zugehörige Messwert aus der Datenstruktur N/2 ausgelesen. Ist der erhaltene Zeitwert jedoch größer als der jüngste Zeitwert der Datenstruktur N/2, so wird als nächstes die Datenstruktur (N/2+N)/2 geprüft. Allgemein wird jeweils geprüft, in welchem Intervall von Datenstrukturen der Zeitwert liegt. Liegt der Zeitwert in der Datenstruktur in der Mitte des Intervalls, wird diese Datenstruktur geprüft. Ist der Zeitwert kleiner als der Zeitraum dieser Datenstruktur, wird die Prüfung mit dem älteren Intervall fortgesetzt, andernfalls mit dem jüngeren Intervall. Dieses Verfahren wird unten unter Bezugnahme auf 3 näher erläutert.
  • Alternativ zu diesem intervallbasierten Vorgehen kann eine Datenstruktur nach der anderen geprüft werden. Hierzu lädt das Verfahren die erste Datenstruktur anhand des Offsets dieser Datenstruktur, und prüft anhand des ältesten und jüngsten Zeitwerts dieser Datenstruktur, ob der Zeitwert dort abgelegt ist. Ist dies der Fall, wird die Datenstruktur zurückgegeben. Andernfalls wird die nächste Datenstruktur anhand ihres Offsets geladen und die Prüfung wiederholt. Die Offsetwerte und Datenstrukturen werden also erst nach und nach geladen. Dies ist insbesondere von Vorteil, wenn die Datenstrukturen in einer Gerätedatei gespeichert sind, denn im Allgemeinen braucht der überwiegende Teil der Datenstrukturen überhaupt nicht geladen werden.
  • Sobald diejenige Datenstruktur ermittelt wurde, die den Zeitwert enthält, ermittelt das Verfahren die genaue Lage der Datenstruktur im Speicher, unter Verwendung von Offset und Länge dieser Datenstruktur, falls noch nicht geschehen. In einer Ausführungsform können Offset und Länge für jede Datenstruktur in Tabelle 1 enthalten sein. Um den Messwert des erhaltenen Zeitwerts in der Datenstruktur zu erhalten, werden die Zeitabstände und deren Anzahlen in dieser Datenstruktur untersucht. Beispielsweise erzeugt das Verfahren aus der Angabe 3x600, 1x100, 2x600 die Folge 600, 600, 600, 100, 600, 600. Die Datenstruktur oder die obige Tabelle kann zudem eine absolute Anfangszeit enthalten, so dass das Verfahren die genannte Folge durch Addition in konkrete Zeitstempel umwandeln kann. Ist die Anfangszeit beispielsweise 0, lauten die Zeitstempel 0, 600, 1200, 1800, 1900, 2500, 3100 Sekunden.
  • Um den Messwert zu bestimmen, der dem erhaltenen Zeitwert entspricht, kann dieser Zeitwert in einer Ausführungsform direkt als Index verwendet werden, um aus der Datenstruktur den Messwert auszulesen. Hierzu ist es erforderlich, dass die Datenstruktur Zeitwerte und Messwerte als Array gespeichert, wobei die Zeitwerte als Schlüssel (key) und die Messwerte als Werte (value) dienen.
  • Diese Form der Dekodierung bietet den Vorteil einer besonders schnellen Auffindung von Messwerten anhand Zeitwerten, bei gleichzeitiger kompakter Speicherung dieser Daten. In bestimmten Ausführungsformen folgt die Geschwindigkeit des Verfahrens daraus, dass es aus mehreren Datenstrukturen in wenigen Schritten diejenige Datenstruktur auffindet, die einen gesuchten Zeitwert enthält.
  • Die Ergebnisse können einem Benutzer angezeigt werden, wobei Messwerte vorzugsweise zeitlich geordnet dargestellt werden. In einer Ausführungsform kann bei Erstellen einer zeitlichen Abfolge berücksichtigt werden, dass Messwerte aus verschiedenen Zeitzonen stammen. Zu diesem Zweck werden die gespeicherten Zeitstempel der Messwerte mit einer jeweiligen Zeitzone kombiniert und erst anschließend miteinander verglichen, um die anzuzeigende Reihenfolge zu bestimmen.
  • Ausführungsformen der Erfindung umfassen auch computerlesbare Medien mit darauf gespeicherten Befehlen, die bei ihrer Ausführung durch einen Prozessor eines der hier beschriebenen Verfahren ausführen.
  • 1 zeigt ein Verfahren 100 zum Kodieren von Messwerten gemäß Ausführungsformen der Erfindung. Zunächst empfängt das Verfahren Messwerte und zugehörige Zeitwerte, in Schritt 110. Das Verfahren bestimmt in Schritt 120 die Differenzen (zeitliche Abstände) jeweils aufeinander folgender Zeitwerte. Optional können auch die Differenzen aufeinander folgender Messwerte bestimmt werden.
  • In Schritt 130 wird eine Lauflängenkodierung der Zeitwertdifferenzen vorgenommen, wobei für mehrere aufeinander folgende identische Zeitwertdifferenzen deren Anzahl ermittelt wird. In Schritt 140 speichert das Verfahren die ermittelten Anzahlen jeweils gemeinsam mit der entsprechenden Zeitwertdifferenz und den entsprechenden Messwerten. Außerdem wird in Schritt 150 der älteste und der jüngste Zeitwert aller betrachteten Zeitwerte ermittelt und gemeinsam mit den Zeitwerten gespeichert. Zuletzt speichert das Verfahren in Schritt 160 sämtliche Werte in einer Datenstruktur (Shard) und vermerkt dessen Offset und Länge.
  • Das Verfahren kann Entscheidungen umfassen darüber, ob empfangene Daten in einer gemeinsamen Datenstruktur/Shard oder in unterschiedlichen Datenstrukturen gespeichert werden sollen, und/oder ob die Datenstrukturen auf unterschiedliche Dateien verteilt werden sollen. Beispielsweise können die erhaltenen Werte eine Angabe über eine jeweilige technische Anlage enthalten, von der die Werte stammen, und das Verfahren kann die Werte der gleichen Anlage in eine einzige Datei schreiben. Ferner können Werte unterschiedlichen Metriken entsprechen, und für jede dieser Metriken wird eine eigene Datenstruktur innerhalb einer Datei vorgehalten. Eine Angabe über die Metrik kann das Verfahren beispielsweise gemeinsam mit den Werten erhalten. Beispiele für eine konkrete Implementation von Dateien und Datenstrukturen werden unten im Hinblick auf die 5 und 6 erläutert.
  • 2 zeigt ein erfindungsgemäßes Dekodierungsverfahren 200. In Schritt 210 empfängt das Verfahren einen Zeitwert, beispielsweise als Teil einer Anfrage nach einem Messwert, der zu dem entsprechenden Zeitpunkt gemessen wurde. Das Verfahren wählt in Schritt 220 diejenige Datenstruktur aus, die den Zeitwert enthält. Hierzu untersucht das Verfahren zunächst die ältesten und jüngsten Zeitwerte der gespeicherten Datenstrukturen, um festzustellen, welche der Datenstrukturen den gegebenen Zeitwert enthält. Diese Untersuchung kann dadurch beschleunigt werden, dass die ältesten und jüngsten Zeitwerte der Datenstrukturen bereits vor Beginn des Verfahrens in einen Arbeitsspeicher geladen wurden; das vorzeitige Laden aller Datenstrukturen sollte jedoch vermieden werden, da angesichts sehr großer Datenmengen mit erheblichem Speicherbedarf zu rechnen wäre. In Ausführungsformen mit sehr vielen Datenstrukturen kann die Untersuchung durch das Verfahren der 3 noch beschleunigt werden. In bestimmten Ausführungsformen kann neben dem Zeitwert auch eine Angabe über die Metrik erhalten werden, beispielsweise in der bereits erwähnten Anfrage, und das Verfahren kann sich auf diejenigen Datenstrukturen beschränken, die Messwerte der betreffenden Metrik enthalten.
  • Schritt 220 umfasst insbesondere auch das Ermitteln von Offsetwerten der betroffenen oder auch sämtlicher Datenstrukturen. Die Offsetwerte können vorab aus einer speziellen Datenstruktur geladen worden sein (vgl. Ausführungen unten, 5). Die Offsetwerte dienen dazu, gezielt auf eine jeweilige Datenstruktur zugreifen zu können, ohne deren Beginn erst ermitteln zu müssen, beispielsweise durch Einlesen vorangehend gespeicherter Datenstrukturen.
  • Die in Schritt 220 ermittelte Datenstruktur wird nun eingelesen und der passende Eintrag in der Datenstruktur gesucht. Dies umfasst Vergleichen des gesuchten Zeitwerts mit den Zeitwerten der Datenstruktur. In einem Beispiel kann die Datenstruktur als Hashtabelle oder assoziativer Array gespeichert sein, und kann der gesuchte Eintrag unmittelbar anhand des gesuchten Zeitwerts nachgeschlagen werden. In einem anderen Beispiel kann das beispielhafte Verfahren aus 3 verwendet werden. Der aufgefundene Messwert wird schließlich in Schritt 230 zurückgegeben und die Anfrage dadurch beantwortet.
  • Die Anfrage kann neben dem Zeitwert auch Angaben über eine technische Anlage enthalten, und das Verfahren 200 kann neben den obigen Schritten zunächst die korrekte Datei für die Anlage auswählen.
  • 3 zeigt ein beispielhaftes Verfahren 300, das als Teil des Dekodierungsverfahrens 200 ausgeführt werden kann, um eine Datenstruktur zu finden, die einen gegebenen Zeitwert enthält. Dies kann festgestellt werden durch eine Prüfung, ob der Zeitwert in dem Zeitraum liegt, der durch den ältesten und jüngsten Zeitwert einer Datenstruktur definiert ist. Dem Verfahren 300 liegt die Annahme zugrunde, dass gleichartige Messwerte, also etwa Messwerte der gleichen Metrik, über zahlreiche Datenstrukturen/Shards verteilt sind. Ferner liegen Angaben über den ältesten und jüngsten Zeitwert jeder Datenstruktur sowie den Offset der Datenstruktur vor.
  • In einem ersten Schritt 310 setzt das Verfahren Variablen „first“ und „last“ auf einen ersten beziehungsweise letzten Speicherindex einer ersten Datenstruktur. Die Speicherindizes aller Datenstrukturen müssen aufsteigend, also in der Reihenfolge aufeinanderfolgender Zeiträume der Datenstrukturen geordnet sein. Im gezeigten Beispiel wird „first“ auf den Wert 1 gesetzt, der der ersten Datenstruktur entspricht, und wird „last“ auf den Wert N gesetzt, der der letzten Datenstruktur entspricht.
  • In Schritt 320 wird der Mittelwert „center“ aus first und last gebildet, um die Datenstruktur in der „Mitte“ der Datenstrukturen zu identifizieren. In Schritt 330 wird der älteste und der jüngste Zeitwert der Datenstruktur bei Index „center“ eingelesen und mit dem Zeitwert verglichen. Ist der gebildete Mittelwert keine ganze Zahl, kann in geeigneter Weise gerundet werden.
  • Liegt der Zeitwert in dem durch den ältesten und den jüngsten Zeitwert definierten Zeitraum, gibt das Verfahren 300 in Schritt 340 als Ergebnis die Datenstruktur zurück. In bestimmten Ausführungsformen wird die Datenstruktur zu diesem Zeitpunkt überhaupt erst in den Arbeitsspeicher geladen.
  • Liegt der Zeitwert jedoch nicht in dem Zeitraum, so wird in Schritt 350 geprüft, ob der Zeitwert kleiner ist als der Zeitraum, also kleiner ist als dessen ältester Zeitwert. Ist dies der Fall, belegt das Verfahren in Schritt 300 die Variable „last“ mit dem aktuellen Wert der Variablen „last“ und fährt bei Schritt 320 fort. Wird in Schritt 350 jedoch festgestellt, dass der Zeitwert größer ist als der Zeitraum, also größer ist als der jüngste Zeitwert der Datenstruktur bei Index „center“, setzt das Verfahren in Schritt 370 die Variable „first“ auf den Wert von „center“ und fährt ebenfalls bei Schritt 320 fort. Das Verfahren 300 konvergiert somit rasch gegen diejenige Datenstruktur, die den gesuchten Zeitwert enthält.
  • 4 zeigt ein beispielhaftes Verfahren 400, das als Teil des Dekodierungsverfahrens 200 ausgeführt werden kann, um innerhalb einer Datenstruktur anhand gegebenem Zeitwert den entsprechenden Messwert zu finden. Das Verfahren 400 setzt voraus, dass die Messwerte in zeitlich aufsteigender Reihenfolge gespeichert sind.
  • In Schritt 410 setzt das Verfahren 400 Variablen „min“ und „max“ auf den ältesten beziehungsweise jüngsten Zeitwert der Datenstruktur. In Schritt 420 berechnet das Verfahren den Mittelwert aus „min“ und „max“, und belegt eine Variable „center“ mit diesem Wert. Der gesuchte Zeitwert, hier als Variable „time“ gezeigt, wird in Schritt 430 mit dem Wert der Variablen „center“ verglichen. Der in Schritt 420 berechnete Mittelwert kann zu diesem Zweck gerundet werden, um mit ganzen Zahlen zu arbeiten.
  • Ist der gesuchte Zeitwert mit der in „center“ gespeicherten Zeit identisch, gibt das Verfahren in Schritt 440 den Messwert der Datenstruktur, der diesem Zeitwert zugeordnet ist, zurück, und das Verfahren endet. Andernfalls wird in Schritt 450 geprüft, ob der Zeitwert kleiner ist als die in „center“ gespeicherte Zeit. Ist dies der Fall, setzt das Verfahren in Schritt 460 die Variable „max“ auf den Wert von „center“ und fährt bei Schritt 420 fort. Andernfalls setzt das Verfahren in Schritt 470 die Variable „min“ auf den Wert von „center“ und fährt ebenfalls bei Schritt 420 fort.
  • 5 zeigt beispielhaft den Inhalt einer Gerätedatei zum Speichern von Messwerten einer technischen Anlage. Die Datei enthält einen Header, einen Index und eine Payload. In dem gezeigten Beispiel ist ein Anfangsoffset von 0 und eine Länge von len(file) der Datei angegeben. Der Header enthält allgemeine Daten, hier etwa eine magic number „magic“, die das Format der Datei bezeichnet, und eine Versionsnummer „version“. Beide Angaben sind lediglich optional.
  • Der Index enthält eine Anzahl „metricCount“ der enthaltenen Metriken. In dem gezeigten Beispiel werden also verschiedene Metriken in einer Datei gespeichert. Jede Metrik enthält eine „metricID“, die bei einer Anfrage angegeben werden kann. Auf diese Weise kann der anfragende Benutzer seine Anfrage auf eine bestimmte Metrik, beispielsweise Temperatur, begrenzen. Ferner ist für jede Metrik eine Anzahl „shardCount“ von Datenstrukturen angegeben, die für diese Metrik abgelegt sind. Jeder Shard / jede Datenstruktur enthält einen ältesten Zeitwert „min“ und einen jüngsten Zeitwert „max“; die übrigen Zeitwerte eines Shards liegen zwischen diesen Werten. Ferner gibt „count“ die Anzahl dieser Zeitwerte an. Die Werte „offset“ und „length“ definieren den Beginn und das Ende der gespeicherten Zeitwerte dieses Shards, wobei „offset“ beispielsweise relativ zu dem Anfangsoffset (hier o) der Datei angegeben ist.
  • In dem als „Payload“ bezeichneten Abschnitt der Datei sind die Shards selbst abgelegt. Die Shards sind jeweils mit dem in 1 erläuterten Verfahren kodiert und sind hier beispielhaft als „RLDE-Shard“ (Run Length Delta Encoding) bezeichnet.
  • Das Speichern aller Daten in mehreren Dateien ist von Vorteil, um bei Datenbankanfragen die ACID-Eigenschaften (Atomarität, Konsistenz, Isolation, Dauerhaftigkeit) der Datenbank zu gewährleisten. Bei besonders vielen Dateien, etwa aufgrund besonders vieler erfasster technischer Anlagen, können die Dateien ferner in einer Verzeichnishierarchie angeordnet werden. Um Anfragen schnell zu bearbeiten, können die Filedescriptoren dieser Dateien offen gelassen werden.
  • Die erfassten technischen Anlagen können darüber hinaus mit Bezeichnern UUID assoziiert sein und beispielsweise mittels einer Hashtabelle nachgeschlagen werden, um die jeweilige Datei zu ermitteln:
  •  type DB struct {
     devices map[UUID]*Device
    
    
    
    
    
    
    
     }
  • Eine derartige Tabelle kann beim Öffnen der Datenbank einmalig erzeugt werden anhand der vorliegenden Dateien und assoziierten Bezeichner.
  • Unter weiterer Bezugnahme auf 5 wird beim Starten der Datenbank, die auf die Dateien und Datenstukturen/Shards zugreift, der Header und auch der Index aus der Gerätedatei geladen (deserialisiert); der Payload-Abschnitt wird zunächst noch nicht ausgelesen, sondern erst zur Bearbeitung von Anfragen ganz oder in Teilen in den Arbeitsspeicher geladen. Somit stehen bei Eintreffen einer Anfrage bereits sämtliche Indexdaten - also jüngste und älteste Zeitwerte aller Shards sowie deren Offsets und Längen - bereit.
  • Die Gerätedatei kann beispielsweise in die folgende Struktur geladen werden:
  •  type Device struct{
           fd os.File 
           index Metriclndex
     }
  • Hierbei steht „os.File“ für den Filedescriptor und „MetricIndex“ für den Index aus der Datei. Dieser MetricIndex kann wie folgt definiert sein:
  •  type Metriclndex struct{
           metrics []MetricNode
     }
  • Der MetricIndex umfasst also die vorhandenen Metriken für die technische Anlage, die der Datei entspricht. Die Variable „MetricNode“ definiert eine einzelne Metrik:
  •  type MetricNode struct{
           id UUID
           shards []DataShardlndexNode
     }
    „UUID“ (Universally Unique Identifier, RFC 4122) ist ein Bezeicher dieser Metrik und kann alternativ als Byte Array mit Zufallswerten implementiert sein. „DataShardIndexNode“ ist ein Array, der Angaben über die Shards enthält, die für diese Metrik erfasst wurden:
     type DataShardlndexNode struct{ 
           Min int64
           Max int64
           Count int64
           Offset int64
           Length int64
     }
  • Hierbei stehen „Min“ und „Max“ für die bereits erläuterten ältesten und jüngsten Zeitwerte dieses Shards, „Count“ für die Anzahl der Einträge/Zeitwerte in dem Shard, und „Offset“ und „Length“ für Offset und Länge der Speicherposition des Shards bezüglich des Anfangsoffsets.
  • Die Verwendung der hier beschriebenen Verfahren zum Dekodieren von Messwerten aus Shards bei gegebenem Zeitwert erfordern ein Einlesen einzelner Datenstrukturen/Shards erst, wenn auf deren konkrete Zeitwerte/Messwerte zugegriffen werden soll - nicht jedoch, wenn lediglich geprüft wird, ob ein gegebener Zeitwert zwischen dem ältesten und dem jüngsten Zeitwert eines Shards liegt; diese Information kann aus dem Index bezogen werden. Erst wenn festgestellt wird, dass ein gesuchter Zeitwert in dem von einem bestimmten Shard abgedeckten Zeitraum liegt, wird dieser eingelesen / in den Arbeitsspeicher geladen.
  • 6 zeigt ein beispielhaftes Format für einen einzelnen Shard. Als „keys“ werden hier die Zeitwerte bezeichnet, als „values“ die konkreten Messwerte. Im Header des Shards sind „counts“, also Anzahl der Einträge, sowie „minKey“ und „maxKey“, also ältester und jüngster Zeitwert des Shards, abgelegt. „runLen“ bezeichnet die Anzahl aufeinanderfolgender identischer Zeitwerte. Die Variable „delta“ in der Struktur „keys“ bezeichnet den zugehörigen Differenzzeitwert. Die Variable „delta“ in der Struktur „values“ bezeichnet einen Messwert, in diesem Fall die Differenz eines Messwerts zu dessen gespeichertem Vorgänger. In aller Regel unterscheidet sich die Anzahl der gespeicherten Messwerte/Messwertdifferenzen von der Anzahl der zugehörigen Zeitwerte (keys: runLen/delta), weil aufeinander folgende identische Zeitwertdifferenzen lediglich einmal gespeichert werden, während die Messwerte/Messwertdifferenzen einzeln gespeichert werden.
  • Unkodiert kann ein Zeitwert mit zugehörigem Messwert beispielsweise durch die folgende Struktur dargestellt werden:
  •  type TimeValue struct {
           Time int64
    
          Value int64
     }
     type TimeSeries []TimeValue
  • Hierbei speichert „TimeValue“ einen Zeitwert „Time“ und einen Messwert „Value“. Der Zeitwert kann beispielsweise als Unix-Zeitstempel in Sekunden formatiert sein, um Vergleichsoperationen zu vereinfachen. Der Messwert kann wie gezeigt als natürliche Zahl (64 bit integer) gespeichert sein; bei Metriken mit Nachkommastellen können die Messwerte entsprechend skaliert werden, wobei der Skalierungsfaktor an zentraler Stelle, beispielsweise in der Datenstruktur aus 5, gespeichert wird.
  • Die in allen obigen Ausführungsbeispielen verwendeten Variablennamen sind beliebig austauschbar. Dem Fachmann ist zudem ersichtlich, dass je nach Ausführungsform bestimmte Variablen entbehrlich sind. Die hier verwendeten Definitionen von Datenstrukturen sind ohne weiteres durch technisch äquivalente Definitionen zu ersetzen, insbesondere durch Formulierungen in anderen Programmiersprachen.
  • Claims (7)

    1. Computerimplementiertes Kodierungsverfahren, umfassend: Empfangen einer Vielzahl physikalischer Messwerte und entsprechender Zeitwerte; Bestimmen der zeitlichen Abstände zwischen aufeinanderfolgenden Zeitwerten; Durchführen einer Lauflängenkodierung der Zeitwerte, wobei die Anzahlen aufeinanderfolgender identischer zeitlicher Abstände ermittelt werden; Speichern der ermittelten Anzahlen und des entsprechenden zeitlichen Abstands sowie aller Messwerte in mehreren Datenstrukturen, wobei in jeder der Datenstrukturen Anzahlen, zeitliche Abstände und Messwerte gespeichert werden, die aufeinanderfolgenden Zeitwerten entsprechen; Speichern eines minimalen Zeitwerts und eines maximalen Zeitwerts in jeder der Datenstrukturen, wobei der minimale Zeitwert den ältesten Zeitwert und der maximale Zeitwert den jüngsten Zeitwert in dieser Datenstruktur angibt; Speichern der Datenstrukturen in einer Datei; und Speichern eines Offsetwerts und einer Länge jeder der Datenstrukturen.
    2. Kodierungsverfahren nach Anspruch 1, wobei Speichern der ermittelten Anzahlen, der jeweiligen zeitlichen Abstände sowie aller Messwerte umfasst, als Messwerte lediglich die Differenzen aufeinanderfolgender Messwerte zu speichern.
    3. Kodierungsverfahren nach Anspruch 1 oder 2, wobei die Datei eine Gerätedatei ist und das Speichern der Datenstrukturen in der Datei mittels LittleEndian Byteorder erfolgt.
    4. Computerimplementiertes Dekodierungsverfahren, umfassend: Empfangen eines Zeitwerts; Ermitteln eines von mehreren Offsetwerten, die einer jeweiligen Datenstruktur in einer Datei entsprechen, in der physikalische Messwerte mit entsprechenden Zeitwerten gespeichert sind, wobei für aufeinanderfolgende identische Zeitabstände die Anzahl dieser Zeitabstände sowie der Zeitabstand gespeichert ist, und in der ein minimaler Zeitwert und ein maximaler Zeitwert sowie eine Länge der Datenstruktur gespeichert ist, wobei der minimale Zeitwert den ältesten Zeitwert und der maximale Zeitwert den jüngsten Zeitwert in dieser Datenstruktur angibt, wobei der ermittelte Offsetwert derjenigen Datenstruktur entspricht, deren minimaler Zeitwert kleiner oder gleich dem empfangenen Zeitwert ist und deren maximaler Zeitwert größer oder gleich dem empfangenen Zeitwert ist; und Einlesen der Datenstruktur anhand des ermittelten Offsets und der Länge der Datenstruktur, und Ermitteln desjenigen Messwerts, der dem empfangenen Zeitwert entspricht.
    5. Dekodierungsverfahren nach Anspruch 4, wobei die Messwerte in den Datenstrukturen lediglich als Differenzen aufeinanderfolgender Messwerte gespeichert sind.
    6. Dekodierungsverfahren nach Anspruch 4 oder 5, wobei die Datei eine Gerätedatei ist, und wobei vor dem Ermitteln des Offsetwerts lediglich die Offsetwerte der Datei in einen Arbeitsspeicher geladen werden und weitere Daten aus der Datei erst während des Einlesens der Datenstruktur in den Arbeitsspeicher geladen werden.
    7. Computerlesbares Medium mit darauf gespeicherten Anweisungen, die, wenn sie durch einen Prozessor ausgeführt werden, das Verfahren nach einem der vorstehenden Ansprüche durchführen.
    DE102021115115.5A 2021-06-11 2021-06-11 Kodieren und Dekodieren von Metriken aus physikalischen Anlagen Pending DE102021115115A1 (de)

    Priority Applications (1)

    Application Number Priority Date Filing Date Title
    DE102021115115.5A DE102021115115A1 (de) 2021-06-11 2021-06-11 Kodieren und Dekodieren von Metriken aus physikalischen Anlagen

    Applications Claiming Priority (1)

    Application Number Priority Date Filing Date Title
    DE102021115115.5A DE102021115115A1 (de) 2021-06-11 2021-06-11 Kodieren und Dekodieren von Metriken aus physikalischen Anlagen

    Publications (1)

    Publication Number Publication Date
    DE102021115115A1 true DE102021115115A1 (de) 2022-12-15

    Family

    ID=84192382

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102021115115.5A Pending DE102021115115A1 (de) 2021-06-11 2021-06-11 Kodieren und Dekodieren von Metriken aus physikalischen Anlagen

    Country Status (1)

    Country Link
    DE (1) DE102021115115A1 (de)

    Citations (1)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US20160321323A1 (en) 2015-04-29 2016-11-03 Gordon GAUMNITZ Run Index Compression

    Patent Citations (1)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US20160321323A1 (en) 2015-04-29 2016-11-03 Gordon GAUMNITZ Run Index Compression

    Non-Patent Citations (1)

    * Cited by examiner, † Cited by third party
    Title
    CHIAROT, G.; SILVESTRI, C.: Time series compression: a survey, Januar 2021. URL: https://arxiv.org/abs/2101.08784 [abgerufen am 10. Februar 2022]

    Similar Documents

    Publication Publication Date Title
    DE69701786T2 (de) Verbesserte indirekte Adressierung für Dateisysteme
    DE69913618T2 (de) Verfahren zur Erzeugung eines Prüfpunktes, welcher eine Basisdatei beschreibt, und Verfahren zur Erzeugung einer Differenzdatei zwischen einer aktualisierten Datei und einer Basisdatei
    DE69333422T2 (de) Auffindung von Zeichenketten in einer Datenbank von Zeichenketten
    DE69415115T2 (de) Rechnerspeichersicherstellung
    DE112007003678B4 (de) Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
    DE69323863T2 (de) Verfahren und Vorrichtung zur Adressübersetzung
    DE112012005533B4 (de) Unterstützende Abfrage und ein Abfragen
    DE2131066C3 (de) Anordnung zum Adressieren eines Tabellenspeichers
    DE69131941T2 (de) System und verfahren für informationsauffindung
    DE69231113T2 (de) Speicherverfahren für bibliographische Information über Daten aus einer endlichen Textquelle, und insbesondere Dokumentverbuchungen zur Verwendung in einem Suchsystem für Ganztextdokumente
    DE202012013427U1 (de) Verknüpfung von Tabellen in einem MapReduce-Verfahren
    DE102021102442A1 (de) Katalog der mit schnappschüssen verbundenen dateien
    DE102008027605A1 (de) System und Verfahren zur rechnerbasierten Analyse großer Datenmengen
    DE102014208212A1 (de) Ableiten eines gerätespezifischen Wertes
    DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
    WO2015043823A1 (de) Verfahren und system zum bewerten von erhobenen messwerten eines systems
    EP3707854A1 (de) Verfahren zum verknuepfen eines ersten datenblocks mit einem zweiten datenblock, verfahren zum ueberpruefen der integritaet einer blockchain-struktur, vorrichtung und computerprogrammprodukt
    AT520746B1 (de) Verfahren zur Erkennung von anormalen Betriebszuständen
    DE2939411A1 (de) Datenverarbeitungsanlage mit virtueller speicheradressierung
    DE102016226338A1 (de) Bitsequenzbasiertes Datenklassifikationssystem
    DE102021115115A1 (de) Kodieren und Dekodieren von Metriken aus physikalischen Anlagen
    EP1273007B1 (de) Verfahren zur bestimmung eines charakteristischen datensatzes für ein datensignal
    EP1330740B1 (de) Verfahren zum zugriff auf eine speichereinheit bei der suche nach teilzeichenfolgen sowie zugehörige speichereinheit
    EP3729293B1 (de) Verfahren zur reduzierung der rechenzeit einer datenverarbeitungseinrichtung
    Bills et al. A scale to measure the socioeconomic status of occupations in Brazil

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed
    R016 Response to examination communication
    R081 Change of applicant/patentee

    Owner name: WORLDIETY GMBH, DE

    Free format text: FORMER OWNER: WORLDIETY GMBH, 26129 OLDENBURG, DE