I’m considering using Discourse as the backend for my website and app, but I haven’t seen any documentation on its scaling limits.
What’s the maximum number of categories we can have? Is it 1000? 10,000? 100,000?
I plan to heavily use the API and create a custom frontend for both web and mobile. Part of this is programmatically creating a new Category whenever a user wants to. So it’s more of a backend systems question than the UI.
For example, will the /categories.json endpoint scale? It doesn’t seem paginated.
Thanks @sam! Follow up question – what would the approximate limits be for:
the number of tags
the number of topics in a category
For example, can I have a few million unique tags, as well as a few million topics within a single category?
The tags, topic_tags, and topics tables don’t appear to be sharded, which should work for a few million rows, but I haven’t looked into the queries themselves, nor any UI that could potentially break.
Even with optimal indexing, query speeds will at some point take “too long”. What that is will vary from person to person.
Then there’s Ruby, Ember, bandwidth and browser limits. Feel free to research, but I wouldn’t worry about those.
I think that long before any software limits are reached “sane” limits will have already been passed. And what that would be will vary from person to person and how they interact with the information.
tl;dr You will break your users long before you break any code.
Personally I never subscribe to a site that has 2500 categories.
Virtually you can create all the categories you want but your site will only be confusing and not navigable.
Note that an official answer has already been given to your question and also an alternative to using categories.
The problem of categories in the first place is the problem of transparency and navigation for users. Working previously on the catalogue dmoz.org and making categories for Russian directories, we are faced with the fact that with a large number of categories, problems arise in users. A large number of categories, it’s like there are no more categories. They become unnecessary, impossible to use. Nobody understands the structure of the site, including those who did it. I think that’s the problem.
Navigation should be navigation, and if it loses its functions, it is sad.
Mises à part les considérations d’interface utilisateur, je me demande ce qui se passe lorsque vous atteignez la fourchette de 1000+ catégories. Les réponses prennent-elles simplement un peu plus de temps en moyenne, ou y a-t-il des conséquences catastrophiques ? Peut-on résoudre ce problème en utilisant du matériel plus performant ?
Comme l’auteur du sujet, je travaille sur un projet qui pourrait facilement comporter des milliers de catégories. Il repose fortement sur des permissions basées sur les groupes, et un utilisateur individuel ne peut peut-être voir qu’une poignée de ces catégories (c’est pourquoi je ne peux pas utiliser d’étiquettes). Je ne m’inquiète donc pas tant que cela de la surcharge de l’interface utilisateur, mais j’aimerais savoir où se situe le goulot d’étranglement à ce niveau supérieur.
Honnêtement, probablement rien de terrible, sauf si vous êtes administrateur et avez accès à plus de 1000 catégories. À ce stade, nous vous enverrions chaque fichier JSON de catégorie sur votre première page, et la page des catégories deviendrait lente, tant côté serveur que côté client.
À ce sujet :
Si j’ai des centaines à des milliers de catégories, existe-t-il une option pour limiter le nombre de résultats de recherche ?
Mon problème : En raison du grand nombre de catégories, cliquer sur le menu déroulant lors de la création d’un nouveau sujet, ou rechercher des catégories lors de l’abonnement à celles-ci, entraîne un long délai (plusieurs dizaines de secondes).
Je sais que nous avons une option pour limiter le nombre de résultats dans de tels scénarios pour les tags. Avons-nous ou pouvons-nous avoir la même chose pour les catégories ?
Je viens de vérifier la base de données pour vous et il n’existe aucun paramètre lié à la restriction des catégories (pour les recherches) dans la base de données.
Il existe certaines restrictions disponibles dans l’interface utilisateur (comme vous le savez) :
Il semble donc que vous deviez créer un plugin pour ajouter des fonctionnalités supplémentaires afin de restreindre les résultats de recherche en fonction des catégories et des critères associés.
Pouvez-vous partager quelques chiffres concernant les ressources nécessaires à l’hébergement ?
Quelle quantité de RAM et de CPU utilisez-vous normalement ?
Aussi, comment se passe l’expérience utilisateur, quelle est la vitesse de chargement – y a-t-il des goulots d’étranglement dans certaines zones ?
Je pose cette question car je souhaite sécuriser les conversations entre patients et médecins :
J’ai un site avec plus de 500 catégories (si ma mémoire est bonne). Je pense que cela fonctionnait bien sur un droplet optimisé CPU à 80 $ par mois, avec environ 250 000 vues de pages par mois.
Peux-tu partager tes dernières impressions sur l’utilisation de tant de catégories ?
Combien de catégories as-tu actuellement ?
Tous les utilisateurs ont-ils accès à autant de catégories, ou l’accès est-il restreint et seuls les administrateurs peuvent voir toutes les catégories ?
As-tu modifié le code de Discourse ou ajouté d’autres ajustements ?
Curieux de savoir comment fonctionne la création de nouveaux sujets avec autant de catégories ?
Le bouton Nouveau sujet sur les pages d’accueil (Catégories, Derniers, Nouveaux) vous oblige à sélectionner une catégorie, sauf si vous autorisez les publications sans catégorie. Sélectionner une catégorie dans la liste déroulante semble peu pratique avec autant d’options. Comment gérez-vous cet aspect ?
J’en ai plus de 300 (avec beaucoup de sous-catégories), mais seul l’administrateur voit autant.
Vous pouvez rechercher dans la liste déroulante, mais vous devez connaître à l’avance le nom de la catégorie dans laquelle vous souhaitez publier.
Le principal « problème » pour moi serait de devoir faire défiler jusqu’à une catégorie située tout en bas sur la page d’accueil (facilement résolu en utilisant la fonction de recherche).
Je suis également intéressé par cela. Ma communauté est composée d’opérateurs radio amateurs, et il existe des milliers de petits clubs locaux. J’aimerais offrir à chaque club local son propre groupe privé pour discuter des affaires du club potentiellement.
Il faudrait probablement beaucoup de temps avant que j’atteigne des limites. J’imagine que j’atteindrais probablement un maximum d’environ 500 groupes à pleine capacité, chacun avec sa propre catégorie.
Ces groupes ne seraient affichés qu’aux utilisateurs qui ont été ajoutés au club via l’API.
Donc (la plupart) toutes les catégories sont privées et disponibles uniquement pour les membres du groupe ? Je ne suis pas sûr, mais je pense que cela résout une grande partie des problèmes de performance et si vous pensez rester à environ 500, vous pourriez être tranquille même si je me trompe. Je pense qu’environ 200 est le maximum recommandé, mais j’ai un site avec 200 ou 300. Et vous aurez un avertissement, vous pourriez donc les diviser en plusieurs instances si vos chiffres deviennent trop importants.