2010-06-18 11 views
20

Nachdem ich einige der Vorteile von NoSQL (Skalierbarkeit, Verfügbarkeit usw.) verstanden habe, ist mir immer noch nicht klar, warum eine Website eine nicht-relationale Datenbank verwenden möchte. Kann ich Hilfe bekommen, am besten mit einem Beispiel?Warum genau verwenden wir NoSQL?

+5

Vielleicht ist es besser, auf einige andere Fragen suchen http://stackoverflow.com/questions/2875432/use-cases-for -nosql –

+5

NoSQL bedeutet nicht "keine Beziehungen". Wenn überhaupt, erlaubt es einfach verschiedene (nicht-traditionelle RDBMS-Möglichkeiten), Daten, Beziehungen und Operatoren zu definieren. db4o, neo4j und sogar Tutorial D (!) sind "NoSQL". Ein großer Vorteil dieser Alternativen ist, dass sie in bestimmten Fällen * eine viel bessere Leistung * ermöglichen, insbesondere bei Updates. Ein weiterer Vorteil ist, dass einige Beziehungen einfach nicht zum SQL-Modell passen - z. B. ein Objektdiagramm (und insbesondere eines, das zyklisch ist!). (Vergleichen Sie dies mit einigen "RDBMS" -Modulen, die einfach keine korrekten relationalen Einschränkungen bieten.) –

+0

Sie würden eine NoSQL-Alternative verwenden, da ein herkömmlicher Ansatz die Last auf einer Website einfach nicht verarbeiten würde. Hier ist eine Diskussion über NoSQL bei Twitter: http://www.computerworld.com/s/article/9161078/Twitter_growth_prompts_switch_from_MySQL_to_NoSQL_database –

Antwort

19

Bessere Leistung

NoSQL-Datenbanken manchmal eine bessere Leistung haben, obwohl dies hängt von der Situation und ist umstritten.

Anpassbarkeit

Sie hinzufügen und "Spalten" entfernen, ohne Ausfallzeiten. In den meisten SQL-Servern dauert dies viel Zeit und beansprucht viel.

Anwendungsdesign

Es ist wünschenswert, die Datenspeicher von der Logik zu trennen. Wenn Sie in SQL-Abfragen Elemente hinzufügen und auswählen, mischen Sie Geschäftslogik mit Speicher.

+0

+1 für die Erwähnung mehr als nur Leistung – tawmas

11

Der Hauptgrund, keine SQL-Datenbank zu verwenden, ist die Skalierbarkeit. Die Transaktionsgarantien und das relationale Modell machen es fast unmöglich, eine Datenbank sinnvoll auf mehr als ein paar Maschinen zu skalieren, besonders angesichts der hohen Schreiblasten, die von modernen Webanwendungen erzeugt werden.

Eine App wie Facebook kann nicht gemacht werden, um auf einer einfachen SQL-Datenbank zu arbeiten, außer durch massive Partitionierung und Sharding, die erhebliche Anpassungen an der App-Logik erfordert. Deshalb hat Facebook Cassandra entwickelt.

NoSQL bedeutet im Grunde, dass Sie auf einige SQL-typische Funktionen wie sofortige Konsistenz oder einfache Joins verzichten, um eine Datenbank zu verwenden, die viel besser skaliert.

Umgekehrt ist es sinnlos, NoSQL zu verwenden, wenn Ihre Website nie mehr als ein Dutzend gleichzeitige Benutzer hat (was für die überwiegende Mehrheit aller Websites gilt).

13

NoSQL-Datenbanken gibt es einige Dinge zu lösen, vor allem:

  • (Buzz) BigData => denken TB, PB, etc ..

  • Arbeiten mit Verteilte Systeme/Datasets => sagen, Sie haben 42 Produkte, so 13 von ihnen werden in Chicago Datacenter, 21 in NY und anderen und 8 irgendwo in Japan leben, aber sobald Sie alle 42 Produkte abfragen, müssten Sie nicht wissen, wo sie sich befinden: NoSQL DB wird.Auf diese Weise kann auch viel mehr Gehirnleistung (Server) engagieren schwer Rechenprobleme zu lösen [scheint nicht, es würde Ihren Anwendungsfall passen, aber es ist eine interessante Sache zu beachten]

  • Partitioning => mit Ihrer DB kann einfach verteilt werden, neben diesen coolen 8 Produkten in Japan, ermöglicht auch eine einfache Datenreplikation, so dass diese 42 Produkte zum Beispiel mit einem Faktor von 3 repliziert werden, was bedeuten würde, dass DB 3 Kopien für alle hätte Produkt. Wenn also etwas ausfällt, kein Problem => hier ist ein Replikat verfügbar. Hier glänzen NoSQL-Datenbanken im Vergleich zu RDBMS. Zugegeben, Sie können Oracle/MySQL/PostgreSQL/etc shard, Partition und Cluster. Aber es ist ein mehrere Größen komplizierter Prozess und in der Regel eine Wartung Kopfschmerzen für die meisten Menschen, die Sie beschäftigen würde.

