„NoSQL“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
MovGP0 (Diskussion | Beiträge) |
|||
(48 dazwischenliegende Versionen von 39 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''NoSQL''' ({{enS}} für ''Not only [[SQL]]'') bezeichnet [[Datenbank]]en, die einen nicht-relationalen Ansatz verfolgen und damit mit der langen Geschichte [[Relationale Datenbank|relationaler Datenbanken]] brechen. Diese Datenspeicher benötigen keine festgelegten |
'''NoSQL''' ({{enS}} für ''Not only [[SQL]]'' deutsch: „Nicht nur SQL“) bezeichnet [[Datenbank]]en, die einen nicht-relationalen Ansatz verfolgen und damit mit der langen Geschichte [[Relationale Datenbank|relationaler Datenbanken]] brechen. Diese Datenspeicher benötigen keine festgelegten Tabellen[[Schema (Informatik)|schemata]] und versuchen [[Relationale Algebra#Join|Joins]] zu vermeiden. Sie skalieren dabei [[Horizontale Skalierung|horizontal]]. Im akademischen Umfeld werden sie häufig als „strukturierte Datenspeicher“ (engl. ''structured storage'') bezeichnet.<ref>{{Internetquelle |url=http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf |titel=Cassandra – A Decentralized Structured Storage System |autor=Avinash Lakshman, Prashant Malik |hrsg=Cornell University |datum=2009 |zugriff=2010-06-24 |sprache=en |format=PDF, 133 kB}}</ref><ref>{{Internetquelle |autor=Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E. Gruber |titel=Bigtable: A Distributed Storage System for Structured Data |hrsg=Google |url=http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archive/bigtable-osdi06.pdf |zugriff=2012-04-22 |sprache=en |format=PDF, 221 kB}}</ref><ref>{{Webarchiv|url=http://blog.rapleaf.com/wp-content/uploads/2007/hbase.pdf|wayback=20120406234950| text=HBase: structured storage of sparse data for Hadoop}}</ref><ref>{{Internetquelle |url=https://www.informatik-aktuell.de/betrieb/datenbanken/nosql-datenbanken-mehr-als-nur-sql.html|titel=NoSQL-Datenbanken: Mehr als nur SQL |sprache=de |abruf=2023-02-24}}</ref> |
||
Bekannte Implementierungen sind [[Riak]], [[Apache Cassandra]], [[CouchDB]], [[MongoDB]] und [[Redis]]. |
Bekannte Implementierungen sind [[Riak]], [[Apache Cassandra]], [[CouchDB]], [[MongoDB]] und [[Redis]]. |
||
== Geschichte == |
== Geschichte == |
||
Der Begriff NoSQL |
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>{{Internetquelle |url=http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/nosql/Home%20Page |titel=NoSQL: A Relational Database Management System |hrsg=Strozzi.it |datum=2007-10-02 |zugriff=2010-06-24 |sprache=en |zitat=While the former is a well-defined software package, is a relational database to all effects and just does intentionally not use SQL as a query language, the newcomer is mostly a concept (and by no means a novel one either), which departs from the relational model altogether and it should therefore have been called more appropriately “NoREL”, or something to that effect.}}</ref> |
||
Der Begriff NoSQL |
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>{{Internetquelle |url=http://blog.sym-link.com/2009/05/12/nosql_2009.html |titel=NOSQL 2009 |autor=Eric Evans |datum=2009-05-12 |zugriff=2010-06-24 |sprache=en |zitat=Johan Oskarsson has organized a meetup for folks interested in distributed structured data storage and is calling it NOSQL. |archiv-url=https://web.archive.org/web/20110716174012/http://blog.sym-link.com/2009/05/12/nosql_2009.html |archiv-datum=2011-07-16 |offline=ja |archiv-bot=2022-12-21 23:14:03 InternetArchiveBot }}</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. |
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 |
Obwohl sich NoSQL-Systeme kontinuierlich verbreiten, wird der Markt nach wie vor deutlich von relationalen Systemen dominiert (Stand 2025).<ref>{{Internetquelle |url=https://db-engines.com/de/ranking_categories |titel=DBMS Popularität pro Datenbankmodell |sprache=de |zugriff=2025-01-24}}</ref> |
||
== Architektur == |
== Architektur == |
||
Relationale Datenbanken leiden üblicherweise unter [[Leistung (Informatik)|Leistungsproblemen]] bei datenintensiven Applikationen wie [[Indexierung]] großer Dokumentmengen, Webseiten mit hohen Lastaufkommen sowie [[Streaming Media|Streaming-Media]]-Applikationen. Relationale Datenbanken sind nur dann effizient, wenn sie für häufige, aber kleine [[Transaktion (Informatik)|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>{{Literatur|Autor=Rakesh Agrawal et al. |
Relationale Datenbanken leiden üblicherweise unter [[Leistung (Informatik)|Leistungsproblemen]] bei datenintensiven Applikationen wie [[Indexierung]] großer Dokumentmengen, Webseiten mit hohen Lastaufkommen sowie [[Streaming Media|Streaming-Media]]-Applikationen. Relationale Datenbanken sind nur dann effizient, wenn sie für häufige, aber kleine [[Transaktion (Informatik)|Transaktionen]] oder für große [[Stapelverarbeitung|Batch-Transaktionen]] mit seltenen Schreibzugriffen optimiert sind. Sie können aber schlecht mit gleichzeitig hohen Datenanforderungen und häufigen Datenänderungen umgehen.<ref>{{Literatur |Autor=Rakesh Agrawal et al. |Hrsg=[[Association for Computing Machinery|ACM]] |Titel=The Claremont report on database research |Sammelwerk=SIGMOD Record |Band=37 |Nummer=3 |Datum=2008-09 |ISSN=0163-5808 |Seiten=9–19 |Sprache=en |DOI=10.1145/1462571.1462573}}</ref> NoSQL dagegen kann mit vielen Schreib-/Leseanfragen umgehen.<ref>{{Internetquelle |url=http://www.computerworld.com/s/article/9135086/No_to_SQL_Anti_database_movement_gains_steam_ |titel=No to SQL? Anti-database movement gains steam |autor=Eric Lai |datum=2009-07-01 |zugriff=2011-12-04 |sprache=en |archiv-url=https://web.archive.org/web/20140721063126/http://www.computerworld.com/s/article/9135086/No_to_SQL_Anti_database_movement_gains_steam_ |archiv-datum=2014-07-21 |offline=ja |archiv-bot=2024-04-01 19:42:42 InternetArchiveBot }}</ref> |
||
NoSQL-Architekturen bieten meist nur schwache Garantien hinsichtlich [[Konsistenz (Datenspeicherung)|Konsistenz]] wie beispielsweise [[eventual consistency]] oder auf einzelne Datensätze eingeschränkte [[Transaktion (Informatik)|Transaktionen]]. Einige Systeme unterstützen auch [[ACID]], beispielsweise durch Hinzufügung spezieller [[Middleware]] wie CloudTPS.<ref>{{Internetquelle | |
NoSQL-Architekturen bieten meist nur schwache Garantien hinsichtlich [[Konsistenz (Datenspeicherung)|Konsistenz]] wie beispielsweise [[eventual consistency]] oder auf einzelne Datensätze eingeschränkte [[Transaktion (Informatik)|Transaktionen]]. Einige Systeme unterstützen auch [[ACID]], beispielsweise durch Hinzufügung spezieller [[Middleware]] wie CloudTPS.<ref>{{Internetquelle |url=http://www.globule.org/publi/CSTWAC_ircs53.html |titel=CloudTPS: Scalable Transactions for Web Applications in the Cloud |hrsg=Globule.org |datum=Februar 2010 |zugriff=2010-06-24 |sprache=en |zitat=CloudTPS is a scalable transaction manager to allow cloud database services to execute the ACID transactions of web applications, even in the presence of server failures and network partitions}}</ref> |
||
Viele NoSQL-Implementierungen unterstützen [[Verteiltes Datenbankmanagementsystem|verteilte Datenbanken]] mit redundanter Datenhaltung auf vielen Servern, beispielsweise unter Nutzung einer [[Verteilte Hashtabelle|verteilten Hashtabelle]]. Damit können die Systeme einfach |
Viele NoSQL-Implementierungen unterstützen [[Verteiltes Datenbankmanagementsystem|verteilte Datenbanken]] mit redundanter Datenhaltung auf vielen Servern, beispielsweise unter Nutzung einer [[Verteilte Hashtabelle|verteilten Hashtabelle]]. Damit können die Systeme einfach erweitert werden sowie Ausfälle einzelner [[Server]] überstehen.<ref>{{Internetquelle |url=http://static.last.fm/johan/nosql-20090611/cassandra_nosql.pdf |titel=Cassandra: Structured Storage System over a P2P Network |autor=Avinash Lakshman, Prashant Malik |hrsg=Last.fm.com |zugriff=2010-06-24 |format=PDF, 410 kB |sprache=en}}</ref> |
||
== Unterscheidung nach Datenmodell == |
== Unterscheidung nach Datenmodell == |
||
Zeile 25: | Zeile 25: | ||
{| class="wikitable" |
{| class="wikitable" |
||
|- |
|- |
||
!colspan="2"| Merkmal !! Beispiele |
! colspan="2"| Merkmal !! Beispiele |
||
|- |
|- |
||
|colspan="2"| [[Dokumentenorientierte Datenbank]]en || [[Apache Jackrabbit]], [[BaseX]], [[CouchDB]], [[eXist (Datenbank)|eXist]], [[ |
|colspan="2"| [[Dokumentenorientierte Datenbank]]en || [[Apache Jackrabbit]], [[BaseX]], [[CouchDB]], [[eXist (Datenbank)|eXist]], [[HCL Notes]], [[MongoDB]], [[OrientDB]] |
||
|- |
|- |
||
|rowspan="2"| [[Graphdatenbank]]en || Generisch || [[Neo4j]], [[OrientDB]], InfoGrid, HyperGraphDB, [[Core Data]], [[DEX (Graphdatenbank)|DEX]] |
|rowspan="2"| [[Graphdatenbank]]en || Generisch || [[Neo4j]], [[OrientDB]], Amazon Neptune, InfoGrid, HyperGraphDB, [[Core Data]], [[DEX (Graphdatenbank)|DEX]], [[Gremlin (Datenbank)|Gremlin]] |
||
|- |
|- |
||
| [[Resource Description Framework|RDF]]-Zentriert || [[AllegroGraph]], [[4store] |
| [[Resource Description Framework|RDF]]-Zentriert || [[AllegroGraph]], [[4store]] |
||
|- |
|- |
||
|colspan="2"| Verteilte ACID-Datenbanken || [[MySQL Cluster]] |
|colspan="2"| Verteilte ACID-Datenbanken || [[MySQL Cluster]] |
||
|- |
|- |
||
|rowspan="4"| Key-Value-Datenbanken || Festplattenspeicher|| [[Chordless]], [[Google BigTable]], [[GT.M]], [[InterSystems Caché]] |
|rowspan="4"| [[Schlüssel-Werte-Datenbank|Key-Value-Datenbanken]] || Festplattenspeicher|| [[Chordless]], [[Google BigTable]], [[GT.M]], [[InterSystems Caché]], [[etcd]] |
||
|- |
|- |
||
| Caches im RAM|| [[Membase]], [[memcached]], [[Redis]], [[Aerospike (Datenbank)|Aerospike]] |
| Caches im RAM|| [[Membase]], [[memcached]], [[Redis]], [[Aerospike (Datenbank)|Aerospike]] |
||
Zeile 41: | Zeile 41: | ||
| Eventually-consistente Speicher || [[Amazon Dynamo]], [[Project Voldemort]], [[Riak]] |
| Eventually-consistente Speicher || [[Amazon Dynamo]], [[Project Voldemort]], [[Riak]] |
||
|- |
|- |
||
| Sortierte Key-Value-Speicher || [[Berkeley DB]], |
| Sortierte Key-Value-Speicher || [[Berkeley DB]], memcached |
||
|- |
|- |
||
|colspan="2"| Multivalue-Datenbanken || [[OpenQM]], [[Rocket U2]] |
|colspan="2"| Multivalue-Datenbanken || [[OpenQM]], [[Rocket U2]] |
||
|- |
|- |
||
|colspan="2"| [[Objektdatenbank]]en || [[Db4o]], [[ZODB]] |
|colspan="2"| [[Objektdatenbank]]en || [[Db4o]], [[ZODB]], [[Objectivity/DB]] |
||
|- |
|- |
||
|colspan="2"| [[Spaltenorientierte Datenbank]]en || [[Apache Cassandra]], [[Google BigTable]], [[Hadoop#HBase|HBase]], [[SimpleDB]] |
|colspan="2"| [[Spaltenorientierte Datenbank]]en || [[Apache Cassandra]], [[Google BigTable]], [[Hadoop#HBase|HBase]], [[SimpleDB]], [[Scylla_(Datenbank)|Scylla]] |
||
|- |
|||
⚫ | |||
|} |
|||
== Unterscheidung aufgrund des [[CAP-Theorem]]s == |
|||
{|class="wikitable" |
|||
! CAP-Konfiguration !! Relational !! Key-Value !! Spaltenorientiert !! Dokumentorientiert |
|||
|- |
|||
! Consistent + Available (CA) |
|||
| [[Microsoft SQL Server]], [[Oracle (Datenbanksystem)|Oracle]], [[MySQL]], [[Postgres]], [[Sybase]], [[Aster Data]], [[Greenplum]] |
|||
| — |
|||
| [[Vertica]] |
|||
| — |
|||
|- |
|||
! Consistent + Partition-Tolerant (CP) |
|||
| [[Spanner (Datenbank)|Spanner]] |
|||
| [[Scalaris]]<ref>http://scalaris.zib.de/</ref>, [[Berkeley DB]], [[memcached]], [[Redis]] |
|||
| [[BigTable]], [[Hypertable]]<ref>http://hypertable.org/</ref>, [[HBase]] |
|||
| [[MongoDB]], [[Terrastore]]<ref>https://code.google.com/p/terrastore/</ref> |
|||
|- |
|||
! Available + Partition-Tolerant (AP) |
|||
| — |
|||
| [[Riak]]<ref>http://basho.com/products/riak-kv/</ref>, [[Amazon Dynamo|Dynamo]], [[Project Voldemort|Voldemort]], [[Kyoto Cabinet]]<ref>http://fallabs.com/kyotocabinet/</ref>, KAI<ref>{{Internetquelle|url=http://sourceforge.net/projects/kai/|titel=KAI|kommentar=Distributed Key-Value Datastore, Amazon Dynamo Klon|werk=SourceForge|zugriff=2015-08-20}}</ref> |
|||
| [[Apache Cassandra|Cassandra]] |
|||
| [[SimpleDB]], [[CouchDB]] |
|||
|- |
|- |
||
⚫ | |||
|} |
|} |
||
== Leistung == |
== Leistung == |
||
Nach Ben Scofield kann die Leistung von NoSQL-Datenbanken wie folgt bewertet werden: |
Nach Ben Scofield kann die Leistung von NoSQL-Datenbanken wie folgt bewertet werden:<ref>{{Internetquelle |url=http://www.slideshare.net/bscofield/nosql-codemash-2010 |titel=NoSQL – Death to Relational Databases(?) |autor=Ben Scofield |datum=2010-01-14 |zugriff=2014-06-26}}</ref> |
||
<ref>{{Internetquelle|url=http://www.slideshare.net/bscofield/nosql-codemash-2010|titel=NoSQL - Death to Relational Databases(?)|autor=Ben Scofield|datum=2010-01-14|zugriff=2014-06-26}}</ref> |
|||
{| |
{| class="wikitable" |
||
|- |
|- |
||
! Datenmodell !! Leistung !! Skalierbarkeit !! Flexibilität !! Komplexität !! Funktionalität |
! Datenmodell !! Leistung !! Skalierbarkeit !! Flexibilität !! Komplexität !! Funktionalität |
||
Zeile 100: | Zeile 74: | ||
|Autor=Stefan Edlich, Achim Friedland, Jens Hampe, Benjamin Brauer, Markus Brückner |
|Autor=Stefan Edlich, Achim Friedland, Jens Hampe, Benjamin Brauer, Markus Brückner |
||
|Titel=NoSQL: Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken |
|Titel=NoSQL: Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken |
||
|Auflage=2 |
|Auflage=2., aktualisierte und erweiterte |
||
|Verlag=Hanser Verlag |
|Verlag=Hanser Verlag |
||
|Ort=München |
|Ort=München |
||
|ISBN=978-3-446-42753-2 |
|||
|Kommentar=aktualisierte und erweiterte Auflage |
|||
|Datum=2011 |
|Datum=2011 |
||
| |
|ISBN=978-3-446-42753-2}} |
||
* {{Literatur |
* {{Literatur |
||
|Autor=Pramodkumar J. Sadalage, [[Martin Fowler]] |
|Autor=Pramodkumar J. Sadalage, [[Martin Fowler]] |
||
Zeile 112: | Zeile 84: | ||
|Verlag=Addison-Wesley |
|Verlag=Addison-Wesley |
||
|Ort=Amsterdam |
|Ort=Amsterdam |
||
⚫ | |||
|ISBN=978-0-321-82662-6 |
|ISBN=978-0-321-82662-6 |
||
|Sprache=en |
|Sprache=en}} |
||
⚫ | |||
|Zugriff=2013-03-30}} |
|||
== Weblinks == |
== Weblinks == |
||
* [http://blog.radiotux.de/2011/01/09/binaergewitter-1-nosql/ Binärgewitter #1: NoSQL] (Podcast bei [[RadioTux]]) |
* [http://blog.radiotux.de/2011/01/09/binaergewitter-1-nosql/ Binärgewitter #1: NoSQL] ([[Podcast]] bei [[RadioTux]]) |
||
* [http://nosql-database.org NoSQL Databases] (Links zu NoSQL-Themen, gepflegt durch Stefan Edlich) |
* [http://nosql-database.org/ NoSQL Databases] (Links zu NoSQL-Themen, gepflegt durch Stefan Edlich) |
||
* [http://www.nosql-cologne.org/2011/09/26/ubersicht-nosql-user-groups-in-deutschland/ NoSQL Anwendergruppen in Deutschland] |
* [http://www.nosql-cologne.org/2011/09/26/ubersicht-nosql-user-groups-in-deutschland/ NoSQL Anwendergruppen in Deutschland] |
||
* [https://www.heise.de/ct/artikel/NoSQL-im-Ueberblick-1012483.html Überblicksartikel zum Thema NoSQL] ([[Heise online]]) |
* [https://www.heise.de/ct/artikel/NoSQL-im-Ueberblick-1012483.html Überblicksartikel zum Thema NoSQL] ([[Heise online]]) |
||
* Stefan Edlich: [http://www.frankfurter-datenbanktage.de/index.php/keynote-edlich.html Ausblick zur Entwicklung von SQL zu NoSQL.] Frankfurter Datenbanktage |
* Stefan Edlich: [http://www.frankfurter-datenbanktage.de/index.php/keynote-edlich.html Ausblick zur Entwicklung von SQL zu NoSQL.] Frankfurter Datenbanktage |
||
* Roberto V. Zicari: [http://www.odbms.org/free-downloads-and-links/nosql-data-stores/ Free Downloads/Artikel zu NoSQL] ODBMS.org |
* Roberto V. Zicari: [http://www.odbms.org/free-downloads-and-links/nosql-data-stores/ Free Downloads/Artikel zu NoSQL] ODBMS.org |
||
* Prof. Dr. Oliver Hummel: [https://www.informatik-aktuell.de/betrieb/datenbanken/denormalisieren-in-nosql-oder-wie-wir-lernten-tabellen-zu-skalieren.html Denormalisieren in NoSQL] |
|||
== Einzelnachweise == |
== Einzelnachweise == |
||
Zeile 129: | Zeile 101: | ||
[[Kategorie:Datenbanken]] |
[[Kategorie:Datenbanken]] |
||
[[Kategorie:NoSQL| ]] |
[[Kategorie:NoSQL| ]] |
||
[[Kategorie:Abkürzung]] |
Aktuelle Version vom 9. Februar 2025, 17:29 Uhr
NoSQL (englisch 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.[1][2][3][4]
Bekannte Implementierungen sind Riak, Apache Cassandra, CouchDB, MongoDB und Redis.
Geschichte
[Bearbeiten | Quelltext 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.[5]
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.[6] 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).[7]
Architektur
[Bearbeiten | Quelltext 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.[8] NoSQL dagegen kann mit vielen Schreib-/Leseanfragen umgehen.[9]
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.[10]
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.[11]
Unterscheidung nach Datenmodell
[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]Nach Ben Scofield kann die Leistung von NoSQL-Datenbanken wie folgt bewertet werden:[12]
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 | Quelltext bearbeiten]- Stefan Edlich, Achim Friedland, Jens Hampe, Benjamin Brauer, Markus Brückner: NoSQL: Einstieg in die Welt nichtrelationaler Web 2.0 Datenbanken. 2., aktualisierte und erweiterte Auflage. Hanser Verlag, München 2011, ISBN 978-3-446-42753-2.
- Pramodkumar J. Sadalage, Martin Fowler: NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence. Addison-Wesley, Amsterdam 2012, ISBN 978-0-321-82662-6 (englisch).
Weblinks
[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]- ↑ Avinash Lakshman, Prashant Malik: Cassandra – A Decentralized Structured Storage System. (PDF, 133 kB) Cornell University, 2009, abgerufen am 24. Juni 2010 (englisch).
- ↑ Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E. Gruber: Bigtable: A Distributed Storage System for Structured Data. (PDF, 221 kB) Google, abgerufen am 22. April 2012 (englisch).
- ↑ HBase: structured storage of sparse data for Hadoop ( vom 6. April 2012 im Internet Archive)
- ↑ NoSQL-Datenbanken: Mehr als nur SQL. Abgerufen am 24. Februar 2023.
- ↑ NoSQL: A Relational Database Management System. Strozzi.it, 2. Oktober 2007, abgerufen am 24. Juni 2010 (englisch): „While the former is a well-defined software package, is a relational database to all effects and just does intentionally not use SQL as a query language, the newcomer is mostly a concept (and by no means a novel one either), which departs from the relational model altogether and it should therefore have been called more appropriately “NoREL”, or something to that effect.“
- ↑ Eric Evans: NOSQL 2009. 12. Mai 2009, archiviert vom (nicht mehr online verfügbar) am 16. Juli 2011; abgerufen am 24. Juni 2010 (englisch): „Johan Oskarsson has organized a meetup for folks interested in distributed structured data storage and is calling it NOSQL.“ Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ DBMS Popularität pro Datenbankmodell. Abgerufen am 24. Januar 2025.
- ↑ Rakesh Agrawal et al.: The Claremont report on database research. In: ACM (Hrsg.): SIGMOD Record. Band 37, Nr. 3, September 2008, ISSN 0163-5808, S. 9–19, doi:10.1145/1462571.1462573 (englisch).
- ↑ Eric Lai: No to SQL? Anti-database movement gains steam. 1. Juli 2009, archiviert vom (nicht mehr online verfügbar) am 21. Juli 2014; abgerufen am 4. Dezember 2011 (englisch). Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ CloudTPS: Scalable Transactions for Web Applications in the Cloud. Globule.org, Februar 2010, abgerufen am 24. Juni 2010 (englisch): „CloudTPS is a scalable transaction manager to allow cloud database services to execute the ACID transactions of web applications, even in the presence of server failures and network partitions“
- ↑ Avinash Lakshman, Prashant Malik: Cassandra: Structured Storage System over a P2P Network. (PDF, 410 kB) Last.fm.com, abgerufen am 24. Juni 2010 (englisch).
- ↑ Ben Scofield: NoSQL – Death to Relational Databases(?). 14. Januar 2010, abgerufen am 26. Juni 2014.