Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND DEVICE FOR THE LOSSLESS COMPRESSION OF A DATA STREAM
Document Type and Number:
WIPO Patent Application WO/2018/141449
Kind Code:
A1
Abstract:
The invention relates to a method and a device for the lossless compression of a data stream (DS) which comprises a sequence of structured data objects which have a list of properties which each contain a key value pair, the method having the following steps: dividing (S1) the structured data objects of the data stream (DS) into a constant data object portion which has key value pairs with constant values and into variable data object portions which have key value pairs with variable values; transmitting (S2) the constant data object portion of the structured data objects once to a receiver; and transmitting (S3) the variable data object portions of the divided data objects of the data stream (DS) to the receiver.

Inventors:
VÖLKSEN GERD (DE)
SCHNEIDER MARTIN (DE)
Application Number:
PCT/EP2017/082521
Publication Date:
August 09, 2018
Filing Date:
December 13, 2017
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
SIEMENS AG (DE)
International Classes:
H03M7/30
Foreign References:
US20160034499A12016-02-04
Other References:
"SNON: the Sensor Network Object Notation", INTERNET ARTICLE, 4 August 2015 (2015-08-04), XP002779798, Retrieved from the Internet [retrieved on 20180406]
Download PDF:
Claims:
Patentansprüche

1. Verfahren zur verlustfreien Kompression eines Datenstromes (DS) , der eine Folge von strukturierten Datenobjekten um- fasst, die eine Liste von Eigenschaften aufweisen, welche je¬ weils ein Schlüssel-Wert-Paar enthalten,

mit den folgenden Schritten:

(a) Zerlegen (Sl) der strukturierten Datenobjekte des Da¬ tenstromes (DS) in einen konstanten Datenobjekt- Anteil, welcher Schlüssel-Wert-Paare mit konstanten Werten aufweist, und in variable Datenobjekt-Anteile, welche Schlüssel-Wert-Paare mit variablen Werten auf¬ weisen;

(b) Einmaliges Übertragen (S2) des konstanten Datenob¬ jekt-Anteils der strukturierten Datenobjekte zu einem Empfänger; und

(c) Übertragen (S3) der variablen Datenobjekt-Anteile der zerlegten Datenobjekte des Datenstromes (DS) zu dem Empfänger .

2. Verfahren nach Anspruch 1,

wobei die strukturierten Datenobjekte des Datenstromes (DS) Java Skript Object Notation, JSON, Datenobjekte aufweisen.

3. Verfahren nach Anspruch 1 oder 2,

wobei jedes Schlüssel-Wert-Paar einen Schlüssel aufweist, der durch eine Zeichenkette oder eine Zahl gebildet wird.

4. Verfahren nach einem der vorangehenden Ansprüche 1 bis 3, wobei das Schlüssel-Wert-Paar einen Wert aufweist,

der durch ein Datenobjekt, ein Array, eine Zeichenkette, ei¬ nen Zahlenwert oder einen logischen Wert gebildet wird.

5. Verfahren nach einem der vorangehenden Ansprüche 1 bis 4, wobei der variable Datenobjekt-Anteil des zerlegten struktu¬ rierten Datenobjektes des Datenstromes (DS) ein Array auf¬ weist, dessen Komponenten Schlüssel-Wert-Paare sind, die zu dem Empfänger asynchron gestreamt werden.

6. Verfahren nach einem der vorangehenden Ansprüche 1 bis 4, wobei die variablen Datenobjekt-Anteile eines Datenstromes (DS) jeweils eine eindeutige Identifikationskennzeichnung zur Kennzeichnung ihrer Zugehörigkeit zu dem Datenstrom (DS) ent- halten.

7. Verfahren nach einem der vorangehenden Ansprüche 1 bis 6, wobei Änderungen des variablen Datenobj ektanteils des struk¬ turierten Datenobjektes des Datenstromes (DS) gegenüber einem Referenzdatenobjekt ermittelt und zu dem Empfänger übertragen werden .

8. Verfahren nach Anspruch 7,

wobei das Referenzdatenobjekt durch ein strukturiertes Daten- Objekt des Datenstromes (DS) mit einer vorbestimmten Dauer¬ haftigkeit gebildet wird.

9. Verfahren nach Anspruch 7 oder 8,

wobei das Referenzdatenobjekt des Datenstromes als solches gekennzeichnet wird und zu dem Empfänger übertragen wird.

10. Verfahren nach Anspruch 8 oder 9,

wobei die Dauerhaftigkeit des Referenzdatenobjektes durch ei¬ ne Anzahl von Übertragungszyklen oder einen Gültigkeitszeit- räum festgelegt wird.

11. Verfahren nach einem der vorangehenden Ansprüchen 1 bis 10,

wobei das Zerlegen der strukturierten Datenobjekte des Daten- Stromes (DS) zur Laufzeit während der Übertragung des Daten¬ stromes zu dem Empfänger erfolgt.

12. Verfahren nach einem der vorangehenden Ansprüchen 1 bis 11,

wobei auf Seiten des Empfängers die strukturierten Datenob¬ jekte des Datenstromes (DS) auf Grundlage des erhaltenen kon- stanten Datenobj ektanteils und der empfangenen variablen Da- tenobj ektanteile zur weiteren Datenverarbeitung rekonstruiert werden .

13. Verfahren nach einem der vorangehenden Ansprüchen, wobei auf Seiten des Empfängers die strukturierten Datenob¬ jekte des Datenstromes (DS) auf Grundlage der zwischengespei¬ cherten Referenzdatenobjekte und der empfangenen Änderungen der variablen Datenobj ektanteile zur weiteren Datenverarbei¬ tung rekonstruiert werden.

14. Verfahren nach einem der vorangehenden Ansprüche 1 bis 13,

wobei der Datenstrom (DS) ein Ereignisdatenstrom, insbesondere ein Sensordatenstrom, ist.

15. Kompressionsvorrichtung (1) zur verlustfreien Kompression eines Datenstromes (DS) , der eine Folge von strukturierten Datenobjekten (DO) umfasst, die eine Liste von Eigenschaften aufweisen, welche jeweils aus einem Schlüssel-Wert-Paar be- stehen,

