2011-03-03 5 views
0

J'ai une question un peu stupide. J'ai un petit site web communautaire. Je pense à faire des pages spécifiques qui ne peuvent être vues que par les membres qui ont la permission. Donc je suppose que je vais ajouter chaque ID membre dans la base de données et quand un membre va essayer d'accéder à la page, je vais d'abord vérifier si le membre est connecté et je vais vérifier l'ID utilisateur, s'il existe dans la base de données les utilisateurs qui ont l'autorisation d'afficher ce contenu. Maintenant, je me demandais simplement si la base de données grandit, il ne faudra pas longtemps pour vérifier tout ce qui se passe avant de charger la page?question générale sur la base de données

+0

Qu'est-ce que le site Web fonctionne? Je suppose PHP étant donné que vous mentionnez MySQL? J'ajouterais un jeton "autorisé" à la session au moment où cela est nécessaire, et je m'y attacherai, de sorte qu'il ne continue pas d'envoyer des requêtes ping à chaque visite de la page. –

Répondre

0

Premature optimization is the root of all evil (Donald Knuth)

Vous pouvez facilement gérer plusieurs millions d'utilisateurs avec une seule base de données, de sorte que ce ne sera pas un problème jusqu'à ce que votre communauté est énorme. Lorsque vous atteignez cette étape, vous pouvez passer à des solutions de base de données plus évolutives comme Cassandra. Cela dit, prenez en compte le commentaire de Brad Christie et utilisez une gestion d'identité raisonnable qui ne surchargera pas inutilement votre base de données.

0

"une longue période" est subjective et dépend de nombreux facteurs. Pour un site Web de petite communauté, vous ne rencontrerez probablement pas de problèmes avec la méthode que vous avez décrite. Pourtant, il est considéré comme la meilleure pratique, et permettra d'accélérer les requêtes de manière significative, si vous utilisez des index appropriés. Les colonnes qui seront interrogées, telles que l'ID utilisateur, doivent être indexées. Ne pas utiliser d'index signifie que MySQL doit lire tous les enregistrements de votre table et vérifier s'ils correspondent à vos critères.

Cet article peut être utile pour vous:

http://www.databasejournal.com/features/mysql/article.php/1382791/Optimizing-MySQL-Queries-and-Indexes.htm

De plus, si vous êtes préoccupé par la façon dont votre site se produira lorsque votre ensemble de données augmente, pensez à le peuplant avec un tas de données factices et fonctionnement quelques tests. Ce site vous aidera à générer un tas de données à mettre dans votre base de données.

http://www.generatedata.com/#about

Enfin, si les pages ne sont pas spécifiques à une personne ou un petit groupe de personnes, pensez à utiliser des seaux plus généraux pour le contrôle d'accès. Par exemple, si seuls les administrateurs peuvent afficher une page, associez cette page à une autorisation "admin" et notez quels utilisateurs sont des administrateurs. Ensuite, vous pouvez faire une vérification rapide pour voir quel type ou type d'utilisateur est une personne en particulier, et décider de leur montrer la page ou non. Ce type de système est généralement appelé liste de contrôle d'accès (ACL).

http://en.wikipedia.org/wiki/Access_control_list