web-dev-qa-db-fra.com

Créer un tableau avec des milliers de forums

J'aimerais créer un tableau de messages comportant des forums distincts pour chaque film, chaque acteur, chaque réalisateur, etc. Avec un logiciel de forum moderne, organiser des milliers de forums comme celui-ci est-il impossible pour des raisons techniques?

1) J'ai entendu dire que dans, disons, phpBB, plus vous avez de forums, plus la charge de votre serveur de base de données est importante. Pourquoi cela devrait-il être? Pourquoi y aurait-il plus de charge sur le serveur si vous avez 1 000 cartes chacune avec 1 poste, par opposition à 1 carte avec 1 000 postes?

2) Toujours concernant phpBB, j'ai entendu dire que vous rencontrerez des problèmes si vous avez plus de 1000 forums, car les vérifications des autorisations sur la base de données commenceront à vraiment ralentir le processus. Encore une fois, pourquoi cela devrait-il être le cas?

Pour une perspective purement spécifique à une base de données, si j'ai une table pour chaque forum, je ne vois pas quel est le problème avec plusieurs milliers de forums. Les problèmes ci-dessus sont-ils spécifiques à phpBB? Si tel est le cas, existe-t-il un logiciel de forum qui n'aurait pas de problème avec des milliers de cartes?

(Au fait, je me rends compte que des milliers de forums posent des problèmes de logistique. C’est pourquoi je voudrais également créer une page de couverture permettant aux utilisateurs de voir facilement les messages les plus récents dans quelques forums récemment visités. Je ne suis pas sûr que le logiciel de forum existant me permette de le faire. Idéalement, je préférerais écrire mon propre logiciel de forum, mais c’est un travail fou pour un petit projet non commercial.)

1
std_answ

Avec des logiciels de forum modernes, avoir des milliers de forums comme celui-ci (utiliser une copie du progiciel de forum pour tous les forums) est-il impossible pour des raisons techniques?

Une partie de la réponse dépend du logiciel de forum. Si le logiciel est mal écrit, il est possible qu’il prenne beaucoup d’accès au disque et beaucoup de requêtes à la base de données, etc.

Plus important encore, les journaux du serveur sont les endroits où vous chercherez des réponses. Si vous tentez votre expérience, consultez les journaux d’accès à la base de données et d’accès au serveur Web pour savoir ce qui est demandé le plus/le moins et à quel moment. Plusieurs requêtes dans la même seconde est un indice que quelqu'un peut tenter de pirater le serveur.

Imaginez 1 000 forums comme vous dirigez un serveur dédié avec 1 000 sites Web. L'effet est le même dans les deux cas. La lenteur est réellement constatée lorsque le nombre de requêtes adressées au serveur dépasse le nombre de connexions disponibles, et elle est d'autant plus remarquée si le serveur est exécuté sur un très vieil ordinateur.

1
Mike

Je pense que je vois où vous allez avec cela. Vous parlez de disposer d’une table pour chaque forum, ce n’est pas très courant dans les moteurs de forum. Pour vous donner un aperçu très général du schéma de base de données du logiciel de forum "moyen", vous avez 1 tableau contenant la liste de tous les forums, un autre tableau contenant la liste de tous les messages postés sur chaque forum, un autre tableau contenant une liste de chaque réponse faite à chaque message dans chaque forum.

Maintenant, si nous allons depuis le début maintenant et disons que nous ouvrons le site pour afficher forum1, il appelle d'abord la table de liste des forums pour obtenir les détails du forum en question. Il fait ensuite un autre appel à la table des articles pour obtenir une copie de tous les articles liés à ce forum spécifique à afficher sur la page. Maintenant, sur une base de données relativement petite, le problème n’est pas grave, mais lorsque nous parlons de bases de données volumineuses (par exemple, il faut faire une recherche dans une table de base de données contenant plusieurs millions d’enregistrements.