wobei die Vorrichtung aufweist:

(a) eine Datenzerlegeeinheit (2), die geeignet ist, die strukturierten Datenobjekte (DO) des Datenstromes (DS) in einen konstanten Datenobjekt-Anteil, wel- eher Schlüssel-Wert-Paare mit konstanten Werten aufweist, und in variable Datenobjekt-Anteile, wel¬ che Schlüssel-Wert-Paare mit variablen Werten auf¬ weisen, zu zerlegen; und

(b) eine Daten-Übertragungseinheit (3) , welche einmalig den konstanten Datenobj ektanteil und separat die variablen Datenobj ektanteile der zerlegten Datenob¬ jekte an einen Empfänger überträgt.

Description:
Verfahren und Vorrichtung zur verlustfreien Kompression eines Datenstromes

Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur verlustfreien Kompression eines Datenstromes, insbesondere eines Ereignisdatenstromes.

Bei der Digitalisierung von Systemen, beispielsweise Industrieanlagen oder verteilten auf dem Internet basierenden Sys- temen, werden diese Systeme mit Sensoren und Datennetzen ausgerüstet, um zu jedem Zeitpunkt die Zustände des gesamten Systems und dessen Subsysteme oder einzelner Komponenten innerhalb des Systems zu erfassen und ggf. daraus notwendige Maßnahmen abzuleiten. Zu diesen Maßnahmen gehören Steuerungs- eingriffe, Optimierungsprozesse oder präventive Tätigkeiten. Ferner können die gewonnenen Daten gespeichert werden, um eine Analyse des Verhaltens des Systems bzw. der Anlage vorneh ¬ men zu können und Prozesse innerhalb des Systems bei Bedarf nachweisen zu können.

Falls eine große Anzahl von Sensoren in einer Anlage bzw. einem System installiert wird und diese Sensoren jeweils Sen ¬ sordaten mit einer hohen Frequenz erzeugen, gestaltet sich die Übertragung und Verarbeitung der erzeugten Sensordaten schwierig. Erzeugen beispielsweise 25.000 Sensoren in einem

Zehntelsekundentakt Daten bzw. Datenpakete mit einem Datenum- fang von 100 Bytes, so ist es notwendig, etwa 2 Terabyte pro Tag zu übertragen, zu verarbeiten und ggf. auch abzuspei ¬ chern. Mit zunehmender Komplexität der Systeme bzw. Anlagen werden die Datenmengen weiter ansteigen.

Bei herkömmlichen Systemen bestehen unterschiedliche Lösungsansätze, um das Datentransportvolumen und den Verarbeitungs ¬ aufwand zur Verarbeitung der Daten zu reduzieren.

Durch eine Dezentralisierung der Datenverarbeitung von Sensordaten kann der Datenverarbeitungsaufwand auf verschiedene Komponenten bzw. Einheiten innerhalb des Systems verteilt werden. Das hat zur Folge, dass ein Flaschenhals im Daten ¬ transport bei einer zentralen Datenverarbeitungseinheit ver ¬ schwindet. Als mögliche Komponenten des Systems können Netz ¬ knoten, Steuerungselemente und andere Hardwareeinheiten die- nen, die mit dem Datennetz des Systems verbunden sind und über einen ausreichend freien Datenspeicher und einen geeigneten Prozessor zur Datenverarbeitung verfügen. Jeder der Komponenten des Systems können Regeln oder Algorithmen zugeordnet werden, welche angeben, wie die Signale bzw. Sensorda- ten zu verarbeiten sind.

Bei einem sogenannten Publish/Subscribe-Ansatz werden Sensordaten von ihren Produzenten bzw. Datenquellen nur zu denjenigen Konsumenten transportiert, die diese Daten tatsächlich benötigen. Dadurch ist es möglich, das Kommunikationsnetz zwischen den Komponenten nicht vollständig mit allen Daten zu fluten, sondern den Datentransport innerhalb des Systems auf ein Minimum im Sinne eines Multicast anstatt eines Broadcast zu reduzieren. Bei diesem herkömmlichen Lösungsansatz werden daher die Daten, die nicht subskribiert sind, nicht innerhalb des Systems verteilt.

Ein weiterer herkömmlicher Lösungsansatz besteht darin, die Sensordaten-Verarbeitung auf sogenannte Event Processing Units (EPUs) im Datennetz zu verteilen, sodass eine zentrale Datenverarbeitung der Sensordaten bzw. Sensorsignale aufgelöst wird. Die Event Processing Units können auf die ver ¬ schiedenen Netzknoten bzw. Steuerungskomponenten innerhalb des Systems bzw. Netzes verteilt werden. Die Verteilung der Funktionen, d.h. der Regeln und Algorithmen, erfolgt dabei meist in der Art und Weise, dass der Abstand zwischen den Signalproduzenten, d.h. den Sensoren, und den Signalkonsumenten, d.h. den Event Processing Units mit den darin integrierten Datenverarbeitungsregeln, minimiert wird. Dabei kann der Abstand mit einer passenden Metrik gemessen werden, beispielsweise mittels eines sogenannten Hop-Counts oder einer Daten-Transportgeschwindigkeit . Die Event Processing Units können mittels entsprechender Regeln und Algorithmen die Datenströme filtern, beispielsweise nach Zeit, Wert oder Wertabweichung, aggregieren, beispielsweise durch Berechnung eines Mittelwertes, einer Standardab- weichung oder eines Medians, oder korrelieren, beispielsweise indem aus unterschiedlichen Signaltypen eine höherwertige, inhaltsreichere Information extrahiert wird, nämlich ein so ¬ genannter Event bzw. Ereignis. Jeder Netzknoten bzw. jede Steuerungskomponente innerhalb des Systems kann daher sowohl als Konsument als auch als Produzent von Events bzw. Ereig ¬ nissen auftreten.

Gemeinsam haben diese herkömmlichen Lösungsansätze, dass der Datenverkehr so weit reduziert wird, dass nur die jeweiligen Segmente des Netzes bzw. Systems mit Datenverkehr belastet werden, in denen sich auch subskribierende Konsumenten befinden und durch welche die Datenverarbeitung schneller erfolgen kann. Diese Lösungsansätze werden im Rahmen des sogenannten Distributed Complex Event Processing genutzt.

