Was bedeutet NoSQL?

NoSQL definiert

Der Begriff „NoSQL“ bezieht sich auf nicht-relationale Datenbanktypen. Diese Datenbanken speichern Daten in einem Format, das sich von relationalen Tabellen unterscheidet. NoSQL-Datenbanken können jedoch mit idiomatischen Sprach-APIs, deklarativ strukturierten Abfragesprachen und mit Query by Example abgefragt werden. Deshalb werden sie auch als „Nicht-nur-SQL“ (Not only SQL)-Datenbanken bezeichnet.

Wofür wird eine NoSQL-Datenbank verwendet?

NoSQL-Datenbanken werden häufig bei Echtzeit-Web- und Big Data-Anwendungen verwendet, da ihre Hauptvorteile in einer hohen Skalierbarkeit und Verfügbarkeit bestehen.

NoSQL-Datenbanken werden auch von Entwicklern bevorzugt, weil sie sich natürlich für ein agiles Entwicklungsparadigma eignen, da sie sich schnell an sich ändernde Anforderungen anpassen. Mit NoSQL-Datenbanken können die Daten intuitiver und in verständlicherer Form gespeichert werden – oder in einer Art und Weise, die mehr der Form entspricht, in welcher die Daten von den Anwendungen genutzt werden. Dadurch sind zum Speichern oder Abrufen mithilfe von NoSQL-APIs weniger Transformationen erforderlich. Darüber hinaus können NoSQL-Datenbanken die Cloud voll ausnutzen, um Ausfallzeiten zu vermeiden.

SQL im Vergleich zu NoSQL

SQL-Datenbanken sind relational, während NoSQL-Datenbanken nicht-relational sind. Ein relationales Datenbankverwaltungssystem (Relational Database Management System, RDBMS) bildet die Grundlage für eine strukturierte Abfragesprache (SQL), mit der Benutzer auf Daten in stark strukturierten Tabellen zugreifen und diese bearbeiten können. Dies ist das zugrundeliegende Prinzip von Datenbanksystemen wie MS SQL Server, IBM DB2, Oracle und MySQL. Bei NoSQL-Datenbanken kann sich die Syntax für den Datenzugriff jedoch von Datenbank zu Datenbank unterscheiden.

Relationale Datenbanken versus NoSQL-Datenbanken

Um NoSQL-Datenbanken zu verstehen, muss man wissen, was der Unterschied zwischen RDBMS und nicht-relationalen Datenbanktypen ist.

Die Daten in einem RDBMS werden in Datenbankobjekten gespeichert, die als Tabellen bezeichnet werden. Eine Tabelle ist eine Sammlung zusammengehöriger Dateneinträge, die aus Spalten und Zeilen besteht. Bei diesen Datenbanken muss das Schema im Voraus definiert werden. Das bedeutet, dass alle Spalten und die zugehörigen Datentypen von Vorneherein bekannt sein müssen, damit Anwendungen Daten in die Datenbank schreiben können. Diese Datenbanken speichern auch Informationen, indem mehrere Tabellen mithilfe von Schlüsseln verknüpft werden, wodurch eine Beziehung zwischen mehreren Tabellen hergestellt wird. Im einfachsten Fall wird ein Schlüssel verwendet, um eine bestimmte Zeile abzurufen, damit diese geprüft oder geändert werden kann.

Im Gegensatz dazu können in NoSQL-Datenbanken Daten gespeichert werden, ohne dass das Schema im Voraus definiert werden muss. Das bedeutet, dass man sie schnell verwenden und iterieren kann. Dabei kann das Datenmodell im Laufe der Anwendung definiert werden. Das ist oft gut für bestimmte Geschäftsanforderungen geeignet, unabhängig davon ob die Anwendungen nun diagrammbasiert, spaltenorientiert oder dokumentenorientiert sind oder als Schlüsselwertspeicher dienen.

Bis vor Kurzem waren relationale Datenbanken die am häufigsten verwendeten Modelle. In vielen Unternehmen sind sie immer noch allgegenwärtig. Die Vielfalt, Geschwindigkeit und Menge der Daten, auf die heute zugegriffen wird, erfordert jedoch manchmal eine ganz andere Art von Datenbank, um das relationale Modell zu ergänzen. Das hat dazu geführt, dass in einigen Bereichen NoSQL-Datenbanken eingeführt wurden, die auch als „nicht relationale Datenbanken“ bezeichnet werden. Da sie schnell und horizontal skaliert werden können, können nicht-relationale Datenbanken einen hohen Datenverkehr verarbeiten und sind deshalb sehr anpassungsfähig.

Wann sollte man sich für eine NoSQL-Datenbank entscheiden?

Da Unternehmen und Organisationen heute schnell Innovationen entwickeln müssen, ist es für sie unverzichtbar, in jeder Größenordnung agil zu bleiben und Ausfälle zu vermeiden. NoSQL-Datenbanken bieten flexible Schemata und unterstützen eine Vielzahl von Datenmodellen, die sich ideal zum Erstellen von Anwendungen eignen, die große Datenmengen und geringe Latenzzeiten oder kurze Antwortzeiten erfordern. Dazu gehören z. B. Online-Gaming- und E-Commerce-Webanwendungen.

