Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
NoSQL-Datenbanksysteme wie Amazon DynamoDB verwenden alternative Modelle für die Verwaltung von Daten, wie Schlüssel-Wert-Paare oder Dokumentspeicher. Wenn Sie von einem relationalen Datenbankmanagementsystem zu einem NoSQL-Datenbanksystem wie DynamoDB wechseln, ist es wichtig, die wesentlichen Unterschiede und die spezifischen Designansätze zu verstehen.
Themen
Unterschiede zwischen einem relationalen Datendesign und NoSQL
Relationale Datenbankmanagementsysteme (RDBMS) und nNoSQL-Datenbanken besitzen unterschiedliche Vor- und Nachteile:
-
In RDBMS können Daten flexibel abgerufen werden, Abfragen sind jedoch vergleichsweise kostspielig und können bei einer großen Zahl von Zugriffen nicht gut skaliert werden (siehe Erste Schritte für die Modellierung relationaler Daten in DynamoDB).
-
In einer NoSQL-Datenbank wie DynamoDB können Daten effizient mithilfe einer begrenzten Anzahl von Möglichkeiten abgerufen werden, die ansonsten möglicherweise kostspielig und langsam sind.
Diese Unterschiede führen dazu, dass das Datenbankdesign der beiden Systeme verschieden ist:
-
In RDBMS entwerfen Sie das Design im Hinblick auf Flexibilität, ohne sich um Implementierungsdetails oder Leistung zu kümmern. Die Optimierung von Abfragen wirkt sich im Allgemeinen nicht auf das Schemadesign aus, eine Standardisierung ist jedoch wichtig.
-
In DynamoDB entwerfen Sie das Schema im Hinblick darauf, die häufigsten und wichtigsten Abfragen so schnell und kostengünstig wie möglich ausführen zu können. Ihre Datenstrukturen sind an die spezifischen Anforderungen Ihrer geschäftlichen Anwendungsfälle angepasst.
Zwei Schlüsselkonzepte für das NoSQL-Design
Das NoSQL-Design erfordert einen anderen Ansatz als das RDBMS-Design. Sie können für ein RDBMS ein standardisiertes Datenmodell entwickeln, ohne sich Gedanken über Zugriffsmuster machen zu müssen. Anschließend können Sie es erweitern, wenn neue Fragen und Abfrageanforderungen entstehen. Sie können jeden einzelnen Typ von Daten in einer eigenen Tabelle organisieren.
Wie sich das NoSQL-Design unterscheidet
-
Im Fall von DynamoDB sollten Sie nicht mit der Entwicklung des Schemas beginnen, bis Sie die Fragen kennen, die es beantworten soll. Es ist äußerst wichtig, die geschäftlichen Probleme und Anwendungsfälle vor der Entwicklung des Schemas zu kennen.
-
Sie sollten in einer DynamoDB-Anwendung so wenig Tabellen wie möglich verwenden. Weniger Tabellen sorgen dafür, dass die Dinge besser skalierbar sind, weniger Berechtigungsmanagement erforderlich sind und der Overhead für Ihre DynamoDB-Anwendung reduziert wird. Dies kann auch dazu beitragen, die Backup-Kosten insgesamt niedrig zu halten.
Ansatz für ein NoSQL-Design
Der erste Schritt beim Design der DynamoDB-Anwendung besteht in der Identifizierung der spezifischen Abfragemuster, die das System unterstützen muss.
Insbesondere ist es wichtig, drei Basiseigenschaften der Zugriffsmuster Ihrer Anwendung zu kennen, bevor Sie mit dem Design beginnen:
-
Datenmenge: Wenn Sie wissen, wie viele Daten gleichzeitig gespeichert und angefordert werden, kann dies helfen, die effektivste Partitionierung der Daten zu ermitteln.
-
Datenform: Statt Daten neu zu gestalten, wenn eine Abfrage verarbeitet wird (wie im Fall von RDBMS-Systemen), organisieren NoSQL-Datenbanken Daten so, dass ihre Form in der Datenbank dem entspricht, was abgefragt werden wird. Dies ist ein entscheidender Faktor, um Geschwindigkeit und Skalierbarkeit zu verbessern.
-
Datengeschwindigkeit: DynamoDB wird durch die Erhöhung der Anzahl der physischen Partitionen skaliert, die für die Verarbeitung von Abfragen verfügbar sind, sowie durch die effiziente Verteilung von Daten über diese Partitionen. Wenn Sie im Voraus wissen, wie die Spitzenabfragelasten aussehen könnten, hilft Ihnen dies möglicherweise, die Daten so zu partitionieren, dass die I/O-Kapazität optimal genutzt wird.
Nach der Identifizierung spezifischer Abfrageanforderungen können Sie die Daten nach allgemeinen Grundsätzen organisieren, denen die Leistung unterliegt:
-
Speichern Sie verwandte Daten zusammen. Untersuchungen haben gezeigt, dass das Prinzip der „Referenzlokalität“, d. h. die Zusammenführung verwandter Daten an einem Ort, ein Schlüsselfaktor für die Verbesserung der Leistung und der Reaktionszeiten in NoSQL-Systemen ist, genauso wie es sich vor vielen Jahren als wichtig für die Optimierung von Routing-Tabellen erwiesen hat.
Allgemein sollten Sie in einer DynamoDB-Anwendung so wenig Tabellen wie möglich verwenden.
Ausnahmen hiervon sind Fälle, in denen große Mengen von Zeitreihendaten oder Datensätze mit sehr unterschiedlichen Zugriffsmustern vorhanden sind. Eine einzelne Tabelle mit umgekehrten Indizes kann in der Regel einfache Abfragen unterstützen, um die komplexen hierarchischen Datenstrukturen zu erstellen und abzurufen, die Ihre Anwendung benötigt.
-
Verwenden Sie eine Sortierreihenfolge. Verwandte Elemente können zusammen gruppiert und effizient abgefragt werden, wenn ihr Schlüsseldesign dazu führt, dass sie gemeinsam sortiert werden. Dies stellt eine wichtige Strategie für das NoSQL-Design dar.
-
Verteilen Sie Abfragen. Es ist auch wichtig, dass sich ein großes Volumen von Abfragen nicht auf einen Teil der Datenbank konzentriert, wo sie die I/O-Kapazität überschreiten können. Stattdessen sollten Sie Datenschlüssel so entwerfen, dass der Datenverkehr so gleichmäßig wie möglich auf die Partitionen verteilt wird, um Hotspots zu vermeiden.
-
Verwenden Sie globale sekundäre Indizes. Durch die Erstellung spezifischer globaler sekundärer Indizes können Sie eine größere Zahl unterschiedlicher Abfragen unterstützen, als Ihre Haupttabelle unterstützen kann. Gleichzeitig sind diese nach wie vor schnell und vergleichsweise kostengünstig.
Diese allgemeinen Grundsätze führen zu einigen häufigen Designmustern, die Sie verwenden können, um Daten in DynamoDB effizient zu modellieren.
NoSQL-Workbench für DynamoDB
NoSQL-Workbench für DynamoDB ist eine plattformübergreifende clientseitige GUI-Anwendung für moderne Datenbankentwicklung und -operationen. Sie ist für Windows, macOS und Linux verfügbar. NoSQL Workbench ist ein visuelles Entwicklungstool, das Funktionen zur Datenmodellierung, Datenvisualisierung, Beispieldatengenerierung und Abfrageentwicklung bereitstellt, mit denen Sie DynamoDB-Tabellen entwerfen, erstellen, abfragen und verwalten können. Mit NoSQL-Workbench für DynamoDB können Sie neue Datenmodelle aus vorhandenen Datenmodellen erstellen oder Modelle basierend auf vorhandenen Datenmodellen entwerfen, die den Datenzugriffsmustern Ihrer Anwendung entsprechen. Sie können das gestaltete Datenmodell am Ende des Prozesses auch importieren und exportieren. Weitere Informationen finden Sie unter Erstellen von Datenmodellen mit NoSQL Workbench.