webentwicklung-frage-antwort-db.com.de

NoSQL Use Case-Szenarien oder WANN wird NoSQL verwendet?

Bei all dem Hype scheint es wirklich schwierig zu sein, verlässliche Informationen darüber zu finden, wann man dies verwendet. Daher stelle ich die folgenden Fragen, und es tut mir leid, wenn dies im Voraus wirklich dumme Fragen sind:

  1. Soll ich NoSQL für Benutzerdaten verwenden? Z.B. Profile, Benutzernamen + Passwörter usw.
  2. Soll ich NoSQL für wichtige Inhalte verwenden? Z.B. Artikel, Blog-Posts, Produktinventar usw.

Ich gehe davon aus, nein? Und ich denke, NoSQL ist nur für schnell zugängliche Dinge gedacht, bei denen es in Ordnung ist, Daten zu verlieren. Aber ich habe auch gelesen, dass in NoSQL-Apps Redundanz integriert ist, damit ich keine Daten verliere.

Könnten Sie mir auch spezifische Geschäftsanwendungsfälle nennen, in denen ich NoSQL verwenden würde, wenn die obigen 2 Beispiele schlecht sind? Ich sehe viele allgemeine Beschreibungen, aber nicht viele Beispiele aus der Praxis. Die einzigen Dinge, an die ich denken kann, sind Messaging und Analyse von Benutzer zu Benutzer.

Vielen Dank!

233
user1389722

Es ist wirklich eine "es kommt darauf an", irgendwie eine Frage. Einige allgemein Punkte:

  • NoSQL eignet sich in der Regel für unstrukturierte/"schemenlose" Daten. In der Regel müssen Sie Ihr Schema nicht explizit im Voraus definieren und können einfach neue Felder ohne Zeremonie einfügen
  • NoSQL bevorzugt normalerweise ein denormalisiertes Schema, da JOINs in der RDBMS-Welt nicht unterstützt werden. Normalerweise haben Sie also eine abgeflachte, denormalisierte Darstellung Ihrer Daten.
  • Die Verwendung von NoSQL bedeutet nicht, dass Sie Daten verlieren könnten. Unterschiedliche DBs haben unterschiedliche Strategien. z.B. MongoDB - Sie können im Wesentlichen auswählen, auf welcher Ebene die Leistung gegen das Datenverlustpotential abgewogen werden soll - beste Leistung = größerer Spielraum für Datenverlust.
  • Es ist oft sehr einfach, NoSQL-Lösungen zu skalieren. Das Hinzufügen weiterer Knoten zum Replizieren von Daten ist eine Möglichkeit, a) mehr Skalierbarkeit zu bieten und b) mehr Schutz vor Datenverlust zu bieten, wenn ein Knoten ausfällt. Aber auch hier kommt es auf die NoSQL DB/Konfiguration an. NoSQL bedeutet nicht unbedingt "Datenverlust", wie Sie schließen.
  • IMHO, komplexe/dynamische Abfragen/Berichterstellung werden am besten von einem RDBMS bedient. Häufig ist die Abfragefunktion für eine NoSQL-Datenbank eingeschränkt.
  • Es muss nicht die eine oder andere Wahl sein. Meine Erfahrung hat gezeigt, dass RDBMS in Verbindung mit NoSQL für bestimmte Anwendungsfälle verwendet wird.
  • NoSQL-DBs sind häufig nicht in der Lage, atomare Operationen über mehrere "Tabellen" hinweg auszuführen.

Sie müssen sich wirklich die verschiedenen Arten von NoSQL-Speichern ansehen und verstehen, wie sie Skalierbarkeit/Datensicherheit usw. bieten. Es ist schwierig, eine pauschale Antwort zu geben, da sie wirklich alle unterschiedlich sind und die Dinge unterschiedlich angehen .

Überprüfen Sie für MongoDb als Beispiel deren se Cases , um zu sehen, was sie als "gut geeignet" und "weniger gut geeignet" für MongoDb vorschlagen.

165
AdaTheDev

Ich denke, Nosql ist zumindest in diesen Szenarien "passender" (weitere Ergänzungen sind willkommen).

  1. Einfache Skalierung durch Hinzufügen weiterer Knoten.

  2. Abfrage bei großem Datensatz

    Stellen Sie sich Tonnen von Tweets vor, die jeden Tag auf Twitter gepostet werden. In RDMS kann es Tabellen mit Millionen (oder Milliarden?) Zeilen geben, und Sie möchten diese Tabellen nicht direkt abfragen, auch wenn Sie nicht erwähnen, dass Tabellenverknüpfungen in den meisten Fällen auch für komplexe Abfragen erforderlich sind.

  3. Datenträger-E/A-Engpass

    Wenn eine Website Ergebnisse basierend auf den Echtzeitinformationen der Benutzer an verschiedene Benutzer senden muss, handelt es sich wahrscheinlich um Zehntausende oder Hunderttausende von SQL-Lese-/Schreibanforderungen pro Sekunde. Dann ist Disk I/O ein schwerwiegender Engpass.

7
otm