powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Хранение файлов в бд или в файловой системе?
25 сообщений из 61, страница 2 из 3
Хранение файлов в бд или в файловой системе?
    #39674190
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonХитрый Tsyklop хочет получить сразу ответы - но их нет. Более того - он не хочет отвечать
по нагрузке, размеру файлов и т.п. Это невежливо.

Эта задача - суть матрица стратегий.

Если ее нарисовать табличкой

Хранение файлов в файловой системеХранение файлов в БДУдальная стоимость хранения 1ГбПропускная способность (мб/сек)Наличие hot backup (и здесь можно написать еще около 100 пунктов)

то у нас - будет вектор параметров которые можно как-то сравнивать с задачей и что-то
там решать на архитектурном уровне.

не отвечаю ибо спрашиваю вообще, а не за конкретный проект.
Размер файлов любой.

И то если брать проект, то по началу нагрузки не будет ибо он будет развиваться, но потом возрастет. Это тоже надо учитывать.
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674199
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За СУБД:
1. СУБД поддерживает логическую целостность данных + транзакции
(начали добавлять 100500 файлов в транзакции, посередине произошла ошибка, с диска мусор удалять не нужно, СУБД сама rollback сделает)
2. Единый протокол на доступ к данным и файлам - например для нас это было критично. Есть СУБД Oracle в другом городе, до нее специально проброщен маршрут на порты SQL*NET через роутеры. Доступа к серверу по другим протоколам просто нет.
3. Единая настройка безопасность доступа к данным и к файлам (пользователи, пароли, роли СУБД)

За хранение отдельно
1. Ниже стоимость хранения (СУБД удовольствие не бесплатное)
2. Потенциально достижимые более высокие скорости доступа к файлам, т.к. протоколы СУБД все же не достаточно оптимизированы на работу в этом режиме
(например протоколы передача файлов на 10G Ethernet в Windows могут работать напрямую через DMA память одного компьютера - сетевая карта - память другого компьютера, СУБД разумеется так не умеют)
3. На начальном этапе разработки, при отсутвие квалифицированных разработчиков, это может оказаться более простым решением, чем работа с BLOB'ами

Против хранения отдельно:
1. Выше стоимость администрирования. Выше вероятность логической ошибки в данных. Логическую целостность данных нужно поддерживать руками и затратой времени админа + каким-то специальным софтом (искать расхождения между ФС и СУБД. Потерянные/запорченные файлы, лишние файлы/мусор).

AFAIK
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674201
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev, Спасибо за ответ.
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674209
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevЗа СУБД:
1. СУБД поддерживает логическую целостность данных + транзакции
(начали добавлять 100500 файлов в транзакции, посередине произошла ошибка, с диска мусор удалять не нужно, СУБД сама rollback сделает)Давайте поправлю: СУБД сама **за пару часов** rollback сделает

Хранить файлы в базе можно себе позволить разве что в случае маленького приложения, с небольшим количеством негеораспределенных пользователей. Как только пользаков становится много получаем треш и угар:
пока пользователь тянет файл он держит сессию в базе (ну есть варианты типа закачивать файл в память и отдавать, или во временную директорию, но зачем?), т.е. ресурсы базы используем крайне неоптимально

что делать в случае гео-распределенных пользователей вообще непонятно (ну т.е. понятно что нужно городить колхоз, но зачем?)

Leonid Kudryavtsev3. Единая настройка безопасность доступа к данным и к файлам (пользователи, пароли, роли СУБД)
Вы, на мой взгляд, слишком увлеклись Кайтом , какая к черту безопасность? файлами владеет приложение и больше никто туда не суется, или вы по ftp файлы собрались расшаривать? Единое что-то означает единые ресурсы, а это гвоздь в гробу масштабирования.
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674211
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopне отвечаю ибо спрашиваю вообще, а не за конкретный проект.
Размер файлов любой.

И то если брать проект, то по началу нагрузки не будет ибо он будет развиваться, но потом возрастет. Это тоже надо учитывать.
Концептуально.

Любая реляционная БД (исторически) проектировалась как механизм обслуживающий
данные в таблицах в 1-2-3 НФ. И для того чтобы этот механизм работал эффективно
(buffer pool), надо чтобы атомы которые хранятся в таблицах были не очень большого
размера. 1-НФ кстати требует чтоб в ячейках лежали атомы. Можно-ли файл считать
атомом? Сложный вопрос. Я считаю что в общем случае нельзя. Если это текст или XML
документ - то его поля могут модифицироваться независимо. Тоесть поверх РМД у нас
есть еще другая модель внутри поля где мы также что-то модифицируем.
Налицо - отсутствие 1-НФ. А это ставит под вопрос вообще коцепцию. Зачем
мы берем реляционку если там все равно правила проектирования уже нарушены.

По лимитам и перформансу.

