Nur Relational – das war einmal
NoSQL-Datenbanken, nur ein Hype oder mehr?
Relationen
Wenn es um die Speicherung von Daten geht, ist klar: man benötigt hierzu eine Datenbank, genauer gesagt, ein Datenbankmanagementsystem. Vor mehr als einem Vierteljahrhundert habe ich gelernt, wie man dort seine Daten strukturiert, nämlich in Tabellen (Relationen), die in Beziehungen zueinander stehen. Zum Abfragen und Verändern dieser Daten wurde eine eigene Sprache verwendet, die Structured Query Language (SQL). Das war alles so zwingend logisch, dass ich das Prinzip der Relationalen Datenbanken nie in Frage gestellt habe. Bis neulich…
Grenzen
Je mehr Softwareprojekte ich im Laufe der Zeit durchgeführt habe und je komplexer diese wurden, desto mehr hat mich gestört, dass meine Objekte, mit denen ich in der Objektorientierten Programmierung (OOP) umgehe, so gar nicht wirklich elegant auf relationale Tabellen abgebildet werden wollten. Natürlich gibt es für so etwas Objektrelationale Mapper (ORM). Aber irgendwie muss das noch besser gehen…
Möglichkeiten
Am Rande hatte ich immer wieder einmal von Alternativen zu relationalen SQL-Datenbanksystemen gehört, es aber jedes Mal als irrelevant für meine eigene Arbeit abgetan. Warum ich vor einigen Wochen dann doch einmal genauer hingesehen habe, kann ich gar nicht mehr sagen. Jedenfalls tat sich für mich eine neue Welt mit ungeahnten Möglichkeiten auf.
Begriffliches
NoSQL – was bedeutet das eigentlich? Geprägt wurde der Begriff im Jahre 2009 von Johan Oskarsson, einem damaligen Entwickler von last.fm, bei einer Tagung über Techniken für verteilte, nichtrelationale Datenbanken. Auf dieser Tagung ging es um die Grenzen von relationalen Datenbanken bezüglich der Skalierung für Tausende von Abfragen, wie sie im Web nicht unüblich sind. War der Begriff auch ursprünglich als klare Abgrenzung zu SQL als Abfragesprache gedacht, meint man heute mit „NoSQL“ eher ein „Not Only SQL“.
NoSQL beschreibt eine Datenbankstruktur ohne festes Datenschema mit alternativen Abfragemechanismen im Gegensatz zu herkömmlichen relationalen Datenbanksystemen, die über SQL abgefragt werden. Nötig geworden sind Alternativen zu den bisherigen tabellenorientierten Datenbanken durch die Anforderungen im Internet. Datendurchsatzstarke Dienste wie Onlineshops, Blogs, News und Foren und natürlich in erster Linie Suchmaschinen und soziale Netzwerke sind gierig nach riesigen Datenmengen und flexiblen Strukturen, die einem steten Wandel unterliegen.
Starre Schemata – starre Abläufe
In einem meiner aktuellen Projekte sind Situationen wie diese an der Tagesordnung: anhand des Pflichtenhefts werden die relationalen Datenstrukturen entwickelt, für ein Zielsystem aufbereitet und normiert. Die Entwickler setzen mit Abfragen auf diese Strukturen auf und entwickeln entsprechende Services und schließlich die Anwendung selbst. Nach einer heftigen Fachdiskussion stellt sich heraus: es fehlen wichtige Daten! Was muss nun geschehen? Nun, die Datenbankdesigner passen die Tabellen und Strukturen an, und alles geht von vorne los…
Neue Freiheiten
Ein Beispiel mit MongoDB: Hier werden die Daten nicht in Tabellen mit Zeilen und Spalten gespeichert, sondern in sogenannten Dokumenten. Ein Dokument ist in diesem Fall eine Ansammlung von Feldern und Werten. Es gibt in der Datenbank keine Definition dieser Dokumente. Ein Dokument kann verändert werden, indem die Werte in vorhandenen Feldern geändert werden oder zusätzliche Felder hinzukommen bzw. vorhandene Felder gelöscht werden. In dem zuvor erwähnten aktuellen Projekt haben wir die Architektur nun so gestalten können, dass die Entwickler neu benötigte Felder einfach in die Anwendung einfügen und die Datenbank automatisch ‚mitwächst‘! So braucht sich seitdem niemand mehr über aufwändige Absprachen und nervige Anpassungsarbeiten in den Bereichen Datenbankdesign, Abfragen, Services und Anwendungsentwicklung aufzuregen ;-).
NoSQL-Systeme – welches denn bitte?
Die Welt der NoSQL-Datenbanksysteme ist vielfältig und auf Anhieb nicht leicht zu überschauen. Einen guten Überblick, der kurz und verständlich die vier wesentlichen Ausprägungsformen von NoSQ-Systemen beschreibt, bietet der Heise-Artikel „NoSQL im Überblick“.
Welches NoSQL-System sich für welchen Einsatzzweck eignet, hat Nathan Hurst in seinem Artikel „Visual Guide to NoSQL Systems“ dargestellt.
Quo vadis NoSQL?
Ist NoSQL nun ein Hype, nur eine vorübergehende Modeerscheinung? Experten meinen: nein. Und auch namhafte Unternehmen wie Disney, LinkedIn und Orbitz setzen auf NoSQL.
In seinem sehr lesenswerten Artikel „Prepare for change! This is not your father’s database industry“ beschreibt Derrick Harris sehr beeindruckend, wie sich der Markt der Datenbanksysteme drastisch verändert (hat). Da werden sich die Väter von Oracle DB und Microsoft SQL Server eines Morgens vielleicht ganz verdutzt die Augen reiben…
Schlagworte: Datenbanken, NoSQL, SQL