Die Frage ist, ob ein Benutzer eine Freundesliste haben kann. Bei einem Benutzer möchten wir alle seine Freunde (Name + Online-/Offline-Status) abrufen. Wie machen wir das in DynamoDB?
Zuerst müssen Sie jedem Benutzer eine user_id zuweisen. Das ist die eindeutige Kennung für diesen Benutzer, mit anderen Worten, ein Zeiger.
Sie können eine Hash-Range-Tabelle verwenden, um die Freundschaftsdaten zu speichern. Sowohl der Hash-Schlüssel als auch der Bereichsschlüssel dieser Tabelle sind user_id. In DynamoDB kann jeder Hash-Schlüssel mehrere Bereichsschlüssel haben. Der Hash-Schlüssel ist ein Benutzer und wir können die Benutzer-ID aller ihrer Freunde im Bereichsschlüssel speichern.
Angenommen, Benutzer_1 ist mit Benutzer_2 und Benutzer_3 befreundet
"Friendship table in DynamoDB"
HashKey RangeKey
user_1 user_2
user_1 user_3
user_2 user_1
user_3 user_1
Sie können eine andere Tabelle haben, die Benutzerinformationen speichert
"User table in DynamoDB"
HashKey name isLoggedin
user_1 J true
user_2 swaggyp false
user_3 furion false
Jetzt möchten Sie den Freund von Benutzer_1 abrufen. Sie können eine DynamoDB-Abfrage mit hash_key gleich user_1 durchführen. Im obigen Beispiel erhalten Sie 2 Zeilen:
(Benutzer_1, Benutzer_2) (Benutzer_1, Benutzer_3).
Jetzt wissen Sie, dass Benutzer_2 und Benutzer_3 die Freunde von Benutzer_1 sind. Sie können die Tabelle Benutzer verwenden, um den Online-Status von Benutzer_2 und Benutzer_3 abzurufen.