Имя: Пароль:
1C
1С v8
Хранение внешних файлов
0 Pro-tone
 
31.10.11
13:02
В связи разработкой нового функционала собственно встает вопрос. Где хранить лучше внешние файлы ? Как правило это сканы входящих доков, которые получают по почте и через сканер продажники.

Сисадмин наш всеми фибрами против хранения в самой базе, т.к. по нашим подсчетам в год манагеры накидывать будут до 40 гиг только одних картинок и что из-за этого распухания могут начаться глюки с потерей рабочих данных. Он за хранение на внешнем прицепе.

Я смотрю типовую "библиотеку ст. подсистем", и в ней хранение файлов сделано во временном хранилище самой базы. И прежде чем переделывать под внешнее файловое хранилище хотелось бы узнать, как все-таки и где оптимальнее хранить файлы ?
1 Diabolicum 1C
 
31.10.11
13:04
И каким образом "распухание" приведет к потере рабочих данных? И чем собственно отличаются "картинки" от "данных" с позиции СУБД?
2 shuhard
 
31.10.11
13:05
(0) админ прав,
хранить 40 Гбайт в 1С не стоит
3 Pro-tone
 
31.10.11
13:06
(1) ничем, просто распухание базы само по себе вещь такая, которую пытаются минимизировать, либо уменьшить размер базы, а тут мы получим обратный процесс
4 Defender aka LINN
 
31.10.11
13:07
40 гигов в год. Всего-то? :)
5 kosts
 
31.10.11
13:07
(0) Храни во второй БД, подключай по com
6 Maxus43
 
31.10.11
13:07
храните во внешнем, в сасой 1с хранить путь к файлу на внешнем носителе
7 Diabolicum 1C
 
31.10.11
13:07
Други, у меня база более 150 гиг данных. И ничего. Не теряется как-то:)
8 Defender aka LINN
 
31.10.11
13:07
(3) Как ни крути, но тебе куда-то их придется засунуть.
9 Александр_
Тверь
 
31.10.11
13:07
(6) +1
только сделайте что-нибудь вроде доменной шары и там хранилище, чтобы удобнее при необходимости физически менять местоположение.
10 Pro-tone
 
31.10.11
13:08
(5) что за страшный бубен ты предлагаешь =))
11 Александр_
Тверь
 
31.10.11
13:09
(7) большой размер БД имеет свои минусы.
1. Долго делается бэкап.
2. Долго разварачивается бэкап в случае необходимости
3. долго и тяжело копируется бэкап на другой сервер.
4. Работа с тобой БД может быть медленее и т.д.
12 Pro-tone
 
31.10.11
13:09
(8) ну можно в папку на прицепе, а в базе только строку пути
13 Александр_
Тверь
 
31.10.11
13:10
(5) правильный пример того как делать нельзя!
14 ptiz
 
31.10.11
13:10
(0) Голосовалка где? Я - за внешнее хранение.
15 Pro-tone
 
31.10.11
13:11
(6) (9) пока только такие мысли как раз
16 Diabolicum 1C
 
31.10.11
13:11
(11) Согласен с первыми 3 пунктами. Для решения (4) нужно всего лишь с умом и прямыми руками подойти к оптимизации.
17 Diabolicum 1C
 
31.10.11
13:12
(11) Ну и опять таки, разностный бэкап никто не отменял.
18 Defender aka LINN
 
31.10.11
13:12
(13) В БСП есть подсистема, которая именно это и делает. Problem, officer? *trollface*
19 Александр_
Тверь
 
31.10.11
13:13
(16) конечно можно, но это дополнительные затраты. А плюсы от хранения в БД совершенно не очевидны.
Получать картинки из БД - это нагружать сервер БД, нагружать сервер предприятия, в то время как получение данных со стороннего файлового хранилища проще и быстрее.Хотя возможны свои нюансы.
20 Александр_
Тверь
 
31.10.11
13:14
(17) не знаю как у вас, а у меня отрицательный опыт использования разностных бэкапов. По времени получается не быстрее чем полный бэкап, а проблем больше.
21 Pro-tone
 
