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.
Schritt 5: Erstellen eines DynamoDB-Datenmodells
Definieren Sie die Partitionsschlüssel für Ihre Basistabelle und globale sekundäre Indizes (GSIs):
-
Verwenden Sie gemäß den wichtigsten bewährten Designmethoden
ComponentId
als Partitionsschlüssel für die Basistabelle in diesem Beispiel. Da es einzigartig ist,ComponentId
kann Granularität bieten. DynamoDB verwendet den Hashwert Ihres Partitionsschlüssels, um die Partition zu ermitteln, auf der die Daten physisch gespeichert sind. Die eindeutige Komponenten-ID generiert einen anderen Hashwert, der die Verteilung der Daten innerhalb der Tabelle erleichtern kann. Sie können die Basistabelle mithilfe einesComponentId
Partitionsschlüssels abfragen. -
Um unmittelbare untergeordnete Elemente einer Komponente zu finden, erstellen Sie einen GSI, wobei
ParentId
der Partitionsschlüssel und der SortierschlüsselComponentId
ist. Sie können diesen GSI abfragen, indem SieParentId
als Partitionsschlüssel verwenden. -
Um alle rekursiven einer Komponente zu finden, erstellen Sie eine GSI, wobei
GraphId
der Partitionsschlüssel ist undPath
der Sortierschlüssel ist. Sie können diesen GSI abfragen, indem SieGraphId
als Partitionsschlüssel und denBEGINS_WITH(Path, "$path")
-Operator auf dem Sortierschlüssel verwenden.
Partitionsschlüssel |
Sortierschlüssel |
Zuordnungsattribute |
|
Basistabelle |
|
|
|
GSI1 |
|
|
|
GSI2 |
|
|
|
Speichern von Komponenten in der Tabelle
Der nächste Schritt besteht darin, jede Komponente in der DynamoDB-Basistabelle zu speichern. Nachdem Sie alle Komponenten aus dem Beispielbaum eingefügt haben, erhalten Sie die folgende Basistabelle.
ComponentId |
ParentId |
GraphId |
Pfad |
CM1 |
CM1#1 |
CM1 |
|
CM2 |
CM1 |
CM1#1 |
CM1|CM2 |
CM3 |
CM1 |
CM1#1 |
CM1|CM3 |
CM4 |
CM2 |
CM1#1 |
CM1|CM2|CM4 |
CM5 |
CM2 |
CM1#1 |
CM1|CM2|CM5 |
CM6 |
CM3 |
CM1#1 |
CM1|CM3|CM6 |
CM7 |
CM3 |
CM1#1 |
CM1|CM3|CM7 |
CM8 |
CM4 |
CM1#1 |
CM1|CM2|CM4|CM8 |
CM9 |
CM4 |
CM1#1 |
CM1|CM2|CM4|CM9 |
CM10 |
CM5 |
CM1#1 |
CM1|CM2|CM5|CM10 |
Der GSI1-Index
Um alle unmittelbar untergeordneten Elemente einer Komponente zu überprüfen, erstellen Sie einen Index, der ParentId
als Partitionsschlüssel und ComponentId
als Sortierschlüssel verwendet. Die folgende Pivot-Tabelle stellt den GSI1-Index dar. Sie können diesen Index verwenden, um alle unmittelbar untergeordneten Komponenten mithilfe einer übergeordneten Komponenten-ID abzurufen. Sie können beispielsweise herausfinden, wie viele Batterien in einem Auto verfügbar sind (CM1) oder welche Zellen in einem Modul (CM4) verfügbar sind.
ParentId |
ComponentId |
CM1 |
CM2 CM3 |
CM2 |
CM4 CM5 |
CM3 |
CM6 CM7 |
CM4 |
CM8 CM9 |
CM5 |
CM10 |
Der GSI2-Index
Die folgende Pivot-Tabelle stellt den GSI2-Index dar. Sie ist mit GraphId
als Partitionsschlüssel und Path
als Sortierschlüssel konfiguriert. Mithilfe von GraphI
d und der -begins_with
Operation für den Sortierschlüssel (Path
) können Sie die vollständige Herkunft einer Komponente in einem Baum finden.
GraphId |
Pfad |
ComponentId |
CM1#1 |
CM1 CM1|CM2 CM1|CM3 CM1|CM2|CM4 CM1|CM2|CM5 CM1|CM2|CM4|CM8 CM1|CM2|CM4|CM9 CM1|CM2|CM5|CM10 CM1|CM3|CM6 CM1|CM3|CM7 |
CM1 CM2 CM3 CM4 CM5 CM8 CM9 CM10 CM6 CM7 |