За последние 24 часа нас посетили 52605 программистов и 1724 робота. Сейчас ищут 902 программиста ...

Хранение картнок в БД (плюсы/минусы/итд)

Тема в разделе "Прочие вопросы по PHP", создана пользователем Vladson, 30 май 2007.

  1. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Вот подумалось, почему бы не обсудить это "явление" ?
    Хочется услышать плюсы и минусы данного подхода...

    Мне на ум приходят только минусы, однако с "моральной" стороны картинки это такой-же контент сайта как и к примеру тексты статей, однако я не видел движков пихающих в БД названия текстовых файлов со статьями :)

    Очень меня чё-то этот вопрос задел...
     
  2. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Нагружает базу + надо делать обработку HTTP заголовков, что-бы нормально кешировались браущером картинки, иначе если их много, будет фигово...

    А вообще в плане ресурсов конечно лучше чем тупо отдать средствами веб сервера ничего не придумали :)
     
  3. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Не особо сильно, один запрос на картинку. (причём запрос самый что не есть лёгкий)
    Ну это не сложно.

    А если в плане "не ресурсов" а именно "эстетики" имеет вообще данный "метод" право на жизнь ?
    (не все сайты имеют сотни тысяч посетителей, есть и просто хомячки)
     
  4. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Ну и зачем создателю «хомячка» лишние проблемы с отслеживанием последнего изменения еще и картинок? Лишний код, функциональность которого можно спокойно спихнуть на веб-сервер. Там же и анализ входящих заголовков, и E-Tag'и на них, и Last-Modified отдай :)

    Тексты статей - не самостоятельная единица, а часть конечного «файла». Картинка-же — это отдельный файл.
     
  5. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Vladson
    Изображения имеет смысл хранить в БД в двух случаях - когда перед отдачей нужно учитывать права доступа (например, вложения на форуме) и когда эти изображения постоянно тасуются - все время добавляются новые, меняются имеющиеся, удаляются старые.
    Что мне действительно не нравится - так это когда сама картинка хранится в виде файла, а дополнительная инфа о ней хранится в таблице, получается такой "тянитолкай" с соотношением 1:1 ;) Имхо, надо выбирать или одно, или другое, но это чисто личное впечатление.
     
  6. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    на хомячке будет проблема с объемом базы.
     
  7. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    armadillo
    Наоборот, на хомячке такой проблемы как раз не возникнет. :)
     
  8. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    объем базы на виртуальном хостинге - метры, дальше повышают цены.

    И можно пример задачи, где частое обновление-изменение картинок?
    Права доступа решаются и так.
     
  9. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Поясни, пожалуйста, данный абзац.
     
  10. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    мы маленькие, но нас много! (с) сага о муравьях

    vasa_c, подозреваю, что он имеет ввиду метаинфу, которая выводится на странице рядом со ссылкой на картинку.
     
  11. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    dark-demon
    Все верно, рад, что меня еще можно понять при желании ;)
     
  12. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    armadillo
    Ни разу не видел тарифного плана, где бы объем БД лимитировался сильнее, чем дисковое пространство.
    Обычно объем БД считается частью места на диске - и что самое смешное, при большом количестве небольших картинок БД может оказаться даже выгоднее.
     
  13. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Хранение мета-информации это нормально ИМХО. Данных там обычно не много и даже на очень больших таблицах поиск по индексу занимает очень мало времени. Такие таблицы к тому-же могут легко иметь формат FIXED, что хорошо сказываеться на скорости выборки. А вот с блобами похуже, потому что один может иметь размер 5 килобайт, другой 300-400 килобайт (приминительно к картинкам) - базе придёться ворочать большое кол-во информации, намного большее чем при выводе только метаинформации. Да и PHP не так уж эффективно оперирует большим кол-вом данных. Я делал довольно большую галлерею на основе базы данных. После 12к фотографий я послал главного программера с его заморочками и тихо-мирно переделал все на фаиловую систему, больше проблем не возникало, и база перестала тормозить. К кому же мета-информацию вам в любом случае придёться выводить отдельно от вывода картинки - 2 запроса на базу вместо одного.
     
  14. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Я всегда тоже придерживался мнения что это "велоспиед" просто стукнуло в бошку что дофига народу спрашивает как хранить картинки в базе, а вот чем они руководствуются я понять не особо могу...
    Не так всё сложно, главное иметь под рукой RFC 2068

    Вот это как раз точно такой ответ какой я ждал, хотя нового почти ничего не узнал.

    Т.е для картинок не особо подходит, а скорее для файлов "для скачивания в ограниченном кругу людей" (за одно и проблема нагрузки решается)
     
  15. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Vladson
    Да с правами доступа решаеться всё просто - mod_rewrite + php скрипт, проверяющий а может ли юзер скачать данный фаил. Всё просто как 2 + 2. Физически хранить в базе фаилы и картинки - бред. К тому же как вы собираетесь делать дампы базы? Они у вас будут гигабайтными и востановление тоже будет оочень долго делаться... Так что, ИМХО, метод для извращенцев, садистов и просто тех, у кого дурь в голове. Не выбить дурь советами, значит со временем выбъеться, когда столкнёться с проблемами на практике.
     
  16. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Вот теперь у меня чёткое ощущение что метод для меня (хотя ещё 10 минут назад я так не думал) :D
     
  17. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Да уж, радует, когда начинают идти подобные аргументы ;)