sql >> Database teknologi >  >> RDS >> Mysql

Amazon DynamoDB - Design af borde baseret på venskaber

Spørgsmålet er, en bruger kan have en liste over venner. Givet en bruger, ønsker vi at få alle hans/hendes venner (navn + online/offline status). Hvordan gør vi dette i DynamoDB?

Først for hver bruger skal du tildele et user_id. Det vil være den unikke identifikator for denne bruger, med andre ord en pointer.

Du kan bruge en Hash-Range-tabel til at gemme venskabsdataene. Både hash-nøglen og range-nøglen i denne tabel vil være user_id. I DynamoDB kan hver hash-nøgle have flere områdenøgler. Hash-nøglen vil være én bruger, og vi kan gemme alle hendes venners bruger-id i rækkenøglen.

forudsat at bruger_1 er ven med bruger_2 og bruger_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 have en anden tabel, der gemmer brugeroplysninger

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

Nu vil du have bruger_1s ven. Du kan lave en DynamoDB-forespørgsel med hash_key lig med user_1. I ovenstående eksempel får du 2 rækker:

(bruger_1, bruger_2) (bruger_1, bruger_3).

Nu ved du, at bruger_2 og bruger_3 er bruger_1s venner. Du kan bruge Bruger tabellen til at få bruger_2 og bruger_3s onlinestatus.



  1. Implementering af Most Viewed feature database

  2. Hvordan kan jeg løse disse linjefejl på MySQL Workbench?

  3. Fil vs database for lagringseffektivitet i chat-app

  4. Konvertering af en eksisterende MyISAM-database til InnoDB med Django