|
|
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
maytonХитрый Tsyklop хочет получить сразу ответы - но их нет. Более того - он не хочет отвечать по нагрузке, размеру файлов и т.п. Это невежливо. Эта задача - суть матрица стратегий. Если ее нарисовать табличкой Хранение файлов в файловой системеХранение файлов в БДУдальная стоимость хранения 1ГбПропускная способность (мб/сек)Наличие hot backup (и здесь можно написать еще около 100 пунктов) то у нас - будет вектор параметров которые можно как-то сравнивать с задачей и что-то там решать на архитектурном уровне. не отвечаю ибо спрашиваю вообще, а не за конкретный проект. Размер файлов любой. И то если брать проект, то по началу нагрузки не будет ибо он будет развиваться, но потом возрастет. Это тоже надо учитывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2018, 17:01 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
За СУБД: 1. СУБД поддерживает логическую целостность данных + транзакции (начали добавлять 100500 файлов в транзакции, посередине произошла ошибка, с диска мусор удалять не нужно, СУБД сама rollback сделает) 2. Единый протокол на доступ к данным и файлам - например для нас это было критично. Есть СУБД Oracle в другом городе, до нее специально проброщен маршрут на порты SQL*NET через роутеры. Доступа к серверу по другим протоколам просто нет. 3. Единая настройка безопасность доступа к данным и к файлам (пользователи, пароли, роли СУБД) За хранение отдельно 1. Ниже стоимость хранения (СУБД удовольствие не бесплатное) 2. Потенциально достижимые более высокие скорости доступа к файлам, т.к. протоколы СУБД все же не достаточно оптимизированы на работу в этом режиме (например протоколы передача файлов на 10G Ethernet в Windows могут работать напрямую через DMA память одного компьютера - сетевая карта - память другого компьютера, СУБД разумеется так не умеют) 3. На начальном этапе разработки, при отсутвие квалифицированных разработчиков, это может оказаться более простым решением, чем работа с BLOB'ами Против хранения отдельно: 1. Выше стоимость администрирования. Выше вероятность логической ошибки в данных. Логическую целостность данных нужно поддерживать руками и затратой времени админа + каким-то специальным софтом (искать расхождения между ФС и СУБД. Потерянные/запорченные файлы, лишние файлы/мусор). AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2018, 17:19 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2018, 17:23 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevЗа СУБД: 1. СУБД поддерживает логическую целостность данных + транзакции (начали добавлять 100500 файлов в транзакции, посередине произошла ошибка, с диска мусор удалять не нужно, СУБД сама rollback сделает)Давайте поправлю: СУБД сама **за пару часов** rollback сделает Хранить файлы в базе можно себе позволить разве что в случае маленького приложения, с небольшим количеством негеораспределенных пользователей. Как только пользаков становится много получаем треш и угар: пока пользователь тянет файл он держит сессию в базе (ну есть варианты типа закачивать файл в память и отдавать, или во временную директорию, но зачем?), т.е. ресурсы базы используем крайне неоптимально что делать в случае гео-распределенных пользователей вообще непонятно (ну т.е. понятно что нужно городить колхоз, но зачем?) Leonid Kudryavtsev3. Единая настройка безопасность доступа к данным и к файлам (пользователи, пароли, роли СУБД) Вы, на мой взгляд, слишком увлеклись Кайтом , какая к черту безопасность? файлами владеет приложение и больше никто туда не суется, или вы по ftp файлы собрались расшаривать? Единое что-то означает единые ресурсы, а это гвоздь в гробу масштабирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2018, 18:01 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
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.) или на ваших файловых ресурсах веб-сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2018, 18:01 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Tsyklop, И всё же нет ответа на вопрос, так как нет требований Подойдёт любое решение из этих: - БД - FS - DFS - Cloud solution какие либо +/- и обсуждение их в целом не имеют смысла. Вот есть у меня такая ссылка может она поможет https://cloud.google.com/storage-options/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2018, 19:14 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Oracle dbfs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2018, 21:46 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
TsyklopРазмер файлов любой.аватарка 16х16 пикселей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 08:36 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Petro123аватарка 16х16 пикселей? дело юзера. Хочет такую - пущай. его дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 10:16 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
TsyklopPetro123аватарка 16х16 пикселей? дело юзера. Хочет такую - пущай. его дело. Нет. Ограничения всегда есть. Поэтому для аватарок храни в модели, а модель хибера в базе. И думать нефиг. Для документооборота, модели программ СЭД открой другой топик и не морочь голову людям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 11:32 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
maytonВобщем нужно беречь и ценить buffer-pool и исключать туда попадания блоков которые просто заполнены картинками или прочими файлами. nocache ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 11:55 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
казинакmaytonВобщем нужно беречь и ценить buffer-pool и исключать туда попадания блоков которые просто заполнены картинками или прочими файлами. nocache Depends on storage in row. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2018, 13:37 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Tsyklop..Но все же. всё же зависит от условий. например на серваках типа AS400 - вообще нет понятия ФАЙЛ или ФС от слова СОВСЕМ НЕТ. Сервер БД. Как хошь так и воспринимай... есть например всякие кластеры, автоматическое перераспределение данных, их зеркалирование и т.д.. есть собственно SQL или наоборот NoSQL бд - свои замороты. нагрузившись всем этим = железо, софт, перспективы, нагрузка, что пишем, для кого пишем и делается подобные решения. удачи вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 10:31 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
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 ( \ ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 11:22 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Kachalov...наверное... железка AS400. Ось OS400. В чём путаность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 11:41 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Андрей Панфиловпока пользователь тянет файл он держит сессию в базе "Держит сессию" - такая проблема мне вообще не понятна. СУБД для этого и созданы. Как только пользователь начинает работать, он что либо держит. Тут только одно решение - сослать всех пользователей на соловки. Нет пользователей - нет проблем ))) Андрей Панфиловт.е. ресурсы базы используем крайне неоптимально Да. Стоимость хранения выше. Вопрос только в бюджете. У нас файлы в системе биллинга хранятся, объем не знаю, подозреваю терабайты. Никого это не напрегает, даже админов ))), хотя они вечно на отсутствие места жалуются ))). Андрей Панфиловчто делать в случае гео-распределенных пользователей вообще непонятно Гео-распределенный, не гео-распределенный. Какая разница? Если есть нормальный канал связи. Кроме того, вендоры СУБД вполне в гео-распределение ударились. Буковка "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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:01 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevБуковка "g" на конце Oracle'а - grid.это точно ))) +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 12:32 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
kolobok0железка AS400. Ось OS400. В чём путаность? - железо про ФС ничего знать не должно, диски в AS/400 есть? а ФС это тема из ОС, в данном случае OS/400 (и, читая цитату, можно увидеть что представление ФС в традиционном *NIX виде, в это ОС есть) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 15:37 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВопрос только в бюджете. - вот за это не любят Java-программистов. Жалко что тень падает на всех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 15:40 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
KachalovLeonid KudryavtsevВопрос только в бюджете. - вот за это не любят Java-программистов. Жалко что тень падает на всех. А при чем тут вообще Java ? Есть сервер, куплен Oracle, ресурсы достаточные.... Вот нафига е....ть мозг себе, админам и начальству, пытаясь изобразить какой-то самопал на файлах, если все замечательно ложится в базу данных и никого не напрягает? Вопрос цены он относительный. И для разных проектов/ситуаций совершенно различный. Вот я в базе запросто могу 100500 записей в табличку заинсертить, а получить место на ФС - фиг Т.ч. если я пойду к начальству и скажу, мне надо 100 Gb места в базе - вопрос решится за 5 мин, админ просто посмотрит, есть оно или нет. А если захочу 100 Gb места в файловой системе - вопрос погрязнет в бюрократических процедурах на пару месяцев..... Дабы место на дисках (и бекапом) занимаются совершенно другие люди, которые за это могут чего-то захотеть ))) А уж каким образом к этим файлам на ФС мне открыть доступ (шара, ftp) - тут вообще будет тушите свет, т.к. еще и отдел безопасности может встрять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 15:56 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
А если не 100Гб, а 100Тб? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 17:07 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
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. как раз хватит ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 17:36 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Товарищ верно заметил надо учесть фактор бюрократии. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 18:48 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevесли я пойду к начальству и скажу, мне надо 100 Gb места в базе - вопрос решится за 5 мин, админ просто посмотрит, есть оно или нет.а потом окажется надо ещё 400Gb для бэкапа.... и начальство будет радоваться.... и для бэкапа надо время серверу.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 19:40 |
|
||
|
Хранение файлов в бд или в файловой системе?
|
|||
|---|---|---|---|
|
#18+
Время сервера - не очень понятно. Они вообще-то в online обычно бекапируются. Только изменение (redo log'и) p.s. посмотрел статистику 2.5 GB LOB'ов 1.5 GB прочих На резервные инстанцы и слепки (test), таблеспейс с LOB'ы не перетаскивают, там только чисто данные. p.p.s. это только одна из продакшен баз (но наверное самая важная), есть еще и парочка OeBS'ов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2018, 20:08 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39674919&tid=2121900]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 299ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...