[PHP & MySQL] Кто как хранит картинки
Ну, поднимался этот вопрос мого раз, однозначного ответа, понятное дело быть не может. Свои плюсы и минусы есть у обох вариантов и аргументы убедительные. Сам делаю то так, то этак.
Вот и интересно, а как предпочитает делать большинство? То есть, доводы за и против я и так знаю. Интересует просто количественная информация. "Я делаю так-то..."
и какие это преимущества имеет
хранения графики в базе по сравнению с хранением в файлах
и наоборот
в чем минусы хранения графики в файлах по сравнению с хранением в базе
хм...
и какие это преимущества имеет
хранения графики в базе по сравнению с хранением в файлах
и наоборот
в чем минусы хранения графики в файлах по сравнению с хранением в базе
Есть немного. Самое главное, что все данные находятся в одном месте, причем, как одна база. Если картинок 300 и бльше, как в солидном каталоге, то вешать их, как файлы в директорию просто таки стремно. Загружаться по FTP на сайт это будет дольше и муторнее, чем дамп базы. Пользователи будут иметь к ним доступ (Если не вынести за древо каталогов. А, если вынести, то отдавать их браузеру придется скриптом, тогда пропадает самое большое преимущество файлов - кеширование). Резервное копирование выполняется одним дампом и такую базу легче таскать с места на место...
Ну, соответственно, минусы тоже серьезные. Медленная работа запросов и невозможность сгрести картинку в кеш.
хм...
и какие это преимущества имеет
хранения графики в базе по сравнению с хранением в файлах
и наоборот
в чем минусы хранения графики в файлах по сравнению с хранением в базе
1. Нет проблем с правами. (в основном при аплоаде файлов)
2. Хранить картинки в базе выгодно если их 100 тыс, млн и более. Посмотрю я, как такое количество картинок будет хранится в файлах.
Если картинок не много (до десятков тысяч) то хранить в базе их не стоит.
дествительно все очень спорно
1. Нет проблем с правами.
Не довод. Права либо есть либо нет. Если нет прав записывать то тут скорее и sql не будет :)
2. Посмотрю я, как такое количество картинок будет хранится в файлах
На слово повериш что хранят? некоторые в одной папке умудряются хранить. Сам видел правда не лямы но пару сотен тыщ. точно хранили :). А если руки прямые и голова не только для того чтобы волосы не мешали есть то это не проблемма (пока винт не кончится).
Я вот хотелбы видеть глаза хостера когда ты у него запросиш базу в 50Г :) (1000000файлов*50000средний размер картинки) и глаза заказчика когда они выкатят счет за такую базу (я уверен что даже те хостеры каторые дают анлим не дадут на холяву такую базу... хотя я могу ошибатся)
Да и быстро ли будет проходить выборка из такой базы? Для такого солидного каталога и трафик будет... подстать :)
Кстати скрипт Баннер Банка отдает ссылки на картинки(баннеры) а не сами картинки и для хранения этих баннеров используется 1-2 диска при среднем размере 20к. Вот пример что люди могут хранить лямы картинок на винте :)
Соглащусь с L'Eglantier дествительно удобно хранить все в одном месте...
Хотя я занимался переброской контента с одного сервера на другой особых проблемм не возникло :)
Не довод. Права либо есть либо нет. Если нет прав записывать то тут скорее и sql не будет :)
Не правильно держать данные там-же где и код - это потенциальная дыра.
Хотя самому приходится делать это...но это уже другая история.
Какая, хостеру, разница что будет занимать на его винте 50Г.
Я не говорю, что это будет быстрее, и что так надо делать, вот представим себе не баннербанк, задача которого - быстро отдавать картинки, а амазон, в каталоге которого ежеминутно добавляется/удаляется товар.
А скорость зависит не от того где хранить, а от реализации.
Была бы возможность хранить картинки в базе, я бы делал это.
Не правильно держать данные там-же где и код - это потенциальная дыра.
хм... пожалуй,
а к чему это?
На нормальном хостинге скрипт имеет доступ к любой папке в пределах своего акка. если ты об этом
Какая, хостеру, разница что будет занимать на его винте 50Г.
http://secure.hostonfly.net/cgi-bin/sign.cgi?advert=
Extra Data Space $0.02/50 Mb/Day
Extra Space for MySQL Database $0.01 Mb/Day
разные хостеры считают по разному :)
Я не говорю, что это будет быстрее, и что так надо делать, вот представим себе не баннербанк, задача которого - быстро отдавать картинки, а амазон, в каталоге которого ежеминутно добавляется/удаляется товар
Для статистики
в ББ более 1000 сетей в каждой всреднем до несколько сот акков.(особенно много порнушных :) ) Там КАЖДУЮ минуту загружаются, удаляются, меняется статус баннеров сайтов и прочее
А скорость зависит не от того где хранить, а от реализации
Ни когда не поверю что sql+pelr(php)+апач отдадут быстрее(или хотябы также) чем просто апач
Вобщем пока не очень убедительно...
Единственный плюсь в пользу баз привел L'Eglantier
Опрос со мной пожалуй солидарен :)
Я тут еще озадачился по этому вопросу:
http://www.xpoint.ru/archive/threads/40/8037.html
http://www.mysql.ru/webboard/messages/416.html (есть интересная фраза)
А вот что думают хостеры каторым всеравно :)
http://www.host.ru/art/0002.html
http://www.payhosting.ru/faq/mysql2.php
http://www.hostprovider.ru/faq2.htm
http://www.softportal.com/articles/item.php?id=60&lang=ru
и так далее..
Ни когда не поверю что sql+pelr(php)+апач отдадут быстрее(или хотябы также) чем просто апач
Никто про эту связку и не говорит.
Опрос со мной пожалуй солидарен :)
Я сам голосовал за картинки.
Просто не стоит так, 100%, заявлять. Поверьте, есть задачи, когда хранить картинки стоит в базе а не на диске.
Никто про эту связку и не говорит.
Originally posted by mike
А скорость зависит не от того где хранить, а от реализации
Хех ладно все остались при своем мнение.
Мне действительно было интересно узнать про ситуацию когда в базе хранить выгоднее, всегда приятнее учится на чужих ошибках :)
Вообще-то, я тоже пока стался при своём мнении...
Допустим есть архив документов, безразлично каких там в word'e, PDF, или просто zips.
Количесто - несколько тыщ
Какой в общем резон хранить бинары в таблице, вместо названия файла??? Imho - ни какого.
...а значит есть потенциальная угроза сохранить вредоносные данные на винте
Хм...
довай подумаем ты знаеш с каким расширением загружаютя файлы, можеш определять размер, можеш менять расширение файла
Можно пример или ссылку на тему как с помощью файлов .jpg .gif и т.д. сломать сервер. Мне казалось их сервер просто отдает даже в нутрь не смотрит... хотя что я понимаю :)
Плюс db хранится на нескольких винтах, по частям, если чё навернётся, остальная часть выживет.
Обычно такие важные вещи очень часто бекапят,
более того обычо хостеры хранят копии как сайтов так и баз у себя