Pytanie brzmi, użytkownik może mieć listę znajomych. Podając użytkownika, chcemy zdobyć wszystkich jego znajomych (imię + status online/offline). Jak to robimy w DynamoDB?
Najpierw dla każdego użytkownika musisz przypisać identyfikator użytkownika. Będzie to unikalny identyfikator tego użytkownika, innymi słowy wskaźnik.
Możesz użyć tabeli Hash-Range do przechowywania danych o przyjaźni. Zarówno klucz skrótu, jak i klucz zakresu tej tabeli będą miały wartość user_id. W DynamoDB każdy klucz skrótu może mieć wiele kluczy zakresu. Klucz skrótu będzie jednym użytkownikiem i możemy przechowywać identyfikator użytkownika wszystkich jej znajomych w kluczu zakresu.
zakładając, że user_1 jest znajomym z user_2 i user_3
"Friendship table in DynamoDB"
HashKey RangeKey
user_1 user_2
user_1 user_3
user_2 user_1
user_3 user_1
Możesz mieć inną tabelę, która przechowuje informacje o użytkowniku
"User table in DynamoDB"
HashKey name isLoggedin
user_1 J true
user_2 swaggyp false
user_3 furion false
Teraz chcesz zdobyć znajomego użytkownika user_1. Możesz wykonać zapytanie DynamoDB z hash_key równym user_1. W powyższym przykładzie otrzymasz 2 wiersze:
(user_1, user_2) (uiser_1, user_3).
Teraz wiesz, że user_2 i user_3 są znajomymi użytkownika user_1. Możesz użyć opcji User the table, aby uzyskać status online user_2 i user_3.