Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Amazon DynamoDB – Entwerfen von Tabellen basierend auf Freundschaften

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.