Suchen

Data Science

IoT-Basics: Die Technologie-Basis von Big Data

Seite: 3/5

NoSQL-Datenbanken als Alternative zu RDBMS

Relationale Datenbanken (engl.: Relational Database Management Systems, RDBMS) haben lange Zeit die Datenverarbeitung dominiert und werden es auch in vielen Bereichen weiter tun. Sie stoßen jedoch aufgrund ihrer Architektur bei sehr großen Datenmengen jenseits des Terabyte-Bereichs an ihre Grenzen oder werden zu teuer aufgrund damit verbundener Hardwareanforderungen – speziell dann, wenn sich die Daten gleichzeitig schnell ändern und trotzdem schnell abfragbar sein sollen. Prinzipiell lassen sich relationale Datenbanken auch weniger einfach in einem Cluster verteilen, obwohl es auch hier Konzepte wie Sharding und Partitioning gibt, die dies unterstützen.

Die etablierten RDBMS bekommen deswegen zunehmend Konkurrenz durch eine ganze Reihe von alternativen spezialisierten Datenspeicherarchitekturen, die unter dem Oberbegriff NoSQL zusammengefasst werden. Interessanterweise bieten fast alle diese Datenbanken auch eine SQL-ähnliche Abfragesprache, um die Integration mit bestehenden Reporting-Systemen zu vereinfachen.

Das «No» in NoSQL steht eher für «not-only SQL» und nicht für «kein SQL». NoSQL-Datenbanken bieten für bestimmte Anwendungsfälle schnellere und/oder kostengünstigere Lösungen an, weil sie zum Beispiel Kompromisse bei der Konsistenz und der Flexibilität zugunsten einer erhöhten Performance und leichteren Skalierbarkeit über mehrere Knoten hinweg eingehen. Meist setzen sie auch keine hochspezialisierten Serverarchitekturen mit hoher Redundanz von Teilkomponenten voraus, die Systeme funktionieren auch mit günstiger Commodity-Hardware.

NoSQL-Datenbanken lassen sich in folgende Grundkategorien einteilen, wobei die Grenzen zwischen diesen Kategorien fließend sind:

  • Key-Value Stores bieten einfache Verzeichnisse von Schlüsseln und Werten. Sie eignen sich sehr gut für die Implementierung von Caches für verteilte Prozesse, wie man sie typischerweise oft bei Web-Anwendungen mit mehreren parallel betriebenen Web-Servern findet. Beispiele: Redis, Memcached, Amazon DynamoDB.
  • In einem Column-Oriented Store werden die Daten spaltenweise sortiert abgelegt. Das beschleunigt Anwendungen wie die Aggregation von Werten über einen längeren Zeitraum. Column-Stores eignen sich gut für das Speichern von Zeitreihen. Beispiele: Cassandra, HBase, Accumulo, Hypertable.
  • In Document-Oriented Stores werden ganze Dokumente als Texte in der Datenbank abgelegt. Dabei handelt es sich oft um XML- oder JSON-Formate, die strukturierte Daten enthalten. Jedes Dokument kann komplett anders aufgebaut sein und innerhalb des Dokuments beliebige Unterstrukturen bilden. Dadurch entfallen die Einschränkungen auf bestimmte Felder. Document-Stores bieten spezifische APIs, die auch die effiziente Suche innerhalb der Dokumente ermöglichen. Beispiele: MongoDB, Couchbase, Amazon DynmaoDB, CouchDB.
  • Graphendatenbanken werden verwendet, um Graphen zu repräsentieren, die aus Knoten (Objekte) bestehen, die über eine endliche Anzahl Kanten (Beziehungen) miteinander verbunden sind. Sie finden ihren Einsatz bei sozialen Netzwerken, in der Tourenplanung oder auch beim Netzwerkmanagement. Beispiele: Neo4j, OrientDB, Titan, Virtuoso.

Aber auch bei relationalen Datenbanksystemen bleibt die Entwicklung nicht stehen. Viele der oben beschriebenen Ansätze werden heute auch als Zusatzfunktionen in die traditionellen RDBMS integriert, so dass auch diese sich immer stärker für einen Einsatz in Big-Data-Anwendungen qualifizieren. Ein Microsoft SQL Server 2016 unterstützt z.B. In-Memory Tables, Column Stores und mit Polybase auch polystrukturierte Daten.

