sql >> Database >  >> RDS >> Mysql

Hoe om te gaan met massale opslag van records in de database voor gebruikersautorisatiedoeleinden?

Het feit is dat als u permissies op artikelniveau per gebruiker dan heb je een manier nodig om User te relateren s naar het Article waar ze toegang toe hebben. Dit vereist een minimum je hebt N*A nodig (waarbij A het aantal uniek geautoriseerde artikelen is).

De 3NF-benadering hiervoor zou zijn, zoals u suggereerde, om een ​​UsersArticles . te hebben set... wat een zeer grote tafel zou zijn (zoals u opmerkte).

Bedenk dat deze tabel veel gebruikt zou worden... Dit lijkt mij een van de situaties waarin een enigszins gedenormaliseerde benadering (of zelfs geenSQL) meer geschikt is.

Overweeg het model dat Twitter gebruikt voor hun tabellen met gebruikersvolgers:

Jeff Atwood over dit onderwerp

En blog met hoge schaalbaarheid

Een voorbeeld van die stukken is een les die Twitter heeft geleerd dat het bevragen van volgers uit een genormaliseerde tabel enorme druk legt op een Users tafel. Hun oplossing was om volgers te denormaliseren, zodat de volgers van een gebruiker worden opgeslagen in hun individuele gebruikersinstellingen.

Ik kan me voorstellen dat een vergelijkbare aanpak kan worden gebruikt om artikelrechten te verlenen en een enorm gestresste UsersArticles te vermijden. enkele tafel.



  1. Bereken deciel van recentheid in MySQL

  2. Wat is Percona DB

  3. De grootte van een database controleren in MySQL

  4. Schemapatroon zoeken