sql >> Database >  >> RDS >> Mysql

Amazon DynamoDB - Tafels ontwerpen op basis van vriendschappen

De vraag is of een gebruiker een lijst met vrienden kan hebben. Gegeven een gebruiker, willen we al zijn/haar vrienden krijgen (naam + online/offline status). Hoe doen we dit in DynamoDB?

Eerst moet je voor elke gebruiker een user_id toewijzen. Dat is de unieke identificatie voor die gebruiker, met andere woorden, een aanwijzer.

U kunt een Hash-Range-tabel gebruiken om de vriendschapsgegevens op te slaan. Zowel de hash-sleutel als de bereiksleutel van deze tabel is user_id. In DynamoDB kan elke hash-sleutel meerdere bereiksleutels hebben. De hash-sleutel is één gebruiker en we kunnen alle gebruikers-ID's van haar vrienden opslaan in de bereiksleutel.

ervan uitgaande dat user_1 bevriend is met user_2 en user_3

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

U kunt een andere tabel hebben waarin gebruikersinformatie is opgeslagen

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

Nu wil je de vriend van user_1 krijgen. U kunt een DynamoDB-query uitvoeren met hash_key gelijk aan user_1. In het bovenstaande voorbeeld krijgt u 2 rijen:

(gebruiker_1, gebruiker_2) (uiser_1, gebruiker_3).

Nu weet je dat user_2 en user_3 de vrienden van user_1 zijn. U kunt Gebruiker de tabel gebruiken om de online status van gebruiker_2 en gebruiker_3 te krijgen.



  1. Kan argument niet binden aan index 2 omdat de index buiten bereik is

  2. hoe datum en tijd in orakel in te voegen?

  3. Hoe dubbele gebruikersnamen voorkomen wanneer mensen zich registreren?

  4. MySQL beheren - voor Oracle DBA's