La question est, un utilisateur peut avoir une liste d'amis. Étant donné un utilisateur, nous voulons obtenir tous ses amis (nom + statut en ligne/hors ligne). Comment procédons-nous dans DynamoDB ?
D'abord, pour chaque utilisateur, vous devez attribuer un user_id. Ce sera l'identifiant unique de cet utilisateur, en d'autres termes, un pointeur.
Vous pouvez utiliser une table Hash-Range pour stocker les données d'amitié. La clé de hachage et la clé de plage de cette table seront user_id. Dans DynamoDB, chaque clé de hachage peut avoir plusieurs clés de plage. La clé de hachage sera un utilisateur et nous pouvons stocker l'identifiant de tous ses amis dans la clé de plage.
en supposant que l'utilisateur_1 est ami avec l'utilisateur_2 et l'utilisateur_3
"Friendship table in DynamoDB"
HashKey RangeKey
user_1 user_2
user_1 user_3
user_2 user_1
user_3 user_1
Vous pouvez avoir une autre table qui stocke les informations de l'utilisateur
"User table in DynamoDB"
HashKey name isLoggedin
user_1 J true
user_2 swaggyp false
user_3 furion false
Maintenant, vous voulez obtenir l'ami de user_1. Vous pouvez effectuer une requête DynamoDB avec hash_key égal à user_1. Dans l'exemple ci-dessus, vous obtiendrez 2 lignes :
(utilisateur_1, utilisateur_2) (utilisateur_1, utilisateur_3).
Vous savez maintenant que user_2 et user_3 sont les amis de user_1. Vous pouvez utiliser User the table pour obtenir le statut en ligne de user_2 et user_3.