Проблема проектирования данных - подсчет данных - PullRequest
2 голосов
/ 11 января 2009

Я хочу предоставить около 10 различных «статистических данных» моим пользователям. Каждая статистика представляет количество, возвращаемое другим запросом моей базы данных. Каждый стат / запрос специфичен для текущего пользователя. Что будет самым эффективным способом для достижения этой цели? Правильно ли я считаю, что выполнение запросов статистики для каждого пользователя на каждой странице моего сайта (чтобы предоставить им картинку в реальном времени) не лучший способ сделать это?

Советы приветствуются.

Редактировать:

Я работаю на основе 100 - 1000 одновременных пользователей.

Ответы [ 4 ]

1 голос
/ 11 января 2009

Моя первая мысль - это одна из тех вещей, которую трудно достичь в первый раз, поэтому постарайтесь убедиться, что ваш дизайн позволяет изменить способ, которым вы делаете вещи. Например. иметь одну функцию GetUserStats, которая возвращает объект UserStats, чтобы на вашем сайте было только одно место, где реализована эта логика. Это должно облегчить изменение вещей позже.

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

0 голосов
/ 11 января 2009

У меня будет соблазн сохранять «промежуточный итог» статистики, когда я хожу и сохраняю в базе данных, это простой запрос для извлечения данных при необходимости. В зависимости от того, насколько важно, чтобы отображаемые пользователю значения были актуальными, может потребоваться какое-либо кэширование.

У нас есть несколько приложений, в которых статистика данных имеет решающее значение для пользователя. Внедрение системы, в которой статистика хранится в БД с использованием метода «промежуточного итога», привело к значительному повышению производительности. Сказав, что наш объем одновременных пользователей намного ниже, чем у вас.

0 голосов
/ 11 января 2009

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

ASP.NET предлагает возможность задавать особую кешируемость для элементов управления и изменять кеш в зависимости от идентификатора пользователя или любого другого параметра, который вы хотите. Вы можете воспользоваться этим.

0 голосов
/ 11 января 2009

Не могли бы вы хранить значения в кеше в течение нескольких минут? Особенно, если вычисления тяжелы, это поможет производительности, сохраняя статистические данные в реальном времени.

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

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