Моделирование данных: методы обработки большого количества данных? - PullRequest
2 голосов
/ 07 апреля 2011

Итак, у меня относительно небольшой веб-сайт с растущими объемами данных - самая быстрорастущая таблица - это просмотры страниц, поскольку мы сами выполняем всю нашу аналитику. Сайт сделан с использованием VB.Net, SQL Server 2008 и jQuery. Я ограничен .net 2.5.

В настоящее время я обрабатываю все данные и проверяю их, используя объекты со списком атрибутов. Каждый атрибут имеет определенный тип данных и имеет функцию проверки, когда ему дается новое значение. Если данные не проверяются, они даже не дойдут до обновления базы данных и сообщат пользователю об ошибке. В настоящее время у меня есть классы «Manager» и «Item» - элементы управляются определенным классом Manager, например, пользователи управляются с помощью UserManager, поэтому для получения всех пользователей мне просто нужно вызвать UserManager.Items. Эти классы Manager хранятся в кеше и создаются по мере необходимости, но после обращения к классу Manager он создает всех элементов в нем. Сейчас это происходит довольно медленно, так как компания быстро растет. Загрузка первой страницы занимает 2-3 секунды (страницы, которая чаще всего запрашивает данные впервые), но меня это не устраивает. После этого это почти мгновенно.

Теперь, как я вижу, у меня есть 3 варианта для ускорения работы сайта:

  • Оставьте это как есть, но постарайтесь сделать его более эффективным с помощью других методов;
  • Перейдите к созданию всех этих объектов при каждой загрузке страницы, в надежде, что это просто так медленно, потому что я использую кеш для хранения достаточного количества данных (по крайней мере, около 10 МБ);
  • Забыть, используя объектно-ориентированные методы и просто использовать прямые SQL-запросы и проходить по записям.

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

Спасибо.

С уважением,

Richard

1 Ответ

1 голос
/ 15 апреля 2011

Я думаю, что для вашего сайта вы не можете использовать концепцию «атрибут прямого доступа»: UserManager.Items.

Если у вас растет количество данных, у вас должен быть «атрибут косвенного доступа» для классов менеджера, это будет метод, подобный UserManager.GetItems (). Потому что .NET вычисляет свойства (UserManager.Items) при создании нового экземпляра класса UserManager ...

Резюме: удалить атрибут UserManager.Items и создать метод UserManager.GetItems ().

...