In-Memory-Datenbanken

Ein alternativer Ansatz, um große Datenmengen noch deutlich schneller analysieren zu können, sind In-Memory-Datenbanken. Da Hauptspeicher (RAM) immer günstiger wird, können terabytegroße Datenbanken komplett im Hauptspeicher gehalten werden. Der im Vergleich zum Hauptspeicherzugriff langsamere Festplattenzugriff entfällt beim Lesen und Schreiben. Zusätzlich können zeilen- und spaltenorientierte Speicherverfahren kombiniert werden, um so je nach Anwendungsfall noch bessere Performancewerte zu erhalten.

Normalerweise speichern relationale Datenbanken ihre Daten auf Festplatten. Bei In-Memory- Datenbanken werden alle Daten im flüchtigen Hauptspeicher gehalten. Vor Datenverlust beim Ausfall eines Knotens schützen zyklische Snapshots des kompletten Speicherabbildes und ständig aktuelle Transaktions-Logs mit allen Änderungen zwischen den Snapshots, die wiederum auf Festplatte gespeichert werden.

Der führende ERP-Hersteller SAP hat mit HANA eine solche In-Memory-Datenbank komplett neu entwickelt und hofft so, neben den technischen Vorteilen sicherlich auch die starke Abhängigkeit ihrer ERP-Systeme von den Datenbanken des direkten Wettbewerbers Oracle reduzieren zu können.

Streaming und Complex-Event-Processing analysieren Datenströme in Echtzeit

MapReduce-Verfahren wie Hadoop funktionieren gut mit ruhenden Daten. Doch diese Herangehensweise ist nur eingeschränkt geeignet für die Echtzeitanalyse von sich sehr schnell ändernden Daten aus verschiedensten Quellen, da die entsprechenden Ladezeiten zu lange sind. Deshalb gibt es parallel dazu spezialisierte Verfahren, die direkt auf ankommenden Datenströmen arbeiten und diese analysieren.

Beim Streaming werden nicht strukturierte Daten, z.B. Video- oder Audioquellen oder auch Textfeeds, in einem Cluster in Echtzeit hochparallel verarbeitet. Dabei werden die ankommenden Daten mit Mustererkennungsverfahren untersucht. Beim Complex-Event-Processing werden Daten aus verschiedenen Datenströmen in zeitlich geordneter Folge miteinander verknüpft und verarbeitet. Dabei werden die Daten typischerweise über zeitgesteuerte Fenster aggregiert.

Auf den innerhalb eines Fensters liegenden Datenpunkten können Aggregationen, Gruppierungen und Joins wie auf den Tabelleneinträgen einer relationalen

Datenbank angewendet werden.

Machine Learning erlaubt Zukunftsprognosen

Maschinelles Lernen ist eine Art von Künstlicher Intelligenz, die Computern die Fähigkeit verleiht, aus Daten zu lernen, ohne explizit programmiert zu werden. Maschinelles Lernen fokussiert dabei auf die Entwicklung von Computerprogrammen, die sich selbst automatisch beibringen, wie sie mit neuen Daten umgehen müssen, basierend auf der Erfahrung mit bereits bekannten Daten.

Mittels Maschinellem Lernen trainierte Algorithmen können dann Aussagen darüber treffen, wie sich die Zukunft wahrscheinlich entwickeln wird – wobei die Betonung auf «wahrscheinlich» liegt, denn solche Vorhersagen folgen im Allgemeinen statistischen Wahrscheinlichkeitsmodellen und erlauben selten eine 100%ige Sicherheit. Man spricht auch von voraussagender Analyse (engl.: Predictive Analytics). In einer als Prescriptive Analytics bezeichneten nächsten Evolutionsstufe sollen solche Algorithmen nicht nur vorhersagen, wie die Zukunft aussehen wird, sondern auch mögliche Handlungsoptionen und deren Auswirkungen aufzeigen und entsprechend Handlungsempfehlungen bereitstellen.

Bis vor einigen Jahren galt Künstliche Intelligenz (KI) als ein Thema, das nie die hohen Erwartungen erfüllen konnte, die in den 80er- und 90er-Jahren in das Thema gesetzt wurden. Durch die zwischenzeitlich erzielten Fortschritte in der Rechenleistung, verfeinerte Verfahren und auch geeignetere Anwendungsfälle gilt diese Aussage so nicht mehr.

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45181763)