R in Ihrem Unternehmen

Startseite > Big Data, was ist das?

Big Data, was ist das?

Sind Sie ein CIO? Sie haben von Big Data gehört, aber Sie wissen nicht, was es Ihnen bringen kann? Dieser Artikel hilft Ihnen.

Sie haben eine Datenbank, die zu groß für eine einzelne Festplatte ist. Sie brauchen eine verteilte Datenbank, auf mehreren Rechnern (einem Cluster): hier beginnt Big Data.

Ein paar Beispiele:

- Telekom Firmen, Firmen mit Millionen von Kunden und Millionen von Gegenständen zum Verkauf (Amazon, eBay), Firmen mit großen Kundenanalysen

- Erkennung und Verhinderung von Betrug (Analyse von "normalem" Verhalten und Erkennen von außergewöhnlichem Verhalten)

- Webanalytics (Analyse von Logdateien), um Informationen über das Verhalten von Besuchern zu erhalten und sie gezielter anzusprechen

- Genetik und Biotechnologie (DNA, Microarray Daten)

- Riesige wissenschaftliche Experimente. CERN (das Teilchenbeschleuniger Institut in Genf, das kürzlich wahrscheinlich die Existenz der Higgs Bosons bewiesen hat) erzeugt 15 Millionen Terabyte pro Jahr.

- Soziale Netzwerke mit hunderten Millionen Nutzern (Twitter, LinkedIn, Facebook,...)

- Websuchmaschinen (Google, Yahoo): Klassifizieren von Webseiten, Page Rank Berechnungen, Webcrawler, Extrahieren und Analysieren von Informationen aus Millionen von Webseiten

- Hochfrequenzhandel (Finanzmärkte)

BigData Datenbanken sind zu groß, um auf eine einzelne Festplatte zu passen (größer als 2 TB).

Eines der ersten Probleme, das beim Umgang mit solchen Datenbanken auftritt, ist die Schwierigkeit von JOIN Operationen von Tabellen. Die Konzepte unterscheiden sich von den klassischen relationalen Datenbanken.

Daten werden nicht in einem klassischen Entity-Relation-Modell gespeichert (Tabellen mit Primär-/Fremdschlüssel), sondern unter einem Dokumentenmodell.

Statt einer Tabelle "Kunde" und einer Tabelle "Adresse" mit einem Fremdschlüssel von Adressen auf Kunden (ein Kunde kann mehrere Adressen haben), enthält das Dokumentenmodell die Adressen direkt. Es gibt keine Tabellen, nur mehr Einträge mit Primärschlüsseln (Kunden ID) und allen zugehörigen Attributen (Adressen, ...).

Dies sind die so genannten NoSQL (Not only SQL) Technologien.

Die Speicherung der Daten unterscheidet sich von relationalen Datenbanken, neue Verfahren zum Holen und Analysieren der Daten werden benötigt. Es gibt keine SQL Abfragen mehr.

Ein paar Anwendungsbeispiele für Datenanalysen mit großen Datenbanken:

- Reines Abspeichern: Sie greifen auf die Daten zu wie in einer Bibliothek: "Bitte geben Sie mir Buch Nummer 2156", "Bitte geben Sie mir das Buch mit folgendem Titel". Dieser Fall ist leicht zu behandeln: man braucht keine Berechnungen, und es gibt keinen Datentransfer über das Netzwerk. Sie bekommen nur das Buch, nach dem Sie gefragt haben, und der Weg es zu finden ist leicht: suchen Sie im Verzeichnis aller Bücher.

- Mittlere Fälle: Suche nach Webseiten durch Suchmaschinen oder in verteilten Netzen (Kademlia, Emule). Alle Berechnungen mit den Schlüsselwörtern wurden beim Aufbau des Index gemacht. Die Erstellung der Indexe ist rechenintensiv, aber wenn das erledigt ist, dann sind keine Berechnungen mehr für Benutzersuchen notwendig.

