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.
Оставив в стороне вопросы интерфейса, мне интересно, что происходит, когда количество категорий превышает 1000. Будут ли ответы просто немного дольше в среднем, или это приведёт к катастрофическим последствиям? Можно ли решить эту проблему, просто улучшив аппаратное обеспечение?
Как и автор оригинального поста, я работаю над проектом, в котором может быть тысячи категорий. Он активно использует разрешения на основе групп, и отдельный пользователь может видеть лишь несколько из них (поэтому я не могу использовать теги). Поэтому меня меньше беспокоит перегруженность интерфейса, но я хотел бы узнать, где возникает узкое место при таком большом количестве категорий.
Честно говоря, скорее всего ничего страшного не случится, если только вы не администратор и не имеете доступа к 1000+ категориям. В этом случае мы будем отправлять вам JSON-файлы всех категорий на первой странице, и страница категорий станет медленной как на стороне сервера, так и на стороне клиента.
В связи с этим:
Если у меня сотни или тысячи категорий, есть ли возможность ограничить количество результатов поиска?
Моя проблема: из-за большого количества категорий при нажатии на выпадающий список при создании новой темы или при поиске категорий для подписки наблюдается значительная задержка (десятки секунд).
Я знаю, что в таких сценариях существует возможность ограничить количество результатов для тегов. Есть ли у нас такая же возможность для категорий или можем ли мы её реализовать?
Похоже, вам потребуется создать плагин, чтобы добавить дополнительные функции для ограничения результатов поиска на основе категорий и связанных критериев.
У меня есть сайт с более чем 500 категориями (если я правильно помню). Я думаю, что он нормально работал на Droplet с оптимизацией под CPU за $80 в месяц при примерно 250 тыс. просмотров страниц в месяц.
Хотите узнать, как работает создание новых тем при таком большом количестве категорий?
Кнопка «Новая тема» на главных страницах (Категории, Последние, Новые) требует выбора категории, если только вы не разрешаете посты без категории. Выбор категории в выпадающем списке кажется неудобным, когда в нём так много пунктов. Как вы решаете эту проблему?
У меня их более 300 (при этом много подкатегорий), но такое количество видит только администратор.
В выпадающем списке можно искать, но нужно заранее знать название категории, в которую хотите разместить пост.
Основная «проблема» для меня — прокрутка до категории, расположенной далеко внизу на главной странице (это легко исправить, используя функцию поиска).
Меня это тоже интересует. Моё сообщество состоит из радиолюбителей, и существуют тысячи небольших местных клубов. Я хотел бы предоставить каждому местному клубу свою собственную закрытую группу для обсуждения вопросов клуба.
До достижения каких-либо лимитов, вероятно, пройдёт довольно много времени. Я предполагаю, что при полной загрузке у меня будет максимум около 500 групп, каждая со своей категорией.
Эти группы будут отображаться только для пользователей, которые были добавлены в клуб через API.
Значит, (почти) все категории приватны и доступны только участникам группы? Не уверен, но, думаю, это решит многие проблемы с производительностью. И если вы предполагаете остаться примерно на уровне 500 участников, то всё будет в порядке, даже если я ошибаюсь. Рекомендованный максимум — около 200, но у меня есть сайт с 200–300 участниками. Кроме того, вы получите предупреждение, так что сможете разделить их на несколько экземпляров, если количество участников станет слишком большим.