2014-01-22 5 views
0

У меня есть небольшой веб-сайт для хостинга файлов, который я пытаюсь сохранить файлы, которые пользователи загружают в базу данных. Вопрос, который я имею, что я не могу решить, какой метод будет лучше:Несколько таблиц SQL для каждого пользователя?

  1. Для хранения всех пользователей в одной таблице
  2. создать новую таблицу для каждого пользователя.

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

+0

Использовать номер опции uno ;-) Это будет кошмар, если вы выберете вариант № 2 и более чем один. –

ответ

1

Короткий ответ:

No. Используйте самое простое, что работает: в одной таблице.

Длинный ответ:

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

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

Не пытайтесь хранить фактические файлы в базе данных MySQL, это почти всегда приводит к ужасной катастрофе, но вместо этого хранит их в файловой системе и сохраняет ссылки на них в базе данных. Если вы собираетесь управлять большим количеством файлов, кучей и тонны из них, вы можете захотеть посмотреть базу данных хранилища документов, такую ​​как Riak, чтобы помочь в этом.

+0

Итак, я должен создать его как 1-й метод?Назначил бы каждый пользователь пользовательский идентификатор, чтобы облегчить возврат файлов пользователей? –

+0

Протестируйте его с помощью одной таблицы на данный момент и убедитесь, что 'INDEX' на' user_id', или он будет жестоко медленным. Если позже вы обнаружите, что разрабатываете проблемы масштабирования, изучите альтернативы. – tadman

+0

Спасибо, я отвечу, когда смогу. –

0

Предлагаю создать таблицу для каждого объекта и иметь правильную связь между ними.

Например: таблица Пользователи будут иметь user_id, user_name и т.д. файлов таблицы будет иметь идентификатор, URL, user_id

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

Это означает - нет, не создавайте отдельную таблицу для каждого пользователя. Пойдите с методом 1 и убедитесь, что у каждого важного объекта есть своя таблица.

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

Надеюсь, это поможет!

0

Наличие 1000 пользователей ish не является проблемой для MySQL. Но tadman является строгим, сохраните файлы в файловых системах вместо базы данных.

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

Смежные вопросы