Построение файловой системы веб-сайта.

1 234
IL
На сайте с 20.04.2007
Offline
435
#31
Ayavryk:
Самая длинная дискуссия на эту тему здесь.

Ayavryk, спасибо.. видел и это..

Цитата из поста (дабы не разрывать - приведу целиком):

Больше о проблемах, возникающих при хранении файлов отдельно от БД можно почитать в презентации SQL Antipatterns, раздел Phantom Files, страница 60. Кстати, автор презентации предлагает решение — хранить файлы прямо в БД, в поле типа BLOB. Правда следует замечание, что это должно быть взвешенное решение в каждом конкретном случае. Ведь при таком способе хранения файлов вебсервер должен при каждом запросе вызывать некий скрипт, который будет извлекать файл из БД и отдавать пользователю, что неминуемо отрицательно скажется на производительности.

Антипаттерном по мнению автора презентации являются "фантомные" файлы, возникающие при рассинхроне FS и БД при удалении, или транзакции (файл уже сохранён, а транзакция откатывается, или наоборот).

ИМХО, "проблема" решается простым сборщиком мусора (пишется на коленке), правильным порядком сохранения (файл, база) и, при необходимости, lock-ом при обновлении.

В комментариях к

http://www.mysqlperformanceblog.com/2010/02/09/blob-storage-in-innodb/ Петр Зайцев (цитата, правда, 2010 года):

You’re right. Storing images in MySQL is in most cases not a good idea being it MyISAM or Innodb storage engine. I’m not sure how this post made you feel it is being recommended.

Из минусов такого подхода:

- в оперативке вместо "полезных" данных (индексы, временные таблицы, кэш) висят файлы (если нет - опять же читается с диска (БД), а затем - отдаётся веб-серверу. Вместо прямого диск->веб-сервер).. При этом в случае хранения в файлах часто используемые кэшируются на уровне FS. При необходимости можно tmpfs подмонтировать

- нужно извращаться, чтобы отдать файл браузеру (тут речь о "стандартном" L(A|E)MP, а не про встроенный в СУБД web-сервер или плюшки вроде FILESTREAM) - php, коннект к базе, получение файла, его отдача (vs отдача напрямую Nginx-ом из FS)

В общем, метод имеет право на жизнь, наверняка успешно применяется (в определённых условиях), но с учётом:

должно быть взвешенное решение

и

revered:
Но есть маленькая проблема, сайт довольно крупный, планируеться большая посещаемости, и когда аватарок будет допустим 100.000, получаеться будет 400 папок. Что тоже уже много.

я бы не рекомендовал ТС-у использовать этот вариант.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
[Удален]
#32
ivan-lev:
я бы не рекомендовал ТС-у использовать этот вариант

А может у него свой дата-центр?

Переведя на наш колхозный сленг ::: идея хорошая и всё упираеццо только в бабло

А технический прогресс идёт нехилыми шагами

SeVlad
На сайте с 03.11.2008
Offline
1609
#33
Ayavryk:
Мне как раз сложно представить проект в котоором приходится заморачиваться хранением большого числа картинок и при этом он размещается на пятикопеечном шареде.

Да причём тут стоимость? Я вообще-то о разных настройках и ПО разных серверов. Отсюда - конкретные настройки (тех же прав доступа) под конкретную локацию. "Проблемы" при переносе, обеспечение безопасности и тп.

Ayavryk:
Те кто ратует за такой способ (они в меньшинстве), как правило работают или с Oracle или c MS SQL.

т.е. это при как правило след условиях: сервер - не апач\нгикс и "среда разработки" не ПХП ;) Ну говоря прямо - все эти плюсы могут быть только при МС-разработках (винда, до.нет, етс).

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий