Андреев Антон

85
Рейтинг

tohandr
Антон Андреев



  •   Регистрация: 10.07.2009 (14 лет назад)

  •   Был(а) на сайте: 26.04.2024

Подписчики 1

Группы

Профессиональный разработчик

Рейтинг 85

Организация файлового хранилища на базе MS SQL Server с доступом из 1С

Инструменты и обработки Программист Платформа 1С v8.3 Windows Абонемент ($m) Архив с данными Инструментарий разработчика

Пример реализации хранения файлов в базе MS SQL Server с использованием различных технологий. Подробно рассмотрен потоковый доступ к файлам с использованием технологии FileStream.

1 стартмани

27.07.2016    36380    49    tohandr    37       

86

Комментарии

UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#29 22.10.19 13:38
(28)
Цитата
щё параметры? придется переписывать com-объект?
Да, потребуется модификация
UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#27 18.10.19 15:03
(26) Что подразумевается под ссылкой?
Можно ли получить файлы, присоединенные в одной ИБ, в другой ИБ?
Да, можно. Надо получить от базы-источника Ид файла и по нему уже стандартным методом получить файл.
UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#25 11.10.19 16:49
(24)
1) В файле внешняя компонента для работы с FileStream и внешняя обработка 1С, в которой реализованы методы для работы с FileStream.
2) Добавить внешнюю обработку в конфигурацию и реализовать вызов методов данной обработки для помещения/получения файлов.
UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#15 29.07.16 22:06
(11) marat_n,
1) Между 1С и MS хитрое соглашение, но на внешние базы MS SQL оно, на мой взгляд, не распространяется. В точки зрения MS с базой взаимодействует один пользователь.
2) Возможно создать нужные таблицы непосредственно в базе 1С. Могу ошибаться, но вроде непосредственно работа с таблицами 1С считается нарушением лиц. соглашения 1С, создание отдельных таблиц и работа с ними - нет. На работе это никак не сказывается.
3) Как уже говорили, возможен бесплатный SQL Express.
UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#14 29.07.16 22:00
(12) Silenser,
Хранение файлов в одной папке - это недостаток FileStream. Где-то на msdn встречал цифру в 300 000 файлов, после которой начинаются подтормаживания. Собственно Microsoft и дает несколько рекомендаций при использовании томов хранилища FileStream, чтоб минимизировать эти подтормаживания https://msdn.microsoft.com/ru-ru/library/cc645923.aspx
Цитата

Отключите короткие имена файлов на компьютерах с FILESTREAM. Короткие имена файлов создаются гораздо дольше. Отключить короткие имена файлов можно с помощью программы Windows fsutil.
Регулярно выполняйте дефрагментацию на компьютерах с FILESTREAM.
Используйте файловую систему NTFS с кластерами по 64 килобайт. На сжатых томах должна быть файловая система NTFS с кластерами по 4 килобайта.
Отключите индексирование на томах FILESTREAM и установите параметр disablelastaccess. Для этого воспользуйтесь программой fsutil Windows.
Отключите антивирусное сканирование на томах FILESTREAM, если оно не является необходимым. Если антивирусное сканирование необходимо, не настраивайте политики автоматического удаления зараженных файлов.

Цитата
Так же не совсем понятно из описания технологии Filestream, насколько система будет устойчива при одновременном доступе к одному и тому же файлу. Не будет ли каких-либо подводных камней.
К сожалению, полнофункциональное нагрузочное тестирование провести пока не удалось.
В описании сказано, что возможны две одновременных транзакции на чтение https://msdn.microsoft.com/ru-ru/library/gg471497(v=sql.110).aspx#dual
UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#9 29.07.16 11:58
(8) Makushimo,
Защита от несанкционированного доступа - это не единственное преимущество.
Доступ к файлам правами доступа ОС можно настроить какой угодно. Но полный доступ в любом случае будет у пользователя сервера 1С и админов.
И тут уже вмешивается человеческий фактор: у админа рука дрогнет и случайно удалит какую-нибудь папку или горе-программист напишет УдалитьФайлы() без указания конкретного файла. Случаев может быть множество, они весьма редки, но если в один прекрасный день пользователь не может найти очень важного файла, т.к. он физически отсутствует на диске - отношение к этим случайностям резко меняется. Самое плохое, что при хранении файла на диске, в случае его "случайного" удаления - понять, как это произошло и кто виноват, чаще всего, невозможно.
При хранении файлов в базе риск "случайного" удаления резко снижается.

Есть и другие достоинства:
- транзакционный доступ к файлам,
- бэкап средствами MS SQL Server.

Если описать кратко - существенно повышается надежность хранения.
UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#6 29.07.16 10:45
(5) Makushimo,
Не совсем...
Если говорить только про скорость доступа, то наиболее быстрый способ для больших файлов - хранение файлов на диске. Минимум посредников, наиболее низкоуровневный из доступных из 1С способ доступа. Используется апи файловой системы
При потоковом доступе FileStream скорость доступа снижается, т.к. появляется посредник в виде MS SQL, увеличиваются накладные расходы, но непосредственно запись и чтение файлов на диск также осуществляются, фактически, теми же апи файловой системы, используется системный кэш Windows. При этом повышается надежность хранения - файл записывается в транзакции, никто не имеет непосредственного доступа к файлам.
При хранении больших файлов непосредственно в базе, скорость будет наиболее низкой - накладные расходы наиболее высокими. Файлы будут полностью помещаться в память MS SQL Server и 1С Предприятия, т.е. если одновременно 100 пользователей запросят файлы по 10 Мб, то в памяти окажется 1 Гб абсолютно ненужного для работы MS SQL Server и 1С Предприятия мусора, что в итоге может сказаться на быстродействии всей системы.
UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#4 28.07.16 19:17
Задача была вполне конкретная - сделать файловое хранилище во внешней базе. Хранение файлов на диске или в базе 1С заказчика не устраивало.
Размер файлов от нескольких килобайт до десятков мегабайт.
UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#2 28.07.16 14:13
Преимущество чего над чем?
- Хранение файлов в базе по сравнению с файлами на диске - повышается надежность.
- Хранение во внешней базе, а не в 1С - поможет существенно сэкономить в размерах базы 1С и снизить нагрузку на сервер 1С и СУБД. Также возможен доступ из других систем.

Основные преимущества технологии FileStream по сравнению с хранением в базе достигаются при хранении больших файлов (более 1 Мб). Файл не загружается в память SQL Server, фактически, считывание и запись файла производится порциями, указанного размера, используя АПИ файловой системы. Непосредственно в таблице хранится только ссылка на файл.
Скорость доступа также увеличивается, если файлы более 1 Мб - http://www.codeproject.com/Articles/32216/How-to-store-and-fetch-binary-data-into-a-file-str
Кроме того, файловую группу FileStream можно вынести на отдельный диск. Также можно включать файловую группу в бэкап или не включать.

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


UtilsОрганизация файлового хранилища на базе MS SQL Server с доступом из 1С#0 22.07.16 21:26
Пример реализации хранения файлов в базе MS SQL Server с использованием различных технологий.
Подробно рассмотрен потоковый доступ к файлам с использованием технологии FileStream.