Значок - структура данных / модели? - PullRequest
2 голосов
/ 21 декабря 2010

Я пытаюсь выяснить, как можно настроить базу данных и / или модель для обработки различных значков.Возьмем в качестве примера переполнение стека значки .Для каждого существуют разные правила, и некоторые могут быть просто разными (например, 10 комментариев против 100 комментариев).

Мой вопрос: как настроить проверку / проверку типа в приложении?Должен ли каждый значок иметь свой собственный метод?

Ответы [ 3 ]

1 голос
/ 21 декабря 2010

Вот как бы я это реализовал, если мне нужно:

Я настрою некоторый менеджер очередей (таких программ много) и напишу брокера, который будет обрабатывать сообщения из очереди.

Каждый раз, когда происходит какое-либо событие, например: вы просматривали тему, редактировали свой комментарий, редактировали свой ответ, редактировали ответ другого человека, голосовали и т. Д. Да, это будет действительно огромное количество сообщений там.

После того, как вы соберете такое огромное количество сообщений, вы можете запустить брокера, который будет обрабатывать сообщения по расписанию или в режиме реального времени.

С помощью этой схемы вы можете расширять брокера до тех сложных значков, которые вам нужны.

1 голос
/ 21 декабря 2010

Поскольку SO запускается на SQL Server, периодически запускается задание агента SQL Server для представления статистики. Хранимая процедура (ы) в задании будет вставлена ​​в таблицу значков / и т. Д., Если критерии удовлетворены.

Триггеры могут быть другой опцией, но их выполнение не может быть отложено для области действия нескольких пользователей.

1 голос
/ 21 декабря 2010

Я полагаю, что некоторые вычисляются в реальном времени, а другие - в процессах, которые работают с перебоями.

Например, для значка, который появляется, когда ваш ответ получает 10 голосов, который можно вычислить в реальном времени с небольшой производительностьюнажмите.

С другой стороны, для значка, который проверяет, попадаете ли вы в ежедневный лимит репутации х раз, вы, вероятно, захотите сделать это как своего рода пакетное задание, поскольку вы проверяете только наконец каждого дня.

Ключевой задачей является обеспечение быстрой работы.Переполнение стека получает тысячи (возможно, десятки тысяч) вопросов в день, возможно, с сотнями тысяч комментариев.Все, что не является тривиальным для вычисления, должно выполняться в отдельном процессе.Он сохраняет функциональность ядра жесткой, ограниченной и чистой, обеспечивая высокую производительность.Выполнение сложных вычислений в процессах вне основной системы публикации позволяет вам делать это, не влияя на способность пользователей использовать сайт.Если задача достаточно сложная, вы можете масштабировать ее по горизонтали, просто запустив один и тот же процесс на нескольких машинах.

...