Дизайн базы данных - большие поля - PullRequest
0 голосов
/ 31 июля 2011

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

При отображении списка статей каждая будет показана с миниатюрой;при показе одной статьи она будет отображаться с полноразмерным изображением.

Это означает, что у меня есть три элемента данных большого размера (неизвестного размера) с каждой статьей: изображение, эскиз и текст.

Каковы плюсы и минусы этих проектов:

  1. Таблица статей содержит столбец миниатюр и столбец изображения
  2. Таблица статей включает столбец миниатюр, изображение хранится в отдельной таблице
  3. Миниатюра и изображение хранятся в отдельной таблице
  4. Миниатюра и изображение хранятся в отдельных таблицах
  5. Сайт имеет доступ с правом записи в папку, где хранятся изображения и миниатюры, база данных содержитURL / имена файлов

(что-нибудь, что я не учел?)

Если это что-то меняет, и я не думаю, что это так, сайт будет написан на Ruby /Rails, используя Postgres или MySql.

Ответы [ 2 ]

1 голос
/ 31 июля 2011

ИМО, вариант 5 самый лучший. То, что вы можете хранить изображения в базе данных, не означает, что вы должны это делать. Сохраните местоположение файла и любые метаданные об изображениях в БД. Храните изображения в файловой системе.

«Минусы» хранения изображений в БД в том, что вы в конечном итоге перепрыгиваете через обручи, чтобы фактически использовать изображения в своем приложении. Почти любая библиотека, скрипт, надстройка и т. Д. Могут использовать ваши изображения, если они находятся в каталоге без какой-либо специальной кодировки. Поместите их в БД, и вам нужно написать код для предоставления доступа к их использованию.

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

ИМО, минусы намного перевешивают преимущества использования БД для хранения изображений.

0 голосов
/ 31 июля 2011

Если я правильно понимаю, база данных уже автоматически обрабатывает разделение больших полей на отдельные «таблицы» в зависимости от типа данных и размера поля.Гугл для "out of row storage" или что-то подобное.Для этого тоже могут быть настройки.

Это означает, что вам не нужно создавать отдельные таблицы для больших полей самостоятельно.

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

...