Сохранение образов: файлы или блобы?

Используйте JS / AJAX. Используйте JS для хранения текста, который вы ищете, в JS-переменной и используйте AJAX для отправки.

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

19
задан Community 23 May 2017 в 12:32
поделиться

9 ответов

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

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

18
ответ дан 30 November 2019 в 02:41
поделиться

Я пытался использовать db (SQL Server и MySQL) для хранения средних (< 5 МБ) файлов, и я получил массу проблем.

1) Некоторые БД (SQL Server Express) имеют ограничения по размеру;

2) Некоторые БД (MySQL) становятся чрезвычайно медленными;

3) Когда вам нужно отобразить список объектов , если вы случайно сделаете SELECT * FROM таблицу, тонны данных будут пытаться идти вверх и вниз от базы данных, что приведет к смертельно медленному ответу или сбою памяти;

4) Некоторые интерфейсы (ruby ActiveRecord) имеют очень большие проблемы при работе с каплями.

Просто используйте файлы. Не храните их все в одном и том же каталоге, используйте некоторую технику, чтобы поместить их в несколько каталогов (например, вы можете использовать последние два символа GUID или последние две цифры int id), а затем сохранить путь в db.

9
ответ дан 30 November 2019 в 02:41
поделиться

Учитывая, что вы можете сохранить изображение вместе с именем, кратким описанием, датой создания, созданным и т. Д., Вам может быть лучше сохранить его в базе данных. Таким образом, все вместе. Если вы сохранили эту же информацию и сохранили изображение в виде файла, вам пришлось бы извлекать весь «объект изображения» из двух мест ... и в будущем вы можете столкнуться с проблемами синхронизации (некоторые изображения не найдены) , Надеюсь, это имеет смысл.

2
ответ дан 30 November 2019 в 02:41
поделиться

Сохраняя, вы хотите использовать их для показа на веб-странице или что-то в этом роде? Если это так, то лучшим вариантом будет использование файлов, если вы используете базу данных, она будет постоянно забита запросом фотографий. И эта ситуация не очень хорошо масштабируется.

2
ответ дан 30 November 2019 в 02:41
поделиться

Используя файловую систему лучше как основная характеристика, которой Вам предоставили бы при хранении изображений, как блоб будет 1. переменчивость, которая не нужна для изображения, поскольку мы не будем изменять двоичные данные изображений, мы будем удалять изображения как целые только 2. Индексируемый поиск: который не нужен для изображения, поскольку содержание изображений не может быть индексировано и индексировало ищущие поиски содержание BLOB.

Используя файловую систему выгодно здесь потому что 1. его более дешевые 2. Используя CDN для быстрого доступа

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

0
ответ дан 30 November 2019 в 02:41
поделиться

Это зависит от размера изображения.

Microsoft Research имеет интересный документ по этой теме

10
ответ дан 30 November 2019 в 02:41
поделиться

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

Но если вы имеете в виду изображения, которые являются частью инфраструктуры приложения, а не пользовательские данные, то, вероятно, ответ будет следующим: , №

2
ответ дан 30 November 2019 в 02:41
поделиться

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

2
ответ дан 30 November 2019 в 02:41
поделиться

Большие двоичные объекты могут быть тяжелыми для db / scripts, почему бы просто не сохранить пути. Единственная причина, по которой мы когда-либо использовали BLOB-объекты, - это необходимость их репликации слиянием или сверхжесткая защита ресурсов (как в случае невозможности получения изображения без входа в систему или чего-то еще)

1
ответ дан 30 November 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: