Хранить данные профиля пользователя в таблице пользователей или в отдельной таблице профиля? - PullRequest
5 голосов
/ 15 апреля 2011

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

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

Если у меня одно изменение профиля в месяц на пользователя, скажем, 1000 пользователей, это много?

Или мы говорим больше как пользователи, меняющие данные профиля ежечасно?

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

Ответы [ 2 ]

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

Следует учитывать, как добавление большого столбца текста в таблицу повлияет на расположение строк. Некоторые базы данных будут хранить большие столбцы, выделенные другими столбцами фиксированного размера; это приведет к изменению размера строк, а это означает, что для базы данных требуется больше работы, когда ей нужно извлечь строку с диска. Другие базы данных (например, PostgreSQL) хранят большие текстовые столбцы вдали от столбцов фиксированного размера; это приводит к строкам фиксированного размера с быстрым доступом во время сканирования таблиц и т. п., но для извлечения текстовых столбцов требуется дополнительная работа.

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

Я думаю, что Джастин Кейв достаточно хорошо рассмотрел проблему индекса.

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

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

Нужно ли индексировать информацию профиля?Или вы просто собираетесь получать его на основе USER_ID таблицы или какого-либо другого индексированного столбца USER?Если данные профиля не проиндексированы, что, по-моему, вероятно, не повлияют на производительность других индексов таблицы.

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

...