31.10.11
13:14
(19) надо бэкапить внешними средствами уже тогда хранилище, например
22 Лефмихалыч
 
31.10.11
13:15
(0) у нас в базе всё хранится. Таблица со сканами вести 1.3Тб, полет нормальный
23 Александр_
Тверь
 
31.10.11
13:15
(21) это не представляет проблемы, на мой взгляд. Один раз настроил и забыл (настройка пару минут).
24 Pro-tone
 
31.10.11
13:16
(23) согласен
25 Pro-tone
 
31.10.11
13:16
(22) мда, не подымешь такое если рухнет ))
26 Александр_
Тверь
 
31.10.11
13:18
(25) да.. спорное решение. очень спорное.
27 Pro-tone
 
31.10.11
13:20
эх, почему в БСП не сделали хранение за пределами базы =(
28 Лефмихалыч
 
31.10.11
13:22
(25) размер от методов хранения зависит слабо, так что, если рухнет, похрену, как оно реализовано
29 Defender aka LINN
 
31.10.11
13:24
(27) А что, пост (18) скрытый, что ли?
30 Diabolicum 1C
 
31.10.11
13:25
(28) +1
А та самая пресловутая доп нагрузка на сервер - но она ведь никуда не денется. Просто перераспределится на другие каналы.
31 pumbaEO
 
31.10.11
13:30
Неправильная у вас БСП. Сделано там хранение или в базе или же "в томах на диске". Константа "ТипХраненияФайлов" - "Глобальная настройка - где хранятся файлы - в базе как ХранилищеЗначения или в каталоге на диске"
32 Pro-tone
 
31.10.11
13:36
(31) вопрос в том можно ли указать путь теперь где именно на диске
33 pumbaEO
 
31.10.11
13:40
Справочник ТомаХраненияФайлов, настройки есть как для виндовых шар, так и для linux каталога.
34 Pro-tone
 
31.10.11
14:28
(33) прописал туда путь к сетевой папке, указал ТипХраненияФайлов = В томах на диске, при добавление нового прикрепл. файла он в сетевую папку не копируется, открывается с диска локально лишь
35 acsent
 
31.10.11
14:31
прав у сервера 1с не хватает
36 Pro-tone
 
31.10.11
14:39
(35) папка расшарена для всех
37 Pro-tone
 
31.10.11
14:41
пользователей домена
38 MaxS
 
31.10.11
14:46
Если разделить базу с картинками, то как быть с ссылочной целостностью?
Например, подняли бэкап предыдущего дня. Значит в хранилище картинок будут картинки с зависшими ссылками.
Или хранилище упало, восстановили, в базе 1с будут зависшие ссылки на картинки.
39 acsent
 
31.10.11
14:47
а сервер под доменным пользователем крутится?
40 Pro-tone
 
31.10.11
14:56
(38) по идее если подымается бэкап базы вместе бэкапом папки с файлами, то там не должно быть никакой потери ссылочной целостности = )
41 Pro-tone
 
31.10.11
14:57
(39) ну да под любым доменным пользователем - любые действие в папке
42 Pro-tone
 
31.10.11
16:56
(31) а ты пробовал вообще в БСП хранить файлы "В томах на диске" ?

Я вот долго смотрю в код и в упор не вижу что вообще оно хоть каким-то боком пытается засунуть файл вне базы )) Все дороги ведут в одно место там - во внутреннее хранилище в самой базе при попытке добавить файл ))

А по (31) как ты написал по-видимому файлы хранить вне базы оно будет при выгрузке из 1С:Документооборот.
43 Dimasik2007
 
