Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie handhabt man die massive Speicherung von Datensätzen in der Datenbank zu Zwecken der Benutzerautorisierung?

Tatsache ist, dass wenn Sie Berechtigungen auf Artikelebene pro Benutzer möchten dann brauchen Sie eine Möglichkeit, User zuzuordnen s zum Article s sie zugreifen können. Dies erfordert ein Minimum Sie benötigen N*A (wobei A die Anzahl der Artikel mit eindeutiger Berechtigung ist).

Der 3NF-Ansatz dafür wäre, wie Sie vorgeschlagen haben, einen UsersArticles zu haben set ... was ein sehr großer Tisch wäre (wie Sie bemerkt haben).

Bedenken Sie, dass auf diese Tabelle sehr oft zugegriffen werden würde ... Dies scheint mir eine der Situationen zu sein, in denen ein leicht denormalisierter Ansatz (oder sogar noSQL) angemessener ist.

Betrachten Sie das Modell, das Twitter für seine Benutzer-Follower-Tabellen verwendet:

Jeff Atwood zum Thema

Blog für hohe Skalierbarkeit

Ein Beispiel aus diesen Teilen ist eine bei Twitter gelernte Lektion, dass das Abfragen von Followern aus einer normalisierten Tabelle einen enormen Stress für einen User darstellt Tisch. Ihre Lösung bestand darin, Follower zu denormalisieren, sodass die Follower eines Benutzers in seinen individuellen Benutzereinstellungen gespeichert werden.

Ich stelle mir vor, dass ein ähnlicher Ansatz verwendet werden könnte, um Artikelberechtigungen bereitzustellen und ein enorm belastetes UsersArticles zu vermeiden einzelne Tabelle.