- Datenbanken, auf denen unerwartete Anfragen durchgeführt werden. Beispiel: "Wie hoch ist die Häufigkeit des Wortes ’Computer’ pro Jahr, in allen Büchern dieser Bibliothek seit 1920?" Diese Abfrage ist anders: man braucht alle Bücher, muss sie komplett durchlesen, die einzelnen Wörter zählen, und pro Jahr eine Summe bilden. Wenn wir nur einen Computer zur Verfügung haben, muss sich dieser Computer sequentiell durch alle Bücher arbeiten. Die komplette Bibliothek muss über das Netzwerk übertragen werden, und ein einzelner Computer muss alles berechnen. Das muss einfach langsam werden. Für diesen Zweck wurden neue Technologien entwickelt:

Map Reduce, Hive, Pig Latin

Da die Datenbank bereits verteilt ist, liegt es nahe, auch die Berechnung zu verteilen. Es wäre perfekt, wenn die Berechnungen und die zugehörigen Daten auf dem gleichen Computer wären, um Netzwerkverkehr zu vermeiden: das bringt einen großen Zeitgewinn.

Nachteil: wir müssen diese Abfragen in einer komplett neuen Sprache formulieren: Map/Reduce, Hive Pig, Latin.

An Technologien (Datenbanken und R Pakete) stehen uns zur Verfügung:

- Hadoop/HDFS und die zugehörigen R Pakete Rmr, Rhadoop

- MongoDB (dokumentorientiert, JSON): RmongoDB

- CouchDB (dokumentorientiert): R4CouchDB

- Cassandra (key-value): RCassandra

- HBASE (key-value) : Rhbase

- Redis (key-value): rredis

- Neo4j: eine graph-type Datenbank (mit einer REST API um aus R auf die Daten zugreifen zu können), nützlich wenn die Daten aus Beziehungen zwischen Entitäten bestehen.

Anmerkung: Diese Datenbanken laufen prinzipiell unter Linux.

Die Auswahl der Datenbank hängt von Ihrem Datentyp ab (key-value, Dokumentenmodell, graph Typen) und Ihren Anwendungen (Echtzeit? Replikation? Fehlertolerant? Kohärent?).

Ein Vergleich mit Google Trend:

JPEG -

Lesen Sie auch einen Vergleich von NoSQL Datenbanken und unseren Artikel über R und paralleles Rechnen .

Irgendeine Beziehung zu anderen Buzzwords?

- Cloud computing, Infrastructure as a Service (IaaS), Platform as a Service (PaaS), und Software as a Service (SaaS).
=> Keine direkte Beziehung. Die Installation eines Clusters mit einer verteilten Datenbank bringt Kosten mit sich (Infrastruktur, Wartung,...). Die Auslagerung zu einer Organisation, die Cloudservices anbietet, ist möglich (z.B. Amazon EC2).

- Skalierbarkeit: NoSQL Datenbanken skalieren von Natur aus. Falls Sie sich Sorgen über die Antwortzeit Ihrer IT Infrastruktur machen, dann könnten NoSQL Datenbanken eine Lösung sein.

- Virtualisierung (VMWare,...): Keine Beziehung. Im Gegenteil, es scheint kontraproduktiv zu sein, virtuelle NoSQL Cluster zu betreiben, da es die Performance reduziert.

Brauche ich NoSQL wirklich?

Wenn Sie sich nicht sicher sind, dann brauchen Sie es wahrscheinlich nicht ... zumindest heute noch nicht.

Aber nutzen Sie Ihre Kundendaten maximal? Ihre Verbindungsaufzeichnungen? Weiß Ihr Marketingteam, dass man mit diesen Daten Statistiken machen kann?

Ich muss meine relationale Datenbank auf eine verteilte Datenbank migrieren (Big Data/NoSQL)

In den meisten Fällen müssen Sie nicht alles migrieren. Ihre Datenbank (Oracle, SQL Server, SYBASE) enthält zwei unterschiedliche Arten von Tabellen:

- Referenztabellen (Code/Name Tabellen, Status, ...) mit "wenigen" Einträgen (ein paar Tausend oder Zehntausend)

- "Große" Tabellen: Aufzeichnungen, die direkt mit den Aktivitäten Ihrer Organisation zu tun haben, und die jeden Tag mehr wachsen (Rechnungen, Logdateien,...). Diese haben oft eine zeitliche Komponente (eine Spalte "Datum").

Es reicht meist, nur diese großen Tabellen auf eine verteilte Datenbank zu migrieren, und eine kleine, klassische SQL Datenbank für die Referenztabellen zu behalten.