NoSQL steht für "Nicht nur SQL" und bedeutet normalerweise, dass es sich bei der Datenbank nicht um eine relationale Datenbank handelt, die in den letzten Jahrzehnten sehr beliebt war.
Der Grund, warum NoSQL in den letzten Jahren so beliebt war, liegt hauptsächlich darin, dass es nicht mehr so einfach ist, eine relationale Datenbank zu verwenden, wenn sie aus einem Server heraus wächst. Mit anderen Worten, sie lassen sich in einem verteilten System nicht sehr gut skalieren. Alle großen Websites, auf denen Sie Google, Yahoo, Facebook und Amazon erwähnt haben (ich weiß nicht viel über Digg), enthalten viele Daten und speichern diese aus verschiedenen Gründen in verteilten Systemen . Es kann sein, dass die Daten nicht auf einen Server passen oder dass Anforderungen an die Hochverfügbarkeit bestehen .
CAP-Satz
Die Eigenschaften eines verteilten Systems können durch das CAP-Theorem beschrieben werden . Von den drei Eigenschaften können Sie höchstens zwei haben:
- C onsistency
- Eine Verfügbarkeit
- Toleranz gegenüber Netzwerk- P- Partitionierung
Amazon Dynamo verwendet Eventual Consistency , um alle drei Eigenschaften abzurufen. Das Papier Dynamo: Der hochverfügbare Key-Value-Store von Amazon ist eine Lektüre wert, wenn Sie sich mit NoSQL-Datenbanken und verteilten Systemen befassen. Amazon Dynamo verfügt über die Eigenschaften A und P.
Google geht mit BigTable einen anderen Weg , der die Eigenschaften C und A hat.
Andere NoSQL-Datenbanken
Wie ich am Anfang schrieb, gibt es viele andere Arten von NoSQL-Datenbanken, die für unterschiedliche Anforderungen ausgelegt sind. ZB Graphendatenbanken wie Neo4j , Dokumentendatenbanken wie CouchDB und Multimodel- / Objektdatenbanken wie OrientDB .
Abschließend möchte ich sagen, dass relationale Datenbanken weiterhin beliebt sind. Sie sind sehr flexibel und wartbar. Aber sie sind nicht immer die beste Wahl.
NoSQL ist ein sehr weit gefasster Begriff und wird normalerweise als "Nicht nur SQL" bezeichnet. Der Begriff fällt in der Nicht-RDBMS-Community aus.
Sie werden feststellen, dass die NoSQL-Datenbank nur wenige gemeinsame Merkmale aufweist. Sie lassen sich grob in einige Kategorien einteilen:
Dies ist eine große Frage, die in dieser Übersicht über verteilte Datenbanken jedoch ziemlich gut beantwortet wird .
Für eine kurze Antwort:
NoSQL-Datenbanken können auf verschiedene Teile von ACID verzichten, um bestimmte andere Vorteile zu erzielen - Partitionstoleranz, Leistung, Lastverteilung oder lineare Skalierung durch Hinzufügen neuer Hardware.
Wann sie eingesetzt werden müssen, hängt ganz von den Anforderungen Ihrer Anwendung ab.
quelle
NoSQL ist eine Art Datenbank, die kein festes Schema wie ein herkömmliches RDBMS hat. Bei den NoSQL-Datenbanken wird das Schema vom Entwickler zur Laufzeit definiert. Sie schreiben keine normalen SQL-Anweisungen in die Datenbank, sondern verwenden eine API, um die Daten abzurufen, die sie benötigen. Die NoSQL-Datenbanken können in der Regel problemlos auf verschiedene physische Server skaliert werden, ohne dass Sie wissen müssen, auf welchem Server sich die gesuchten Daten befinden.
Es gibt jedoch einige Nachteile für all diese Flexibilität: Die NoSQL-Datenbanken weisen im Vergleich zu RDBMS-Systemen wie SQL Server, Oracle, DB2, MySQL usw. ein ziemlich schlechtes Leistungsmerkmal auf. Es gibt keinen Service Broker, keine Transaktionsprotokollierung, keine ETL-Pakete usw.
NoSQL ist nichts Neues. Es gibt es schon seit 50-60 Jahren. Damals hieß es COBOL. Dieselbe genaue Idee, nur eine andere Gruppe hatte sie.
quelle
Der Verzicht auf das relationale Setup, auf Primär- und Fremdschlüssel und auf den zusätzlichen Aufwand für die Aufrechterhaltung der Transaktionssicherheit führt häufig zu extremen Leistungssteigerungen. Dies gilt jedoch nicht nur für die neuen Datenbanken / Datenspeicher, da MySQL unter Umgehung von Layern auf "NoSQL-Level" optimiert wurde.
Kurz gesagt, Sie können oft eine beeindruckende Leistung erzielen, wenn Sie das Risiko eingehen, möglicherweise Daten zu verlieren. Die meisten NoSQL-Systeme tun dies. Zum Beispiel führt MongoDB Datenänderungen durch, die geschrieben werden, wenn es bequem ist. Die Daten selbst sind sicher und transaktionssicher, werden jedoch flüchtig gespeichert (Speicher). Wenn Sie den Strom verlieren, können Sie nicht 100% sicher sein, dass Sie keine Daten verloren haben oder dass Sie keine beschädigten Daten haben.
Es ist ein Kompromiss zwischen Sicherheit und Leistung.
quelle
Ein guter Anfang ist der Wikipedia-Eintrag . Anstatt Daten in einer Tabelle mit anderen zu verknüpfen, werden sie als Schlüsselwertpaare gespeichert, und es gibt kein Datenbankschema. Sie werden stattdessen im Code behandelt.
Einige Standorte verwenden sowohl NoSQL als auch die typischen RDBMS-Server gleichzeitig, speichern jedoch unterschiedliche Daten. Sie müssen sich also nicht für das eine oder andere entscheiden.
quelle
Ich habe intensiv an der MongoDB NoSQL-Datenbank und an Oracle gearbeitet.
Schema
Die SQL-Datenbank verfügt über ein eigenes vordefiniertes Schema zum Speichern strukturierter Daten.
In der NoSQL-Datenbank gibt es kein vordefiniertes Schema. Hier ist das Schema das dynamischste Element, das auf den Datenelementen basiert.
Skalierbarkeit
SQL-Datenbanken sind vertikal skalierbar. Wenn Sie also eine SQL-Basisdatenbank skalieren möchten, müssen Sie die Hardware erhöhen, auf der das DBMS-System installiert ist. Hier geht es manchmal um die Einschränkung der Skalierbarkeit.
NoSQL-Datenbanken sind horizontal skalierbar. Wenn wir sie skalieren möchten, müssen wir weitere Knoten hinzufügen und ein Verteilungsnetzwerk erstellen, das auf unserem eigenen Bedarf und der erforderlichen Leistung basiert. Auf diese Weise wird die Datenbank entlastet
Datenabruf
In SQL-basierten Datenbanken können wir zum Definieren und Bearbeiten von Daten SQL (Structured Query Language) verwenden, das heutzutage sehr leistungsfähig ist.
In Bezug auf die NoSQL-Datenbank konzentrieren sich die Abfragen auf Sammlungen und Dokumente. Manchmal wird es UnQL (Unstructured Query Language) genannt. Dies befindet sich noch in der Evolutionsphase und ist daher von Anbieter zu Anbieter der NoSQL-Datenbank unterschiedlich.
Weitere Informationen zu wichtigen Unterschieden finden Sie in meinem Blog: Unterschied zwischen SQL- und NoSQL-Datenbank
quelle