Wann sollte man sich nicht für eine NoSQL-Datenbank entscheiden?

NoSQL-Datenbanken basieren normalerweise auf de-normalisierten Daten. Sie unterstützen die Arten von Anwendungen, die weniger Tabellen (oder Container) verwenden und deren Datenbeziehungen nicht mithilfe von Referenzen, sondern als eingebettete Datensätze (oder Dokumente) modelliert werden. Viele klassische Back-Office-Unternehmensanwendungen in den Bereichen Finanzen, Buchhaltung und Ressourcenplanung für Unternehmen basieren auf stark normalisierten Daten, um Datenanomalien sowie -verdoppelungen zu vermeiden. Das sind typischerweise die Arten von Anwendungen, die sich nicht gut für eine NoSQL-Datenbank eignen.

Eine weiteres Unterscheidungsmerkmal von NoSQL-Datenbanken ist die Komplexität der Abfragen. NoSQL-Datenbanken eigenen sich hervorragend für Abfragen zu einer einzelnen Tabelle. Mit zunehmender Komplexität der Abfragen sind relationale Datenbanken jedoch die bessere Wahl. Eine NoSQL-Datenbank ermöglicht bei einer WHERE-Klausel normalerweise keine komplexen Verknüpfungen, Unterabfragen oder Verschachtelungen von Abfragen.

Manchmal ist es jedoch nicht nötig, sich zwischen einer relationalen und einer nicht-relationalen Datenbank zu entscheiden. In vielen Fällen haben sich Unternehmen für Datenbanken mit einem konvergierten Modell entschieden. Dadurch können sie eine Kombination aus relationalen und nicht-relationalen Datenmodellen verwenden. Dieser hybride Ansatz erhöht die Flexibilität beim Umgang mit verschiedenen Datentypen und stellt gleichzeitig die Lese- und Schreibkonsistenz sicher, ohne die Leistung zu beeinträchtigen.

Was bietet NoSQL, was andere Datenbanken nicht bieten?

Eines der wesentlichen Unterscheidungsmerkmale zwischen NoSQL-Datenbanken und anderen Datenbanktypen besteht darin, dass NoSQL-Datenbanken normalerweise einen unstrukturierten Storage verwenden. NoSQL-Datenbanken wurden in den letzten zwei Jahrzehnten entwickelt, um schnelle, einfache Abfragen, häufige Anwendungsänderungen und die Verwaltung umfangreicher Daten zu ermöglichen. Außerdem machen diese Datenbanken die Programmierung für Entwickler erheblich einfacher.

Ein weiteres wichtiges Unterscheidungsmerkmal ist, dass NoSQL-Datenbanken zur horizontalen Skalierung einen Prozess nutzen, der als „Sharding“ bezeichnet wird. Dadurch können weitere Computer hinzugefügt werden, um Daten auf mehreren Servern zu verarbeiten. Die vertikale Skalierung anderer SQL-Datenbanken erfordert die Erhöhung der Leistung und Speicherkapazität des vorhandenen Computers. Dies ist jedoch nicht nachhaltig, da dazu immer mehr Storage benötigt wird.

Die Art, wie die horizontale Skalierung bei NoSQL-Datenbanken umgesetzt wird, ermöglicht es ihnen, extrem großer Datenmengen effizienter zu verarbeiten – selbst wenn die Datenmengen zunehmen. Man kann sich eine vertikale Skalierung vielleicht wie das Hinzufügen eines neuen Stockwerks zu einem Haus vorstellen. Eine horizontale Skalierung lässt sich hingegen mit dem Bau eines weiteren Hauses direkt neben dem ursprünglichen Gebäude vergleichen.

Vorteile einer NoSQL-Datenbank

