Was ist NoSQL, wie funktioniert es und welche Vorteile bietet es an? [geschlossen]

StackOverflow https://stackoverflow.com/questions/1145726

  •  16-09-2019
  •  | 
  •  

Frage

Ich habe Dinge zu hören über NoSQL und daß sie schließlich der Ersatz für SQL-DB-Speichermethoden werden aufgrund der Tatsache, dass die DB-Interaktion ist oft ein Flaschenhals für die Geschwindigkeit im Web.

Also habe ich nur ein paar Fragen:

  1. Was genau ist das?

  2. Wie funktioniert es?

  3. Warum wäre es besser, als eine SQL-Datenbank verwenden? Und wie viel besser ist es?

  4. Ist die Technologie auch neue noch zu Beginn der Umsetzung oder lohnt es sich, einen Blick in zu nehmen?

War es hilfreich?

Lösung

  1. Was ist das genau?

    Auf der einen Seite ein spezifischen System , aber es hat sich auch ein generischer Begriff für eine Vielzahl von neue Datenspeicher-Backends , die das relationale DB-Modell nicht folgen.

  2. Wie funktioniert es?

    Jeder der mit dem Gattungsnamen bezeichneten Systemen funktioniert anders, aber die Grundidee ist die Verwendung von DB-Modelle eine bessere Skalierbarkeit und Leistung zu bieten, die nicht die gesamte Funktionalität eines generischen RDBMS unterstützen, aber immer noch genug Funktionalität, nützlich zu sein . In gewisser Weise ist es wie MySQL, die auf einmal Unterstützung fehlte für Transaktionen aber, genau weil kommt, dass andere DB-Systeme entwickeln verwaltet. Wenn Sie Ihre Anwendung in einer Art und Weise schreiben können, die nicht Transaktionen erfordern, es war toll.

  3. Warum wäre es besser, als eine SQL-Datenbank verwenden? Und wie viel besser ist es?

    Es wäre besser, wenn Ihre Website so massiv skalieren muss, dass die besten RDBMS auf der besten Hardware laufen Sie können so viel leisten und optimierten einfach wie möglich nicht mit der Last halten. Wie viel besser ist, hängt von dem spezifischen Anwendungsfall (viele Update-Aktivität in Kombination mit vielen verbindet, ist sehr hart an „traditionell“ RDBMS) -. Gut könnte ein Faktor von 1000 im Extremfall sein

  4. Ist die Technologie auch neue Implementierung zu beginnen noch oder ist es lohnt sich ein Blick in das Nehmen?

    hängt in erster Linie auf das, was Sie erreichen wollen. Es ist sicherlich reif genug zu verwenden. Aber nur wenige Anwendungen benötigen wirklich massiv zu skalieren. Für die meisten ist ein traditionelles RDBMS ausreichend. Doch mit der Internetnutzung allgegenwärtiger die ganze Zeit immer, es ist sehr wahrscheinlich, dass Anwendungen, die häufiger tun werden (wenn auch wahrscheinlich nicht dominant).

Andere Tipps

Es gibt nicht so etwas wie NoSQL!

NoSQL ist ein Schlagwort.

Seit Jahrzehnten, wenn Leute über Datenbanken sprachen, meinten sie relationale Datenbanken. Und wenn die Leute über relationale Datenbanken sprachen, bedeutete, dass sie diejenigen, die Sie mit Edgar F. Codd Structured Query Language steuern. Das Speichern von Daten auf andere Weise? Wahnsinn! Alles andere ist nur Flatfiles.

Aber in den letzten Jahren, die Menschen der Autor dieses Dogma in Frage zu stellen. Die Leute wunderten sich, wenn Tabellen mit Zeilen und Spalten sind wirklich die einzige Möglichkeit, Daten darzustellen. Die Menschen begannen zu denken und Codierung, und kamen mit vielen neuen Konzepten auf, wie die Daten organisiert werden könnten. Und sie begannen, neue Datenbanksysteme für diese neuen Möglichkeiten der Arbeit mit Daten konzipiert zu erstellen.

Die Philosophien von all diesen Datenbanken unterschiedlich waren. Aber eine Sache, alle hatten diese Datenbanken gemeinsam war, dass die Structured Query Language war nicht mehr eine gute Passform sie für die Verwendung. So wird jede Datenbank ersetzt SQL mit ihren eigenen Abfragesprachen. Und so wurde der Begriff NoSQL geboren, als Label für alle Datenbanktechnologien, die das klassische relationale Datenbankmodell trotzen.

Was tun haben NoSQL-Datenbanken gemeinsam?

Eigentlich nicht viel.

