2016-10-12 7 views
3

Я собираюсь собрать небольшой журнал, который я хочу показать онлайн, и подумал, что хорошим способом сделать это будет иметь таблицу, состоящую из идентификационного номера, плюс blob данные, чтобы показать каждую страницу как изображение.Почему MySQL Blob не рекомендуется

Так что, если у меня была проблема, состоящая из 10 страницы, она будет выглядеть следующим образом:

ID . Page_1_Blob . Page_2_Blob . Page_3_Blob . Page_4_Blob . Page_5_Blob . etc 

Дело в том, что я видел много негатива, когда дело доходит до хранения данных больших двоичных объектов для изображений, более конкретно из-за того, что он замедляет вашу базу данных? Насколько это верно? И есть ли какие-либо аргументы в пользу использования данных BLOB таким образом?

+0

Есть ли веская причина служить только картине каждой страницы журнала вместо ссылки на правильный HTML-документ? Вы уничтожаете предыдущий выпуск каждый раз, когда вы пишете новый? –

+0

Возможно, «Журнал» - неправильное слово. Это больше похоже на брошюру, где люди могут просматривать его онлайн как брошюру по каждой странице, а затем загружать фактический файл в формате PDF. –

ответ

0

Итак, я понимаю, что BLOB хранится в фактическом файле базы данных. Поэтому, если у вас есть журнал объемом 10 ГБ, тогда 10 ГБ попадут в фактический файл базы данных SQL. Когда вы делаете запрос, файл загружается в ОЗУ. Очевидно, что поиск через 10 МБ-файл намного быстрее, чем загрузка и поиск через 10-Гбайт-файл. Ответ на этот вопрос заключается в использовании SqlFilestream для хранения информации в фактической файловой структуре сервера, однако это вызывает все виды балластов, потому что API SqlFilestream работает только на самом компьютере, а не удаленном. Для моей базы данных мне пришлось настроить программу WCF для добавления огромных файлов в мою базу данных.

Если у вас есть база данных, например, 10 страниц, то обязательно включите BLOB, однако если вы добавите журнал после журнала, это приведет к замедлению.

Если вы попытаетесь сделать такие запросы, как «выбрать * из журналов», то эти запросы берут навсегда, потому что они фактически возвращают двоичные данные от сервера в качестве части запроса. Если вы запускаете такой запрос на видео, вы будете долго ждать.

+0

Я не могу найти никакой документации, предполагающей, что MySql имеет тип SqlFilestream. –

+0

Извините, я думал, что вы используете Microsoft SQL. Название было немного обманчивым. В настоящее время я думаю, что вы застряли с BLOB. –

+0

Честно говоря, я бы выбрал 'page_2_blob ИЗ журналов WHERE id = X', так как каждая страница журнала размещалась на собственной веб-странице, т. Е.' Website.com/issues.php? Issue = 1 & page = 2'. Я просто не уверен, что выбор BLOB из большой базы данных может сильно отличаться от выбора большой статьи TEXT. –

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