ABER auf Ihre Frage:

  • , warum eine Website würde eine nicht-relationale Datenbank verwenden möchten

Wenn die meisten Menschen, die ich gearbeitet mit/met/chatted mit, wählen Sie NoSQL für ihre "Website", es ist leider NICHT aus den oben genannten Gründen, aber einfach weil es COOLER ist, so zu tun. Und tatsächlich haben viele Projekte aus diesem Grund extreme Schwierigkeiten.

Wenn die meisten von NoSQL-Gurus ihre Masken abnehmen, werden sie alle einig, dass die meisten Probleme (oder wie die Leute nennen sie websites), dass die Entwickler von Tag zu Tag zu lösen, und eher mit einer SQL-Lösung gelöst werden, wie PostgreSQL, MySQL, etc .. mit einigen coolen Redis Cache-Layer darüber. Und nur ein kleiner Teil der Probleme würde wirklich von NoSQL profitieren.

Ich persönlich liebe Riak, da ich fest davon überzeugt bin, dass eine NoSQL, fehlertolerante DB eine extrem starke, flexible und natürlich verteilte Grundlage haben sollte => wie Erlang OTP. Außerdem bin ich ein Fan von Einfachheit. Aber wieder, angesichts des Problems, würde ich wählen, was am besten funktioniert, und die meiste Zeit werde ich diese Konsistenz (vor allem wenn wir talking about money/Financial World/Mission kritisch/etc ..).

1

Hier ist eine Tech-Diskussion über Gründe für die Verwendung verschiedener NoSQL-Datenbanken und Vergleiche zwischen verschiedenen Arten von NoSQL-Datenbanken: NoSQL comparison tech talk.

7

Wir müssen verstehen, was ist Ihr Problem in der aktuellen Anwendung?

  • Transaktionen
  • Datenmenge
  • Datenstruktur

NoSQL die Probleme der Skalierbarkeit und Verfügbarkeit gegen die der Unteilbarkeit oder Konsistenz löst.

Grundlegende Laufwerk uns zu CAP Theorem.Eric Brewer auch darauf hingewiesen, dass von den drei Eigenschaften von shared-data-Systemen - Konsistenz, Verfügbarkeit und Toleranz für Netzwerkpartitionen - nur zwei kann jeden gegebenen Zeitpunkt erreicht werden. (CAP-Theorem)

enter image description here

NOSQL Ansatz

  • Schemaless Datendarstellung:
    • meisten von ihnen bieten schemaless Datendarstellung & ermöglichen Speichern semistrukturierten Daten.
    • Kann sich im Laufe der Zeit weiterentwickeln - einschließlich Hinzufügen neuer Felder oder sogar Verschachteln der Daten, z. B. im Falle einer JSON-Darstellung.
  • Entwicklungszeit:
    • Keine komplexen SQL-Abfragen.
    • Keine JOIN-Anweisungen.
  • Geschwindigkeit:
    • Höchstgeschwindigkeits Lieferung & Meist in-built Entity-Level-Caching
  • Planen Sie im Voraus für die Skalierbarkeit:
    • Vermeidung von Nacharbeiten
-1

Es gibt viele Arten von NoSQL-Datenbanken. Die Webanwendungen verwenden dokumentbasierte Datenbanken. Das db-Dokument erlaubt uns, JSON-, XML-, YAML- und sogar Word-Dokumente zu speichern und zu manipulieren. Also, NoSQL ist die offensichtliche Wahl, vor allem MongoDB, die eine Dokument-Datenbank ist, die JSON-Format standardmäßig unterstützt, ist die am meisten bevorzugte Wahl von Entwicklern und Designern.

-1

