NoSQL für relationale Denker

Wenn Entwickler zum ersten Mal darüber nachdenken, Daten zu verwalten oder eine Datenbank für ihre Anwendung auszuwählen, ist das erste, woran sie oft denken –

– genau, eine Tabelle.

Sie richten dann verschiedene Tabellen für die verschiedenen Arten von Daten ein, z. B. eine Tabelle für Benutzer und eine andere für Produkte, Bestellungen usw. Da die Daten auf verschiedene Tabellen verteilt sind, haben sie zwangsläufig Beziehungen zueinander. Daher werden die Tabellen Referenzen zu den Elementen in anderen Tabellen über einen Fremdschlüssel haben. Und schließlich wählen sie möglicherweise jedes Mal eine relationale Datenbank aus, um ihre Probleme zu lösen. Besonders beim Umgang mit Beziehungen mag die Idee einer nicht-relationalen Datenbank sehr unintuitiv erscheinen.

Aber das Problem ist – Daten sind nicht immer flach. Die Datenanforderungen können komplex sein, und wenn Entwickler ihre Daten visualisieren, ohne dabei an Datenbanken zu denken, sind sie oft nicht tabellarisch. Stattdessen können sie verschachtelt, hierarchisch oder sogar graphenartig erscheinen.

Graph, nested, and hierarchical data

Sie müssen nicht jedes Mal, wenn Sie mit Daten arbeiten, eine Tabelle vorstellen. In modernen Anwendungen müssen Daten oft über ein flexibles Schema mit komplexen Datentypen verfügen. Daher ist es möglicherweise nicht immer die beste Idee, sie in eine Tabelle umzuwandeln. Darüber hinaus haben relationale Datenbanken auch ihre eigenen Skalierungsgrenzen. Mit dem Wachstum müssen Sie sich möglicherweise um Sharding kümmern, was oft erhebliche Änderungen auf Anwendungsebene erfordert.

Geben Sie nicht-relationale Datenbanken ein, oder wie sie allgemein als NoSQL bekannt sind. Sie könnten das volle Potenzial von NoSQL verpassen, wenn Sie sie bei Ihren Designentscheidungen meiden. In diesem Artikel definieren wir kurz, was nicht-relationale Datenbanken sind, und bieten dann verschiedene NoSQL-Datenbankoptionen für verschiedene reale Probleme an.

Am Ende werden wir auch behandeln, welche Vorteile NoSQL-Datenbanken gegenüber relationalen bieten und auch auf Szenarien eingehen, in denen eine relationale Datenbank noch die bessere Wahl ist.

Nicht-relationale Datenbanken oder NoSQL

Einfach ausgedrückt speichern diese Datenbanken Daten in einem nicht-tabellarischen Format. Sie kommen in verschiedenen Typen, die jeweils für spezifische Zwecke und die Art von nicht-strukturierten Daten, die sie unterstützen können, entwickelt wurden. Die häufigsten sind:

  1. Dokumentdatenbanken: Speichern Daten in JSON-ähnlichen Dokumenten
  2. Schlüssel-Wert-Datenbanken: Speichern Daten in einer ‚Schlüssel-Wert‘-Struktur für eindeutige Schlüssel.
  3. Grafendatenbanken: Verwendet Knoten, Kanten und Eigenschaften, um Beziehungen zwischen Datenpunkten zu repräsentieren und zu speichern.

Weitere Typen sind spaltenorientierte, In-Memory- und Zeitreihen-Datenbanken.

Verschiedene NoSQL-Datenbankanbieter bieten Funktionen wie das Erstellen von Indizes für bestimmte Felder, entwicklerfreundliche SDKs, hohe Verfügbarkeit, transaktionale Operationen und die Möglichkeit, Ihre Datenbank einfach horizontal oder vertikal zu skalieren.

Problemlösungen mit NoSQL

Lassen Sie uns einige Beispiele sehen, in denen wir reale Probleme mit NoSQL-Datenbanken lösen.

Erstellung einer Blog-Anwendung, die Kommentare und Tags unterstützt

Dokumentendatenbanken sind am besten für solche Content Management Systeme geeignet. Jeder Inhalt kann ein separates Dokument sein. Das Schema ist flexibel, und jedes Dokument kann Unterlösungen enthalten. Sie können die Array-Feld-Indizierungsfunktionen der Dokumentendatenbankanbieter nutzen, um komplexe Abfragen durchzuführen, z. B. das Abrufen aller Blogs mit ihren Tags.

