0. 2tvad 60 09.09.19 21:45 Сейчас в теме

Хранение файлов - как уменьшить размер базы данных

Хранение файлов в базе 1С можно оптимизировать для уменьшения размера хранимых данных.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. stepan_s 11.09.19 03:48 Сейчас в теме
Такой подход допустим в случае хранения файлов в едином месте хранения (справочник, регистр сведений), но существуют реализации когда хранилище с файлом в документах, или прочих уникальных метаданных. Как быть в таком случае? Есть ли варианты?
И мягко сказать не мало работы для перевода логики хранения...
Ошибаюсь?
2. 2tvad 60 11.09.19 09:27 Сейчас в теме
(1) Думаю, не принципиально где вы храните файлы. Потому что, придется переделывать их отображение и получение на основании регистра (в моем случае Регистр_ВладельцыФайлов). Измерение Источник получит "Составной тип данных" на все возможные хранилища файлов (если нельзя сослаться прямо, то будут некие ключи для ссылок).

Для перевода логики на формах, можно разработать общую форму для работы с файлами.

Я планирую переделывать такой механизм у одного своего Заказчика, по факту отпишусь что вышло по объему базы и сколько это заняло в чел.часах.
Fox-trot; stepan_s; +2 Ответить
3. МимохожийОднако 127 15.09.19 08:05 Сейчас в теме
В порядке бредовой идеи.
Добавить в типовой регистр с картинками реквизит ХэшМд5. Добавить регистр с измерением ХэшМд5 и хранилищем файла. При записи сначала сохранять в добавленный регистр ХэшМд5 и картинку (Хранилище значений), а после этого записывать ХэшМд5 в добавленный реквизит в типовом регистре.

Для тех записей типового регистра, в которых еще не заполнен добавленный реквизит запустить фоновое задание, которое перезаписывает типовой регистр с очисткой ранее записанных картинок из ресурса хранилища значений
4. Diversus 2015 16.09.19 09:20 Сейчас в теме
(0) Что будет когда есть файл, который используется, например, в двух документах (файлы одинаковые) тех же электронные письма входящие и мы пометим на удаление одно из входящих писем и удалим?
Ваша доработка на это никак не отреагирует и будет удалено вложение, которое используется в другом документе.
Нужен дополнительный анализ удалять или не удалять файл-вложение иначе это может быть проблемой.
wowik; user1274438; +2 Ответить
5. 2tvad 60 16.09.19 09:31 Сейчас в теме
(4) Будет удалена запись в регистре "Регистр_ВладельцыФайлов".

Да вы правы, нужен дополнительный анализ при удалении. В случае если удалены все владельцы, то на файл отсутствуют ссылки и такие файлы нужно удалять, например регламентным заданием раз в сутки или когда удаляется последняя ссылка на файл.
6. Diversus 2015 16.09.19 09:38 Сейчас в теме
(5) Если мы говорим о стандартном функционале, то из справочника "ЭлектронноеПисьмоВходящееПрисоединенныеФайлы" файл будет удален при удалении объекта владельца подпиской на событие "ВыполнитьДействияПередУдалениемПрисоединенногоФайла". Так удалится сам файл.
Если я все правильно понял, вы создаете новый файл только тогда, когда нет уникальной записи с такой MD5, а если нашли,то просто указываете, что файл находится "вот здесь" остальные механизмы вы не трогали. Соответственно при удалении любого владельца файла стандартная БСП удалит исходный файл, а все остальные владельцы, которые ссылаются на этот же файл останутся без этого файла.
user1274438; +1 Ответить
7. 2tvad 60 16.09.19 09:52 Сейчас в теме
(6) Про стандартный функционал - вы абсолютно правы. Что БСП, что функционал 1С в прочих конфах заточен на работу со справочниками, где хранятся файлы. Все эти вызовы придется переделать на работу с регистром.
8. user1274438 16.09.19 10:49 Сейчас в теме
Все не читал. Штатную возможность хранения в томах уже предлагали?
9. 2tvad 60 16.09.19 11:21 Сейчас в теме
В описанной ситуации, если у вас в томах - 6,5 Гб файлов, будет 1,8 Гбайт.
10. user1274438 16.09.19 17:05 Сейчас в теме
(9) Дык, елы палы - даже 6.5 Гб, хранящихся в томах, уменьшают размер базы данных на 6.5 Гб

Что же касается нестыковок, типа (4) и (6) - то наложите на это еще, например, РИБ
Дальше даже думать не хочется, как можно потом разобраться - "куда потерялся мой файлик!!!!111". Особенно - если это не электропочта, а например, документооборот, а сами документы еще и электроподписями подписываются.
11. 2tvad 60 16.09.19 18:43 Сейчас в теме
(10) согласен. Но можно уменьшить 6,5 Гбайт в томах до 1,8 Гбайт. Что тоже хорошо с точки зрения скорости резервирования.
12. triviumfan 10 16.09.19 20:08 Сейчас в теме
Интересное решение, но нужно ли?!
13. Светлый ум 228 17.09.19 07:47 Сейчас в теме
14. azubar 38 30.09.19 13:29 Сейчас в теме
Как по мне, почту тянуть в 1С это зло, особенно учитывая реализацию почтового клиента 1С.
По поводу оптимизации хранения вложений также реализовал подобный механизм: отдельный справочник для хранения вложений, стандартный функционал работы был переписан так чтобы при изменении файлов система проверяла есть ли в хранилище файл с таким хешем, если нет то создавала, а в стандартном справочнике хранилась только ссылка на дополнительный справочник, при этом обновление / удаление файла не затрагивало сам файл и остальные элементы ссылающиеся на него. Регламентное задание периодически проверяло и очищало (архивировало) файлы на которые не ссылается ни один элемент из стандартного справочника. Такой подход очень сильно экономит пространство (независимо от варианта хранения в базе или в томах) и непонятно почему он до сих пор не реализован в типовых.
15. EVKash 3 30.09.19 14:25 Сейчас в теме
(14) в типовых и без этого косяков предостаточно...
в 1С руководствуются идеей, что компьютеры становятся все мощнее и надо всю эту мощь использовать. оптимизация? не... не слышали.
16. 2tvad 60 30.09.19 17:01 Сейчас в теме
(15) Согласен. Стоит допилить, например, механизм регистров и не записывать физически данные, если нет в них изменений. Это сколько ресурсов сэкономит.
17. 2tvad 60 30.09.19 17:09 Сейчас в теме
(14) почту тянут для разных целей. Например, что бы переписка с заказчиком по контрактам была видна. Плюс это дисциплинирует продажников. Одно дело обсуждать в своей почте, другое, когда это видно сразу же нач.отдела. И не "Петров, а что у тебя там с контрактом", а "Петров, у тебя контракт подвис на согласовании сроков поставки, ты когда график вышлешь".

Есть у меня еще интересный механизм - архивирование файлов. Это когда старые файлы - более одного года давности, раз в год, переносятся из базы на диск. Фитча в том, что их можно не бекапить постоянно. Т.к. год этот архив не меняется.

И с одной стороны база не раздувается, а с другой не нужно файлы отдельно постоянно бекапить, боясь потерять ссылки.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день