Sie hören oft Sätze wie:

  • NoSQL ist skalierbar!
  • NoSQL ist für BigData!
  • NoSQL verletzt ACID!
  • NoSQL ist ein besserer Schlüssel / Wert-Speicher!

Ist das wahr? Nun, einige dieser Aussagen könnten für einige Datenbanken wahr sein gemeinhin als NoSQL, aber jeder einzelne ist auch falsch für mindestens einen anderen. Eigentlich ist das einzige, was NoSQL-Datenbanken gemeinsam haben, dass sie Datenbanken, die SQL nicht verwenden. Das ist es. Das einzige, was sie definiert ist, was unterscheidet sie voneinander.

Was unterscheidet NoSQL-Datenbanken auseinander?

So haben wir klar, dass alle diese Datenbanken allgemein als NoSQL sind zu unterschiedlich, sie gemeinsam zu bewerten. Jeder von ihnen muss separat ausgewertet, um zu entscheiden, ob sie eine gute Passform sind, ein bestimmtes Problem zu lösen. Aber wo fangen wir an? Zum Glück können NoSQL-Datenbanken in bestimmte Kategorien eingeteilt werden, die für unterschiedliche Anwendungsfälle geeignet sind:

dokumentenorientierte

Beispiele: MongoDB, CouchDB

Stärken: Heterogene Daten, Arbeitsobjektorientierte, agile Entwicklung

Ihr Vorteil ist, dass sie nicht eine konsistente Datenstruktur erforderlich ist. Sie sind nützlich, wenn Sie Ihre Anforderungen und damit Ihre Datenbank-Layout ändert sich ständig, oder wenn Sie mit Datensätzen handelt, die zusammengehören, aber immer noch sehr unterschiedlich aussehen. Wenn Sie eine Menge von Tabellen mit zwei Spalten namens „Schlüssel“ und „Wert“ haben, dann könnte dies wert sein in suchen.

Graph-Datenbanken

Beispiele:. Neo4j, GiraffeDB

Stärken: Data Mining

Während die meisten NoSQL-Datenbanken, das Konzept der Verwaltung von Datenbeziehungen verlassen, diese Datenbanken zu umarmen sie noch mehr als die sogenannten relationalen Datenbanken.

Der Fokus liegt auf Daten, die durch ihre Beziehung zu anderen Daten. Wenn Sie eine Menge von Tabellen mit Primärschlüsseln haben, die die Primärschlüssel von zwei anderen Tabellen sind (und vielleicht auch Daten einigen, die die Beziehung zwischen ihnen zu beschreiben), dann könnte dies etwas für Sie sein.

Schlüsselwert Stores

Beispiele: Redis, Cassandra, memcachedb

Stärken: Schnell-Suche von Werten nach bekannten Tasten

Sie sind sehr simpel, aber das macht sie schnell und einfach zu bedienen. Wenn Sie keine Notwendigkeit für gespeicherte Prozeduren haben, Einschränkungen, Trigger und alle, die erweiterte Datenbankfunktionen und Sie wollen einfach nur schnell Speichern und Abrufen von Daten, dann sind die für Sie.

Leider gehen sie davon aus, dass Sie genau wissen, was Sie suchen. Sie müssen das Profil User157641? Kein Problem, nur Mikrosekunden dauern. Aber was, wenn Sie die Namen aller Benutzer mögen, die im Alter zwischen 16 und 24, hat „Waffeln“, wie ihre favorite Essen und in den letzten 24 Stunden angemeldet? Pech. Wenn Sie nicht über einen bestimmten und eindeutigen Schlüssel für ein bestimmtes Ergebnis haben, können Sie es nicht so leicht von Ihrem K-V Speicher erhalten werden.

Ist SQL veraltet?

Einige NoSQL Befürworter behaupten, dass ihre Lieblings NoSQL Datenbank die neue Art und Weise, Dinge zu tun ist, und SQL ist eine Sache der Vergangenheit.

Sind sie nicht wahr?

Nein, natürlich sind sie nicht. Zwar gibt es Probleme ist nicht geeignet für SQL sind, ist es seine Stärken noch vorhanden sind. Viele Datenmodelle werden einfach am besten als eine Sammlung von Tabellen dargestellt, die aufeinander verweisen. Vor allem, weil die meisten Datenbank-Programmierer ausgebildet wurden seit Jahrzehnten von Daten in einer relationalen Weise zu denken und versuchen, diese Einstellung auf eine neue Technologie zu drücken, die nicht für sie gut selten enden gemacht wurde.

NoSQL-Datenbanken sind kein Ersatz für SQL - sie sind eine Alternative

.

