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.
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-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.
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.
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.
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.
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.
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:
Es gibt vier Haupttypen von NoSQL-Datenbanken:
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.