Kürzlich wurde ich gefragt:
Warum ist NoSQL schneller als SQL?
Ich war mit der Prämisse der Frage nicht einverstanden ... es ist nur Unsinn für mich persönlich. Ich kann keine Leistungssteigerung durch die Verwendung von NoSQL anstelle von SQL feststellen. Möglicherweise SQL über NoSQL, aber nicht auf diese Weise.
Vermisse ich etwas über NoSQL?
performance
nosql
cnd
quelle
quelle
Antworten:
Es gibt viele NoSQL-Lösungen, von denen jede ihre eigenen Stärken und Schwächen hat. Daher muss Folgendes mit ein wenig Salz aufgenommen werden.
Aber im Grunde genommen verlassen sich viele NoSQL-Datenbanken auf Denormalisierung und versuchen, sie für den denormalisierten Fall zu optimieren. Angenommen, Sie lesen einen Blog-Beitrag zusammen mit seinen Kommentaren in einer dokumentenorientierten Datenbank. Oft werden die Kommentare zusammen mit dem Beitrag selbst gespeichert. Dies bedeutet, dass es schneller ist, alle zusammen abzurufen, da sie am selben Ort gespeichert sind und Sie keinen Join durchführen müssen.
Natürlich können Sie dies auch in SQL tun, und Denormalisierung ist eine gängige Praxis, wenn Leistung benötigt wird. Es ist nur so, dass viele NoSQL-Lösungen von Anfang an so entwickelt wurden, dass sie immer auf diese Weise verwendet werden. Sie erhalten dann die üblichen Kompromisse: Zum Beispiel ist das Hinzufügen eines Kommentars im obigen Beispiel langsamer, weil Sie das gesamte Dokument damit speichern müssen. Sobald Sie denormalisiert haben, müssen Sie dafür sorgen, dass die Datenintegrität in Ihrer Anwendung erhalten bleibt.
Darüber hinaus ist es in vielen NoSQL-Lösungen unmöglich, willkürliche Verknüpfungen und damit willkürliche Abfragen durchzuführen. Bei einigen Datenbanken, wie z. B. CouchDB, müssen Sie die erforderlichen Abfragen überdenken und sie in der Datenbank vorbereiten.
Alles in allem läuft es darauf hinaus, ein denormalisiertes Schema zu erwarten und Lesevorgänge für diese Situation zu optimieren, und dies funktioniert gut für Daten, die nicht sehr relational sind und die viel mehr Lesevorgänge als Schreibvorgänge erfordern.
quelle
Was Sie an NoSQL vermissen, ist, dass NoSQl in keiner Weise mit SQL verglichen werden kann. NoSQL ist der Name aller Persistenztechnologien, die nicht SQL sind. Dokument-DBs, Schlüsselwert-DBs und Ereignis-DBs sind alle NoSQL. Sie unterscheiden sich in fast allen Aspekten, sei es die Struktur der gespeicherten Daten, die Abfrage, die Leistung und die verfügbaren Tools.
Wenn Ihnen also jemand im Interview eine solche Frage stellt, sollte dies die Antwort sein.
quelle
'NoSQL'-Datenbanken (oder genauer: nicht relationale Datenbanken) geben einige Funktionen der herkömmlichen Datenbanken aus Gründen der Geschwindigkeit auf, was jedoch für die horizontale Skalierbarkeit wichtiger ist.
Die fehlenden Funktionen hängen vom konkreten Produkt ab. Im Allgemeinen werden vollständige ACID-Eigenschaften oder sogar Verknüpfungsoperationen nicht unterstützt. Das ist der Preis für die Mehrleistung.
quelle
Du hast recht, es wäre Unsinn, das in einer pauschalen Aussage zu sagen. Welches ist wahrscheinlich der springende Punkt; Anstelle einer einzelnen Antwort erwartet der Interviewer wahrscheinlich, dass Sie mit Fragen antworten, um herauszufinden, in welchem Kontext sich das Problem befindet (welche Art von Daten, wie viel davon, in welcher Betriebsumgebung usw.), welche NoSQL-Lösung . Sie versuchen herauszufinden, wie Sie Probleme analysieren, und bekommen dabei eine Vorstellung davon, wie viel Sie über die verschiedenen Lösungen wissen, die es gibt.
quelle
NoSQL-Datenbanken sind normalerweise nur dann sinnvoll, wenn Sie Ihre Daten darauf aufbauen.
Wenn Sie sie einfach als RDBMS-Ersatz verwenden möchten, erhalten Sie möglicherweise weniger Leistung als mehr, insbesondere wenn Sie nicht über genügend Budget verfügen, um für Server mit hohem RAM-Speicher zu zahlen.
Schauen Sie sich diesen Artikel an, der die Speicherplatznutzung von MySQL mit der von MongoDB vergleicht: http://blog.trackerbird.com/content/mysql-vs-mongodb-disk-space-usage
quelle
Welche NoSQL-Datenbank? Welche SQL-Datenbank? Wenn Ihnen jemand sagt, dass NoSQL schneller als SQL ist, sollten Sie weggehen. Oder besser noch dieses Video anschauen:
http://www.youtube.com/watch?v=b2F-DItXtZs
Ich werde nicht sagen, dass die Hälfte der Dinge, die über NoSQL behauptet werden, falsch sind, aber ich werde sagen, dass es eine Menge NoSQL-Fanboyismus von Leuten gibt, die es wirklich nicht sehr gut verstehen.
SQL hat (natürlich) seine Grenzen, aber es ist auch eine sehr ausgereifte Technologie, die gut verstanden wird und über einen großen Pool von Entwicklern verfügt, die wissen, wie man sie gut einsetzt. Ich kann nicht für alle Formen von NoSQL dasselbe sagen.
quelle
NoSql wird von spaltenorientierten Datenbanken unterstützt, wobei RDBMS eine zeilenorientierte Datenbank ist. Nehmen wir beispielsweise an, wir haben eine Employee-Tabelle mit Name, Alter, Gehalt, Adresse, EmployeeId usw. Wir fügen dieselbe Tabelle in MySql (RDBMS-Unterstützung) und HBase ein (NoSQL-Unterstützung). Wenn ein Kunde / Kunde eine Anfrage schreibt, um die durchschnittlichen Alters- oder Gehaltsangaben von 1Lakh-Mitarbeitern zu erhalten, was passiert dann?
In RDBMS wird jede Zeile durchlaufen und der Wert sowie die Summe und Division für das Ergebnis gesammelt. Wenn es um Columnar-Datenbanken geht, müssen Sie sich nicht um alle Iterationen einer Zeile kümmern. Aber beschäftige dich nur mit einer Zeile, die schneller zu berechnen ist. Auf diese Weise ist NoSQL manchmal schneller als SQL. In diesem Fall kümmert sich NoSQL nicht um ACID-Beschwerden, die es wert sind!
quelle
Vergessen Sie die Theorie rund um Datenbanken. Sobald Sie Ihre Abfragen verstanden haben, können Sie Daten in nosql-Datenbanken genau so speichern, wie sie in Ihrer Anwendung tatsächlich verwendet werden.
Nehmen wir zum Beispiel dieses Beispiel: Sie haben ein Kundenmodell mit vielen Bestellungen und vielen Artikeln, die mit jeder Bestellung verknüpft sind. Dann haben sie auch viele gespeicherte Artikel für spätere Einkäufe ... wenn Sie ein großes E-Commerce-Geschäft mit beispielsweise 10 Millionen Kunden und 50 Kunden sind Millionen Bestellungen. Und dieser Kunde meldet sich in seinem Dashboard an, in dem genau diese Daten angezeigt werden. Wie viel Arbeit muss eine SQL-Datenbank leisten, um den Kunden zu finden, die Bestellungen und jede Werbebuchung und gespeicherte Artikel zu verknüpfen. In einer SQL-Datenbank müssen all diese Daten wahrscheinlich auf irgendeine Weise verknüpft werden ... oder Sie können eine Sammlung in Ihrer Datenbank mit dem Namen usercache erstellen und diese Daten genau so speichern, wie Sie sie im wirklichen Leben verwenden. Dies kann also wirklich eine einzelne Abfrage in einem einzelnen Feld [id] sein, um alle diese Daten zurückzugewinnen. Darüber hinaus tut die NOSQL-Datenbank nicht '
Kann eine SQL-Datenbank also ein einzelnes ID-Feld genauso schnell abfragen, wenn nicht schneller als nosql? Ja, aber kann eine SQL-Datenbank alle benötigten Daten zurückgeben, indem sie eine Tabelle und ein Feld abfragt? Nein, es sei denn, Sie speichern die Daten in Json in einem großen Textfeld. Jetzt können diese Daten nicht mehr für eine mögliche zukünftige Verwendung abgefragt werden.
quelle