Für die Verarbeitung von Daten, insbesondere sogenannte

Eventdaten, können verschiedene technologische Ansätze ver ¬ folgt werden. Bei dem sogenannten Single Event Processing generiert jeder Event bzw. jedes Ereignis eine spezielle Reak- tion, wobei beispielsweise Entscheidungstabellen zum Einsatz kommen können. Beim sogenannten Event Stream Processing erfolgt eine Verarbeitung einer oder mehrerer synchronisierter Folgen von Events desselben Typs, die von derselben Datenquelle, beispielsweise Sensor oder EPU, stammen, indem aus vorgegebenen Sequenzmustern der Eventwerte eine spezifische Aktion generiert wird. Hierbei können beispielsweise Automa ¬ ten zum Einsatz kommen.

Bei dem sogenannten Complex Event Processing erfolgt eine Verarbeitung einer sehr hohen, heterogenen nicht- synchronisierten Folge von Events bzw. Ereignissen aus unterschiedlichen Datenquellen, indem vorgegebene Event-Muster er- kannt und daraus spezielle Aktionen generiert bzw. abgeleitet werden. Hierbei kann eine Mustererkennung zum Einsatz kommen.

Bei einem Publish/Subscribe-Ansatz werden an jeder Event Pro- cessing Unit (EPU) nur diejenigen Events bzw. Ereignisse erscheinen, die dort auch subskribiert sind und demzufolge ver ¬ arbeitet werden können.

Die herkömmlichen Ansätze zur Reduzierung des Datentransport- volumens und des Datenverarbeitungsaufwandes von Daten stoßen bei hohen Datenmengen allerdings an ihre Grenzen.

Es ist daher eine Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zu schaffen, welche den Auf- wand zur Datenübertragung und Datenverarbeitung weiter reduzieren .

Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den in Patentanspruch 1 angegebenen Merkmalen gelöst.

Die Erfindung schafft demnach ein Verfahren zur verlustfreien Kompression eines Datenstromes, der eine Folge von struktu ¬ rierten Datenobjekten umfasst, die eine Liste von Eigenschaf ¬ ten aufweisen, welche jeweils ein Schlüssel-Wert-Paar enthal- ten, wobei das Verfahren die folgenden Schritte aufweist:

Zerlegen der strukturierten Datenobjekte des Datenstromes in einen konstanten Datenobjekt-Anteil, welcher Schlüssel-Wert- Paare mit konstanten Werten aufweist, und in variable Daten ¬ objekt-Anteile, welche Schlüssel-Wert-Paare mit variablen Werten aufweisen,

einmaliges Übertragen des konstanten Datenobjekt-Anteils der strukturierten Datenobjekte zu einem Empfänger und

Übertragen der variablen Datenobjekt-Anteile der zerlegten Datenobjekte des Datenstromes zu dem Empfänger.

Bei einer möglichen Ausführungsform des erfindungsgemäßen Verfahrens weisen die strukturierten Datenobjekte des Daten ¬ stromes JavaScript Object Notation, JSON, Datenobjekte auf. Bei einer möglichen Ausführungsform des erfindungsgemäßen Verfahrens weist jedes Schlüssel-Wert-Paar einen Schlüssel auf, der durch eine Zeichenkette gebildet wird.

Bei einer alternativen Ausführungsform des erfindungsgemäßen Verfahrens weist jedes Schlüssel-Wert-Paar einen Schlüssel auf, der durch eine Zahl gebildet wird.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens weist das Schlüssel-Wert-Paar einen Wert auf, der durch ein Datenobjekt, ein Array, eine Zeichenkette, einen Zahlenwert oder einen logischen Wert gebildet wird.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens weist der variable Datenobjekt-Anteil des zerlegten strukturierten Datenobjektes des Datenstromes ein Array auf, dessen Komponenten Schlüssel-Wert-Paare sind, die zu dem Empfänger asynchron gestreamt werden.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens enthalten die variablen Datenobjekt- Anteile eines Datenstromes jeweils eine eindeutige Identifi- zierungskennung zur Kennzeichnung ihrer Zugehörigkeit zu dem Datenstrom.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens werden Änderungen des variablen Datenob- jektanteils des strukturierten Datenobjektes des Datenstromes gegenüber einem Referenzdatenobjekt ermittelt und zu dem Emp ¬ fänger übertragen.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens wird das Referenzdatenobjekt durch ein strukturiertes Datenobjekt des Datenstromes mit einer vorbe ¬ stimmten Dauerhaftigkeit gebildet. Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens wird das Referenzdatenobjekt des Daten ¬ stromes als solches gekennzeichnet und zu dem Empfänger über ¬ tragen .

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens wird die Dauerhaftigkeit des Referenzda ¬ tenobjektes durch eine Anzahl von Übertragungszyklen oder einen Gültigkeitszeitraum festgelegt.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens erfolgt das Zerlegen der strukturierten Datenobjekte des Datenstromes zur Laufzeit während der Über ¬ tragung des Datenstromes zu dem Empfänger.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens werden auf Seiten des Empfängers die strukturierten Datenobjekte des Datenstromes auf Grundlage des erhaltenen konstanten Datenobj ektanteils und der empfangenen variablen Datenobj ektanteile zur weiteren Datenverarbeitung rekonstruiert.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens werden auf Seiten des Empfängers die strukturierten Datenobjekte des Datenstromes auf Grundlage der zwischengespeicherten Referenzdatenobjekte und der empfangenen Änderungen der variablen Datenobj ektanteile zur weiteren Datenverarbeitung rekonstruiert.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens ist der Datenstrom ein Ereignisdatenstrom, insbesondere ein Sensordatenstrom.