В БД Oracle к примеру существуют серъезные ограничения на длину строки.
Не более 4К. Эти ограничения как-бы подталкивают разработчика к обдумывание
типов данных перед тем как создать таблицу. Вообще очень длинные строки плохо
обслуживаются в РМД. Даже элементарный LIKE или сортировка или comparison
по большим строкам могут серъезно подрубить перформанс. И пока вы будете
копаться в оптимизаторе или еще где-то ваш владелец ПО и пользователи будут
терпеть непонятные падения перформанса на "пустом" месте. И здесь любой
DBA вам скажет что первым делом для устранения этой проблемы надо устранить
сами BLOBS. Иначе перформанса не будет со всеми вытекающими. Потеря репутации.
Недовольство заказчика.

Вобщем нужно беречь и ценить buffer-pool и исключать туда попадания блоков
которые просто заполнены картинками или прочими файлами.

Поэтому если вы решили перенести файлы (объекты не имеющие априори ограничений)
в вашу БД - вы должны понимать что наряду с быстрой SQL-машиной и SQL-сетевым
протоколом который оптимизирован на маленькие строчки (атомы в рамках модели)
вы "включите в игру" огромные длинные бинарные объекты которые участвуют в
буферном кешировании (store blob in row), либо не участвуют но при этом
поиск по ним замедлен из-за того что нет физической консолидации прочитанного
блока с нужными вам данными и собственно файла или BLOB. Архитектурно
во многих DBMS BLOB реализован как аттачмент. Он хранится отдельно от таблички.
JDBC-API видит его как InputStream. К сожалению многие ORM средства создают
дополнительную услугу. (Медвежью услугу). Они презентуют BLOB как строковую
переменную. Создаётся иллюзия что всё нормально. Но на самом деле на уровне
Fetch курсора потребуется сборка его частей из разных физических сегментов.
Здесь нужно думать о lazy-операциях или лучше переписать логику вообще.
По этому таблички с BLOB - медленные по определению. Если вам нужен
перформанс - BLOB - не ваш друг. Ищите альтернатив.

Вобщем лучше в табличку вынести ID файла. Или путь файла. Вариантов у разработчика
всегда много. И переписать приложение таким образом чтобы реляционные данные лежали
в базе а аттачмент (картика или еще что-то) лежали на файловых ресурсах (Amazon e.t.c.)
или на ваших файловых ресурсах веб-сервера.
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674225
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,

И всё же нет ответа на вопрос, так как нет требований

Подойдёт любое решение из этих:

- БД
- FS
- DFS
- Cloud solution

какие либо +/- и обсуждение их в целом не имеют смысла. Вот есть у меня такая ссылка может она поможет https://cloud.google.com/storage-options/
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674253
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle dbfs
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674329
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopРазмер файлов любой.аватарка 16х16 пикселей?
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674392
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123аватарка 16х16 пикселей?
дело юзера. Хочет такую - пущай. его дело.
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674414
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopPetro123аватарка 16х16 пикселей?
дело юзера. Хочет такую - пущай. его дело.
Нет. Ограничения всегда есть.
Поэтому для аватарок храни в модели, а модель хибера в базе.
И думать нефиг.
Для документооборота, модели программ СЭД открой другой топик и не морочь голову людям.
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674426
казинак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВобщем нужно беречь и ценить buffer-pool и исключать туда попадания блоков
которые просто заполнены картинками или прочими файлами.
nocache
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674474
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
казинакmaytonВобщем нужно беречь и ценить buffer-pool и исключать туда попадания блоков
которые просто заполнены картинками или прочими файлами.
nocache
Depends on storage in row.
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674859
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop..Но все же.

всё же зависит от условий.
например на серваках типа AS400 - вообще нет понятия ФАЙЛ или ФС от слова СОВСЕМ НЕТ. Сервер БД. Как хошь так и воспринимай...
есть например всякие кластеры, автоматическое перераспределение данных, их зеркалирование и т.д..
есть собственно SQL или наоборот NoSQL бд - свои замороты.


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

удачи вам
(круглый)
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674901
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0например на серваках типа AS400 - вообще нет понятия ФАЙЛ или ФС от слова СОВСЕМ НЕТ.
- наверное перепутали AS/400 и OS/400?
OS/400 has multiple file systems. To help integrate these multiple file systems with the PC environment, the Integrated File System, or IFS, was created. The Integrated File System is a part of OS/400 that lets you support stream input/output and storage management in a way similar to personal computer and UNIX operating systems, while providing you with an integrating structure over all information stored in the AS/400. It allows for UNIX-style directories and file names. It has a root / directory and multiple levels of directories. It is identical in architecture to a PC file system except that it uses the forward slash as a delimiter ( / ) instead of the backslash ( \ )
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674919
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov...наверное...

железка AS400. Ось OS400.

В чём путаность?
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674936
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловпока пользователь тянет файл он держит сессию в базе

"Держит сессию" - такая проблема мне вообще не понятна. СУБД для этого и созданы. Как только пользователь начинает работать, он что либо держит. Тут только одно решение - сослать всех пользователей на соловки. Нет пользователей - нет проблем )))