Die meisten Software-Ökosysteme rund um die verschiedenen NoSQL-Datenbanken sind noch nicht ausgereift. Zwar gibt es Fortschritte sind, haben Sie immer noch nicht zusätzliche Tools bekommen, die für populäre SQL-Datenbanken zur Verfügung, wie sie so ausgereift und leistungsstark sind.

Außerdem gibt es viel mehr Know-how für SQL um. Generationen von Computer-Wissenschaftler haben Jahrzehnte ihrer Karriere in Forschung ausgegeben auf relationalen Datenbanken konzentriert, und es zeigt: Die Literatur geschrieben über SQL-Datenbanken und relationale Datenmodellierung, sowohl praktisch als auch theoretisch könnten mehrere Bibliotheken voller Bücher füllen. Wie eine relationale Datenbank erstellen für Ihre Daten ein Thema eine Ecke Fall so gut recherchiert ist, es ist schwer zu finden, wo es keine allgemein akzeptierte by-the-Buch ist beste Praxis.

Die meisten NoSQL-Datenbanken, auf der anderen Seite, sind nach wie vor in den Kinderschuhen. Wir sind immer noch der beste Weg, herauszufinden, sie zu nutzen.

Da jemand gesagt, dass meine früheren Post war off-topic, ich werde versuchen :-) NoSQL zu kompensieren ist es nicht, und nie war, soll ein Ersatz für Mainstream-SQL-Datenbanken sein, aber ein paar Worte sind in um die Dinge in der richtigen Perspektive zu bekommen.

Im Herzen der NoSQL Philosophie liegt die Überlegung aus, dass möglicherweise für kommerzielle und Portabilität Gründen SQL-Motoren neigen dazu, die enorme Leistung des Betriebssystems UNIX und dessen Derivate außer Acht zu lassen.

Mit einem Dateisystem-basierte Datenbank, können Sie sofort nutzen die ständig wachsenden Fähigkeiten und Leistung des zugrunde liegenden Betriebssystem, das seit vielen Jahren in Übereinstimmung mit Moores Gesetz stetig zugenommen haben. Mit diesem Ansatz werden viele Betriebssystembefehle automatisch auch „Datenbank-Operatoren“ (man denke an „ls“ „Art“, „finden“ und die anderen unzähligen Dienstprogramme UNIX-Shell).

In diesem Sinne, und ein bisschen Kreativität kann man in der Tat ein Dateisystem-basierte Datenbank entwickeln, die in der Lage ist, die Grenzen vieler gängigen SQL-Motoren zu überwinden, zumindest für bestimmte Nutzungsmuster, das der springende Punkt hinter NoSQL der ist Philosophie, so wie ich es sehe.

ich Hunderte von Websites laufen und sie alle nutzen NoSQL in einem größeren oder geringeren Ausmaß. In der Tat, bewirten sie nicht riesige Mengen an Daten, aber auch wenn einige von ihnen haben könnte ich wahrscheinlich ein kreativen Einsatz von NoSQL denken und dem Dateisystem Engpaß zu überwinden. Etwas, das wahrscheinlich mit traditioneller SQL „Jails“ schwieriger wäre. Ich fordere Sie für "Unix" to google "Manis" und "shaffer" zu verstehen, was ich meine.

Wenn ich mich richtig erinnere, bezieht er sich auf Arten von Datenbanken, die nicht notwendigerweise die relationale Form folgen. Dokumentendatenbanken in den Sinn kommen, Datenbanken ohne eine bestimmte Struktur, und die keine SQL als eine bestimmte Abfragesprache verwenden.

Es ist im Allgemeinen besser geeignet, um Web-Anwendungen, die auf die Leistung der Datenbank verlassen und nicht mehr erweiterte Funktionen der Beziehung Datenbank-Engines müssen. Zum Beispiel kann ein Key-> Wert speichern eine einfache Abfrage von ID-Schnittstelle bereitstellt sein könnte 10-100x schneller als die entsprechenden SQL-Server-Implementierung, mit einem niedrigeren Entwickler Wartungskosten.

Ein Beispiel dafür ist das Papier für eine rel="nofollow OLTP Tuple Store, die Transaktionen für Single-Threaded-Verarbeitung (kein Concurrency Problem, weil keine Gleichzeitigkeit erlaubt) geopfert und hielt alle Daten im Speicher; Erreichen 10-100x Leistung besser als in einem ähnlichen RDBMS getriebenes System. Im Grunde ist es eine Abkehr von dem ‚One Size Fits All‘ Ansicht von SQL und Datenbanksystemen.

