Mysql
 sql >> Base de données >  >> RDS >> Mysql

Amazon DynamoDB - Conception de tables basées sur les amitiés

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.