2009-04-16 2 views
6

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

+0

Только для уточнения - это приложение для iPhone, правильно? – AnonJr

ответ

2

EDIT:

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

Оригинал Ответ:

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

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

+0

Он использует iphone, поэтому сам диск не обновляется. – Kevlar

+0

ahh, не видел эту часть. –

1

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

3

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

+1

Файлы облегчат загрузку изображений. Если вы используете [UIImage imageNamed: @ "blah.png"], он загрузит изображение в очищаемую ОЗУ и загрузит/выгрузит его из файла по мере необходимости (т. Е. Когда он больше не доступен для просмотра, и вы сильно зажаты в памяти, он очищается, а затем перезагружается, когда он снова отображается) – Gabe

+0

Вау ... поэтому API связан с файловой системой, а не с абстрактным типом? ... –

2

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

3

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

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

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

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

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