sql >> Base de Datos >  >> RDS >> Mysql

Amazon DynamoDB:diseño de tablas basadas en amistades

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.