NoSQL
NoSQL (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. für Not only SQL deutsch: „Nicht nur SQL“) bezeichnet Datenbanken, die einen nicht-relationalen Ansatz verfolgen und damit mit der langen Geschichte relationaler Datenbanken brechen. Diese Datenspeicher benötigen keine festgelegten Tabellenschemata und versuchen Joins zu vermeiden. Sie skalieren dabei horizontal. Im akademischen Umfeld werden sie häufig als „strukturierte Datenspeicher“ (engl. structured storage) bezeichnet.<ref>Avinash Lakshman, Prashant Malik: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF, 133 kB) Cornell University, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref>Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E. Gruber: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF, 221 kB) Google ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref><templatestyles src="Webarchiv/styles.css" />Vorlage:Webarchiv/WaybackSkriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden.</ref><ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Bekannte Implementierungen sind Riak, Apache Cassandra, CouchDB, MongoDB und Redis.
Geschichte[Bearbeiten]
Der Begriff NoSQL, noch im Sinne von no SQL, wurde erstmals für eine 1998 erschienene einfache Open-Source-Datenbank verwendet, die keine SQL-Zugriffsmöglichkeit bereitstellte. Carlo Strozzi, der Entwickler dieser Datenbank, unterscheidet allerdings die NoSQL-Datenbank von der NoSQL-Bewegung insofern, als erstere eine Datenbank ist, welche auf die Verwendung der Sprache SQL verzichtet, während letztere ein Konzept ist, das vom relationalen Modell Abstand nimmt.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Strozzi.it, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Der Begriff NoSQL im Sinne von Not only SQL wurde Anfang 2009 von Johan Oskarsson für ein Treffen über verteilte strukturierte Datenspeicher neu eingeführt.<ref>Eric Evans: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2011-07-16 (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Der Name war ein Versuch einer gemeinsamen Begriffsfindung für die wachsende Zahl an nicht relationalen, verteilten Datenspeichersystemen, die meist auch auf ACID-Eigenschaften verzichteten.
Dieses Thema ist nicht ganz neu. Die Bestrebung, Daten ohne die Einschränkungen des relationalen Modells zu speichern, war bereits früher unter dem Titel dokumentenorientierte Datenbank bekannt. Insofern sind alle Vertreter dieser Thematik auch als NoSQL-Systeme zu betrachten.
Obwohl sich NoSQL-Systeme kontinuierlich verbreiten, wird der Markt nach wie vor deutlich von relationalen Systemen dominiert (Stand 2025).<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Architektur[Bearbeiten]
Relationale Datenbanken leiden üblicherweise unter Leistungsproblemen bei datenintensiven Applikationen wie Indexierung großer Dokumentmengen, Webseiten mit hohen Lastaufkommen sowie Streaming-Media-Applikationen. Relationale Datenbanken sind nur dann effizient, wenn sie für häufige, aber kleine Transaktionen oder für große Batch-Transaktionen mit seltenen Schreibzugriffen optimiert sind. Sie können aber schlecht mit gleichzeitig hohen Datenanforderungen und häufigen Datenänderungen umgehen.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> NoSQL dagegen kann mit vielen Schreib-/Leseanfragen umgehen.<ref>Eric Lai: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2014-07-21 (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
NoSQL-Architekturen bieten meist nur schwache Garantien hinsichtlich Konsistenz wie beispielsweise eventual consistency oder auf einzelne Datensätze eingeschränkte Transaktionen. Einige Systeme unterstützen auch ACID, beispielsweise durch Hinzufügung spezieller Middleware wie CloudTPS.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Globule.org, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Viele NoSQL-Implementierungen unterstützen verteilte Datenbanken mit redundanter Datenhaltung auf vielen Servern, beispielsweise unter Nutzung einer verteilten Hashtabelle. Damit können die Systeme einfach erweitert werden sowie Ausfälle einzelner Server überstehen.<ref>Avinash Lakshman, Prashant Malik: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF, 410 kB) Last.fm.com ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Unterscheidung nach Datenmodell[Bearbeiten]
NoSQL-Implementierungen können folgendermaßen gegliedert werden:
| Merkmal | Beispiele | |
|---|---|---|
| Dokumentenorientierte Datenbanken | Apache Jackrabbit, BaseX, CouchDB, eXist, HCL Notes, MongoDB, OrientDB | |
| Graphdatenbanken | Generisch | Neo4j, OrientDB, Amazon Neptune, InfoGrid, HyperGraphDB, Core Data, DEX, Gremlin |
| RDF-Zentriert | AllegroGraph, 4store | |
| Verteilte ACID-Datenbanken | MySQL Cluster | |
| Key-Value-Datenbanken | Festplattenspeicher | Chordless, Google BigTable, GT.M, InterSystems Caché, etcd |
| Caches im RAM | Membase, memcached, Redis, Aerospike | |
| Eventually-consistente Speicher | Amazon Dynamo, Project Voldemort, Riak | |
| Sortierte Key-Value-Speicher | Berkeley DB, memcached | |
| Multivalue-Datenbanken | OpenQM, Rocket U2 | |
| Objektdatenbanken | Db4o, ZODB, Objectivity/DB | |
| Spaltenorientierte Datenbanken | Apache Cassandra, Google BigTable, HBase, SimpleDB, Scylla | |
| Datenstrom | Apache Kafka, RethinkDB, PipelineDB | |
Leistung[Bearbeiten]
Nach Ben Scofield kann die Leistung von NoSQL-Datenbanken wie folgt bewertet werden:<ref>Ben Scofield: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
| Datenmodell | Leistung | Skalierbarkeit | Flexibilität | Komplexität | Funktionalität |
|---|---|---|---|---|---|
| Key–Value | hoch | hoch | hoch | keine | unterschiedlich (keine) |
| Spaltenorientiert | hoch | hoch | mittel | gering | minimal |
| Dokumentenorientiert | hoch | unterschiedlich (hoch) | hoch | gering | unterschiedlich (gering) |
| Graphbasiert | unterschiedlich | unterschiedlich | hoch | hoch | Graphentheorie |
| Relational | unterschiedlich | unterschiedlich | gering | mittel | Relationale Algebra |
Literatur[Bearbeiten]
- Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.
- Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.
Weblinks[Bearbeiten]
- Binärgewitter #1: NoSQL (Podcast bei RadioTux)
- NoSQL Databases (Links zu NoSQL-Themen, gepflegt durch Stefan Edlich)
- NoSQL Anwendergruppen in Deutschland
- Überblicksartikel zum Thema NoSQL (Heise online)
- Stefan Edlich: Ausblick zur Entwicklung von SQL zu NoSQL. Frankfurter Datenbanktage
- Roberto V. Zicari: Free Downloads/Artikel zu NoSQL ODBMS.org
- Prof. Dr. Oliver Hummel: Denormalisieren in NoSQL
Einzelnachweise[Bearbeiten]
<references />