31.10.11
17:25
(0) Второй год используется внешнее хранилище с Raid-6. В месяц проходит сканов документов примерно на 15-20 ГБ. В базе только линки на текущее хранилище (в нем статус активно и url), в 1С данные храняться как ссылка на это хранилище и относительный путь к файлу (пример \2011\10\29\1-91315#РАСХ#1_1#v1#ИНН=7715671546.PNG)
44 pumbaEO
 
31.10.11
18:21
Иначе // в базе-приемнике файлы должны храниться в томах на диске - переместим разархивированный файл на том
           
           ФайлИсх = Новый Файл(ПолныйПутьФайлаНаДиске);
           РазмерФайла = ФайлИсх.Размер();
           
           ВремяИзменения = Объект.ДатаМодификацииУниверсальная;
           ИмяБезРасширения = Объект.Наименование;
           Расширение = Объект.Расширение;
           Зашифрован = Объект.Зашифрован;
           
           ПолныйПутьНовый = ФайлИсх.Путь + ИмяБезРасширения + "." + Объект.Расширение;
           ПереместитьФайл(ПолныйПутьФайлаНаДиске, ПолныйПутьНовый);
           
           ПутьКФайлуНаТоме = "";
           СсылкаНаТом = Неопределено;
           
           // добавить в один из томов (где есть свободное место)
           
           ФайловыеФункции.ДобавитьНаДиск(ПолныйПутьНовый, ПутьКФайлуНаТоме, СсылкаНаТом,
                                           ВремяИзменения, "",
                                           ИмяБезРасширения, Расширение, РазмерФайла, Зашифрован);
           
           Объект.ПутьКФайлу = ПутьКФайлуНаТоме;
           Объект.Том = СсылкаНаТом.Ссылка;
           
       КонецЕсли;

Пробовал. Вот кусок кода из Общий модуль - Присоединенные файлы.
Версия БСП 1.1.3.1
45 Pro-tone
 
01.11.11
10:30
(43) хорошо =)

(44) может я что-то не то делаю.

Но в БСП я делаю так.

Я параметризовал команду "ПрисоединенныеФайлы" по документу "Счета на оплату (полученные)". Открываю форму документа "СчетНаоплатуПолученный" - "Присоединенные файлы" (Панель навигации формы.Перейти) - появляется форма списка прис. файлов, жму "Добавить" - выбираю файл, открывается форма элемента, и вот на этом этапе судя по коду файл уже помещен в хранилище базы вот такой конструкцией:

Если НЕ ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ФормаВладелец.УникальныйИдентификатор) Тогда        
       ВызватьИсключение
         СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
           НСтр("ru = 'Ошибка при помещении файла в хранилище: %1'"), Файл.ПолноеИмя);
   КонецЕсли;

Намека на копирование в место где-то вне базы там нет, и в процедуру (44)  ДобавитьФайлыВТомаПриРазмещении(СоответствиеПутейФайлов, ТипХраненияФайлов) исполнение кода не идет.
46 pumbaEO
 
01.11.11
11:24
47 GenV
 
01.11.11
11:33
(45) Плохо смотрел. Файл всегда сначала помещается в хранилище для передачи на сервер, а затем либо сохраняется из хранилища в реквизит, либо в фал в томах (в этом случае через ФайловыеФункции.ДобавитьНаДиск) ...
48 Leksus
 
01.11.11
11:38
(0) Хочешь в базе, хочешь в томах (оба способа есть в БСП), либо в отдельной инф. базе типа Документооборот со связкой через web-сервисы (опять же есть в БСП).

Потеря данных из-за размера базы? Это че за бред? У нас например хранилось 200 Гиг присоединенных файлов в базе и все было ок! Щас переделали на хранение в Документообороте, т.к. бэкапы по 400 Гиг стало долго разворачивать
49 Ritofc
 
01.11.11
11:47
С целью повышения общей образованности спрашиваю: резервное копирование файлов, расположенных в "томах" БСП должно выполняться отдельно?

(0) Сисадмин против по каким соображениям? Из-за размера бэкапов? (это совсем не проблема, если не использовать только полные копии или того хуже копирование каталогов)
50 Pro-tone
 
01.11.11
11:56
(46) делал точно также как и ты, только форма списка немного другая у меня - вот такая
http://imglink.ru/show-image.php?id=a98ecabef581ad755db054b41413605e

не видно из твоего видео что файл скопировался в \\sosna\share
у меня все также, только файлов нет физически по тому пути в томе хранения файлов
51 GenV
 
