問題は、ユーザーが友達のリストを持つことができるということです。ユーザーを指定して、すべての友達(名前+オンライン/オフラインステータス)を取得します。 DynamoDBでこれを行うにはどうすればよいですか?
まず、ユーザーごとにuser_idを割り当てる必要があります。これは、そのユーザーの一意の識別子、つまりポインタになります。
Hash-Rangeテーブルを使用して、友情データを保存できます。このテーブルのハッシュキーと範囲キーはどちらもuser_idになります。 DynamoDBでは、各ハッシュキーに複数の範囲キーを含めることができます。ハッシュキーは1人のユーザーになり、彼女のすべての友達のユーザーIDを範囲キーに保存できます。
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の友達を取得します。 hash_keyがuser_1に等しいDynamoDBクエリを実行できます。上記の例では、2つの行が取得されます:
(user_1、user_2)(uiser_1、user_3)。
これで、user_2とuser_3がuser_1の友達であることがわかりました。テーブルのユーザーを使用して、user_2とuser_3のオンラインステータスを取得できます。