Die Erfindung schafft ferner gemäß einem weiteren Aspekt eine Kompressionsvorrichtung zur verlustfreien Kompression eines Datenstromes mit den in Patentanspruch 15 angegebenen Merkmalen . Die Erfindung schafft demnach eine Kompressionsvorrichtung zur verlustfreien Kompression eines Datenstromes, der eine Folge von strukturierten Datenobjekten umfasst, die eine Liste von Eigenschaften aufweisen, welche jeweils aus einem Schlüssel-Wert-Paar bestehen, wobei die Vorrichtung aufweist: eine Datenzerlegeeinheit (DZE) , die geeignet ist, die struk ¬ turierten Datenobjekte des Datenstromes in einen konstanten Datenobjekt-Anteil, welcher Schlüssel-Wert-Paare mit konstan ¬ ten Werten aufweist, und in variable Datenobjekt-Anteile, welche Schlüssel-Wert-Paare mit variablen Werten aufweisen, zu zerlegen; und

eine Daten-Übertragungseinheit (DÜE) , welche einmalig den konstanten Datenobj ektanteil und separat die variablen Daten- obj ektanteile der zerlegten Datenobjekte an einen Empfänger überträgt.

Im Weiteren werden mögliche Ausführungsformen des erfindungsgemäßen Verfahrens und der erfindungsgemäßen Vorrichtung unter Bezugnahme auf die beigefügten Figuren detailliert be- schrieben.

Es zeigen:

Fig. 1 ein Ablaufdiagramm zur Darstellung einer möglichen

Ausführungsform des erfindungsgemäßen Verfahrens zur verlustfreien Kompression eines Datenstromes;

Fig. 2 ein Blockschaltbild zur Darstellung einer möglichen

Ausführungsform einer erfindungsgemäßen Kompressi- onsvorrichtung zur verlustfreien Kompression eines

Datenstromes .

Wie man in Fig. 1 erkennen kann, umfasst ein erfindungsgemäßes Verfahren zur verlustfreien Kompression eines Datenstro- mes bei dem dargestellten Ausführungsbeispiel im Wesentlichen drei Schritte. Der Datenstrom DS besteht aus einer Folge von strukturierten Datenobjekten. Diese Datenobjekte weisen jeweils eine Liste von sogenannten Eigenschaften auf, die jeweils ein Schlüssel- Wert-Paar enthalten.

In einem ersten Schritt Sl werden die strukturierten Datenobjekte des Datenstromes in einen konstanten Datenobjekt-Anteil und in variable Datenobjekt-Anteile zerlegt. Der konstante Datenobjekt-Anteil weist dabei Schlüssel-Wert-Paare mit kon- stanten Werten auf. Die variablen Datenobjekt-Anteile weisen Schlüssel-Wert-Paare mit variablen Werten auf.

Anschließend erfolgt im Schritt S2 ein einmaliges Übertragen des gebildeten konstanten Datenobjekt-Anteils der struktu- rierten Datenobjekte zu einem Empfänger.

In einem weiteren Schritt S3 erfolgt eine Übertragung der variablen Datenobjekt-Anteile der zerlegten Datenobjekte des Datenstromes zu dem Empfänger E.

Bei dem in Fig. 1 dargestellten Ausführungsbeispiel des erfindungsgemäßen Verfahrens wird zunächst der konstante Daten ¬ objekt-Anteil im Schritt S2 übertragen und anschließend die variablen Datenobjekt-Anteile des zerlegten Datenobjektes im Schritt S3. Die Übertragung der Datenobjekt-Anteile erfolgt bei einer möglichen Ausführungsform von einem Sender zu dem Empfänger über ein Datenübertragungsmedium. Hierbei kann es sich beispielsweise um ein Datennetz handeln, bei dem Netzknoten über Leitungen miteinander verknüpft sind. Dabei er- folgt die Datenübertragung der konstanten und variablen Datenobjekt-Anteile über Datenleitungen. Alternativ kann die Datenübertragung der konstanten und variablen Datenobjekte auch drahtlos über eine Luftschnittstelle erfolgen. Fig. 2 zeigt ein Blockschaltbild einer möglichen Ausführungs ¬ form einer erfindungsgemäßen Kompressionsvorrichtung 1 zur verlustfreien Kompression eines Datenstromes DS, der eine Folge von strukturierten Datenobjekten DO umfasst. Jedes die- ser Datenobjekte DO weist eine Liste von Eigenschaften auf, welche jeweils aus einem Schlüssel-Wert-Paar bestehen. Die in Fig. 2 dargestellte Kompressionsvorrichtung 1 weist eine Datenzerlegungseinheit 2 und eine Datenübertragungseinheit 3 auf. Die Datenzerlegeeinheit 2 ist geeignet, die strukturier ¬ ten Datenobjekte des empfangenen Datenstromes in einen kon ¬ stanten Datenobjekt-Anteil, welcher Schlüssel-Wert-Paare mit konstanten Werten aufweist, und in variable Datenobjekt- Anteile, welche Schlüssel-Wert-Paare mit variablen Werten aufweisen, zu zerlegen. Die Kompressionsvorrichtung 1 enthält eine Datenübertragungseinheit 3, welche einmalig den durch die Datenzerlegeeinheit 2 erzeugten konstanten Datenobjekt- Anteil und separat die durch die Datenzerlegeeinheit 2 er ¬ zeugten variablen Datenobjekt-Anteile der zerlegten Datenob- jekte an mindestens einen Empfänger überträgt.

Wie in Fig. 2 dargestellt, erhält die Datenzerlegeeinheit 2 der Kompressionsvorrichtung 1 von einer Datenquelle (DQ) 4 mindestens einen Datenstrom (DS) , der eine Folge von struktu- rierten Datenobjekten DO umfasst. Die strukturierten Datenobjekte des Datenstromes DS werden durch die

Datenzerlegeeinheit 2 der Kompressionsvorrichtung 1 zerlegt, und zwar in einen konstanten Datenobjekt-Anteil und in variable Datenobjekt-Anteile. Die Datenübertragungseinheit 3 der Kompressionsvorrichtung 1 überträgt anschließend einmalig den konstanten Datenobjekt-Anteil zu einem Empfänger 5. Weiterhin werden anschließend die von der Datenzerlegeeinheit 2 gene ¬ rierten variablen Datenobjekt-Anteile der zerlegten Datenobjekte des Datenstromes durch die Datenübertragungseinheit 3 separat an den Empfänger 5 übertragen. Der Empfänger 5 weist vorzugsweise eine Datenrekonstruktionseinheit zur Rekonstruk ¬ tion der strukturierten Datenobjekte DO aus dem konstanten Datenobj ektanteil und den empfangenen variablen Datenobjekt- anteilen auf.

