Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Bewährte Methoden für die Verwaltung von many-to-many Beziehungen in DynamoDB-Tabellen

Fokusmodus
Bewährte Methoden für die Verwaltung von many-to-many Beziehungen in DynamoDB-Tabellen - Amazon-DynamoDB

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.

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.

Adjazenzlisten sind ein Entwurfsmuster, das für die Modellierung von many-to-many Beziehungen in Amazon DynamoDB nützlich ist. Allgemein ausgedrückt, stellen sie eine Möglichkeit für die Darstellung von Diagrammdaten (Knoten und Edges) in DynamoDB dar.

Adjazenzlisten-Designmuster

Wenn zwischen verschiedenen Entitäten einer Anwendung eine many-to-many Beziehung besteht, kann die Beziehung als Adjazenzliste modelliert werden. In diesem Muster werden alle Entitäten auf der obersten Ebene (synonym mit den Knoten im Diagrammmodell) mithilfe des Partitionsschlüssels dargestellt. Beziehungen mit anderen Entitäten (Edges in einem Diagramm) werden als Elemente innerhalb der Partition dargestellt, indem der Wert des Sortierschlüssels auf die ID der Zielentität (des Zielknotens) eingestellt wird.

Zu den Vorteilen dieses Musters gehören eine minimale Datenduplizierung und vereinfachte Abfragemuster, um alle Entitäten (Knoten) zu finden, die sich auf eine Zielentität beziehen (d. h., ein Edge zu einem Zielknoten besitzen).

Ein Beispiel aus der Praxis, für das dieses Muster nützlich ist, ist ein Rechnungssystem, bei dem Rechnungen mehrere Abrechnungen umfassen können. Eine Abrechnung kann zu mehreren Rechnungen gehören. Der Partitionsschlüssel in diesem Beispiel ist entweder eine InvoiceID oder eine BillID. BillID-Partitionen besitzen alle für Rechnungen spezifischen Attribute. InvoiceID-Partitionen enthalten ein Element zum Speichern rechnungsspezifischer Attribute und ein Element für jede BillID, die zu dieser Rechnung führt.

Das Schema sieht wie folgt aus.

Beispiel für ein Tabellenschema für Abrechnungs-Adjazenzlisten.

Anhand des vorangehenden Schemas können Sie sehen, dass alle Abrechnungen für eine Rechnung mittels des primären Schlüssels für die Tabelle abgefragt werden können. Um alle Rechnungen nachzuschlagen, die einen Teil einer Abrechnung enthalten, erstellen Sie einen globalen sekundären Index für den Sortierschlüssel der Tabelle.

Die Projektionen für den globalen sekundären Index sehen wie folgt aus.

Beispiel für eine GSI-Projektion für Abrechnungs-Adjazenzlisten.

Materialisiertes Diagrammmuster

Viele Anwendungen werden auf der Basis der Kenntnis von Peer-Rangstufen, der allgemeinen Beziehungen zwischen Entitäten, des Status benachbarter Entitäten und anderer Arten von Diagramm-Workflows erstellt. Für diese Arten von Anwendungen sollten Sie die folgenden Schemadesignmuster berücksichtigen.

Diagrammbeispiel 1.
Diagrammbeispiel 2.
Diagrammbeispiel 3.

Das vorangehende Schema zeigt eine Diagrammdatenstruktur, die durch einen Satz von Datenpartitionen definiert wird, die die Elemente enthalten, welche die Edges und Knoten des Diagramms definieren. Die Edge-Elemente enthalten ein Target- und ein Type-Attribut. Diese Attribute werden als Teil eines zusammengesetzten Schlüsselnamens "TypeTarget" verwendet, um das Element in einer Partition in der Primärtabelle oder in einem zweiten globalen Sekundärindex zu identifizieren.

Der erste globale sekundäre Index basiert auf dem Attribut Data. Dieses Attribut verwendet Überladungen des globalen sekundären Index wie zuvor beschrieben, um verschiedene Attributtypen zu indizieren, d. h. Dates, Names, Places und Skills. Hier indiziert ein einziger globaler sekundärer Index effektiv vier verschiedene Attribute.

Wenn Sie in die Tabelle Elemente einfügen, können Sie eine intelligente Sharding-Strategie verwenden, um Elementsätze mit großen Aggregationen (Geburtsdaten, Qualifikationen) über so viele logische Partitionen in den globalen sekundären Indizes wie nötig zu verteilen, um Probleme mit Hot-Lese-/Schreibvorgängen zu vermeiden.

Das Ergebnis dieser Kombination von Designmustern ist ein robuster Datenspeicher für hoch effiziente Diagramm-Workflows, die in Echtzeit ausgeführt werden. Diese Workflows können hoch leistungsfähige Abfragen zum Status benachbarter Entitäten und zur Edge-Aggregation für Empfehlungsmodule, soziale Netzwerke, Knoteneinstufungen, Unterstrukturaggregationen und andere häufige Anwendungsfälle für Diagramme bereitstellen.

Wenn Ihr Anwendungsfall unempfindlich gegenüber der Konsistenz von Echtzeitdaten ist, können Sie einen geplanten Amazon-EMR-Prozess verwenden, um Edges mit relevanten Übersichtsaggregationen für Diagramme für Ihre Workflows aufzufüllen. Wenn Ihre Anwendung nicht sofort wissen muss, wenn dem Diagramm ein Edge hinzugefügt wird, können Sie einen geplanten Prozess verwenden, um die Ergebnisse zu aggregieren.

Um einen gewissen Grad an Konsistenz zu wahren, kann das Design Amazon DynamoDB Streams und AWS Lambda für die Verarbeitung von Edge-Aktualisierungen umfassen. Sie könnte auch einen Amazon-EMR-Auftrag verwenden, um die Ergebnisse in regelmäßigen Abständen zu validieren. Dieser Ansatz wird im folgenden Diagramm gezeigt. Er wird häufig für soziale Netzwerke verwendet, wenn die Kosten für Echtzeitabfragen hoch sind und die Notwendigkeit, einzelne Benutzerupdates sofort zu erkennen, gering ist.

Diagramm mit Diagramm-Workflow.

IT-Servicemanagement (ITSM)- und Sicherheitsanwendungen müssen im Allgemeinen in Echtzeit auf Änderungen des Zustands von Entitäten reagieren, die aus komplexen Edge-Aggregationen bestehen. Diese Anwendungen benötigen ein System, das in Echtzeit Aggregationen mehrerer Knoten aus Beziehungen auf der zweiten und dritten Ebene oder komplexe Edge-Traversals unterstützen. Wenn Ihr Anwendungsfall diese Arten von Workflows für Diagrammabfragen in Echtzeit erfordert, empfehlen wir Ihnen, für die Verwaltung dieser Workflows die Verwendung von Amazon Neptune in Betracht zu ziehen.

Anmerkung

Wenn Sie stark vernetzte Datensätze abfragen oder Abfragen ausführen müssen, die mehrere Knoten (auch Multi-Hop-Abfragen genannt) mit Millisekunden-Latenz durchlaufen müssen, sollten Sie die Verwendung von Amazon Neptune in Betracht ziehen. Amazon Neptune ist eine speziell entwickelte, hochleistungsfähige Graphdatenbank-Engine, die für die Speicherung von Milliarden von Beziehungen und die Abfrage des Graphen bzw. des Diagramms mit einer Latenzzeit von Millisekunden optimiert ist.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.