Soziale und professionelle Netzwerkplattformen

Graphendatenbanken helfen dabei, komplexe Beziehungen zwischen Personen zu definieren. Finden Sie einfach Freunde von Freunden über Graphensuchen.

IoT-Sensordaten

Verwenden Sie Zeitreihendaten, um massive Mengen von zeitgestempelten Daten von einem Sensorgerät zu verarbeiten.

Warenkorb

Verwenden Sie eine Schlüssel-Wert-Paar-Datenbank, die hohe Nebenläufigkeit mit schnellen Lese- und Schreibzugriffen bietet. Sie können auch Schlüssel-Wert-Datenbanken verwenden, um Benutzersitzungsinformationen zu speichern, wobei der Warenkorb ein Feld innerhalb der Sitzung sein kann (für eine einzelne Einkaufssitzung).

Empfehlungssysteme

Verwenden Sie Graphendatenbanken, um Beziehungen zwischen Benutzern, Produkten und Präferenzen abzubilden.

Wo NoSQL relationale Datenbanken übertrifft

Hier sind einige Punkte, in denen NoSQL-Datenbanken Vorteile gegenüber relationalen Datenbanken bieten:

  1. Entwicklerproduktivität: NoSQL-Datenbankanbieter bieten APIs und SDKs, die auf die moderne Anwendungsentwicklung zugeschnitten sind, was schnellere Prototypen und Entwicklungen ermöglicht.
  2. Skalierbarkeit: NoSQL-Datenbanken skalieren horizontal (wo Sie einfach weitere Server oder Knoten hinzufügen müssen), was kosteneffizient und einfacher zu verwalten ist im Vergleich zur vertikalen Skalierung, die von relationalen Datenbanken benötigt wird.
  3. Flexibilität: NoSQL bietet ein flexibles Schema, das perfekt für agile Entwicklung und sich entwickelnde Anwendungsanforderungen ist.
  4. Umgang mit geschachtelten Daten: Oftmals sind Daten geschachtelt oder hierarchisch, wie in JSON- oder XML-Formaten. NoSQL-Datenbanken können diese Formate unterstützen, während bei der Verwendung relationaler Datenbanken eine komplexe Transformation erforderlich sein kann.

Wo relationale Datenbanken weiterhin einen Vorteil haben

Nachfolgend sind einige Anwendungsfälle aufgeführt, in denen relationale Datenbanken relevant bleiben und eine gute Wahl sind.

  1. Analytik und Berichterstattung: Relationale Datenbanken sind für Ad-hoc-Abfragen, Aggregationen und Berichterstattung optimiert. Für alle analytischen und berichtserstellenden Anwendungsfälle sind relationale Datenbanken nach wie vor eine bevorzugte Wahl.
  2. Starke Nutzung von Beziehungen und Joins: Obwohl Sie weiterhin Beziehungen mit NoSQL-Datenbanken verwalten und arbeiten können, kann es eine gute Idee sein, relationale Datenbanken zu verwenden, wenn Ihre Anwendung stark auf Joins über verschiedene Datensätze angewiesen ist.
  3. Konsistenz über Verfügbarkeit: In Szenarien, in denen Datenkonsistenz wichtiger ist als Verfügbarkeit (z. B. bei Finanztransaktionen) können relationale Datenbanken eine höhere Garantie bieten.

Und damit schließen wir unseren Artikel ab. Wir haben untersucht, was NoSQL-Datenbanken sind und wie sie realen Herausforderungen im Datenmanagement begegnen. NoSQL-Datenbanken eröffnen eine Welt von Möglichkeiten für moderne Anwendungen, von ihrer Flexibilität im Umgang mit komplexen Datenstrukturen bis zu den leistungsstarken Funktionen, die von Anbietern angeboten werden. Für diejenigen, die NoSQL noch nicht ausprobiert haben, hoffe ich, dass dies Sie dazu inspiriert, es in Ihrem nächsten Projekt zu versuchen – Sie könnten feststellen, dass es perfekt zu Ihren Bedürfnissen passt.

Source:
https://dzone.com/articles/nosql-for-relational-minds