Как управлять более чем одним администратором сайта и пользователями в базе данных? - PullRequest
0 голосов
/ 06 августа 2009

Мне нужно спроектировать базу данных для приложения с миллионами пользователей. Теперь на этом веб-сайте будет несколько администраторов, таких как HRadmin, SuperAdmin, SalesAdmin. У меня может быть только одна роль администратора.

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

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

Как мне реализовать эту вещь в базе данных, чтобы интерфейс не стал громоздким. Я использую asp.net2.0 и SQL Server 2005.

Ответы [ 5 ]

3 голосов
/ 06 августа 2009

Поскольку вы используете ASP.NET и SQL Server 2005, обратите внимание на использование Членство в ASP.NET . Существует инструмент для построения таблиц базы данных для вас, включающий поддержку нескольких пользователей, ролей и полей профиля.

Вот подробный обзор членства в ASP.NET: http://www.4guysfromrolla.com/articles/120705-1.aspx.

0 голосов
/ 06 августа 2009

Ввод ключевых слов в строку запроса - очень плохая идея . Если я знаю, какое ключевое слово использовать, чтобы стать администратором, я могу подделать права администратора? Если пользователь вошел в систему, вы можете поместить его учетные данные в сеанс или файл cookie (я предпочитаю сеанс, потому что файлы cookie можно изменить на стороне клиента), что может сэкономить вам много запросов БД (я не знаю ни одной системы постоянно обновляет ваши учетные данные, насколько я знаю, даже Windows кэширует их, когда вы находитесь в Active Directory).

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

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

0 голосов
/ 06 августа 2009

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

0 голосов
/ 06 августа 2009

Если у вас будет членство в ASP.NET - прочтите также Рекомендации по производительности для приложений, использующих службы

Наличие миллионов пользователей потребует некоторой оптимизации, например, мы используем CacheRolesInCookie, как описано в статье

0 голосов
/ 06 августа 2009

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

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