Василий З.
9 повідомлень
#16 років тому
Доброго дня всем.
Грядет веб-проект, где одно из функциональных требований: работа с большим количеством графической информации (различных форматов, но в большинстве своем JPEG). Вопрос такой: каким образом хранить такую информацию? В виде блобов в СУБД? Или в файловой системе с хранением ссылок?

Спасибо
Алексей Б.
897 повідомлень
#16 років тому
Если их кол-во действительно большое, то лучше в файловой системе.
Сергей В.
244 повідомлення
#16 років тому
Причем с делением на папки
Василий З.
9 повідомлень
#16 років тому
2 lyoxa: Подозреваю, что их количество будет не просто большое. Огромное.
2 VistaSolutions: Спасибо
Альберт С.
27 повідомлень
#16 років тому
Конечно в файловой системе. Без вариантов.
Николай С.
710 повідомлень
#16 років тому
VistaSolutions, а какая выгода от разделения на папки?
Болатов А.
1090 повідомлень
#16 років тому
Организационная и по времени доступа.
Константин Т.
589 повідомлень
#16 років тому
Ещё один совет - вести какую-то базу метаданных, и сохранять эти метаданные рядом с графическими файлами, например в XML формате, не полагаться на метаданные, которые будут в базе.
Гость
22 повідомлення
#16 років тому
Pilat66, на чём основывается этот совет?
Болатов А.
1090 повідомлень
#16 років тому
Не полагаться -- это непонятно зачем сочинили.
Но смысл хранить метаданные в БД есть -- во-первых, не надо будет извлекать эти данные из самого файла, во-вторых, тогда можно будет делать различные выборки по различным атрибутам.
Вадим Т.
3240 повідомлень
#16 років тому
vasis, предлагаю все-таки использовать базу данных для хранения графики, в виде BLOB-ов. Но при этом графика будет отдаваться не из базы данных, а из кеша в файловой системе. То есть, пользователь делает запрос, если в кеше графика еть - отдается она, если нет - запускается скрипт, который берет элемент из базы данных, кладет его в кеш, и потом делается на него форвард.

1. По скорости будет тормозить только при мервом обращении к графическому элементу, потом будет идти быстрая работа с кешем.

2. Надежность. Хранение информации в файловой системе потенциально ненадежно. Усложняется логика бакапов. Намного усложняется менеджмент графики в файловой системе (с базой данных намного проще делать DML операции).

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

Конечно, как саму базу данных, так и схему данных, необходимо будет создавать и конфигурировать специальным образом, чтобы было оптимизировано для этого проекта. Только одно но. Это сложно, требуются глубокие фундаментальные знания, и опыт разработки таких проектов. Если такого опыта нет, лучше уж выберите примитивное решение для хранение графики в файловой системе.
Болатов А.
1090 повідомлень
#16 років тому
tvv, насчет 3. О какой нагрузке может идти речь?
Вадим Т.
3240 повідомлень
#16 років тому
Цитата ("alibek"):
tvv, насчет 3. О какой нагрузке может идти речь?

Например, когда будет от 300-500 реквестов в секунду и выше.
Андрей К.
79 повідомлень
#16 років тому
Надежность. Хранение информации в файловой системе потенциально ненадежно.
а mysql поддерживает хранение самой базы данных во всемирном эфире? или это надо oracle ставить?
Константин Т.
589 повідомлень
#16 років тому
Цитата ("grizzly"):
Pilat66, на чём основывается этот совет?


mysql-ные базы лично мне доверия не внушают. Я видел, как php-шники с ними работают - вероятность потерь 100%.
Ещё одна причина - маленькие файлы гораздо проще архивировать и восстанавливать, чем огромную базу данных. Это можно делать очень быстро и разными способами, вплоть до посылки писем по email.
Болатов А.
1090 повідомлень
#16 років тому
tvv, и что с того? Реквесты идут к веб-серверу, а мы говорим о производительности БД или файловой системы.
По твоей логике выходит, что динамический сайт производительнее статического, потому что динамический собирается из шаблонов БД, а статический из файлов.
Альберт С.
27 повідомлень
#16 років тому
Цитата:
Я видел, как php-шники с ними работают - вероятность потерь 100%


Обоснование будет? У меня под контролем работает на MySQL база регионального медстраха на несколько сотен тысяч человек. Около 500 дней аптайма. Бэкап (делается ежесуточный и еженедельный) ни разу не был востребован. Что я делаю не так?
Андрей К.
79 повідомлень
#16 років тому
TO4KA,
а чем ежесуточный файл бекапа отличается от еженедельного? а какая версия вашей mysql?
Сергей В.
244 повідомлення
#16 років тому
SolNikolay, вы представляете если в одной папке у вас будет более 10 000 файлов?
Константин Т.
589 повідомлень
#16 років тому
Цитата ("TO4KA"):
Цитата:
Я видел, как php-шники с ними работают - вероятность потерь 100%


Обоснование будет? У меня под контролем работает на MySQL база регионального медстраха на несколько сотен тысяч человек. Около 500 дней аптайма. Бэкап (делается ежесуточный и еженедельный) ни разу не был востребован. Что я делаю не так?


Сходу - то, что бэкап ни разу не проверялся, правильно? Может, его и восстановить нельзя? Частая ситуация.
Делать медстрах на mysql - это вообще преступление. Обосновывать не буду, это в суде объяснят при первом же спорном случае.

Далее, представьте, что у Вас не крохотная базка на 100 тысяч человек - размером в несколько мегабайт (ну пусть гигабайт , а монстр из картинок на терабайты. Как его бэкапить быстро?