Въпросът е, че потребителят може да има списък с приятели. При даден потребител искаме да получим всички негови/нейни приятели (име + онлайн/офлайн статус). Как да направим това в DynamoDB?
Първо за всеки потребител трябва да зададете user_id. Това ще бъде уникалният идентификатор за този потребител, с други думи, указател.
Можете да използвате таблица на Hash-Range, за да съхранявате данните за приятелството. И хеш ключът, и ключът за диапазона на тази таблица ще бъдат user_id. В DynamoDB всеки хеш ключ може да има множество ключове за диапазон. Хеш ключът ще бъде един потребител и можем да съхраняваме потребителския идентификатор на всички нейни приятели в ключа за диапазона.
ако приемем, че user_1 е приятел с user_2 и user_3
"Friendship table in DynamoDB"
HashKey RangeKey
user_1 user_2
user_1 user_3
user_2 user_1
user_3 user_1
Можете да имате друга таблица, която съхранява информация за потребителя
"User table in DynamoDB"
HashKey name isLoggedin
user_1 J true
user_2 swaggyp false
user_3 furion false
Сега искате да получите приятел на user_1. Можете да направите DynamoDB заявка с hash_key е равно на user_1. В горния пример ще получите 2 реда:
(потребител_1, потребител_2) (потребител_1, потребител_3).
Сега знаете, че user_2 и user_3 са приятели на user_1. Можете да използвате User the table, за да получите онлайн статуса на user_2 и user_3.