In der Praxis ist NoSQL ein Datenbanksystem, das schnellen Zugriff auf große binäre Objekte unterstützt (docs, JPGs usw.) eine Schlüssel basierte Zugriffs Strategie. Dies ist eine Abkehr von dem traditionellen SQL-Zugriff, die nur gut genug für alphanumerische Werte sind. Nicht nur die interne Speicher und Zugriffsstrategie, sondern auch die Syntax und Einschränkungen auf das Anzeigeformat beschränkt die traditionelle SQL. BLOB-Implementierungen von traditionellen relationalen Datenbanken leiden auch von diesen Beschränkungen.

Hinter den Kulissen ist es ein indirektes Eingeständnis des Scheiterns des SQL-Modells jede Form von OLTP oder Unterstützung für neue Datenformate zu unterstützen. „Support“ bedeutet nicht nur speichern, sondern volle Zugang Fähigkeiten - programmatische und querywise das Standardmodell.

Relational-Enthusiasten waren schnell die defnition von NoSQL von Nicht-SQL zu ändern, um Nicht-Only-SQL im Bild SQL noch zu halten! Dies ist besonders dann nicht gut, wenn wir sehen, dass die meisten Java-Programme heute Resort ORM-Mapping des zugrunde liegenden relationalen Modells. Ein neues Konzept muss eine clearcut Definition hat. Sonst wird es sich wie SOA beenden.

Die Grundlage der NoSQL-Systeme liegt in dem zufälligen Schlüssel - Wert-Paar. Aber das ist nicht neu. Traditionelle Datenbanksysteme wie IMS und IDMS hat Unterstützung ramdom Schlüssel gehasht (ohne Verwendung eines Index zu machen), und sie tun noch. In der Tat hat IDMS bereits ein Schlüsselwort NONSQL wo sie SQL-Zugriff auf ihre älteren Netzwerk-Datenbank-Unterstützung, die sie als NONSQL bezeichnet.

Es ist wie Jacuzzi: sowohl eine Marke und ein allgemeiner Name. Es ist nicht nur eine bestimmte Technologie, sondern eine spezifische Typ der Technik, in diesem Fall mit Bezug auf Groß (oft spärlich) „Datenbanken“ wie Googles BigTable oder CouchDB.

NoSQL der tatsächlichen Programm erscheint eine relationale Datenbank in awk implementiert wird unter Verwendung von einfachen Dateien im Backend. Obwohl sie sich bekennen, „NoSQL im wesentlichen keine willkürlichen Grenzen, und kann arbeiten, wo andere Produkte nicht. Zum Beispiel gibt es auf Datenfeldgröße keine Begrenzung ist, die Anzahl der Spalten oder Dateigröße“, ich glaube nicht, es ist die groß angelegte Datenbank der Zukunft.

Wie Joel sagt, massiv skalierbaren Datenbanken wie BigTable oder HBase , sind viel interessanter. GQL ist die mit BigTable und App Engine zugeordnet Abfragesprache. Es ist weitgehend gezwickt SQL zu vermeiden, bietet Google hält Engstellen (wie Joins). Allerdings habe ich als „NoSQL“ nicht gehört diese genannten vor.

NoSQL ist ein Datenbanksystem, das keine Daten String basierte SQL-Abfragen verwenden zu holen.

Stattdessen bauen Sie Abfragen eine API verwendet, wird sie aus, zum Beispiel Amazon DynamoDB ein gutes Beispiel für eine NoSQL-Datenbank ist.

NoSQL-Datenbanken sind besser für große Anwendungen, bei denen Skalierbarkeit wichtig ist.

  

Ist NoSQL bedeutet nicht-relationale Datenbank?

Ja, das ist NoSQL unterscheidet sich von RDBMS und OLAP. Es verwendet lockere Konsistenz Modelle als herkömmliche relationale Datenbanken.

Konsistenz Modelle in verteilten Systemen wie verteilte gemeinsam genutzte Speichersysteme oder verteilte Datenspeicher verwendet werden.

  

Wie es funktioniert intern?

NoSQL-Datenbanksysteme sind oft hoch für den Abruf optimiert und Operationen anhängt und bieten oft wenig Funktionalität jenseits Rekordspeicher (zum Beispiel Schlüssel-Wert-Speicher). Die reduzierte Laufzeit Flexibilität im Vergleich zu allen SQL-Systemen durch deutliche Gewinne in der Skalierbarkeit und Performance für bestimmte Datenmodelle kompensiert wird.

Es kann auf strukturierte und unstrukturierte Daten arbeiten. Es verwendet Sammlungen statt Tabellen

  

Wie abfragen Sie solche "Datenbank"?

SQL vs NoSQL: Battle of the Backends ; es erklärt alles.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top