Gemeinsame Merkmale von NoSQL

NoSQL Bücher und Blogs bieten unterschiedliche Meinungen darüber, was eine NoSQL-Datenbank ist. Vier Kernfunktionen von NoSQL, in der folgenden Liste aufgeführt, gelten für die meisten NoSQL-Datenbanken. Die Liste vergleicht NoSQL zu traditionellen relationalen DBMS:

  • Schema Agnostiker: Ein Datenbankschema ist die Beschreibung aller möglichen Daten und Datenstrukturen in einer relationalen Datenbank. Mit einer NoSQL-Datenbank wird ein Schema nicht erforderlich ist, Ihnen die Freiheit, Informationen zu speichern, ohne # 8208-Front-Schema-Design zu tun up.

  • nonrelational: Die Beziehungen in einer Datenbank-Verbindungen zwischen Tabellen von Daten aufzubauen. So kann beispielsweise eine Liste von Transaktionsdaten in eine separate Liste der Lieferdaten angeschlossen werden. Mit einer NoSQL-Datenbank, wird diese Information als ein Aggregat gespeichert - einem einzigen Datensatz mit allem, was über die Transaktion, einschließlich der Lieferadresse.

  • Commodity-Hardware: Einige Datenbanken sind entworfen besten (oder einzigen) mit spezialisierten Lagerungs- und Verarbeitungshardware zu betreiben. Mit einer NoSQL-Datenbank, billig off # 8208-the # 8208-shelf-Server verwendet werden kann. Das Hinzufügen von mehr dieser billigen Servern ermöglicht NoSQL-Datenbanken zu skalieren, um mehr Daten verarbeiten.

  • Highly verteilbar: Verteilte Datenbanken können eine Reihe von Informationen über mehr als ein Gerät zu speichern und zu verarbeiten. Mit einer NoSQL-Datenbank kann ein Cluster von Servern verwendet werden, um eine einzelne große Datenbank zu halten.

Schema Agnostiker

NoSQL-Datenbanken sind Schema Agnostiker. Sie sind nicht viel zu tun, bis # 8208-Front-Design Arbeit erforderlich, bevor Sie Daten in NoSQL-Datenbanken speichern können. Sie können Codierung starten und Daten speichern und abrufen, ohne zu wissen, wie die Datenbank speichert und intern arbeitet. (Falls und wenn Sie erweiterte Funktionen benötigen, dann können Sie manuell weitere Indizes hinzufügen oder Datenspeicherstrukturen optimieren.) Schema Agnostizismus kann der bedeutendste Unterschied zwischen NoSQL und relationalen Datenbanken sein.

Der große Vorteil zu einem Schema Agnostiker Datenbank ist, dass die Entwicklungszeit verkürzt wird. Dieser Vorteil erhöht sich, wenn Sie mehrere Entwicklungsversionen durchlaufen und müssen die internen Datenstrukturen in der Datenbank zu ändern.

Zum Beispiel in einem traditionellen RDBMS, gehen Sie durch einen Prozess der Schema-Redesign. Das Schema weist die Datenbank auf, welche Daten zu erwarten. Ändern Sie die Daten gespeichert sind, oder Strukturen, und Sie müssen die Datenbank mit einem modifizierten Schema reinstruct. Wenn Sie eine Änderung vornehmen, würde man viel Zeit damit verbringen müssen, um zu entscheiden, wie # 8208-Architekt die vorhandenen Daten neu. In NoSQL-Datenbanken speichern Sie einfach eine andere Datenstruktur. Es gibt keine Notwendigkeit, vorher die Datenbank zu erzählen.

