La pregunta es, un usuario puede tener una lista de amigos. Dado un usuario, queremos obtener todos sus amigos (nombre + estado en línea/fuera de línea). ¿Cómo hacemos esto en DynamoDB?
Primero, para cada usuario, debe asignar un user_id. Ese será el identificador único para ese usuario, en otras palabras, un puntero.
Puede usar una tabla Hash-Range para almacenar los datos de amistad. Tanto la clave hash como la clave de rango de esta tabla serán user_id. En DynamoDB, cada clave hash puede tener múltiples claves de rango. La clave hash será un usuario y podemos almacenar la identificación de usuario de todos sus amigos en la clave de rango.
asumiendo que user_1 es amigo de user_2 y user_3
"Friendship table in DynamoDB"
HashKey RangeKey
user_1 user_2
user_1 user_3
user_2 user_1
user_3 user_1
Puede tener otra tabla que almacene información del usuario
"User table in DynamoDB"
HashKey name isLoggedin
user_1 J true
user_2 swaggyp false
user_3 furion false
Ahora quieres obtener al amigo de user_1. Puede realizar una consulta de DynamoDB con hash_key igual a user_1. En el ejemplo anterior, obtendrá 2 filas:
(usuario_1, usuario_2) (usuario_1, usuario_3).
Ahora sabes que user_2 y user_3 son amigos de user_1. Puede usar User the table para obtener el estado en línea de user_2 y user_3.