Wikipedia · einfach zusammengefasst · Stand
Datenstrom
Mit Datenströmen (englisch data streams) bezeichnet man in der Informatik einen kontinuierlichen Datenfluss von Datensätzen, dessen Ende meist nicht im …
Inhalt4 Abschnitte
Begriff und Einsatz
Ein Datenstrom (englisch data stream) ist in der Informatik ein kontinuierlicher Datenfluss von Datensätzen. Sein Ende ist meist nicht im Voraus absehbar. Jeder Datensatz hat einen beliebigen, aber festen Typ und wird fortlaufend verarbeitet, sobald er eintrifft.
Die Datenrate, also die Menge von Datensätzen pro Zeitspanne, kann schwanken. Sie kann so groß werden, dass die begrenzten Ressourcen des Empfängers für die Weiterverarbeitung nicht reichen. Dann muss dieser reagieren, etwa indem er Datensätze verwirft. Datenströme erlauben normalerweise nur sequentiellen Zugriff: Die Datensätze werden Satz für Satz in ihrer Reihenfolge verarbeitet, anders als etwa bei Arrays mit wahlfreiem Zugriff.
Datenströme werden zur Interprozesskommunikation, also zur Kommunikation zwischen Prozessen auf einem Rechner, und zur Datenübertragung über Netzwerke verwendet. Besonders wichtig sind sie für Streaming Media. Im Paradigma „Pipes und Filter“ lassen sich Datenströme vielseitig einsetzen; Unix-Shells nutzen dies häufig. Beispiele sind Wetterdaten sowie Audio- und Videoströme. Die kontinuierliche Übertragung über ein Netzwerk heißt auch Streaming.
Im allgemeinen Sprachgebrauch kann „Datenstrom“ außerdem elektronisch kodierte Daten während ihrer Übermittlung meinen. Dabei ist nicht die fortlaufende Verarbeitung entscheidend, sondern dass die Übermittlung noch nicht abgeschlossen ist. Dazu zählen Up-/Downloads, beim elektronischen Datenaustausch gesendete Daten sowie Datenbestände zum Import oder Export bei SAP.
Unterschied zu statischen Daten
Statische, also nicht strömende Daten sind meist strukturiert gespeichert, häufig als Tupel von Werten in Relationen einer Datenbank. Sie sind begrenzt und nicht zeitlich geordnet.
Daten eines Datenstroms haben dagegen eine geordnete zeitliche Reihenfolge und können praktisch unbegrenzt auftreten. In Relationen lassen sich einzelne Daten gezielt aktualisieren oder löschen. Bei Datenströmen ist nur das Einfügen neuer Daten möglich, weil kein wahlfreier Zugriff auf einzelne Elemente besteht.
Spezielle Datenstromalgorithmen können dennoch einzelne Tupel anhand ihrer Eigenschaften auswählen und sie gegebenenfalls in einen neuen Datenstrom umwandeln. Die umkehrbare Umformung strukturierter Daten in eine datenstromartige Aneinanderreihung heißt Serialisierung.
Entwicklung des Konzepts
Das Konzept von Datenströmen geht unter anderem auf Pipes zurück, die Douglas McIlroy zur Verknüpfung von Makros vorgeschlagen hatte. Sie wurden 1964 im Dartmouth Time-Sharing System als „communication files“ implementiert und 1972 in Unix integriert.
Eine Pipe ist dabei eine Datenverbindung zwischen zwei Prozessen nach dem FIFO-Prinzip: First In, First Out bedeutet, dass die zuerst eingetroffenen Daten zuerst verarbeitet werden. Das Stream-Prinzip findet sich inzwischen in den meisten modernen Programmiersprachen.
Verarbeitung und Datenstrommanagement
Viele Datenströme werden mit Programmen verarbeitet, die genau für eine Anwendung zugeschnitten sind. Audio- und Videoströme können beispielsweise mit speziellen Wiedergabeprogrammen abgespielt werden.
Seit Anfang des 21. Jahrhunderts werden Data Stream Management Systeme (DSMS) zur allgemeinen Verwaltung beliebiger Datenströme entwickelt. Sie sind ein noch relativ neues Forschungsgebiet und entsprechen für Datenströme ungefähr dem, was Datenbankverwaltungssysteme (DBMS) für statische Daten leisten. Ein Beispiel ist der Stanford Stream Data Manager. Im Rahmen dieses Projekts wurde die Continuous Query Language (CQL) als Erweiterung zu SQL entwickelt.
Schwierigkeiten entstehen durch große Datenmengen in kurzer Zeit, begrenzte Verarbeitungsressourcen und die Tatsache, dass eingehende Daten nicht vollständig zwischengespeichert werden können. Es ist stets nur ein Ausschnitt der Daten bekannt; deshalb sind nur bestimmte Algorithmen einsetzbar. Oft ist auch die Auswertungszeit begrenzt, weil zeitkritische Anwendungen schnelle Ergebnisse benötigen. Systeme, die innerhalb einer garantierten Zeitspanne ein Ergebnis liefern, heißen Echtzeitsysteme.
Da Datenströme praktisch unbegrenzt sind, sind Ergebnisse ihrer Verarbeitung oft ebenfalls Datenströme. Man unterscheidet daher eingehende Datenströme (ingoing stream, instream oder downstream) und ausgehende Datenströme (outgoing stream, upstream).