SQLITE Blob ИЛИ файловая система для изображений - PullRequest
6 голосов
/ 16 апреля 2009

Я строю приложение на основе одной таблицы с колонкой с текстом. Иногда в соседнем столбце будет изображение. Лучше ли хранить это изображение как большой двоичный объект в SQLITE или я должен хранить их в файловой системе и ссылаться на них из моих программ. Спасибо!

Ответы [ 5 ]

3 голосов
/ 17 апреля 2009

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

В настоящее время я использую базу данных Sqlite на нескольких различных устройствах Windows Mobile и WinCE, где более 10 000 небольших изображений хранятся в виде больших двоичных объектов, и это прекрасно работает.

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

Я считаю, что с одной базой данных гораздо проще работать, чем со многими файлами изображений.

3 голосов
/ 16 апреля 2009

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

2 голосов
/ 16 апреля 2009

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

2 голосов
/ 16 апреля 2009

РЕДАКТИРОВАТЬ:

Не понял, что вы специально для iPhone. В этом случае я бы использовал БД только для простоты размещения всего контента в одном месте. Вам не придется беспокоиться о масштабируемости, потому что это не значит, что ваш iphone будет использоваться в качестве сервера или чего-то еще.

Оригинальный ответ:

У меня нет ссылок, подтверждающих это, но я помню, как читал в нескольких исследованиях, что «обрез» - 1 МБ для эффективности BLOB-объектов. Но это может переместиться до 10 МБ с достаточно быстрым дисковым массивом. Полностью зависит от системы.

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

1 голос
/ 16 апреля 2009

Это действительно зависит от вашего приложения. Хранение изображений в базе данных облегчит вашу жизнь, так как они доступны в одной точке, а не в отдельных файлах, которые могут пропасть. С другой стороны, многие изображения, которые являются довольно большими, могут оказаться слишком большими для базы данных SQLITE. В вашей ситуации я бы просто сослался на них в базе данных.

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