2009-11-04 3 views
0

Я сделал экран обслуживания людей. Клиент хочет, чтобы я хранил фотографию каждого человека в базе данных, и я сделал это без проблем. У меня есть отдельная таблица для изображений с двумя полями: Id_person и Image.Производительность в таблицах с двоичными данными/изображениями

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

Что было бы хорошего размера? Клиенту нужны только фотографии лица, но я уверен, что кто-то попытается сделать фото с камерой «последней модели» в полном качестве;)

Спасибо.

ответ

1

Обычно предпочитают хранить папку изображений, а БД просто ссылается на эту папку. В идеале каждый человек имеет уникальный идентификатор, а файлы в папке «images» соответствуют этому ID.

Если вы действительно хотите сохранить двоичные данные напрямую, вы можете получить фотографию разумного качества в 8 Кбайт JPEG (приблизительно 250x250 пикселей на 25% качества). Конечно, это неприемлемо для печати, но подходит для идентификации.

Только вы узнаете, можете ли вы принять дополнительно 8 КБ в строке на сервере базы данных.

+0

Я полностью согласен с вами ... Но клиент хочет, чтобы фотографии были сохранены на сервере DDBB. – Jonathan

+1

True ... Я просто добавил немного текста для этого. – jheddings

1

Если вы абсурдно ДОЛЖНЫ это сделать, я бы сказал, ограничивая его всего несколькими килобайтами каждый. Тем не менее, каждый администратор базы данных в мире, вероятно, скажет вам, что раскалывание изображений в поле базы данных - очень и очень плохая идея. Наиболее заметным образом вы увидите, что производительность резко падает, когда файл базы данных выходит за пределы двух гигабайт.

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

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

Я бы только blob изображение, если ваш клиент абсолютно не может иметь общий сетевой путь.

+0

Я буду использовать аргумент jheddings, а альтернатива прокомментировала попытку убедить клиента. – Jonathan

+1

Да, вам нужно ограничить размер файла, чтобы люди не загружали полноразмерные фотографии прямо из камеры. Но в любой современной БД на современной системе большие пространства таблиц и таблиц не являются проблемой. На самом деле, Microsoft Research имеет исследование, которое говорит о чем-то меньшем, чем 256 КБ, вам лучше управлять хранилищем данных, а не файловой системой (research.microsoft.com/pubs/64525/tr-2006-45.pdf). Если даже если их результаты отключены на 2 порядка, то это 64 КБ. – AngerClown

+0

Спасибо за ссылку! – Jonathan

0

до тех пор, пока он находится в отдельной таблице с идентификатором | только пользовательская фотография вам не нужна ссылка, потому что пользователь с ID 1 отправляется в /images/1.jpg)

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