Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment gérer le stockage massif d'enregistrements dans la base de données à des fins d'autorisation des utilisateurs ?

Le fait est que si vous voulez des autorisations au niveau de l'article par utilisateur alors vous avez besoin d'un moyen de relier User s à Article s auxquels ils peuvent accéder. Cela nécessite un minimum vous avez besoin de N*A (où A est le nombre d'articles avec autorisation unique).

L'approche 3NF à cela serait, comme vous l'avez suggéré, d'avoir un UsersArticles ensemble... ce qui serait une très grande table (comme vous l'avez noté).

Considérez que cette table serait beaucoup consultée... Cela me semble être l'une des situations dans lesquelles une approche légèrement dénormalisée (voire noSQL) est plus appropriée.

Considérez le modèle utilisé par Twitter pour ses tableaux d'abonnés :

Jeff Atwood sur le sujet

Et blog sur la haute évolutivité

Un échantillon de ces pièces est une leçon apprise sur Twitter selon laquelle interroger les abonnés à partir d'un tableau normalisé met un stress énorme sur un Users table. Leur solution consistait à dénormaliser les abonnés afin que les abonnés d'un utilisateur soient stockés dans leurs paramètres d'utilisateur individuels.

J'imagine qu'une approche similaire pourrait être utilisée pour servir les autorisations d'article et éviter un UsersArticles extrêmement stressé table unique.