en
de

Datenbanken für die Cloud

30 Mai 2013
| |
Lesezeit: 3 Minutes

Cloud Computing ist heutzutage stark im Trend und ist auch ein beliebtes Thema in den Medien. Eines der Themen, welches besonders polarisiert, sind unsere Daten. Dabei wird jedoch hauptsächlich auf den Datenschutz und dessen rechtlichen Konsequenzen eingegangen. Aber auch technisch bietet die Speicherung der Daten einige Herausforderungen, welche in der Cloud-basierten Applikationsentwicklung gelöst werden müssen.

Wir (Roman Kuczynski und Michael Lehmann) haben uns in letzter Zeit stark mit dem Thema auseinandergesetzt und wollen unsere  Erfahrungen in einer Serie von Beiträgen mit euch teilen.

Ära der relationalen Datenbanken

Bisher werden beinahe ausschliesslich relationale Datenbanken, welche 1970 von Edgar F. Codd erstmals erwähnt wurden, für die Datenpersistierung verwendet.  Warum haben sich relationale Datenbanken durchgesetzt und bis heute gehalten?

Wir Entwickler wollen eigentlich nur unsere objektorientierten,  in-code Memorystrukturen speichern. Das relationale Datenmodell ist hierfür nicht optimal, man spricht hier vom sogenannten Impedance Mismatch.
Obwohl seither immer wieder von objektorientierten Datenbanken die Rede war, haben sich diese nie etabliert. Die Abfragesprache SQL hat den Vorteil, dass sie leicht zu erlernen und plattform-unabhängig ist. Relationale Datenbanken im Enterprise Umfeld werden deshalb oft als „Integrationsdatenbank“ verwendet, über die  mehrere Applikationen miteinander kommunizieren können.  Hinzu kommt, dass später auch noch das Impedance Mismatch Problem entschärft wurde, kaum ein Projekt wird heute ohne O/R Mapper entwickelt.

Probleme in der Cloud

In der Cloud treffen wir ganz andere Voraussetzungen an. Mit steigenden Nutzerzahlen reicht ein einzelner Rechner schnell nicht mehr aus. Durch das flexible Zuschalten von weiteren Rechnern zu einem Cluster kann die Last verteilt und die Verfügbarkeit des Services erhöht werden, wofür moderne Cloudplattformen ausgelegt sind. Wir nennen diese Technik horizontale Skalierung. Im Gegensatz dazu steht die vertikale Skalierung. Darunter verstehen wir einen einzelnen Rechner mit Hardware aufzurüsten, was zu hohen Kosten führen kann.
Traditionelle Datenbanken sind dafür konzipiert, die Datenkonsistenz durch das relationale Schema und Transaktionen sicherzustellen. Um die Datenkonsistenz zu gewährleisten wird der Datenzugriff zentral koordiniert. Typischerweise sind die Datenbanken für den Einsatz auf einem Einzelrechner optimiert und skalieren vertikal sehr gut. Sie lassen sich zwar über mehrere Knoten horizontal verteilen, der gemeinsame Datenspeicher führt jedoch zu einem Engpass und ist ein Single Point of Failure.

Engpass in relatinalen Datenbank Clustern

Engpass in relatinalen Datenbank Clustern

Relationale Datenbanken werden als Cloud-Services angeboten, sie sind jedoch nur beschränkt skalierbar, haben eine limitierte Speicherkapazität und sind verglichen mit alternativen Speicherlösungen teuer.

Der Vormarsch von NoSQL

NoSQL Datenbanken bilden Alternativen zu relationalen Datenbanken. Das erste Mal wurde der Begriff NoSQL von Carlo Strozzi im Jahr 1998 für seine leichtgewichtige Open-Source Datenbank verwendet. Seine Datenbank ist trotzdem eine relationale Datenbank, die lediglich kein SQL Interface aufweist. Der Begriff NoSQL, wie wir ihn heute kennen, wurde von Johan Oskarsson für ein Gipfeltreffen über das Thema alternative Speichertechnologien eingeführt. [1]

NoSQL-Datenbanken basieren nicht auf einer einzelnen Technologie. Sie entsprechen eher einer Bewegung respektive einer Gruppierung von Datenspeicher-Technologien und verzichten auf das relationale Datenmodell. Vielmehr verwenden sie verschiedene Konzepte, die sich teilweise so stark voneinander unterscheiden, dass man nicht die Technologien dieser Datenbanken vergleicht, sondern über ihre gemeinsamen Eigenschaften spricht, zum Beispiel Skalierbarkeit oder den Umgang mit der Datenkonsistenz. Eine der herausragendsten Eigenschaften ist, dass die meisten NoSQL Datenbanken für die horizontale Skalierung optimiert sind. Genau diese Eigenschaft ist  einer der Hauptgründe, weshalb NoSQL Datenbanken für die Verwendung in der Cloud besonders gut geeignet sind.

Das Thema NoSQL ist unglaublich umfangreich. Es gibt eine Vielzahl an verschiedenen Technologien und Produkten. In unseren nächsten Artikeln werden wir tiefer in dieses Thema eintauchen und euch die Welt der NoSQL Datenbanken etwas näher bringen.

Quellen:
[1] https://de.wikipedia.org/wiki/NoSQL

Kommentare (2)

Skalierung von Datenbanken

13 August 2013 um 16:04

[…] unserem letzten Beitrag Datenbanken in der Cloud haben wir den Aspekt der Skalierung kurz erwähnt und dabei zwischen vertikaler und horizontaler […]

[…] Veränderungen frühzeitig zu reagieren. Du solltest Dich also mit Datenarchitektur und Cloud-Technologien auseinandersetzen und auf Deinem Feld stets auf dem Laufenden […]

×

Updates

Schreiben Sie sich jetzt ein für unsere zwei-wöchentlichen Updates per E-Mail.

This field is required
This field is required
This field is required

Mich interessiert

Select at least one category
You were signed up successfully.