sql >> Databasteknik >  >> RDS >> Mysql

Amazon DynamoDB - Designa bord baserat på vänskap

Frågan är, en användare kan ha en lista över vänner. Med tanke på en användare vill vi få alla hans/hennes vänner (namn + online/offlinestatus). Hur gör vi detta i DynamoDB?

Först måste du tilldela ett användar-id för varje användare. Det kommer att vara den unika identifieraren för den användaren, med andra ord en pekare.

Du kan använda en Hash-Range-tabell för att lagra vänskapsdata. Både hash-nyckeln och range-nyckeln i denna tabell kommer att vara user_id. I DynamoDB kan varje hash-nyckel ha flera intervallnycklar. Hashnyckeln kommer att vara en användare och vi kan lagra alla hennes vänners användar-id i intervallnyckeln.

antar att user_1 är vän med user_2 och user_3

"Friendship table in DynamoDB"
HashKey   RangeKey
user_1    user_2
user_1    user_3
user_2    user_1
user_3    user_1

Du kan ha en annan tabell som lagrar användarinformation

"User table in DynamoDB"
HashKey   name    isLoggedin
user_1    J       true
user_2    swaggyp false
user_3    furion  false

Nu vill du skaffa user_1s vän. Du kan göra en DynamoDB-fråga med hash_key lika med user_1. I exemplet ovan får du 2 rader:

(användare_1, användare_2) (användare_1, användare_3).

Nu vet du att user_2 och user_3 är användare_1s vänner. Du kan använda Använd tabellen för att få user_2 och user_3s onlinestatus.



  1. Räknar rader för alla tabeller samtidigt

  2. Se och rensa Postgres cacher/buffertar?

  3. Söker efter giltig MySQL-resultatresurs

  4. Fel:SQLSTATE[HY000] [2002] Ingen sådan fil eller katalog