Obwohl ich hier viele Antworten sehen kann, fühle ich, dass ich etwas hinzufügen kann, das klar und auf den Punkt ist. Einige einfache Beispiele, die die Verwendung von NoSQL rechtfertigen, werden anhand dieser Bilder dargestellt. Ich bin nicht Bilder erlaubt noch zu schreiben, wie ich kurz Punkte bin, dass diese Funktion für mich aufschließen würde, so finden Sie in den Links:

Extra columns could be added

Use of JSON for easier development

0

Ob RDBMS oder NoSQL zu verwenden, hängt von Ihrem Ziel und dem Umfang der Website ab, die Sie erstellen. NoSQL-Datenbanken lassen sich grob in 4 verschiedene Kategorien einteilen: Schlüssel-Wert-Speicher, Dokumentenspeicher, Spalten-Datenbank und Graph-Datenbank. Jede Art von Datenbankverwaltungssystem ist für ein bestimmtes Anwendungsszenario geeignet.

Einfache kleine App oder Website

RDBMS ist der beste Kandidat. Es ist ein ausgereiftes System mit vielen Online-Support. Da die Daten logisch organisiert sind, ist sie im Vergleich zu anderen Datenbanktypen relativ einfach zu erlernen.Unabhängig von der von Ihnen gewählten RDBMS-Technologie sind der Kern der SQL-Syntax und die Best Practices für alle anwendbar.

Struktur der Daten wird erwartet, haben häufig

RDBMS Tabellen zu ändern, gut definierten und strenges Schema, so dass sie nicht sehr leicht zu ändern, wenn eine Anforderung, dies zu tun entstehen. Daher ist die schemalose NoSQL-Datenbank hier die beste Technologie.

Groß System, das eine Menge Daten

Document Store NoSQL-Datenbank wird am meisten erzeugt hier geeignet, da RDBMS-Systeme sind nicht in erster Linie einfach skaliert ausgelegt werden.

Buchhaltung oder Zahlungsmanagementsystem

RDBMS ist die beste Technologie Wahl hier, wie es ACID-Transaktionen verwendet (das heißt, wenn Aktualisierung geschieht, alle zugehörigen Daten konsistent wird). Die meisten NoSQL-Systeme verwenden eine mögliche Konsistenz, was bedeutet, dass es nach dem Update einige Zeit dauern wird, bis entsprechende Daten und Datenbankrepliken aktualisiert werden. Daten gehen manchmal in seinem Prozess verloren. Nicht gut, wenn Sie Ihre Aufzeichnungen genau halten müssen.

Business Analytics

Wenn Sie beabsichtigen, komplexe Analysen ausführen kann, ist RDBMS die beste Wahl der Plattform, da es für sehr logische Anordnung der Datenspeicherung ermöglicht und es ist der beste Datenbanktyp komplexe Abfragen für die Ausführung. Wenn Analysen einfach sein sollen (z. B. wie viele Kunden mehr als einen bestimmten Betrag ausgegeben haben), wäre eine Spalten-Datenbank die beste Wahl, da Sie eine einzelne Spalte in einer Tabelle durchsuchen könnten, ohne einen vollständigen Tabellen-Scan durchzuführen.

Social network

Graph-Datenbank ist am besten geeignet für den Aufbau des Kernteils eines sozialen Netzwerks, da diese Art von Datenbank speichern Daten in einem Netzwerk Form bereits. Sowohl Knoten (z. B. Benutzerprofile) als auch Graphen (z. B. Beziehungen) werden als Entitätstypen behandelt, so dass Beziehungsdaten von Benutzerprofildaten entkoppelt werden.

Für die Messaging-Funktionalität im sozialen Netzwerk ist der Dokumentenspeicher die beste Lösung, da jede Konversation und nachfolgende Antworten in einem Dokument mit logisch sequenzieller Struktur gespeichert werden können.

Betrugserkennung

Graph-Datenbank ist die beste Technologie Wahl hier.

Multiplayer-Spiel

Key-Wertspeicher für den Spieler Zustand zu halten.

E-Commerce-Website

Schlüsselwertspeicher für den Warenkorb. Dokumentenspeicher für die Produkte, die auf der Website angezeigt werden sollen. RDBMS für die Zahlungsabwicklung. Grafikdatenbank für die Empfehlungsmaschine.

Nähere Informationen können Sie diese Seite besuchen:

When NoSQL is better choice than RDBMS and when it's not