Was bedeutet NoSQL?
NoSQL steht für Not only SQL , damit ist ein Datenbank-Typ gemeint, der über SQL (Structured Query Language) also relationale Strukturen hinausgeht. Mit Struktur ist eine logische tabellarische Form bzw. Schema gemeint, die Informationen in einem sogenannten strengen Schema speichern lässt. Dabei ist es notwendig, dass Informationssuchende eine genaue Suchanfrage (Query) formulieren. Zu unstrukturierten Datenbanken gehören vor allem die Volltext-Datenbanken, die zwar eine inhaltliche Struktur aufweisen aber dennoch ein freies Schema besitzen. Die Volltexte kann man nicht wie bei SQL-Datenbanken als ER-Modell (Entity-Relationship-Modell) darstellen.
Vorteile von NoSQL-Datenbanken
Ein Vorteil der NoSQL-Datenbanken ist vor allem, dass sie für diejenigen geeignet sind, die bei der Suche nicht genau wissen, was sie eigentlich suchen. Sie erwarten trotz eigener unpräziser Anfrageformulierung Suchergebnisse, die für sie relevante Treffer beinhalten. Dies ist mit relationalen Datenbankmodellen wie SQL unmöglich.
Auf technischer Ebene der Datenspeicherung und -verarbeitung sind die NoSQL-Datenbanken horizontal skalierbar. Das führt dazu, dass beliebige Knoten zu einer Datenbank hinzugefügt und gleichzeitig eine gute Performance für hohe inkonsistente Datenlasten gewährleistet werden können. Ohne ein festes Schema ist die Replikation der Daten deutlich einfacher und unkompliziert. Auf der anderen Seite sind sie für eine große Datenmenge wie Big Data gut geeignet. NoSQL-Softwares sind meistens Opensource und somit frei verfügbar.
Arten der NoSQL-Datenbank
Um eine Unterscheidung der NoSQL-Datenbanken festlegen zu können, spielt die Art und Weise wie sie gespeichert werden, eine große Rolle. Je nach gewünschte Speicherungsart werden neue Anwendungsgebiete und Software in Betracht gezogen. Diese sind:
- Dokumentorientiert
Texte werden in einer beliebigen Länge unstrukturiert in einem Dokument und nicht in einer Datenbank gespeichert. Die Datenbankmanagementsysteme wie Apache CouchDB, MongoDB oder Lotus Notes sind ein Paar bekannte Beispiele hierfür.
- Key-Value-orientiert
Hier werden Schlüssel verwendet, die aus beliebigen Ziffern zustande kommen. Diese Art von Datenbanken kann man auf zwei Arten, In-Memory- oder als On-Disk-Version, speichern. Bei In-Memory Implementierung handelt es sich um Cache-Speichersysteme. Ein Beispiel ist memocached. Die On-Disk-Version ist für große Mengen an Daten geeignet, welche von Google BigTable und Amazon SimpleDB implementiert werden. Es gibt auch eine Mischung aus beiden Lösungen, die von Redis implementiert und von GitHub eingesetzt werden.
- Spaltenorientiert
Spaltenorientierte Datenbanken speichern die Daten im Gegensatz zu zeilenorientierten Datenbanken, Spaltenweise. Somit sind die Daten gleicher Kategorie in einer Spalte untereinander aufgelistet. Ein Vorteil dabei ist, dass nur die benötigten Daten in den Spalten ausgegeben werden können und keine zusammenhanglosen Daten, die nicht benötigt werden. Ein bekanntes Beispiel dafür ist die Cassandra Datenbank, welche vor allem von Twitter und Facebook eingesetzt wird.
- Graphenorientiert
Komplexe Beziehungen können mithilfe der Graphdatenbank dargestellt werden. Diese besteht aus Knoten und Verbindungen, welche die einzelnen Knoten miteinander verknüpfen. Soziale Netzwerke lassen sich sehr gut damit ausdrücken. Beispiele hierfür sind Datenbanken wie FlockDB, AllegroGraph und Neo4j.
Fazit
Es gibt jede Menge Vorteile für die Benutzung der NoSQL-Datenbanken. Sie beinhalten neben SQL-Datenbanken auch die Datenbanken, die nach freien Schema hergestellt sind. Es gibt je nach Art der Speicherung, unterschiedliche Datenbankmodelle. Hinzu kommt, dass unterschiedliche Speichermodelle auch die Datenverarbeitung vereinfachen können.