La domanda è:un utente può avere una lista di amici. Dato un utente, vogliamo ottenere tutti i suoi amici (nome + stato online/offline). Come lo facciamo in DynamoDB?
Innanzitutto per ogni utente è necessario assegnare un user_id. Quello sarà l'identificatore univoco per quell'utente, in altre parole, un puntatore.
Puoi utilizzare una tabella Hash-Range per archiviare i dati dell'amicizia. Sia la chiave hash che la chiave dell'intervallo di questa tabella saranno user_id. In DynamoDB ogni chiave hash può avere più chiavi di intervallo. La chiave hash sarà un utente e possiamo memorizzare l'ID utente di tutti i suoi amici nella chiave dell'intervallo.
supponendo che utente_1 sia amico di utente_2 e utente_3
"Friendship table in DynamoDB"
HashKey RangeKey
user_1 user_2
user_1 user_3
user_2 user_1
user_3 user_1
Puoi avere un'altra tabella che memorizza le informazioni sull'utente
"User table in DynamoDB"
HashKey name isLoggedin
user_1 J true
user_2 swaggyp false
user_3 furion false
Ora vuoi ottenere l'amico dell'utente_1. Puoi eseguire una query DynamoDB con hash_key uguale a user_1. Nell'esempio sopra, otterrai 2 righe:
(utente_1, utente_2) (utente_1, utente_3).
Ora sai che user_2 e user_3 sono amici di user_1. Puoi utilizzare Utilizza la tabella per ottenere lo stato online di utente_2 e utente_3.