In der Informationstechnologie werden Datenbanksysteme seit etwa 50 Jahren eingesetzt. Da die abgespeicherten Informationen damals in der Regel recht statisch waren, reichte ein relationales Datenbanksystem, dessen Anfragen zum Beispiel über SQL formuliert werden, in der Regel aus. SQL steht für „structured query language“ und basiert auf einem System, dass Daten tabellenartig in Zeilen und Spalten ablegt. Das SQL System wurde in den 70er Jahren von dem britischen Mathematiker Edgar F. Codd entwickelt und diente nach dem Motto „one database fits for all“ jahrzehntelang als Status Quo in der Datenhaltung.
SQL: Unnütz in Zeiten von Big Data ?
In den letzten Jahren wuchsen die zu speichernden Daten jedoch quasi exponentiell an, da Onlinedienste wie Google, Facebook oder Amazon über unvorstellbare Mengen an Daten verfügen. Google-Chef Eric Schmidt statuierte bereits 2010, dass die Menschheit mittlerweile an zwei Tagen so viele Daten erzeuge wie von der Entstehung der Menschheit überhaupt bis zum Jahr 2003 produziert wurden. Dies entspricht also fünf Exabyte an Daten pro 48 Stunden.
Steigt der Anteil der Schreibzugriffe bei Anwendungen mit dermaßen rasanten Wachstum stark an, kann das für die relationalen Datenbanken ein wachsendes Problem darstellen. Zumal ein steigender Anteil der Daten nicht mehr derartig homogen ist, so dass sie sich ohne weiteres in Zeilen und Spalten pressen lassen.
Alternative NoSQL
An diesem Punkt setzen die nicht-relationalen Datenbanksysteme, die unter dem Sammelbegriff NoSQL zusammengefasst werden, an. Das sieht auf den ersten Blick nach einem scharfen Kontrast zu SQL-Systemen aus, die mit einem deutlichen Nein abgelehnt werden. Tatsächlich bedeutet NoSQL jedoch „Not only SQL“, so dass die Philosophie dahinter nicht einen gänzlichen Gegensatz zu SQL darstellt, sondern auch eine sinnvolle Abwandelung oder Ergänzung zu relationalen Datenbanken enthalten kann. Großmogule wie Google, Ebay, Amazon und Facebook haben dies bereits erkannt und setzen schon seit längerem erfolgreich auf NoSQL-Strukturen.
Aufgrund freierer Anordnungsmöglichkeiten der zu speichernden Daten und deren Beziehungen zueinander, bieten NoSQL Datenbanken besonders im Bereich der Skalierbarkeit sowie der Lese- und Schreibgeschwindigkeit eine höhere Performance als die herkömmlichen SQL-Lösungen. Da sich NoSQL Datenbanken horizontal skalieren lassen sind ist eine Erweiterung dieser Datenbank zumeist auch preisgünstiger.
Genau in dieser Erweiterbarkeit liegen allerdings auch die Herausforderungen, denen sich die NoSQL Datenbanken stellen müssen. Erfolgt die Anwendung auf mehreren Servern kann es zu Verzögerungen kommen bis alle involvierten Server auf dem neusten Stand sind. Durch ein Verteilen und Duplizieren der Daten, sogenanntes „Sharding“ und „Replication“, verringert sich jedoch das Ausfallrisiko sowie die Gefahr eines Datenverlustes.
NoSQL – Deckmantel für unterschiedliche Konzepte
Trotzdem lassen sich nicht alle NoSQL-Datenbanken über einen Kamm scheren. Es stehen verschiedene Ausprägungen zur Verfügung, die sich vor allem danach unterscheiden lassen, welche Art von Daten mit ihnen gespeichert werden sollen.
- Key-Value-Datenbanken ordnen Schlüsseln Werte zu und punkten gerade durch diese Einfachheit. Der Onlinehandelsriese Amazon zum Beispiel setzt auf dieses Prinzip und nutzt das System „Dynamo“.
- Wer sich mit Data Mining und Business Intelligence beschäftigt verwendet wahrscheinlich spaltenorientierte Datenbanksysteme, die vor allem aufgrund ihrer hohen Lese- und Schreibgeschwindigkeit bestechen. Prominente Vertreter dieser Kategorie sind zum Beispiel „Cassandra“ oder „BigTable“.
- Dokumentorientierte Datenbanken speichern Dateien weder in Zeilen, noch in Spalten, sondern in einzelnen Dokumenten, die keine Beziehungen zueinander haben. Als Beispiel kann hier Apaches „CouchDB“ genannt werden
- Sind jedoch, wie etwa in sozialen Netzwerken, gerade die Beziehungen zwischen den Objekten von Bedeutung bieten sich graphenorientierte Datenbanken, wie etwa „neo4j“, an, die die Beziehungen in Knoten darstellen.
Hier wird ein guter Überblick über die verschiedenen Varianter relationaler und nicht-relationaler Datenbanken gegeben.
Auch Anbindungen an R sind möglich
Als besonders interessantes Beispiel soll im Folgenden die zuletzt erwähnte NoSQL-Datenbank neo4j näher beschrieben werden, da sie besonders gute Anknüpfungspunkte für R bietet. Hierfür sind vor allem die Pakete RCurl und RJSONITO geeignet. RJSONITO sorgt dabei für die Konvertierung zu JavaScript, womit neo4j entwickelt wurde, und besticht vor allem durch eine schnellere Verarbeitung im Vergleich zu Rjson. Anwendungsfelder für die Kombination von neo4j und R sind vielfältig. So gelang es zum Beispiel mit Hilfe von neo4j und R einen Empfehlungsdienst auf Basis der Daten des sozialen Netzwerks foursquare zu entwickeln, mit dessen Hilfe Freunden Orte vorgeschlagen werden können, die einen Besuch wert sind. Die genaue Dokumentation der Entwicklung kann unter R-Bloggers nachverfolgt werden.
OrientDB – die italienische Variante
Eine weitere Alternative, die noch recht unbekannt ist, aber großes Potenzial verspricht bietet OrientDB. Hierbei werden Key-Value, dokumentorientierte sowie graphenorientierte Datenbankenvereint. Die aus Italien stammende Open-Source-Software ist besonders für betriebliche Anwender interessant, da sie unter der Apache-Lizenz steht und Anbieter für Support zur Verfügung stehen. Gegenüber SQL-Datenbanken punktet OrientDB vor allem durch schnelle Performance und beansprucht darüber hinaus nur wenig Speicherkapazität. OrientDB kann außerdem direkt in Java Anwendungen integriert werden und benötigt so nicht einmal einen eigenen Server. Eine Anbindung an R ist ebenso möglich wie bei neo4j. Abzuwarten bleibt allerdings ob sich die europäische Alternative gegen die etablierten amerikanischen NoSQL-Datenbanken durchsetzen kann.
NoSQL: Ja oder Nein – eine Frage der Geduld?
Bevor jedoch die Entscheidung fällt welche Kategorie von NoSQL-Datenbanken verwendet werden soll, muss zuerst entschieden werden, ob überhaupt ein Umstieg auf eine NoSQL-Datenbank erfolgen soll. Der erste Schritt in diese Richtung kann wie so oft auch der schwerste sein: Da NoSQL-Datenbanken in der Regel Open Source Softwares sind wird der Einstieg aufgrund mangelnder Übersichtlichkeit und hochwertiger Einführungen vor allem für weniger erfahrene Nutzer erschwert. Dazu kommt, dass der Instandhaltungsaufwand erhöht wird, wenn die Anwendung auf viele Server aufgeteilt wird. Dieses Problem kann sich aber auch Verfechtern des SQL-Systems stellen, sofern ebenfalls Sharding und Replication genutzt werden. Ausschlaggebend für eine Antwort auf die Frage, ob NoSQL-Datenbanken implementiert werden sollen, werden schlussendlich wohl die Struktur der zu speichernden Daten sowie deren Verwendungszweck geben. Für denjenigen der sich allerdings nicht davor scheut sich in ein NoSQL-System einzuarbeiten werden die zwanglosen Datenbanken womöglich zur echten Alternative.