sql >> データベース >  >> RDS >> Mysql

AmazonDynamoDB-友情に基づいたテーブルの設計

    問題は、ユーザーが友達のリストを持つことができるということです。ユーザーを指定して、すべての友達(名前+オンライン/オフラインステータス)を取得します。 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のオンラインステータスを取得できます。



    1. MySQL5.6でポリゴン内のLong/Latを検索

    2. PostgreSQLがpg_catalogテーブルからパーミッションを取り消す

    3. MySQLWorkbenchを使用して新しいデータベース図を作成する方法

    4. JavaのPreparedStatementsのワイルドカード