Sie müssen möglicherweise Ihre Anfragen entsprechend zu ändern, fügen Sie vielleicht die gelegentliche spezifische Index (Wie beispielsweise eine ganze Zahl Bereichsindex zu ermöglichen, kleiner als und größer als Daten # 8208 typspezifische Abfragen), aber der ganze Prozess ist sehr viel weniger schmerzhaft, als es mit einem RDBMS ist.

RDBMS nahm wegen seiner Flexibilität ab und da durch Verwendung von SQL, es beschleunigt eine Abfrage zu ändern nach oben. NoSQL-Datenbanken bieten diese Flexibilität sowohl für das Schema zu ändern und die Abfrage, die eine der wichtigsten Gründe ist, dass sie im Laufe der Zeit immer mehr angenommen werden.

Auch auf Abfrage, können Sie nicht zu viel Sorgen brauchen, um über die Schemaänderungen zu wissen - zu prüfen, einen Index über ein Feld Kontonummer, wo Accountnummer kann überall in einem Dokument befinden, das in einer NoSQL Datenbank gespeichert ist. Sie können die Struktur zu ändern und zu verlagern, wo Accountnummer gespeichert ist, und wenn das Element den gleichen Namen an anderer Stelle im Dokument hat, ist es immer noch für Abfrage, ohne Änderungen an der Abfrage-Mechanismus zur Verfügung.

Beachten Sie, dass nicht alle NoSQL-Datenbanken vollständig Schema Agnostiker sind. Einige, wie HBase, benötigen Sie die Datenbank zu stoppen Spaltendefinitionen zu ändern. Sie sind immer noch NoSQL-Datenbanken berücksichtigt, da nicht alle definierten Felder (Spalten in diesem Fall) sind erforderlich, um für jeden Datensatz im Voraus bekannt sein - nur die Spalten Familien.

RDBMS können einzelne Felder in den Datensätzen identifiziert werden als Null Werte. Das Problem mit einem RDBMS ist, dass die gespeicherten Daten Größe und Leistung negativ beeinflusst, wenn Speicher für NULL-Werte nur für den Fall reserviert wird der Datensatz zu einem späteren Zeitpunkt einen Wert in dieser Spalte haben kann. In Cassandra, bieten Sie nicht einfach den Spaltendaten, die das Problem löst.

nonrelational

Relationale Datenbankmanagementsysteme wurden die dominante Weise zu speichern Anwendungsdaten für mehr als 20 Jahre. Ein großer Teil der mathematischen Arbeit war getan, die Theorie zu beweisen, dass sie untermauert.

Diese Untermauerung beschreibt, wie Tabellen miteinander in Beziehung stehen. Eine einzelne Bestell Reihe können sich auf viele Lieferadresse Reihen, aber jede Lieferadresse Zeile bezieht sich auch auf mehrere Bestell Reihen. Das ist ein viele# 8208-nach# 8208-Beziehung.

NoSQL-Datenbanken nicht über dieses Konzept der Beziehungen zwischen ihren Aufzeichnungen. Sie denormalize stattdessen Daten. Dies bedeutet, dass in einer NoSQL Datenbank würde eine Auftragsstruktur mit der Lieferadresse haben eingebettet. Dies bedeutet, dass die Lieferadresse ist in jeder Bestellung Zeile dupliziert, die es verwendet. Dieser Ansatz hat den Vorteil, nicht komplexe Abfragezeit erfordert allerdings über mehrere Datenstrukturen (Tabellen) verbindet.

NoSQL-Datenbanken speichern keine Informationen darüber, wie einzelne Datensätze beziehen sich auf andere Datensätze in der Datenbank, die wie eine Begrenzung klingen mag. NoSQL-Datenbanken sind jedoch flexibler in Bezug auf die Datenstrukturen, die Sie speichern können.

Betrachten wir einen Auftrag von einem Online-Händler. Die Reihenfolge könnte Produkt-Codes, Mengen, Artikelpreise und Artikelbeschreibungen sowie Informationen über die Person, Bestellung, wie Lieferadresse und Zahlungsinformationen enthalten.

Anstatt zehn Zeilen einfügen in einer Vielzahl von Tabellen in einer relationalen Datenbank, können Sie stattdessen speichern eine einzelne Struktur für alle diese Informationen zu Ihrer Bestellung - sagen wir, als JSON oder XML-Dokument.

In relationalen Datenbanktheorie, ist das Ziel, normalisieren Ihre Daten (das heißt, die Felder und Tabellen zu organisieren doppelte Daten zu entfernen). in NoSQL # 173-Datenbanken - insbesondere Dokument oder Aggregate Datenbanken - Sie oft absichtlich Daten denormalize, einige Daten mehrfach zu speichern.

Sie speichern kann, zum Beispiel, # 147-Kundenlieferadresse # 148- mehrmals über viele Aufträge ein Kunde im Laufe der Zeit macht, anstatt sie einmal speichern und sie in mehrere Aufträge beziehen. Dies erfordert zusätzlichen Speicherplatz, und ein wenig Vorbedacht in Ihrer Anwendung verwalten. Also, warum es tun?

Es gibt zwei Vorteile Daten mehrfach zu speichern:

  • Einfache Speicherung und den Abruf: Nur speichern und einen einzelnen Datensatz zu bekommen.

  • Abfragegeschwindigkeit: In relationalen Datenbanken, verbinden Sie interessante Informationen und Einschränkungen für Tabellen zum Zeitpunkt der Abfrage. Dies kann die Datenbank-Engine erfordern viele Tabellen zu bewerten. Je mehr Abfrage Einschränkungen, die Sie in den verschiedenen Tabellen haben, desto mehr reduzieren Sie Ihre Abfragegeschwindigkeit. (Aus diesem Grund ist ein RDBMS vorberechneten Blick.) In einer NoSQL-Datenbank, die alle Informationen, die Sie benötigen, um Ihre Abfrage zu bewerten in einem einzigen Dokument. Daher können Sie schnell die Liste der gefundenen Dokumente bestimmen.

Relational Ansichten und NoSQL denormalizations gibt verschiedene Ansätze für das Problem der Daten über Datensätze zu verbreiten. In NoSQL, können Sie mehrere denormalizations, die verschiedene Ansichten der gleichen Daten pflegen. Dieser Ansatz erhöht die Kosten der Lagerung, sondern gibt Ihnen viel bessere Abfragezeit.

Da immer die # 8208 mindernde Kosten für die Lagerung und die erhöhte Geschwindigkeit der Entwicklung und Abfragen, denormalized Daten (aka materialisierte Ansichten) Ist kein Killer Grund NoSQL-Lösungen zu diskontieren. Es ist nur eine andere Art und Weise das gleiche Problem, mit seinen eigenen Vor- und Nachteile zu nähern.

NoSQL ist hoch verteilbar und nutzt Standard-Hardware

In vielen NoSQL-Datenbanken, ist ein wichtiger Design-Entscheidung mehrere Computer zu verwenden, eine einzelne Datenbank zum Speichern von Daten für, anstatt haben die gesamte Datenbank auf einem einzigen Server.

Das Speichern von Daten auf mehreren Rechnern und ermöglicht es abgefragt werden, ist schwierig. Sie müssen die Abfrage an alle Server senden und auf eine Antwort warten. Hoffentlich stellen Sie die Maschinen, so dass sie schnell genug sind, um miteinander zu sprechen, verteilte Abfragen zu handhaben!

Der Hauptvorteil dieses Ansatzes ist es im Falle von sehr großen Datenmengen, da für einige Speicheranforderungen, auch der größten verfügbaren Single-Server nicht oder Prozess alle Daten speichern, könnten Sie benötigen. Betrachten Sie alle Nachrichten auf Twitter und Facebook. Sie benötigen einen verteilten Mechanismus, um effektiv alle diese Daten zu verwalten, auch wenn es meist über das, was Menschen zum Frühstück und nette Katze Videos hatte.

Ein Vorteil der Datenbank zu verteilen ist, dass Sie billiger Server verwenden können, die so genannte Rohstoff-Server. Auch für kleinere Datenmengen kann es günstiger sein, anstelle eines einzelnen, höher # 8208 betriebene Server drei Standardserver zu kaufen.

Ein weiterer wichtiger Vorteil ist, dass eine hohe Verfügbarkeit ist das Hinzufügen easier- sind Sie bereits auf halbem Weg dort durch Ihre Daten zu verteilen. Wenn Sie Ihre Daten ein- oder zweimal auf andere Server im Cluster repliziert werden, werden Ihre Daten noch zugänglich sein, auch wenn einer der Server abstürzt, brennt und stirbt.

Nicht alle offenen # 8208-Source-Datenbanken eine hohe Verfügbarkeit zu unterstützen, wenn Sie die unterstützten kaufen, bezahlt # 8208-für-Version der Datenbank von der Firma, die es sich entwickelt.

Eine Ausnahme von der hoch ausschüttbaren Regel ist, dass von Graph-Datenbanken. Um bestimmte Graph-Abfragen in einer angemessenen Frist, um effektiv zu beantworten, müssen die Daten auf einem einzigen Server gespeichert werden. Niemand hat diese besondere Problem noch nicht gelöst.

Überlegen Sie genau, ob Sie ein Triple-Shop oder eine Grafik Speicher benötigen. Triple-Geschäfte sind in der Regel verteilbar, während Graph speichert nicht. Welche Sie brauchen, hängt von den Fragen, die Sie unterstützen.

Menü