01.11.11
11:59
(50) В БСП ест Файлы и есть Присоединенные файлы ...
52 Pro-tone
 
01.11.11
11:59
(48) (49) у нас несколько баз, бэкапы средствами 1С раскиданы по времени ночью, при большом размере базе возможно не будет хвататать и целой ночи ))
53 pumbaEO
 
01.11.11
12:01
Копируется в шару + дата (20110101).  БСП 1.1.3.1
54 Ritofc
 
01.11.11
12:04
(52) тут не ночь длиннее нужна, а понимание того, что такое разностный бэкап и бэкап журнала транзакций. После этого и полу часа для резервных копий станет очень много. А вот отдельно каждую ночь резервировать все файловое хранилище - это по истине ерунда. Или ты файлы бэкапить не будешь? Или ты файловое хранилище привяжешь к системе контроля версий какой-нибудь, а из нее уже диф. бэкапы выжимать будешь? :)
55 Pro-tone
 
01.11.11
12:08
(54) ну а если не бэкапить все файловое хранилище, то файлов по ссылкам ведь может и не оказаться при подъеме бэкапа...
56 vde69
 
01.11.11
12:10
(0) поставь ограничение на размер файла в 400к (вполне нормально для скана А4), я сильно сомневаюсь что манагеры смогут за год запихнуть в базу 100 000 сканов.

У меня база от файлов пухнет на пару гигов в год :)
57 Ritofc
 
01.11.11
12:12
(55) вот к тому и веду, что вы лечите порез на ноге, которую чуть выше уже ампутируют. :)

Оставь все файлы в базе, для MS SQL 40 гб - это ерунда, бэкапы настрой дифференциальные (за несколько минут пролетать будут, если все грамотно сделать), раз в неделю - месяц можно делать полные бэкапы. В итоге и файлы бэкапиться будут, и данный 1С.
58 Ritofc
 
01.11.11
12:14
(56) а смысл ограничения? Пусть хоть фильмы туда заливают. Просто в запросах не забывай про это. Что мне делать, например, если мне договор на 100 страницах пришел? :)
59 Pro-tone
 
01.11.11
12:15
(53) вроде у меня была ошибка с путем в томе, по указан. пути не было такой папки, БСП не сделали окно предупреждения, поэтому я искал в той папке которая видать не была указана, сейчас еще раз задал путь, вроде стало копировать в папку с датой =)
60 vde69
 
01.11.11
12:17
(58) в том и смысл, что-бы рационально использовать и софт и железо и людские ресурсы.

Это по началу кажется что тебя урезали, а вообще 500к хватает в 99.999% случаев, а там где не хватает всегда можно сделать кусковой архив.
61 Pro-tone
 
01.11.11
12:18
(58) прошу прощения, может быть за глупый вопрос, но SQL только в планах, поэтому про дифференциальные бэкапы я впервые слышу =) что это такое и где об этом почитать можно ?
62 vde69
 
01.11.11
12:21
(61) есть фулл бекап, это полная копия базы от него делаются диф бекапы (только то что изменилось за последее время)

например фул бекап 1 сент 100 гиг, и каждые 5 минут диф бекапы по 0.5 метра
63 Ritofc
 
01.11.11
12:28
http://msdn.microsoft.com/ru-ru/library/ms190218.aspx - это формальное описание, в (62) все в принципе нужное описано.
64 D_Pavel
 
01.11.11
12:33
(0) Я храню сканы документов в файлах. Это позволяет быстрее делать бэкапы базы не зависимо от картинок.
65 Pro-tone
 
01.11.11
12:44
(62) (63) спасибо, буду читать про диф. бэкапы = )
66 Pro-tone
 
01.11.11
13:01
(57) в MS SQL админ мне отказал, сказав что дорого, не дадут денег, будет на PostgreSQL, а там я не знаю есть ли частичные бэкапы или нет
67 vde69
 
01.11.11
13:14
(66) с каких пор админ определяет что дорого а что нет?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший