Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранение больших файлов xml в БД / 25 сообщений из 30, страница 1 из 2
12.08.2021, 18:37
    #40090394
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Необходимо хранить большие по объему xml файлы. Но хранить в таблицах считаю неправильным, на файлов диске вроде тоже. Посмотрела из встроенных систем хранения данные в MSSQL Server предлагается: FILESTREAM, FileTable и удаленное хранилище больших двоичных объектов. Статью Сравнение параметров для хранения больших двоичных объектов Но все как-то куцо написано. Хотелось бы плюсы и минусы каждой технологии. Сейчас используется MSSQL Server 2019.
...
Рейтинг: 0 / 0
12.08.2021, 19:52
    #40090408
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Разжевать и покормить с ложечки?

Огласите ваши представления о "православном" хранении.
...
Рейтинг: 0 / 0
12.08.2021, 23:28
    #40090450
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Hel975,

файлы обычно хранят в папках, а не в базе данных. Более того, NTFS и есть база данных.
...
Рейтинг: 0 / 0
13.08.2021, 00:16
    #40090455
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
aleks222
Разжевать и покормить с ложечки?

Огласите ваши представления о "православном" хранении.
на бобинах
...
Рейтинг: 0 / 0
13.08.2021, 10:36
    #40090483
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Владислав Колосов
Hel975,

файлы обычно хранят в папках, а не в базе данных. Более того, NTFS и есть база данных.

Одно время работал с системой (лет 15 назад) , в которой все документы типа WORD,EXCEL хранились в базе, в бинарных полях.
Нормально!
Была сделана грамотная система ввода-вывода и никаких проблем.

Как и где хранить - пофиг, если это не оскорбляет ваших религиозных чувств.
...
Рейтинг: 0 / 0
13.08.2021, 10:42
    #40090489
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
SQL2008,

а смысл в чём такого хранения?
...
Рейтинг: 0 / 0
13.08.2021, 11:51
    #40090516
sergeyns
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Что значит большие? Каждый по десятки гигов? Сколько всего? Если у вас в итоге счет на ПТ, то, наверно да, в базу не надо ))

Например Filenet от IBM в некоторых случаях рекомендует хранить файлы в блобах в БД (хотя в норме предполагает таки хранения на дисках).
...
Рейтинг: 0 / 0
13.08.2021, 11:55
    #40090520
sergeyns
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Владислав Колосов
SQL2008,

а смысл в чём такого хранения?

у каждого свои погремушки )) Например, админы шаловливыми ручками не залезут в файлике на диске))) Проще сделать шифрование.
А "просто" положить файлы на диск - 90% разработчиков при такой реализации забывают про ограничения файловой системы ))) Хотя это было более актуально в FAT, в NTFS ограничения слабее)), но все равно при сотнях тысяч документов в одной папке начинаются тормоза.. Значит нужно создавать дерево папок.. и тут эти 90% задают вопрос "в чём смысл такого" )))
...
Рейтинг: 0 / 0
13.08.2021, 12:06
    #40090527
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
sergeyns,

да, по-моему, не рекомендовано больше 10000 файлов на папку для NTFS.
...
Рейтинг: 0 / 0
13.08.2021, 14:01
    #40090562
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
sergeyns
о десятки гигов? Сколько всего? Если у вас в итоге счет на ПТ, то, наверно да, в базу не надо ))

Например Filenet от IBM в некоторых случаях рекомендует хран


Пару гиг - это исключение. Ежедневно приходит некоторое кол-во файлов, сами размеры не очень большие, но за год таких файлов может быть несколько миллионов и их надо хранить несколько лет в том виде, в котором пришли и как в данные в бд.
...
Рейтинг: 0 / 0
13.08.2021, 15:09
    #40090574
sergeyns
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Hel975
sergeyns
о десятки гигов? Сколько всего? Если у вас в итоге счет на ПТ, то, наверно да, в базу не надо ))

Например Filenet от IBM в некоторых случаях рекомендует хран


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

Ну если всё это влезет на "ОБЫЧНЫЙ" диск и нет особых требований по отказоустойчивости, секретности, правам доступа, аудиту и тд тп, то кладите на диск (например на каждый день или час в году - своя папка) и не парьтесь. Это будет самое простое и вполне рабочее.
...
Рейтинг: 0 / 0
13.08.2021, 15:15
    #40090576
sergeyns
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
[quot sergeyns#22359159]
Hel975
пропущено...

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


Кстати, жесткие требования к отказоустойчивости - это один из кейсов когда можно класть файлы в БД. Ибо пока файл не запишется - транзакция не закончена. А если писать в файл - то это начинается трудный выбор между синхронным и асинхронным (придется обеспечивать "транзакционность" самому) + обычная запись в файл не гарантирует файла на диске (типа питание вырубилось в момент когда вроде бы ваше save_to_xml отработало, а вот кэш диска - на самом деле нет)
...
Рейтинг: 0 / 0
13.08.2021, 16:24
    #40090594
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Hel975,

если вы работаете с таком объемом данных, то есть смысл подумать о специализированном файловом сервере, а не пользоваться суррогатами.
...
Рейтинг: 0 / 0
13.08.2021, 16:55
    #40090604
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Владислав Колосов,

Я и думала, чем лучше воспользоваться FileTable или удаленным хранилищем больших двоичных объектов (RBS). Но т.к. ни с тем, ни с другим не работала, то решила спросить про подводные камни и проблемах в эксплуатации. А в ответ - закидали помидорами.
...
Рейтинг: 0 / 0
13.08.2021, 17:25
    #40090607
Synoptic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Hel975, а вариант хранить не файлы, а данные из XML, не вариант?
И если потребуется данные извлечь, просто делаем обратное преобразование.
...
Рейтинг: 0 / 0
13.08.2021, 17:34
    #40090613
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Synoptic
Hel975, а вариант хранить не файлы, а данные из XML, не вариант?
И если потребуется данные извлечь, просто делаем обратное преобразование.
завтра довавят в хмл новый узел или удалят и кирдык твоим данным
...
Рейтинг: 0 / 0
13.08.2021, 17:36
    #40090614
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Владислав Колосов
SQL2008,

а смысл в чём такого хранения?

Там было приложение из которого сразу открывались документы, правились и сохранялись обратно.
В чем был особый смысл не скажу )
...
Рейтинг: 0 / 0
13.08.2021, 17:50
    #40090619