Die strukturierten Datenobjekte DO des Datenstromes DS weisen bei einer möglichen Ausführungsform sogenannte JavaScript Object Notation, JSON, Datenobjekte auf. Das JSON-Datenobj ekt bildet ein Datenformat, das zur Übertragung und Speicherung von strukturierten Daten geeignet ist. Mit einem JSON- Datenformat können Daten verschachtelt werden. Als Datentypen sind bei JSON ein Nullwert, ein Boolescher Wert, eine Zahl, eine Zeichenkette, ein Array und ein Objekt vorgesehen. Ein Objekt enthält dabei eine Liste von Eigenschaften. Allerdings sind auch Objekte ohne Eigenschaften, sogenannte leere Objek ¬ te, zulässig. Eine Eigenschaft des Objektes besteht aus einem Schlüssel und einem Wert, wobei jeder Schlüssel in einem Ob- jekt nur einmal enthalten sein darf. Bei einer bevorzugten Ausführungsform wird der Schlüssel durch eine Zeichenkette gebildet. Der Wert des Schlüssel-Wert-Paares kann durch ein Objekt, durch ein Array, durch eine Zeichenkette, durch eine Zahl oder durch einen Booleschen Ausdruck gebildet werden.

Bei einer möglichen Ausführungsform des erfindungsgemäßen Verfahrens weist jedes Schlüssel-Wert-Paar des strukturierten Datenobjektes DO einen Schlüssel bzw. Key auf, der durch eine Zeichenkette oder eine Zahl gebildet wird. Weiterhin besitzt das Schlüssel-Wert-Paar des JSON-Datenobj ektes bei einer mög ¬ lichen Ausführungsform einen Wert, der durch ein Datenobjekt, ein Array, eine Zeichenkette, einen Zahlwert oder einen logi ¬ schen Wert gebildet wird. Die variablen Datenobjekt-Anteile der durch die

Datenzerlegeeinheit 2 zerlegten strukturierten Datenobjekte des Datenstromes DS können bei einer möglichen Ausführungs ¬ form ein Array aufweisen, dessen Komponenten Schlüssel-Wert- Paare sind, die von der Datenübertragungseinheit 3 durch den Empfänger 5 asynchron gestreamt werden.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens weisen die variablen Datenobjekt-Anteile eines Datenstromes jeweils eine eindeutige Identifikations- kennung zur Kennzeichnung ihrer Zugehörigkeit zu dem jeweiligen Datenstrom DS auf. Bei einer möglichen Ausführungsform werden Änderungen des variablen Datenobjekt-Anteils des strukturierten Datenobjektes des Datenstromes DS gegenüber einem Referenzdatenobjekt er ¬ mittelt und zu dem Empfänger 5 übertragen. Dabei kann das Re- ferenzdatenobj ekt durch ein strukturiertes Datenobjekt des

Datenstromes mit einer vorbestimmten Dauerhaftigkeit gebildet sein. Bei einer möglichen Ausführungsform wird das Referenzdatenobjekt zunächst an den Empfänger 5 übertragen und dort zur weiteren Verwendung zwischengespeichert. Das Referenzda- tenobjekt wird vorzugsweise als solches gekennzeichnet und zu dem Empfänger 5 durch die Datenübertragungseinheit 3 der Kompressionsvorrichtung 1 übertragen und in dem Empfänger zwischengespeichert . Bei einer möglichen Ausführungsform des erfindungsgemäßen

Verfahrens wird die Dauerhaftigkeit des Referenzdatenobjektes durch eine Anzahl von Übertragungszyklen festgelegt. Bei einer weiteren möglichen Ausführungsform wird die Dauerhaftigkeit des Referenzdatenobjektes durch einen bestimmten Gültig- keitszeitraum und/oder AblaufZeitpunkt festgelegt.

Bei einer möglichen Ausführungsform erfolgt das Zerlegen des strukturierten Datenobjektes auf die Datenzerlegeeinheit 2 zur Laufzeit während der Übertragung des Datenstromes DS zu dem Empfänger 5. Auf Seiten des Empfängers 5 können die strukturierten Datenobjekte DO des ursprünglichen Datenstromes DS auf Grundlage des erhaltenen konstanten Datenobjekt- Anteils und der empfangenen variablen Datenobjekt-Anteile zur weiteren Datenverarbeitung rekonstruiert werden. Bei einer möglichen Ausführungsform werden auf Seiten des Empfängers 5 die strukturierten Datenobjekte DO des Datenstromes DS auf Grundlage der zwischengespeicherten Referenzdatenobjekte und empfangener Änderungen der variablen Datenobj ektanteile zur weiteren Datenverarbeitung rekonstruiert. Der von der Daten- quelle 4 erhaltene Datenstrom ist vorzugsweise ein Ereignis ¬ strom. Bei einer möglichen Ausführungsform ist die Datenquelle 4 ein Sensor, der Sensordaten generiert, welche als Sen- sordatenstrom von der Datenquelle 4 zu der Kompressionsvorrichtung 1 übertragen werden.

Die Komprimierung der Datenströme DS durch die Kompressions- Vorrichtung 1 ermöglicht es, die Datenrate der Datenübertra ¬ gung zu senken. Ein Datenstrom DS, bei dem es sich um einen Datenstrom von Ereignis- bzw. Eventdaten handeln kann, um- fasst eine Folge von strukturierten Datenobjekten. Bei einer möglichen Ausführungsform wird durch eine Datenquelle 4, bei- spielsweise ein Sensor oder eine sonstige Einheit des Sys ¬ tems, ein einziger Datenstrom DS generiert. Dieser Datenstrom kann beispielsweise aus einer Folge von Datentripeln beste ¬ hen, die beispielsweise eine Sensor-ID des Sensors 4, einen Zeitstempel und einen Sensorwert umfasst.

Beispielsweise kann ein strukturiertes Datenobjekt des Daten ¬ stromes DS in JSON-Notation wie folgt dargestellt werden:

