Re[4]: Способ хранения файлов
От: · Великобритания  
Дата: 22.02.23 18:51
Оценка:
Здравствуйте, Baiker, Вы писали:

B>Потому что не всё то зелёное, что летит. ДАЛЕКО не всё, что придумывают офисные "джамшуты" надо бежать реализовывать (яркий пример — EF).


B>Поначалу кажется да — всё засунули в БД — моногамия и красота! Но когда начнётся наполнение БД, а ты (очевидно) продолжаешь развивать систему, ты очень быстро придёшь к ситуации,

Ну так это рефакторится же. Выгрузить картинки из базы в фс — небольшой таск на рефакторинг. Который надо делать только если надо.

B>Sharov>Почему нет, если, например, небольшие файлы 5-10мб типа картинок?


B>ТЕМ БОЛЕЕ картинки! (к примеру, картинки товаров) Сегодня ты наструячил мегабайтных 3Д картинок, а завтра манагер подходит: "Нам нужен мобильный вебсайт — чтобы все картинки были по 5К". И начинается!... Сначала картинки выгрузи, причём так, чтобы не похерить их ID, затем отдай дизайнеру, он их ужмёт, отдаст тебе, ты ЗАНОВО импортируешь картинки в базу или того хуже — будешь создавать ещё одно поле теперь уже для ужатых картинок, да ещё согласовывать, чтобы ужатая как-то соотносилась с неужатой... ой ё!

B>Т.е. буквально на ровном месте огребаешь кучу проблем (+ проблемы, которые я описал для vaa). Оно тебе надо?
Не понял чем это будет проще в случае "/base_pic_dir/"? Расшаришь папочку для дизайнера на проде? Чтобы он там сразу менял?
Или копировать туда-сюда будешь? А как потом мержить то, что наменял в течение недели дизайнер и что изменилось на проде? А ещё DR и горячие бэкапы?

B>Я почему так говорю — тоже как вы по-молодости вляпывался во всякие "инновации от M$". И повозившись с нехреновой такой "базой с картинками", плюнул и сделал всё на внешних файлах. В результате база — маленькая, легко и БЫСТРО бэкапится/сжимается, модифицировать её — вообще без проблем (хоть каждый день пересоздавай!), а файлы организовал независимым способом: каждый файл именуется GUID'ом, а затем применяется "партишенинг": первые две буквы имени являются именем подкаталога (от единого корневого), где файлы и лежат:

Тут появляются инфраструктурные проблемы как состояние базы синхронизировать с состоянием base_pic_dir.

B>Т.е. имеем распределённую систему файлов, чтобы не хранить миллиард фоток в одном каталоге.

B>Итого, чтобы мне перенести такую хренову тучу файлов в развёртываемую систему, мне достаточно из сархивировать и скопировать! Причём на любой носитель (не засирая системный с БД). Ну а в базе храним только имена конечных файлов, которые опять же легко переносятся, дополняются и т.п.
Недостаточно. А в БД можно _если надо_ настраивать чтобы табличка с файлами была на другом носителе.


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