Synoptic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Relic Hunter
завтра довавят в хмл новый узел или удалят и кирдык твоим данным
Ну если получение данных это не манна небесная, а всё же управляемый процесс, то такого не будет. XML прекрасно ложится в реляционную БД. Ну да, придётся дописать импорт/экспорт, возможно структуру БД. Но по мне так это более правильно, чем хранить миллиард файлов. ИМХО, конечно.
...
Рейтинг: 0 / 0
13.08.2021, 17:54
    #40090621
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Synoptic,

Данные из xml тоже будут храниться в таблицах. Весь смысл в том, чтобы еще и хранить сами оригинальные пришедшие файлы. Думаю, что так же должен быть запрет к редактированию этих данных. Понятно, что от админов ничего не скроешь, но у большинства пользователей не должно быть доступа к файлам.
...
Рейтинг: 0 / 0
13.08.2021, 18:59
    #40090637
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Synoptic
Relic Hunter
завтра довавят в хмл новый узел или удалят и кирдык твоим данным
Ну если получение данных это не манна небесная, а всё же управляемый процесс, то такого не будет. XML прекрасно ложится в реляционную БД. Ну да, придётся дописать импорт/экспорт, возможно структуру БД. Но по мне так это более правильно, чем хранить миллиард файлов. ИМХО, конечно.
Файл, во первых, может быть битый, который не распарсить.
Во вторых, структуры данных за много лет и за десятки-сотни изменений могут так преобразиться, что сделать реверс-инжениринг пришедших данных будет очень сложно.

ИМХО в реально используемой системе хранить в неизменном виде то, что пришло, нужно обязательно.


Hel975
Владислав Колосов,

Я и думала, чем лучше воспользоваться FileTable или удаленным хранилищем больших двоичных объектов (RBS). Но т.к. ни с тем, ни с другим не работала, то решила спросить про подводные камни и проблемах в эксплуатации. А в ответ - закидали помидорами.
Ну, люди просто о деталях задачи расспрашивают.

1. Если вы парсите данные в БД, и файлы вам нужны для фиксации исходников, вы их не будете обычно использовать системой после импорта, то лучше вообще с сиквелом файлы не завязывать, зачем это нужно?
Храните файлы в ФС, а в сиквеле ссылки. Притом ФС может быть какой угодно, без ограничений.
Усложнение ради красоты и ради "попробовать новую фичу" есть признак кривой архитектуры, и джуниор-архитектора.

2. Если вы будете часто использовать файлы внешними приложениями, и контролировать сиквелом, то как вариант можно рассмотреть FileTable.

3. FILESTREAM вообще имеет очень узкое применение - по сути, активное использование контента файлов сиквелом, и больше ничего.
...
Рейтинг: 0 / 0
13.08.2021, 19:13
    #40090644
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Hel975,

храню все пришедшие xml в поле типа varchar(max) но прогоняю после разбора через функцию compress() (появилась в 2016)
остается максимум 7-10% очень хорошее сжатие. пробовал хранить с типом xml - sql в этом случае уменьшает размер до %50-60 от исходного.
был вариант хранить в varchar(max) в отдельном разделе со сжатием, места меньше чем xml, но значительно хуже чем жмет функция.
вариант с xml в отдельном разделе со сжатием экономии не дает.

один минус - в xml больше 2 гиг не влазит.
и учтите, что больше 1,6 гига из xml практически невозможно конвертнуть в nvarchar(max), а сразу в varchar(max) может не получится.

хочу перейти на json, только на одних тэгах можно сильно сэкономить.

с другими вариантами не пробовал.
...
Рейтинг: 0 / 0
13.08.2021, 19:17
    #40090647
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Filetable - это гаджет для SOHO баз, никак не промышленный mainstream. Не советую пользоваться при таких объёмах.
...
Рейтинг: 0 / 0
13.08.2021, 20:01
    #40090659
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Владислав Колосов
Filetable - это гаджет для SOHO баз, никак не промышленный mainstream. Не советую пользоваться при таких объёмах.

FileTable хранят файлы в папках NTFS.
Ты знаешь файловую систему круче и "промышленнее"?

ЗЫ. А еще они могут использовать сжатие NTFS. На XML-файлах это, минимум, 50% экономии.
...
Рейтинг: 0 / 0
14.08.2021, 02:02
    #40090690
Massa52
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
Hel975,
У нас все складывается в архивную папку архиватором 7z (компануя по месяцам), если распарсилось.
То что не распарсилось, тоже в 7z, но Reject папку.
...
Рейтинг: 0 / 0
14.08.2021, 14:45
    #40090740
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение больших файлов xml в БД
aleks222,

не все так просто, это не папки, а сетевые шары. И работает это крайне медленно в некоторых случаях.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранение больших файлов xml в БД / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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