{ "SensorlD" : "ABC1234",

"Timestamp" : "2016-06-10T13 : 47 : 26.0123+02 : 00 " ,

"Sensorvalue" : 987.654 }.

Bei einer möglichen Ausführungsform wird aus einem generierten Sensorsignal bzw. Sensordatenfolge zunächst ein Eventda- tenobjekt bzw. ein Ereignisdatenobjekt generiert. Ein Event bzw. ein Ereignis stellt ein strukturiertes Datengebilde dar, das über die reinen Sensordaten hinaus weitere Informationen umfasst. Beispielsweise kann ein Eventdatenobjekt, welches Sensordaten eines Wärmesensors enthält, die Dimension bzw. Einheit der Sensordaten angeben, also beispielsweise °C oder °F oder °K, je nachdem, wie der betreffende Sensor bzw. die Datenquelle 4 konstruiert bzw. konfiguriert ist. Im Zusammen ¬ hang mit einem Publish/Subscribe-Ansatz kann seitens eines Consumers bzw. einer Datenverarbeitungseinheit ein Event bzw. Ereignis abonniert werden, der einen Temperaturwert von einem bestimmten Ort liefert, wobei es beispielsweise zweitrangig ist, ob der Sensorwert von einem Wärmefühler oder einer Wärmebildkamera stammt. Bei höherklassigen Events, die durch Korrelation unterschiedlicher Daten generiert werden, kann ein numerischer Wert mitunter völlig fehlen. Beispielsweise kann ein Feuermelde-Event aus den Sensordaten eines Rauchmel ¬ ders und aus den Sensordaten eines Wärmefühlers abgeleitet werden, wobei die beiden Sensoren, d.h. der Rauchmelder und der Wärmefühler, dieselbe Räumlichkeit überwachen und ihre Sensordaten aus einem gegebenen Zeitfenster stammen müssen.

Die erfindungsgemäße Kompressionsvorrichtung 1 erlaubt eine verlustfreie Kompression des von der Datenquelle 4 stammenden Datenstromes. Dies bedeutet, dass durch das erfindungsgemäße Verfahren und die erfindungsgemäße Kompressionsvorrichtung 1 kein Informationsverlust hervorgerufen wird. Gerade wenn der Wert eines Events nicht numerischer Natur ist, sondern ein komplexes Datengebilde darstellt, ist ein Informationsverlust zu vermeiden. Dies gilt insbesondere, falls die Quelle des Ereignisstromes bereits nach einem Zeit- oder Wertkriterium gefiltert wird. Jeder Event bzw. jedes Ereignis, das von ei ¬ ner Datenquelle bzw. Eventquelle 4 übertragen bzw. ausgesen- det wird, muss bei den zugehörigen Empfängern 5 vollständig rekonstruiert werden können.

Eine diskrete Folge von Sensordaten oder Events bzw. Ereig ¬ nisse, die von derselben Datenquelle 4 stammen, kann als Da- tenstrom oder sogenannter Stream übertragen werden. Ein Beispiel einer Folge von primitiven Events bzw. Sensordaten lautet wie folgt:

{ "Sensor data" : { "SensorlD" : string , "Timestamp" : stringl, "Sensorvalue" : numberl }} { "Sensor data" : { "SensorlD" : string , "Timestamp" : string2, "Sensorvalue" : number2 }}

{ "Sensor data" : { "SensorlD" : string , "Timestamp" : stringN, "Sensorvalue" : numberN } }

Diese Folge von Datenobjekten DO kann als ein Stream folgen- dermaßen dargestellt werden:

