NoSQL
EIN NoSQL (ursprünglich bezieht sich auf "Nicht nichtSql"oder" nicht-relational ")[1] Datenbank Bietet einen Mechanismus für Lagerung und Abruf von Daten, die in anderen Mitteln als den in den verwendeten tabellarischen Beziehungen modelliert werden relationale Datenbanken. Solche Datenbanken existieren seit den späten 1960er Jahren, aber der Name "NoSQL" wurde erst im frühen 21. Jahrhundert geprägt.[2] ausgelöst durch die Bedürfnisse von Web 2.0 Firmen.[3][4] NoSQL -Datenbanken werden zunehmend in verwendet Große Daten und Echtzeit-Web Anwendungen.[5] NoSQL -Systeme werden manchmal auch genannt Nicht nur SQL Zu betonen, dass sie unterstützen können Sql-ähnliche Abfragsprachen oder sitzen neben SQL -Datenbanken in Polyglot-Persistent Architekturen.[6][7]
Zu den Motivationen für diesen Ansatz gehört die Einfachheit von Entwurf, einfacher "horizontale" Skalierung zu Maschinencluster (Was ein Problem für relationale Datenbanken ist),[2] feinere Kontrolle über Verfügbarkeit und die Begrenzung der Objektrelationsimpedanz-Missverhältnis.[8] Die von NOSQL -Datenbanken verwendeten Datenstrukturen (z. Schlüssel -Wert -Paar, breite Säule, Graph, oder dokumentieren) unterscheiden sich von denen, die standardmäßig in relationalen Datenbanken verwendet werden, so dass einige Vorgänge in NoSQL schneller werden. Die besondere Eignung einer bestimmten NOSQL -Datenbank hängt von dem Problem ab, das sie lösen muss. Manchmal werden die von NoSQL -Datenbanken verwendeten Datenstrukturen auch als "flexibler" angesehen als relationale Datenbanktabellen.[9]
Viele NoSQL speichern eine Kompromisskonsistenz (im Sinne der Cap -Theorem) zugunsten von Verfügbarkeit, Partitionstoleranz und Geschwindigkeit. Hindernisse für die stärkere Einführung von NOSQL-Geschäften umfassen die Verwendung von Abfragesprachen auf niedriger Ebene (z. B. anstelle von SQL), mangelnde Fähigkeit zur Durchführung von Ad-hoc schließt sich an In Bezug auf Tabellen, mangelnde standardisierte Schnittstellen und enorme frühere Investitionen in vorhandene relationale Datenbanken.[10] Die meisten NoSQL -Stores fehlen wahr SÄURE Transaktionen, obwohl einige Datenbanken sie für ihre Entwürfe von zentraler Bedeutung gemacht haben.
Stattdessen bieten die meisten NoSQL -Datenbanken ein Konzept von "eventuelle Konsistenz", in denen Datenbankänderungen" irgendwann "(normalerweise innerhalb von Millisekunden) an alle Knoten ausgegeben werden, wodurch Abfragen für Daten möglicherweise nicht sofort aktualisierte Daten zurückgeben oder nicht zutreffend sind, was nicht genau ist, ein Problem, das als abgestandene Lesevorgänge bekannt ist.[11] Darüber hinaus können einige NoSQL -Systeme verlorene Schreibvorgänge und andere Formen von zeigen Datenverlust.[12] Einige NoSQL -Systeme bieten Konzepte wie Schreibbeindämmerung Datenverlust zu vermeiden.[13] Zum Verteilte Transaktionsverarbeitung In mehreren Datenbanken ist die Datenkonsistenz eine noch größere Herausforderung, die sowohl für NoSQL- als auch für relationale Datenbanken schwierig ist. Relationale Datenbanken "Ermöglichen Sie keine referenziellen Integritätsbeschränkungen für Datenbanken".[14] Nur wenige Systeme pflegen beide SÄURE Transaktionen und X/open xa Standards für die verteilte Transaktionsverarbeitung.[15] Interaktive relationale Datenbanken teilen Konformations -Relay -Analysetechniken als gemeinsames Merkmal.[16] Einschränkungen innerhalb der Schnittstellenumgebung werden mithilfe semantischer Virtualisierungsprotokolle überwunden, sodass NoSQL -Dienste für die meisten Betriebssysteme zugänglich sind.[17]
Geschichte
Der Begriff NoSQL wurde 1998 von Carlo Strozzi verwendet, um sein leichtes Gewicht zu nennen Strozzi NoSQL Open-Source Relational Database das hat den Standard nicht freigelegt Strukturierte Abfragesprache (SQL) Schnittstelle, war aber immer noch relational.[18] Sein NoSQL RDBMS unterscheidet sich vom um 2009 allgemeinen Konzept der NoSQL-Datenbanken. Strozzi schlägt vor, dass die aktuelle NOSQL -Bewegung "insgesamt vom relationalen Modell abweist, sie daher angemessener als" Norel "genannt werden sollte,"[19] bezieht sich auf "nicht relational".
Johan Oskarsson, damals Entwickler bei Letztes FM, den Begriff wieder eingeführt NoSQL Anfang 2009, als er eine Veranstaltung organisierte, um "Open-Source" zu diskutieren verteilte, nicht-relationale Datenbanken".[20] Der Name versuchte, die Entstehung einer zunehmenden Anzahl nicht-relationaler, verteilter Datenspeicher, einschließlich Open-Source-Klone von Google, zu kennzeichnen Großer Tisch/Karte verkleinern und Amazon Dynamode.
Typen und Beispiele
Es gibt verschiedene Möglichkeiten, NoSQL -Datenbanken mit unterschiedlichen Kategorien und Unterkategorien zu klassifizieren, von denen einige überschneiden. Was folgt, ist eine nicht exexhustive Klassifizierung nach Datenmodell mit Beispielen:[21]
Schlüssel -Wert -Speicher
KEY -VALUE (KV) -Stores verwenden die Assoziatives Array (auch eine Karte oder ein Wörterbuch bezeichnet) als ihr grundlegendes Datenmodell. In diesem Modell werden Daten als Sammlung von Schlüssel -Wert -Paaren dargestellt, so dass jeder mögliche Schlüssel höchstens in der Sammlung angezeigt wird.[24][25]
Das Schlüssel-Wert-Modell ist eines der einfachsten nicht trivialen Datenmodelle, und reichere Datenmodelle werden häufig als Erweiterung davon implementiert. Das Schlüssel -Wert -Modell kann auf ein diskret geordnetes Modell erweitert werden Lexikografische Ordnung. Diese Erweiterung ist recheninternen leistungsfähig, als sie den selektiven Schlüssel effizient abrufen kann Bereiche.[26]
Schlüssel -Wert -Stores können verwenden Konsistenzmodelle von eventuelle Konsistenz zu Serialisierbarkeit. Einige Datenbanken unterstützen die Bestellung von Schlüssel. Es gibt verschiedene Hardware -Implementierungen, und einige Benutzer speichern Daten im Speicher (RAM), während andere auf Solid State Drives (SSD) oder Drehscheiben (auch bekannt als Festplattenlaufwerk (HDD)).
Dokumentgeschäft
Das zentrale Konzept eines Dokumentgeschäfts ist das eines "Dokuments". Während sich die Details dieser Definition zwischen dokumentorientierten Datenbanken unterscheiden, gehen alle davon aus, dass Dokumente Daten (oder Informationen) in einigen Standardformaten oder -Codierungen zusammenfassen und codieren. In den verwendeten Codierungen gehören Xml, Yaml, und JSON und binäre Formen wie BSON. Dokumente werden in der Datenbank über ein eindeutiges behandelt Schlüssel Das stellt dieses Dokument dar. Ein weiteres definierendes Merkmal einer dokumentorientierten Datenbank ist eine API- oder Abfragesprache, um Dokumente basierend auf ihrem Inhalt abzurufen.
Verschiedene Implementierungen bieten unterschiedliche Möglichkeiten zur Organisation und/oder Gruppierung von Dokumenten:
- Sammlungen
- Stichworte
- Nicht sichtbare Metadaten
- Verzeichnishierarchien
Im Vergleich zu relationalen Datenbanken können Sammlungen analog zu Tabellen und Dokumenten analog zu Aufzeichnungen angesehen werden. Sie sind jedoch unterschiedlich: Jeder Datensatz in einer Tabelle hat die gleiche Abfolge von Feldern, während Dokumente in einer Sammlung möglicherweise Felder haben, die völlig unterschiedlich sind.
Graph
Diagrammdatenbanken sind für Daten ausgelegt, deren Beziehungen gut dargestellt werden als Graph bestehend aus Elementen, die durch eine begrenzte Anzahl von Beziehungen verbunden sind. Beispiele für Daten sind soziale Beziehungen, Links für öffentliche Verkehrsmittel, Straßenkarten, Netzwerktopologien usw.
- Grafikdatenbanken und ihre Abfragesprache
Leistung
Die Leistung von NOSQL -Datenbanken wird normalerweise unter Verwendung der Metrik von bewertet Durchsatz, was als Operationen/Sekunde gemessen wird. Die Leistungsbewertung muss auf die richtigen Benchmarks wie Produktionskonfigurationen, Parameter der Datenbanken, das erwartete Datenvolumen und die gleichzeitige Workloads der Benutzer achten.
Ben Scofield bewertete verschiedene Kategorien von NoSQL -Datenbanken wie folgt:[28]
Datenmodell | Leistung | Skalierbarkeit | Flexibilität | Komplexität | Funktionalität |
---|---|---|---|---|---|
Schlüssel -Wert -Speicher | hoch | hoch | hoch | keiner | Variable (keine) |
Säulenorientierter Geschäft | hoch | hoch | mäßig | niedrig | minimal |
Dokumentorientiertes Geschäft | hoch | variabel (hoch) | hoch | niedrig | Variable (niedrig) |
Graph database | Variable | Variable | hoch | hoch | Graphentheorie |
Relationale Datenbank | Variable | Variable | niedrig | mäßig | Relationale Algebra |
Leistungs- und Skalierbarkeitsvergleiche werden am häufigsten mit dem durchgeführt Ycsb Benchmark.
Umgang mit relationalen Daten
Da die meisten NoSQL -Datenbanken die Fähigkeit für Anfragen fehlen, ist die Datenbankschema Im Allgemeinen muss anders gestaltet werden. Es gibt drei Haupttechniken zum Umgang mit relationalen Daten in einer NoSQL -Datenbank. (Siehe Tabelle Join und Säureunterstützung für NoSQL -Datenbanken, die die Unterstützung unterstützen.)
Mehrere Abfragen
Anstatt alle Daten mit einer Abfrage abzurufen, ist es üblich, mehrere Abfragen zu machen, um die gewünschten Daten zu erhalten. NoSQL -Abfragen sind oft schneller als herkömmliche SQL -Abfragen, sodass die Kosten für zusätzliche Abfragen akzeptabel sind. Wenn eine übermäßige Anzahl von Abfragen erforderlich wäre, ist einer der beiden anderen Ansätze angemessener.
Zwischenspeicherung, Replikation und nicht normalisierte Daten
Anstatt nur ausländische Schlüssel zu speichern, ist es üblich, tatsächliche Fremdwerte zusammen mit den Daten des Modells zu speichern. Beispielsweise kann jeder Blog -Kommentar den Benutzernamen zusätzlich zu einer Benutzer -ID enthalten, wodurch ein einfacher Zugriff auf den Benutzernamen gewährt wird, ohne dass eine weitere Suche erforderlich ist. Wenn sich ein Benutzername jedoch ändert, muss dies jetzt an vielen Stellen in der Datenbank geändert werden. Somit funktioniert dieser Ansatz besser, wenn die Lesevorgänge viel häufiger sind als Schreibvorgänge.[29]
Daten nisten
Bei Dokumentdatenbanken wie MongoDB ist es üblich, mehr Daten in einer geringeren Anzahl von Sammlungen einzustellen. In einer Blogging -Anwendung kann man beispielsweise Kommentare im Blog -Post -Dokument speichern, sodass mit einem einzigen Abrufen alle Kommentare erhält. In diesem Ansatz enthält ein einzelnes Dokument alle Daten, die Sie für eine bestimmte Aufgabe benötigen.
Säure und Tretstütze
Eine Datenbank ist als unterstützend gekennzeichnet SÄURE Eigenschaften (Atomizität, Konsistenz, Isolation, Haltbarkeit) oder beitreten Operationen Wenn die Dokumentation für die Datenbank diese Behauptung erhebt. Dies bedeutet jedoch nicht unbedingt, dass die Fähigkeit auf ähnliche Weise wie die meisten SQL -Datenbanken vollständig unterstützt wird.
Datenbank | SÄURE | Schließt sich an |
---|---|---|
Aerospike | Ja | Nein |
Apache entzünden | Ja | Ja |
Arangodb | Ja | Ja |
Amazon DynamoDB | Ja | Nein |
Couchbase | Ja | Ja |
Couchdb | Ja | Ja |
IBM DB2 | Ja | Ja |
InfinityDB | Ja | Nein |
Lmdb | Ja | Nein |
Marklogic | Ja | Ja[NB 1] |
MongoDB | Ja | Ja[NB 2] |
Orientdb | Ja | Ja[NB 3] |
- ^ Joins gelten nicht unbedingt für Dokumentendatenbanken, aber Marklogic kann mit Semantik miteinander verbunden sein.[30]
- ^ MongoDB unterstützte nicht die Beitritts aus einer Sharded -Sammlung bis Version 5.1.[31]
- ^ OrientDB kann 1: 1 mithilfe von Links auflösen, indem Direktlinks zu fremden Aufzeichnungen gespeichert werden.[32]
Siehe auch
- Cap -Theorem
- Vergleich der Objektdatenbankverwaltungssysteme
- Vergleich der strukturierten Speichersoftware
- C ++
- Datenbankskalierbarkeit
- Verteilter Cache
- Facettensuchung
- Multivalue Datenbank
- Multi-Model-Datenbank
- Triplestore
- Schema-agnostische Datenbanken
Verweise
- ^ http://nosql-database.org/ "NoSQL-Definition: Datenbanken der nächsten Generation, die sich hauptsächlich um einige der Punkte befassen: Nicht-relational, verteilt, offen und horizontal skalierbar".
- ^ a b Leavitt, Neal (2010). "Werden NoSQL -Datenbanken ihrem Versprechen entsprechen?" (PDF). IEEE -Computer. 43 (2): 12–14. doi:10.1109/mc.2010.58. S2CID 26876882.
- ^ Mohan, C. (2013). Die Geschichte wiederholt sich: Sensible und Nonsensql Aspekte des NoSQL Hoopla (PDF). Proc. 16. int'l Conf. zur Erweiterung der Datenbanktechnologie.
- ^ "Amazon kehrt mit 'NoSQL' Datenbank auf die Zukunft zurück.". VERDRAHTET. 19. Januar 2012. Abgerufen 6. März 2017.
- ^ "RDBMs dominieren den Datenbankmarkt, aber NoSQL -Systeme holen auf". Db-engines.com. 21. November 2013. Abgerufen 24. November 2013.
- ^ "NoSQL (nicht nur sql)".
NoSQL -Datenbank, auch nicht nur SQL bezeichnet
- ^ Fowler, Martin. "NoSqldefinition".
Viele Befürworter von NoSQL sagen, dass es nicht ein "Nein" zu SQL bedeutet, sondern nicht nur SQL
- ^ NoSQL Destilliert: Ein kurzer Leitfaden zur aufstrebenden Welt der Polyglot -Persistenz. Addison-Wesley Educational Publishers Inc, 2009, ISBN978-0321826626.
- ^ Vogels, Werner (18. Januar 2012). "Amazon DynamoDB - Ein schneller und skalierbarer NoSQL -Datenbankdienst für Internet -Skala -Anwendungen". Alle Dinge verteilt. Abgerufen 6. März 2017.
- ^ Grolinger, K.; Higashino, W. A.; Tiwari, a.; Capretz, M. A. M. (2013). "Datenverwaltung in Cloud -Umgebungen: NoSQL- und NewsQL -Datenspeicher" (PDF). Aira, Springer. Abgerufen 8. Januar 2014.
- ^ "Jepsen: MongoDB Stale liest". Aphyr.com. 20. April 2015. Abgerufen 6. März 2017.
- ^ "Datenanalyse mit großer Volumen auf der TypeSafe Reactive Platform". SlideShare.net. Abgerufen 6. März 2017.
- ^ Fowler, Adam. "10 NoSQL -Missverständnisse". Dummies.com. Abgerufen 6. März 2017.
- ^ "Nein! Zu SQL und nein! Zu nosql | So viele Orakelhandbücher, so wenig Zeit". Iggyfernandez.wordpress.com. Abgerufen 6. März 2017.
- ^ Chapple, Mike. "Das Säuremodell". about.com.
- ^ Fiore, S. (2011). Grid- und Cloud -Datenbankverwaltung. Springer Science & Business Media. p. 210.
- ^ Lawrence, Integration und Virtualisierung von relationalen SQL- und NoSQL -Systemen wie MySQL und MongoDB (2014). "Integration und Virtualisierung von relationalen SQL- und NoSQL -Systemen einschließlich MySQL und MongoDB". Internationale Konferenz über Computerwissenschaft und Computational Intelligence 1.
- ^ Lith, Adam; Mattson, Jakob (2010). "Untersuchung von Speicherlösungen für große Daten: Ein Vergleich von gut leistungsstarken und skalierbaren Datenspeicherlösungen für die Echtzeit -Extraktion und die Stapelinsertion von Daten" (PDF). Göteborg: Abteilung für Informatik und Ingenieurwesen, Chalmers University of Technology. p. 70. Abgerufen 12. Mai 2011.
Carlo Strozzi verwendete den Begriff NoSQL 1998 zuerst als Name für seine Open Source Relational Database, die keine SQL -Schnittstelle anbot [...]
- ^ "NoSQL Relational Database Management System: Homepage". Strozzi.it. 2. Oktober 2007. Abgerufen 29. März 2010.
- ^ "NoSQL 2009". Blog.sym-link.com. 12. Mai 2009. archiviert von das Original am 16. Juli 2011. Abgerufen 29. März 2010.
- ^ Strauch, Christof. "NoSQL -Datenbanken" (PDF). S. 23–24. Abgerufen 27. August 2017.
- ^ https://apacheignite.readme.io/docs Dokumentation entzünden
- ^ https://www.infoworld.com/article/3135070/data-center/fire-big-data-processing-with-apache-ignite.html Fire-Up-Big-Data-Processing-with-Apache-INGENITE
- ^ Sandy (14. Januar 2011). "Key Value Stores und die NoSQL -Bewegung". Stackkexchange. Abgerufen 1. Januar 2012.
Mit Key-Value-Speichern können der Anwendungsentwickler Schema-Less-Daten speichern. Diese Daten bestehen normalerweise aus einer Zeichenfolge, die den Schlüssel darstellt, und den tatsächlichen Daten, die als Wert in der Beziehung "Schlüssel -Wert" betrachtet werden. Die Daten selbst sind in der Regel eine Art primitiver Programmiersprache (eine Zeichenfolge, eine Ganzzahl oder ein Array) oder ein Objekt, das durch die Bindungen der Programmiersprache an den Schlüsselwertspeicher untersagt wird. Diese Struktur ersetzt die Notwendigkeit eines festen Datenmodells und ermöglicht eine ordnungsgemäße Formatierung.
- ^ Seeger, Marc (21. September 2009). "Schlüsselwertgeschäfte: Eine praktische Übersicht" (PDF). Marc Seeger. Abgerufen 1. Januar 2012.
Key-Value-Speicher bieten eine leistungsstarke Alternative zu relationalen Datenbanksystemen in Bezug auf das Speichern und Zugriff auf Daten. Dieses Papier bietet einen kurzen Überblick über einige der derzeit verfügbaren Schlüssel -Wert -Speicher und deren Schnittstelle zur Ruby -Programmiersprache.
- ^ Katsov, Ilya (1. März 2012). "NoSQL -Datenmodellierungstechniken". Ilya Katsov. Abgerufen 8. Mai 2014.
- ^ "Terminusx - Warum Terminusx". terminusdb.com. Abgerufen 16. Dezember 2021.
- ^ Scofield, Ben (14. Januar 2010). "NoSQL - Tod zu relationalen Datenbanken (?)". Abgerufen 26. Juni 2014.
- ^ "Wechsel von relational zu noSQL: Wie man anfängt". Couchbase.com. Abgerufen 11. November 2019.
- ^ "Kann nicht mit Marklogic verbunden sein? Es ist nur eine Frage der Semantik! - Allgemeine Netzwerke". Gennet.com. Archiviert von das Original am 3. März 2017. Abgerufen 6. März 2017.
- ^ "Sharded Collection Beschränkungen". docs.mongodb.com. Abgerufen 24. Januar 2020.
- ^ "SQL Referenz · OrientDB -Handbuch". Orientdb.com. Abgerufen 24. Januar 2020.
Weitere Lektüre
- Sadalage, Pramod; Fowler, Martin (2012). NoSQL Destilliert: Ein kurzer Leitfaden für die aufstrebende Welt der Polyglot -Persistenz. Addison-Wesley. ISBN 978-0-321-82662-6.
- McCreary, Dan; Kelly, Ann (2013). Sinn für NoSQL: Ein Leitfaden für Manager und den Rest von uns. ISBN 9781617291074.
- Wiese, Lena (2015). Erweiterte Datenverwaltung für SQL-, NOSQL-, Cloud- und Distributed -Datenbanken. Degruyter/Oldenburg. ISBN 978-3-11-044140-6.
- Strauch, Christof (2012). "NoSQL -Datenbanken" (PDF).
- Moniruzzaman, A. B.; Hossain, S. A. (2013). "NoSQL -Datenbank: Neue Ära der Datenbanken für Big Data Analytics - Klassifizierung, Merkmale und Vergleich". Arxiv:1307.0191.
- Orend, Kai (2013). "Analyse und Klassifizierung von NOSQL-Datenbanken und Bewertung ihrer Fähigkeit, eine Objektrelationspersistenzschicht zu ersetzen". Citeseerx 10.1.1.184.483.
- Krishnan, Ganesh; Kulkarni, Sarang; Dadbhawala, Dharmesh Kirit. "Methode und System für Versionen mit Versionen, Konsolidieren und Berichten von Informationen".
Externe Links
- Strauch, Christoph. "NoSQL Whitepaper" (PDF). Stuttgart: Hochschule der Medien.
- Edlich, Stefan. "NoSQL -Datenbankliste".
- Neubauer, Peter (2010). "Diagrammdatenbanken, NoSQL und Neo4j".
- Bushik, Sergey (2012). "Ein vendorunabhängiger Vergleich von NoSQL-Datenbanken: Cassandra, HBase, MongoDB, Riak". Networkworld.
- Zicari, Roberto V. (2014). "NoSQL -Datenspeicher - Artikel, Artikel, Präsentationen". odbms.org.