C’était à présent un aperçu très large de la façon dont fonctionne le logiciel de forum le plus courant. Ils sont conçus pour couvrir un nombre assez restreint de sujets liés d'une manière ou d'une autre, tels qu'un forum d'entreprise, un forum sportif (avec un forum pour une variété de sports), etc. Au maximum, ils peuvent avoir 10 catégories. de forums, peut-être 30 à 40 forums, peut-être certains forums de somme en fonction du sujet, mais c'est loin des milliers de personnes que vous proposez. Le problème ici est que le logiciel de forum standard est conçu pour répondre aux besoins de 90% des cas où un logiciel de forum moyen de base est nécessaire. Ce que vous semblez avoir besoin est un moteur de forum développé sur mesure pour répondre spécifiquement aux besoins de votre site.

Vous aurez peut-être besoin de regarder certaines des choses suivantes ...

  • Plusieurs serveurs Web servant votre moteur de forum derrière un équilibreur de charge pour gérer la haute disponibilité et la charge élevée du système.
  • Environnement de serveur de base de données en cluster exécutant plusieurs réplicas en lecture seule pour fournir un service d'écriture plus fiable et réduire la charge sur le serveur d'écriture principal.
  • Une couche de mise en cache de données et éventuellement même une couche de mise en cache de page, pour mettre en mémoire cache les appels de base de données afin de réduire le nombre d'appels en cours, et pour mettre en cache les pages terminées afin de réduire le nombre d'appels vers les serveurs d'applications principaux.

Ce ne sont là que quelques-unes des choses que vous devriez examiner si vous parlez de plusieurs milliers de forums, et vous devez vous rappeler d’organiser à l’avance vos besoins. Chaque forum ne peut avoir qu’un seul poste pour commencer, mais chaque forum peut se terminer par de nombreux articles. Quelques chiffres ici, il y a environ 155'100 personnes employées comme acteurs, producteurs et réalisateurs aux seuls États-Unis. Si nous augmentons ceci pour dire que la moitié des acteurs, producteurs et réalisateurs du monde résident tous aux États-Unis, nous pouvons dire qu'il y a 310'200 personnes pour lesquelles vous voudriez créer un forum, sans compter les personnes du passé. qui sont maintenant décédés. À partir de là, laissez-nous donner un post de départ d'un par forum ...

À ce stade, nous avons ce qui suit ...

  • 310'200 enregistrements dans notre table de forum
  • 310'200 enregistrements dans notre tableau de messages
  • 0 questions dans notre tableau de réponses

Maintenant, disons que le forum est en production et que les gens viennent nous rendre visite pour poser des questions et poster des réponses autour de leurs acteurs, producteurs et réalisateurs préférés. Par souci d'argumentation, disons qu'une moyenne de 1 000 nouvelles questions a été posée au cours du premier mois seulement et qu'une moyenne de 500 nouvelles questions par mois est posée par la suite. Ensuite, disons qu’une moyenne de 10 réponses par question est faite. Maintenant, ce ne sont que des valeurs aléatoires et quiconque a déjà utilisé des moteurs de forum peut probablement attester qu'il est un peu conservateur. À ce stade, après le premier mois, nous avons ce qui suit ...

  • 310'200 enregistrements dans la table des forums (il est peu probable que cela change fréquemment)
  • 310'200'000 enregistrements dans notre tableau de messages
  • 3'102'000'000 enregistrements dans notre table de réponses

Et chaque mois après que le nombre d'enregistrements suivant a été ajouté ...

  • 155'100'000 enregistrements ajoutés à la table posts
  • 1'551'000'000 enregistrements ajoutés au tableau des réponses

Donc, après 12 mois de production, la base de données peut ressembler à ceci ...

  • 310'500 enregistrements sur la table des forums (300 studios, producteurs, acteurs et réalisateurs supplémentaires sont entrés dans le secteur au cours des 12 derniers mois)
  • 2'171'400'000 enregistrements dans la table posts
  • 21'714'000'000 enregistrements dans le tableau des réponses

Il est vrai que MySQL peut facilement gérer des centaines de millions d’enregistrements sans configuration matérielle exotique, mais au cours des 12 premiers mois, nous parlons de plusieurs milliards d’enregistrements, avec des millions de lectures et écritures par jour.

Comme vous pouvez probablement le constater, réalisez quelque chose comme ce que vous voulez réaliser avec un système standard standard ne fonctionnera pas vraiment, car il devra être spécialement conçu pour répondre à votre cas d'utilisation spécifique afin d'optimiser tout possible pour Big Data.

0
Chris Rutherfurd