{ "Sensor data stream" :

{ "SensorlD" : string , [ { "Timestamp" : stringl, "Sensorvalue" : numberl }

{ "Timestamp" : string2, "Sensorvalue" : number2 }

{ "Timestamp" : stringN, "Sensorvalue" : numberN }

Hierbei wird der konstante Anteil der Folge von Sensordaten ¬ objekten, nämlich die SensorlDs, aus der Folge herausgezogen bzw. ausgeklammert.

Die variablen Anteile der Sensordatenfolge, nämlich die Zeit ¬ stempel und Werte, werden in dem dargestellten Beispiel in ein JSON-Array zusammengefasst . Der Streaming-Mechanismus sorgt dafür, dass die Daten asynchron und kontinuierlich zu dem Empfänger 5 übertragen werden, d.h., dass die Datenobjekte DO des Datenstromes DS, der das Array überträgt, bereits bei dem Empfänger 5 gelesen werden können, während die Datenübertragungseinheit der Kompressionsvorrichtung 1 noch weitere Datenobjekte generiert und in das Array bzw. den Stream einschreibt .

Bei diskreten Event- bzw. Ereignisdaten und einem definiert variablen Anteil kann das Streaming allgemein durch das Ausklammern der konstanten Anteile des strukturierten Datenobjektes wie folgt erfolgen: "Event data": [Κ^. C 1 , K 2 : C 2 , K N : C N , K N+1 : V N+ll , K N+2 : V N+2l , ... , K N+M : V N+Ml }|

"Event data": {Κ·^ C 1 , K 2 : C 2 , K N : C N , K N+1 : V N+l2 , K N+2 : V N+22 , ... , K N+M : V N+M2 }| "Event data": {Κ·^ C 1 , K 2 : C 2 , K N : C N , K N+ 1 : V N+ 1L , K N+2 : V N+2 L , ... , K N+M : V N+ML }|

Hierbei bezeichnen K s die Schlüssel bzw. Keys die Schlüssel- Wert-Paare und C s die konstanten Werte. V s steht für variable Werte. Die oben dargestellte Folge von Datenobjekten DO kann wie folgt zusammengefasst werden:

Hier werden die Komponenten des JSON-Arrays asynchron ge- streamt .

Eine Prozedur, mit der das Ausklammern implementiert werden, kann bei einer möglichen Ausführungsvariante wie folgt ausge führt werden. Die folgende Prozedur funktioniert sowohl für Sensordaten als auch Eventdaten: obj.getO; // Sämtliche Daten von der Quelle werden in das Objekt gelesen. constObj = newObj (); // ... bekommt die konstanten Anteile des Objekts

varObj = newObj (); // ... bekommt die variablen Anteile des Objekts for all ( pair e obj ) {

if ( pair . value . isVariable ( ) ) { // Zerlegung des Objekts

varObj . add ( pair.key, pair. value ); // ... variable und ...

} eise {

constObj . add ( pair.key, pair. value ); // ... konstante Anteile

stream.send( constObj // Der konstante Anteil des Objekts wird übertragen stream. send ( " [ " ) ; // Das Array wird geöffnet fürs Streaming

stream.send( varObj ); // Der variable Anteil des Objekts wird übertragen while ( TRUE ) {

obj . get ( ) // Einlesen des nächsten Objekts.

( pair e obj ) {

( pair . value . isVariable ( ) ) { // Filterung der variablen Anteile

varObj . add ( pair.key, pair. value );

stream. send( varObj ) ; // Nur der variable Anteil des Objekts wird übertragen stream. send ( " ] " ) ; // Nur der Vollständigkeit halber Bei dieser Prozedur wird bestimmt, welche Anteile des Daten ¬ objektes als konstant und welche als variabel gelten. Bei ei ¬ ner möglichen Ausführungsform erfolgt die Auswertung während der Laufzeit. Alternativ kann die Datenauswertung auch nicht zur Laufzeit erfolgen.

Auf Seiten des Empfängers erfolgt die Verarbeitung in umge ¬ kehrter Reihenfolge. Jedes empfangene Datenobjekt kann durch das nächste Datenobjekt aktualisiert und zur weiteren Daten ¬ verarbeitung komplettiert werden.

Falls in dem System kein Streaming-Mechanismus zur Verfügung steht, kann die Datenreduktion bzw. Datenkompression gemäß dem erfindungsgemäßen Verfahren ebenfalls durchgeführt wer- den. Hierbei wird zu dem variablen Anteil des Datenobjektes eine eindeutige Identifikationskennung mitgegeben, anhand derer die variablen Objektanteile dem Objektteil mit den kon ¬ stanten Attributen wieder zugeordnet werden können:

["Event data": {EventlD: eventlD, Κ χ : C 1( K 2 : C 2 , ... , K N : C N , K N+1 : V N+ll , K N+2 : V N+2l , ... , K N+M : V N+Ml }| ["Event data": {EventlD: eventlD, K x : C 1( K 2 : C 2 , ... , K N : C N , K N+1 : V N+l2 , K N+2 : V N+22 , ... , K N+M : V N+M2 }]

"Event data": {EventlD: eventlD, K X : C 1( K 2 : C 2 , ... , K N : C N , K N+1 : V N+1L , K N+2 : V N+2L , ... , K N+M : V N+ML }|

Hierbei bezeichnen K s die Schlüssel bzw. Keys, C s konstante Werte und V s variable Werte.

Dies kann wie folgt zusammengefasst werden

'Event data" {EventlD: eventlD, K x : C 1( K 2 : C 2 , ... , K N : C N }}

'Event data" {EventlD: eventlD, K N+1 : V N+ll , K N+2 : V N+2l , ... , K N+M : V N+Ml

'Event data" {EventlD: eventlD, K N+1 : V N+l2 , K N+2 : V N+22 , ... , K N+M : V N+M2

["Event data": {EventlD: eventlD, K N+1 : V N+1L , K N+2 : V N+2L , ... , K N+M : V N+ML }|

Die kompletten Datensätze können somit auf Seiten des Empfängers 5 anhand der Identifikationskennung soweit notwendig wieder rekonstruiert werden. Damit kann ein Streaming der variablen Anteile diskreter Datenobjekte durchgeführt werden. In manchen Fällen ist es je ¬ doch nicht bekannt, welche Anteile eines Datenobjektes vari- able Anteile und welche konstante Anteile sind bzw. wann sich die variablen Anteile ändern und wann nicht. In diesen Fällen kann eine Unterscheidung dynamisch vorgenommen werden. Im Folgenden wird als Beispiel die Übertragung von Zeitstempeln (Timestamp) im Abstand von 1.5 Sekunden dargestellt. Das Kon- strukt ist wie folgt gegeben:

{ "Timestamp" :

{ "Year" : number ,

"Month" : number ,

"Day" : number ,

"Hour" : number ,

"Minute" : number ,

"Second" : number ,

"Millisecond" : number } }

In dem dargestellten Beispiel sind alle Komponenten des Objektes variabel, wenn auch nicht immer. Ein konkreter Zeitpunkt ist beispielsweise: { "Timestamp" :

{ "Year" : 2016 ,

"Month" : 7 ,

"Day" : 29 ,

"Hour" : 1 ,

"Minute" : 23 ,

"Second" : 45

"Millisecond" : 678,01 } }

Um den um eineinhalb Sekunden späteren Zeitstempel darzustel- len, genügt es, nur die Sekunden und Millisekunden zu aktualisieren :

{ "Timestamp" { "Second" : 47 ,

"Millisecond" : 178,01 } }

Eine Stunde später muss nur noch das folgende Datenobjekt übertragen werden, falls zwischendurch keine weiteren Übertragungen stattgefunden haben:

{ "Timestamp" :

{ "Hour" : 2 } }

Wie man aus dem obigen Beispiel erkennen kann, bietet das erfindungsgemäße Verfahren und die erfindungsgemäße Kompressi ¬ onsvorrichtung ein erhebliches Potential zur Datenreduktion. Für den Fall, dass auch in dem variablen Anteil eines Datenobjektes nur wenige Änderungen vorhanden sind, ist es bei ei ¬ ner möglichen Ausführungsform möglich, nur diese Änderungen zu übertragen. Eine Prozedur, bei der dieses implementiert wird, kann wie folgt lauten: obj.getO; // Daten von der Quelle werden in das Objekt gelesen

refObj = obj; // Legt eine Kopie als Referenzobjekt an

send ( obj ); // Vollständige Übertragung des Datenobjekts

while ( TRUE ) {

obj . get ( ) ;

newObj = reduce ( obj, refObj ) ; // Konstruktion einer reduzierten Kopie von obj newObj . add ( "EventlD", obj . getValue ( "EventlD" ) ) ; // Zur Wiederherstellung refObj = obj; // Objekt wird Referenzobjekt

send( newObj ); // Übertragung des reduzierten Datenobjekts

}

Die in der obigen Prozedur angegebene reduce-Funktion implementiert für jedes Schlüssel-Wert-Paar des Datenobjektes die folgende Tabelle. Dabei wird davon ausgegangen, dass sich die JSON-Datenobj ekte obj und refObj nur in den Werten, nicht je ¬ doch in den Schlüsseln unterscheiden. Die Reduzierung kann auf ein JSON-Array erweitert werden, indem nur die differenzierenden Komponenten des Arrays übertragen werden.

Im Falle der Reduzierung eines Datenobjektes kann im einfachsten Fall ein leeres Datenobjekt "{}" übertragen werden. Ein leeres Datenobjekt ist nach der JSON-Definition zulässig.

Im Falle einer Reduzierung eines Arrays kann das Ergebnis von der JSON-Definition abweichen, da immer ein Komma übertragen wird, auch wenn Komponenten aufgrund von Gleichheit fehlen. Im Extremfall kann das wie folgt aussehen:

Ein derartiges Konstrukt ist in der herkömmlichen JSON- Definition nicht vorgesehen, kann aber bei der Rekonstruktion eines Arrays dabei helfen, die richtige Stelle für den geän ¬ derten Wert zu finden, beispielsweise in einem Array die dritte Komponente: ,,[,,w,...]". Der Empfang auf Seiten des Empfängers 5 findet in umgekehrter Reihenfolge statt. Jedes empfangene Datenobjekt wird durch das nächste aktualisiert und komplettiert und intern weiter ¬ verarbeitet .

Bei einer möglichen Ausführungsform ist eine Erweiterung bei rekursiven Datenstrukturen möglich. Bei einem rekursiven Aufbau der Werte der Datenobjekte oder Arrays kann die Reduktion auch für die Werte angewendet werden. Bei Objekten kann die obige Tabelle wie folgt erweitert werden: ... ( if ( vi ! = wi ) "ki : " ° reduce ( vi ) ° " , " ) ° ...

Bei Arrays kann die Erweiterung der Tabelle wie folgenderma ¬ ßen dargestellt erfolgen: ... ( if ( vi != wi ) reduce ( vi ) ) ° ...

Die Reduktion atomarer Werte, wie beispielsweise Zeichenkette bzw. Strings, Zahlenwerten, oder Booleschen Werten, sind die Werte selbst. Hierdurch kann die Rekursion verankert werden.

Bei einer weiteren möglichen Ausführungsform des erfindungsgemäßen Verfahrens kann eine Erweiterung zum Referenzobjekt erfolgen. Bei einer möglichen Ausführungsvariante wird die Übertragung von strukturierten Daten bzw. Datenobjekten in dem Sinne realisiert, dass jedes Datenobjekt als Referenzob ¬ jekt genutzt wird, sodass nur die Änderungen zu diesem über ¬ tragen werden müssen. Bei einer alternativen davon abweichenden Ausführungsvariante kann einem Referenzobjekt eine länge ¬ re Dauerhaftigkeit gegeben werden. Je nach Anwendung bzw. Konfiguration kann jedes 10-te, 20-ste oder beispielsweise 100-ste Datenobjekt zu einem Referenzobjekt deklariert wer ¬ den, indem die Übertragungszyklen mitgezählt werden. Anstatt der Zeile: refObj = obj ; // Objekt wird Referenzob ekt kann in der oben dargestellten Prozedur die folgenden Zeilen eingesetzt werden: if ( count++ >= N ) { // N bezeichnet Dauerhaftigkeit in Übertragungs zyklen refObj = obj ; // Objekt wird Referenzob ekt

count = 0;

}

Bei einer alternativen Ausführungsform kann ersatzweise für die Anzahl von Übertragungszyklen auch eine zeitliche Dauerhaftigkeit berücksichtigt bzw. festgelegt werden, indem der Zähler durch einen Zeitpunkt ersetzt wird, wie folgt: if ( getTimeO >= nextTime ) {

// nextTime bezeichnet den Zeitpunkt für die Übertragung des nächsten Referenzobjekts. refObj = obj ;

nextTime = getTimeO + deltaT;

// deltaT bezeichnet die Dauerhaftigkeit des Referenzobjekts

Auf Seiten des Empfängers 5 muss Klarheit darüber bestehen, welches Datenobjekt ein Referenzobjekt ist. Daher wird vor ¬ zugsweise eine entsprechende Information mitgegeben, z.B. ein weiteres Attribut, das immer dann gesetzt werden kann, wenn die entsprechende Bedingungen erfüllt ist: if ( count++ >= N ) {

// or if ( getTimeO >= nextTime ) { newObj . add ( "isRefObj", true

1

send ( newObj ) ;

Auf der Seite des Empfängers 5 wird das Referenzobjekt ausge ¬ wählt und mit den nachfolgenden empfangenen Objekten aktuali- siert und komplettiert, um anschließend die Datenverarbeitung vornehmen zu können. Das Referenzobjekt bleibt so lange er ¬ halten, bis durch den Empfänger 5 ein neues Referenzobjekt empfangen wird. Hierzu wird das Referenzobjekt vorzugsweise in einem dafür vorgesehenen Zwischenspeicher abgelegt.

Das erfindungsgemäße Verfahren und die erfindungsgemäße Komp ¬ ressionsvorrichtung dienen zur effizienten Datenübertragung von strukturierten Daten bzw. Datenobjekten. Dabei erfolgt eine verlustfreie Kompression ohne Informationsverlust. Bei dem erfindungsgemäßen Verfahren wird der konstante Anteil des strukturierten Datenobjektes vorzugsweise nur einmalig über ¬ tragen und anschließend die variablen Datenobjekt-Anteile se ¬ parat übertragen. Bei einer möglichen Ausführungsform kann zur Laufzeit entschieden werden, ob es eine Änderung einer Objektkomponente gegenüber einem Referenzdatenobjekt gegeben hat. In diesem Falle werden nur die Änderungen zu dem Empfänger 5 übertragen. Das erfindungsgemäße Verfahren erlaubt auch eine Datenübertragung ohne Streaming.