Die beispiellose Geschwindigkeit und Größenordnung der digitalen Interaktionen und des Datenverbrauchs in den letzten zwei Jahrzehnten erfordert, dass Unternehmen einen moderneren und flexibleren Ansatz für die Speicherung und den Zugriff auf Daten nutzen. Weltweit erwarten Nutzer einen ununterbrochenen Strom von Inhalten und Funktionen. Es ist also kein Wunder, dass sich Datenbanken schnell daran anpassen mussten. Vor diesem Hintergrund sind hier einige der Hauptgründe aufgeführt, aus denen sich Entwickler für NoSQL-/nicht-relationale Datenbanken entscheiden:

  • Flexibilität

    Bei SQL-Datenbanken werden Daten in einer wesentlich starreren und vordefinierten Struktur gespeichert. Aber mit NoSQL lassen sich Daten freier und ohne diese starren Schemata erfassen. Diese Auslegung fördert Innovationen und eine schnelle Anwendungsentwicklung. Die Entwickler können sich darauf konzentrieren, für ihre Kunden bessere Systeme zu erstellen, ohne sich Gedanken über Schemata machen zu müssen. NoSQL-Datenbanken können problemlos in einem einzigen Datenspeicher jedes Datenformat verarbeiten, z. B. strukturierte, halbstrukturierte und nicht-strukturierte Daten.
  • Skalierbarkeit

    NoSQL-Datenbanken lassen sich mithilfe von Standardhardware skalieren, ohne dass weitere Server hinzugefügt werden müssen. Dadurch kann ohne Ausfallzeiten ein erhöhter Datenverkehr unterstützt werden, um die Nachfrage zu befriedigen. Durch Skalierung werden NoSQL-Datenbanken größer und leistungsfähiger, weshalb sie zur bevorzugten Option bei sich verändernden Datensätzen geworden sind.
  • Hohe Performance

    Die Scale-Out-Architektur einer NoSQL-Datenbank ist besonders nützlich, wenn das Datenvolumen oder der Datenverkehr zunimmt. Wie in der folgenden Grafik dargestellt, gewährleistet diese Architektur schnelle und vorhersehbare Antwortzweiten im einstelligen Millisekunden-Bereich. NoSQL-Datenbanken können auch Daten aufnehmen und diese schnell und zuverlässig bereitstellen. Aus diesem Grund werden NoSQL-Datenbanken bei Anwendungen verwendet, die täglich Terabytes an Daten erfassen und gleichzeitig eine hochgradig interaktive Benutzererfahrung erfordern. In der folgenden Grafik zeigen wir eine Eingangsrate von 300 Lesevorgängen pro Sekunde (blaue Linie) mit einer Latenz von 95 % im Bereich von 3-4 ms und eine Eingangsrate von 150 Schreibvorgängen pro Sekunde (grüne Linie) mit einer Latenz von 95 % im Bereich von 4-5 ms.

    Nosql-Datenbank

  • Verfügbarkeit

    NoSQL-Datenbanken replizieren automatisch Daten über mehrere Server, Rechenzentren oder Cloud-Ressourcen hinweg. Dies wiederum minimiert die Latenz für die Nutzer, unabhängig davon, wo diese sich befinden. Diese Funktion reduziert auch den Aufwand der Datenbankverwaltung, wodurch mehr Zeit zur Verfügung steht, sich auf andere Prioritäten zu konzentrieren.
  • Hochgradig funktionell

    NoSQL-Datenbanken sind für verteilte Datenspeicher konzipiert, die extrem große Anforderungen an Daten-Storage haben. Deshalb ist NoSQL die ideale Wahl für Big Data, Echtzeit-Web-Apps, 360°-Kundenanalysen, Online-Shopping, Online-Spiele, das Internet of Things, soziale Netzwerke und Online-Werbeanwendungen.

Arten von NoSQL-Datenbanken

Es gibt vier Haupttypen von NoSQL-Datenbanken:

  • Schlüsselwert

    Dies ist der flexibelste Typ einer NoSQL-Datenbank, da die Anwendung ohne Einschränkungen die vollständige Kontrolle darüber hat, was im Wertefeld gespeichert wird.
  • Dokument

    Diese Datenbanken werden auch als Dokumentenspeicher oder dokumentenorientierte Datenbanken bezeichnet. Sie dienen zum Speichern, Abrufen und Verwalten halbstrukturierter Daten. Dabei muss nicht spezifiziert werden, welche Felder ein Dokument enthalten soll.
  • Graph

    Diese Datenbank organisiert Daten als Knoten und Beziehungen, welche die Verbindungen zwischen Knoten anzeigen. Das ermöglicht eine reichhaltigere und umfassendere Darstellung von Daten. Diagrammdatenbanken werden bei sozialen Netzwerken, Reservierungssystemen und der Betrugserkennung angewendet.
  • Spaltenorientiert

    Diese Datenbanken speichern und verwalten Daten in Form von Tabellen, Zeilen und Spalten. Sie werden weitgehend bei Anwendungen eingesetzt, für die ein Spaltenformat erforderlich ist, um schemafreie Daten zu erfassen.

Oracle NoSQL Database testen

Oracle NoSQL Database Cloud Service erleichtert Entwicklern das Erstellen von Anwendungen mithilfe von Dokumenten-, Spalten- und Schlüsselwert-Datenbankmodellen, die vorhersehbare einstellige Millisekunden-Antwortzeiten mit Datenreplikation für Hochverfügbarkeit bieten. Der Dienst umfasst ACID-Transaktionen, serverlose Skalierungen, umfassende Sicherheit und niedrige Pay-per-Use-Preise.

Der Oracle NoSQL Database Cloud Service ist jetzt Teil der Oracle Cloud Free Tier. Diese beinhaltet eine kostenlose, zeitlich limitierte Testversion, mit der Sie eine breite Palette von Cloud Services sowie eine Reihe von Always Free-Diensten ausprobieren können, die niemals ablaufen.