Как файлы хранить в БД

Главные вкладки

Аватар пользователя Маским Н Маским Н 3 апреля 2007 в 21:38

При загрузке файлов пользователя, Друпал сохраняет их в файловой системе сервера. Как сделать так чтобы файлы загружались в БД (ну и извлекались оттуда соответственно).
Еще, не слишком ли это ресурсоемкая операция ???

Комментарии

Аватар пользователя KCEOH KCEOH 4 апреля 2007 в 2:41

Операция не то, чтобы особо ресурсоемкая, просто не нужная.
1) БД предназначались совсем не для хранения файлов (стандартные), поэтому оптимизации нет.
2) Намного быстрее выйдет операция когда сервер отдает файл с жесткого, нежели вытаскивает его из БД
3) В БД файлы занимают больше места, чем на жестком. Тут на 100% не уверен, но несколько раз сталкивался.

Вывод - однозначно не стоит. Хотя, если БД какая-то особенная (то есть не MySQL, postgreSQL) - можно попробовать. Wink

Аватар пользователя Маским Н Маским Н 4 апреля 2007 в 16:07

Просто есть много-много дискового места, и там стоит БД.
Но хостин к этому месту невозможен (причины) зато доступ из сети к БД пожалуйста.
Да и если все в БД хранить, то легко переносить сайты (туда сюда).

Вообще есть идея как хранить в БД «все» что отражает индивидуальность сайта (шаблоны, модули, локализации, навороты) а один двтижёк (Друпал) все бы это обслуживал.

Аватар пользователя KCEOH KCEOH 4 апреля 2007 в 18:36

Ага, запихиваем в БД php код, потом как надо - достаем его, исполняем ? Biggrin
Идея бредовая Wink Хотя все гениальное порой вначале было бредом.

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 4 апреля 2007 в 18:42

Ну да, размещаем Drupal в аккаунтах google-почты (gmail.com). Там много места дают и бесплатно. А что, плагин ведь есть, который почтовый ящик gmail в дополнительный диск превращает.


Я ставлю строчку "php_value error_reporting 7" в файл .htaccess, а вы? Smile Полный русский перевод Drupal 5.x и еще некоторых модулей.

Аватар пользователя PVasili PVasili 4 апреля 2007 в 21:55

Воруют...(с) известно кто Smile
Идея применима только в очень узком диапозоне,а так слишком много посредников, отсюда и большая стоимость(нагрузка или время сервера).
гогля не зря все в плоских файлах хранит.
======================================================
[url=http://wiki.drupal.ru]Документация[/url],[url=http://wiki.drupal.ru/doc/poleznye_ssylki_dlya_dizainerov]Дизайн[/url],[url=http://wiki.drupal.ru/doc/gotovye_perevody]Переводы[/url]

Аватар пользователя PVasili PVasili 4 апреля 2007 в 22:05

Грустно, когда не воруют(не интересно) или нечего воровать(исписался) Smile
======================================================
[url=http://wiki.drupal.ru]Документация[/url],[url=http://wiki.drupal.ru/doc/poleznye_ssylki_dlya_dizainerov]Дизайн[/url],[url=http://wiki.drupal.ru/doc/gotovye_perevody]Переводы[/url]

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 4 апреля 2007 в 22:09

И в базу складывать. "Иголка в яйце. Яйцо в утке. Утка в..." Smile

Вообще есть идея как хранить в БД «все» что отражает индивидуальность сайта (шаблоны, модули, локализации, навороты) а один двтижёк (Друпал) все бы это обслуживал.
Насчет "один движок" - это мультисайтинг, который Drupal умеет. Вся "индивидуальность" собирается при этом в каталоге sites/имясайта, который не так уж и сложно переносить.


Я ставлю строчку "php_value error_reporting 7" в файл .htaccess, а вы? Smile Полный русский перевод Drupal 5.x и еще некоторых модулей.

Аватар пользователя Маским Н Маским Н 9 апреля 2007 в 19:43

Мне пока нужно чтобы все информация заносимая пользователем через сайт хранилась в БД.
Пока только текст помещается в БД.
Как сделать так чтобы файлы и картинки, загружаемые пользователем, хранились в БД ???
Помогите я пока не представляю, как это сделать.

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 11 апреля 2007 в 16:41

Насколько понимаю, для этого СУБД должна поддерживать тип BLOB (Binary Large Object) - Двоичный большой объект. Не уверен, что MySQL это может.


Поиск по русским сайтам о Drupal Полный русский перевод Drupal 5.x и модулей: раз и два.

Аватар пользователя Dan Dan 11 апреля 2007 в 21:44

Может. Drupal их активно юзает, например в таблице locales_source поле source имеет тип blob.
Чтобы хранить файлы в БД, думю надо переписать file API Drupal. Может есть и проще решение.

Аватар пользователя Маским Н Маским Н 12 апреля 2007 в 12:28

А модуля нет подобного ???
Или тогда где находится это file API Drupal ???

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

Аватар пользователя PVasili PVasili 12 апреля 2007 в 12:54

Доступ не может быть быстрее, чем к файловой системе по определению(если только db не держит огромный кэш в памяти). Или SQL сам является частью системы.
А тут вспоминается старая реприза: 'достаёт кошёлку, открывает кошёлку, достает сумочку, закрывает кошёлку открывает сумочку достает кошелек закрывает сумочку ....'
======================================================
[url=http://wiki.drupal.ru]Документация[/url],[url=http://wiki.drupal.ru/doc/poleznye_ssylki_dlya_dizainerov]Дизайн[/url],[url=http://wiki.drupal.ru/doc/gotovye_perevody]Переводы[/url]

Аватар пользователя Dan Dan 12 апреля 2007 в 12:58

> Или тогда где находится это file API Drupal ???
includes/file.inc
api.drupal.org

> Вообще я тоже склоняюсь что файловые системы умрут, все и вся будут обращаться и хранить в БД.
Любая файловая система является базой данных, только очень ограниченой. Если посмотреть на развитие ФС, то можно увидеть, что они всё больше становятся похожи на БД.

Аватар пользователя Маским Н Маским Н 13 апреля 2007 в 11:12

««Доступ не может быть быстрее, чем к файловой системе по определению.»» ---

А если БД установлена прямо на ЖД минуя ФС. То доступ может быть быстрее ?!

««(если только db не держит огромный кэш в памяти). Или SQL сам является частью системы.»» ---

В Cache они пишут что «не побайтная, а побитная оптимизация». И SQL там вроде как «фасад» то есть при получении запроса SQL, БД раскраивает запрос в свой «язык, алгоритм, программу», оптимизирует, кэширует и проч. SQL нужен чтобы донести задание, а далее БД не по SQLю живет. Вообще к Cache можно обратится «очень по разному» и SQL, как они говорят «только один ИЗ способов».
Все это общее мое рассуждение, за конкретными вещами обращайтесь к документации.

««> Или тогда где находится это file API Drupal ???
includes/file.inc
api.drupal.org
»» ---

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

Аватар пользователя Ромка Ромка 13 апреля 2007 в 12:38

А если БД установлена прямо на ЖД минуя ФС. То доступ может быть быстрее ?!

Вообще-то база данных это тоже файл(ы) лежащий на жестком диске и установить БД минуя ФС невозможно. Почитай эту ссылку.

Аватар пользователя Маским Н Маским Н 13 апреля 2007 в 16:45

я же писал что это только мои домыслы.
но где то слышал что может.

А вот гибрид ФС и БД есть (вернее был) когдато у Sun.
Там был прямой доступ к полям(текстовым) в файле.