Spørgsmålet er, en bruger kan have en liste over venner. Givet en bruger, ønsker vi at få alle hans/hendes venner (navn + online/offline status). Hvordan gør vi dette i DynamoDB?
Først for hver bruger skal du tildele et user_id. Det vil være den unikke identifikator for denne bruger, med andre ord en pointer.
Du kan bruge en Hash-Range-tabel til at gemme venskabsdataene. Både hash-nøglen og range-nøglen i denne tabel vil være user_id. I DynamoDB kan hver hash-nøgle have flere områdenøgler. Hash-nøglen vil være én bruger, og vi kan gemme alle hendes venners bruger-id i rækkenøglen.
forudsat at bruger_1 er ven med bruger_2 og bruger_3
"Friendship table in DynamoDB"
HashKey RangeKey
user_1 user_2
user_1 user_3
user_2 user_1
user_3 user_1
Du kan have en anden tabel, der gemmer brugeroplysninger
"User table in DynamoDB"
HashKey name isLoggedin
user_1 J true
user_2 swaggyp false
user_3 furion false
Nu vil du have bruger_1s ven. Du kan lave en DynamoDB-forespørgsel med hash_key lig med user_1. I ovenstående eksempel får du 2 rækker:
(bruger_1, bruger_2) (bruger_1, bruger_3).
Nu ved du, at bruger_2 og bruger_3 er bruger_1s venner. Du kan bruge Bruger tabellen til at få bruger_2 og bruger_3s onlinestatus.