Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Amazon DynamoDB - Projetando tabelas com base em amizades


A questão é, um usuário pode ter uma lista de amigos. Dado um usuário, queremos obter todos os seus amigos (nome + status online/offline). Como fazemos isso no DynamoDB?

Primeiro, para cada usuário, você precisa atribuir um user_id. Esse será o identificador exclusivo desse usuário, ou seja, um ponteiro.

Você pode usar uma tabela Hash-Range para armazenar os dados de amizade. Tanto a chave de hash quanto a chave de intervalo desta tabela serão user_id. No DynamoDB, cada chave de hash pode ter várias chaves de intervalo. A chave de hash será um usuário e podemos armazenar o ID de usuário de todos os amigos dela na chave de intervalo.

assumindo que user_1 é amigo de user_2 e user_3
"Friendship table in DynamoDB"
HashKey   RangeKey
user_1    user_2
user_1    user_3
user_2    user_1
user_3    user_1

Você pode ter outra tabela que armazena informações do usuário
"User table in DynamoDB"
HashKey   name    isLoggedin
user_1    J       true
user_2    swaggyp false
user_3    furion  false

Agora você deseja obter o amigo de user_1. Você pode fazer uma consulta do DynamoDB com hash_key igual a user_1. No exemplo acima, você obterá 2 linhas:

(usuário_1, usuário_2) (uiser_1, usuário_3).

Agora você sabe que user_2 e user_3 são amigos de user_1. Você pode usar a tabela User para obter o status online de user_2 e user_3.