Андрей Панфиловт.е. ресурсы базы используем крайне неоптимально

Да. Стоимость хранения выше. Вопрос только в бюджете.

У нас файлы в системе биллинга хранятся, объем не знаю, подозреваю терабайты. Никого это не напрегает, даже админов ))), хотя они вечно на отсутствие места жалуются ))).

Андрей Панфиловчто делать в случае гео-распределенных пользователей вообще непонятно

Гео-распределенный, не гео-распределенный. Какая разница? Если есть нормальный канал связи.

Кроме того, вендоры СУБД вполне в гео-распределение ударились. Буковка "g" на конце Oracle'а - grid.

Андрей Панфиловили вы по ftp файлы собрались расшаривать?

В корпоративной сети - просто Windows шара ))) Какой такой ftp ? ))) В Энтерпрайз юзеры таких слов даже не знают )))

В ЦЕЛОМ:

Вопрос исключительно бюджета и функциональности. Хочется удобств "из коробки" - нужно платить. Хочется freeware - нужны прямые руки, умеющие владеть напильником.

Например ( http://www.kamis.ru/), хоть и не богатые пользователи, но сделав хранение в базе, от хранения на диске просто отказались. Т.к. переодически поднимаемые тучки стружки от напильника - сильно мешали жить. А при over 100 установок у заказчиков, разбираться почему в ФС какой-то мусор и откуда он взялся, нафиг не нужно.
(файлы - изображения высокого разрешения /например Музеи Кремля/, 10-50 Mb JTIP /Jpeg Tailed Piramidales/)

https://collectiononline.kreml.ru/iss2/items?info=63453&sa-fund=2766593
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39674955
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevБуковка "g" на конце Oracle'а - grid.это точно ))) +1
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39675119
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0железка AS400. Ось OS400.
В чём путаность?
- железо про ФС ничего знать не должно, диски в AS/400 есть? а ФС это тема из ОС, в данном случае OS/400 (и, читая цитату, можно увидеть что представление ФС в традиционном *NIX виде, в это ОС есть)
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39675120
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevВопрос только в бюджете.
- вот за это не любят Java-программистов. Жалко что тень падает на всех.
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39675128
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KachalovLeonid KudryavtsevВопрос только в бюджете.
- вот за это не любят Java-программистов. Жалко что тень падает на всех.
А при чем тут вообще Java ?

Есть сервер, куплен Oracle, ресурсы достаточные.... Вот нафига е....ть мозг себе, админам и начальству, пытаясь изобразить какой-то самопал на файлах, если все замечательно ложится в базу данных и никого не напрягает?

Вопрос цены он относительный. И для разных проектов/ситуаций совершенно различный.

Вот я в базе запросто могу 100500 записей в табличку заинсертить, а получить место на ФС - фиг Т.ч. если я пойду к начальству и скажу, мне надо 100 Gb места в базе - вопрос решится за 5 мин, админ просто посмотрит, есть оно или нет. А если захочу 100 Gb места в файловой системе - вопрос погрязнет в бюрократических процедурах на пару месяцев..... Дабы место на дисках (и бекапом) занимаются совершенно другие люди, которые за это могут чего-то захотеть ))) А уж каким образом к этим файлам на ФС мне открыть доступ (шара, ftp) - тут вообще будет тушите свет, т.к. еще и отдел безопасности может встрять.
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39675177
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если не 100Гб, а 100Тб?
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39675197
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettА если не 100Гб, а 100Тб?
ну так мы приходим к тому, что если бы у бабушки.... и далее по заветам нашего президента )))

Тогда Oracle ExaData. Соберетесь покупать, я Вам продам ))) по крайне мере себе старость обеспечу )))

Как я понимаю, Exadata Database Machine X3-2 Full Rack включает 14 Storage Server, каждый по 12 дисков (168 дисков всего), если по 600 Gb .

14 x 12 x 600 = 100 800 Gb.

как раз хватит )))
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39675229
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищ верно заметил надо учесть фактор бюрократии. :)
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39675251
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevесли я пойду к начальству и скажу, мне надо 100 Gb места в базе - вопрос решится за 5 мин, админ просто посмотрит, есть оно или нет.а потом окажется надо ещё 400Gb для бэкапа.... и начальство будет радоваться.... и для бэкапа надо время серверу....
...
Рейтинг: 0 / 0
Хранение файлов в бд или в файловой системе?
    #39675255
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Время сервера - не очень понятно. Они вообще-то в online обычно бекапируются. Только изменение (redo log'и)

p.s.
посмотрел статистику
2.5 GB LOB'ов
1.5 GB прочих
На резервные инстанцы и слепки (test), таблеспейс с LOB'ы не перетаскивают, там только чисто данные.
p.p.s.
это только одна из продакшен баз (но наверное самая важная), есть еще и парочка OeBS'ов
...
Рейтинг: 0 / 0
25 сообщений из 61, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Хранение файлов в бд или в файловой системе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]