Дедупликация хранилища файлов 1С #711832


#0 by vlandev
УНФ , в справочник номенклатуры добавляются файлы с картинками , и многие элементы номенклатуры по факту выглядят абсолютно одинаково и имеют одну и ту же фотографию. Но при добавлении файла в хранилище 1С делает копию , и в результате на диске плодятся абсолютно одинаковые файлы-дубли даже с одним и тем же названием. Можно ли как то сделать дедупликацию штатными средствами 1С , может есть какая то скрытая кнопочка или метод в БСП , что бы вставить не файл с копированием его на сервер хранилища , а просто ссылку на имеющийся уже в хранилище файл? Или надо смотреть в сторону средств файловой системы , типа ZFS или вроде в Windows-2012 тоже есть какая то дедупликация?
#1 by Jump
В 1с незнаю, думаю только если сам напишешь. В сторону файловой системы стоит посмотреть. ZFS - дедупликация неработоспособна. Т.е вообще ZFS стабильно работает только в родной среде, т.е в солярке. На фряхе и линуксе ZFS работает при помощи костылей, и довольно нестабильно. Я бы поостерегся доверять ей данные. И самое главное там онлайн дедупликация, а это полный звиздец, ресурсов жрет кучу во время записи. Тебе оно надо? В Win 2012server дедупликация из коробки, офигенно стабильно работает, я пользуюсь уже почти два года. Дедупликация оффлайн - т.е данные сначала записываются как есть, а потом дедуплицируются. Работает в фоновом режиме, в моменты минимальной нагрузки на  сервер, гибко настраивается. В общем классная вешь. Кстати путем нехитрых манипуляций включается и на windows 8
#2 by МихаилМ
есть же 10 лет как. русская разработка поиска дублей фото.
#3 by vlandev
Вы не поняли , мне не надо искать дубли - они и так имеют одно название и найти их не составляет труда. Вот пример: у разных номенклатурных позиций может быть один и тот же сертификат соответствия , сертификаты хранятся тут же в номенклатуре в виде отсканенных картинок. Надо что бы вместо тысячи файлов реально остался только один файл с картинкой , а все остальные 999 позиций хранили бы только ссылку на него. Да и вот додумал , что дедупликация средствами ОС или ФС все таки не подходит поскольку надо еще делать периодически архивы всего этого файлопомоечного барохла , в общем надо что то в УНФ запиливать.
#4 by Jump
А что с архивами не так? Объем картинок большой? Закидываешь папку с архивами на vhd том с включенной дедупликацией, и в архив его.
#5 by Jump
А запиливать это непросто. Тебе же надо за целостностью данных следить, ссылки контролировать.
#6 by vlandev
обьем картинок пока не большой где то около 15 гигов , но теньденьция к росту явно прослеживается. Думаю нафиг это сжимать в один архив не надо , тупо купить быструю флэху гиго на 60 и синхронизировать файлы в хранилище и на флехе периодически.
#7 by Jump
Ну синхронизация с флешкой думаю не лучший вариант. Да и флешки не самые надежные вещи. Просто проведи эксперимент - включи дедупликацию на каком нибудь томе, и закинь свои картинки туда, посмотри на сколько эффективно будет.
#8 by KRV
Физды уродам за одинаковые фотки не пробовали давать? Весьма действенно..
#9 by Jump
Думаю это сложно автоматизировать.
#10 by Jump
Если все таки допиливать такой функционал в конфу - 1)обработка которая будет делать хэши файлов.(какой нибудь быстрый хэш) 2)таблица соответствий хешей и путей к файлам. 3)обработка которая будет чистить таблицу соответствия время от времени, удалять дубликаты, заменяя в таблице пути. 4)Небольшие изменения в модуле конфигурации который обращается к файлам по пути.
#11 by vlandev
Блин , ну какой физды и за что , фотки то и должны быть одинаковыми: сертификат соответствия выдается на группу товаров , то есть какой нибудь чайник Vitek V-100 и чайник Vitek V-200 имеют один и тот же скан сертификата.
#12 by Jump
Хотя можно сделать гораздо проще, при условии что при работе картинки не подвергаются изменениям.
#13 by Jump
Банальная обработка, вообще без правки конфигурации. Запускается время от времени хэширует и сравнивает хэши файлов. При совпадении файлов - удаляет дубликат и делает хардлинк.
#14 by Jump
Так же дописать к ней модуль который будет сам делать архивы, чтобы в архивы дубли не тащить.
#15 by vlandev
О, спасибо за идею насчет хардлинка! В этом случае не надо покупать винду-2012 для дедупликации , просто тупо заменить дубли на хардлинки. А изменение и удаление картинок заблокировано , агент 1С-а может только добавить картинку в папку.
#16 by Jump
Ну тогда самый удачный вариант. Для работы с ним в винде, начиная помоему с висты и 2003 сервера есть консольная утилита mklink Даже если ее нет, нетрудно скачать.
#17 by vlandev
Да , и вроде архиватор 7z как то правильно с симлинками работает , то есть не кидает повторно в архив бинарник.
#18 by Jump
Не в курсе насчет 7z но у WinRar точно есть. Ключ -OH — сохранять жёсткие ссылки как ссылки, а не как файлы -------------------------------------------------------------------------------- Если среди архивируемых файлов содержится несколько жёстких ссылок NTFS, то при указании этого ключа первая жёсткая ссылка добавляется в архив как обычный файл, а остальные жёсткие ссылки из того же набора — как ссылки на этот первый файл. При извлечении таких файлов WinRAR будет создавать жёсткие ссылки, а не обычные файлы. После создания архива нельзя удалять или переименовывать первую жёсткую ссылку в архиве, иначе станет невозможным извлечение последующих ссылок. Если вы измените первую ссылку, последующие ссылки при извлечении также будут иметь изменённое содержимое. Для успешного извлечения последующих ссылок команда извлечения должна быть сначала вызвана для первой жёсткой ссылки. Поддерживается только в архивах RAR 5.0. Этот ключ — эквивалент командной строки группы параметров "Сохранять жёсткие ссылки как ссылки" в диалоговом окне "Имя и параметры архива".
#19 by Jump
Алгоритм обработки предельно простой будет- найди какую нибудь реализацию хэширования Например MD5 Хэшируешь файлы в каталоге, пихаешь хэши в таблицу сравнивая с имеющимися. При совпадении удаляешь продублированный файл и вызваешь утилиту mklink с параметрами.
#20 by vlandev
Кстати последний новый пятый винрар с максимальной компрессией , со сжатием в пятый формат , с максимальным размером словаря , с включенными опциями "store ... links as links" и "save identical files as references"  все равно слил старичку 7zip-у по размеру архива.
#21 by Jump
На чем именно? Упаковка архивов файловых баз 1с, у меня в раре значительно меньше получается. Пятый рар, максимальный словарь, и непрерывный архив. Т.е там получается что-то вроде дедупликации в пределах словаря, причем не на уровне файлов, а на уровне битов. Естественно действует эффективно только в solid режиме. А в 7z такого эффекта не наблюдал.
#22 by vlandev
На джипегах и пидиэфах (с картинками). Да, режим солид конечно был выставлен , но затеял этот тест что бы посмотреть как rar дедуплицирует дубли файлов и хардлинки , и он их действительно дедуплицирует , но у 7zip-а получается все же архив меньше - видать там дедупликация в каком-то алгоритме уже заложена сразу.
#23 by Jump
Ну да точно  7z тоже дедуплицирует неплохо. Однако в общем проигрывает по нескольким параметрам WinRar'у Я сейчас для интереса прогнал тест в виртуалке на реальных данных. Около 40 файловых баз бухгалтерии 1с от одного клиента. Общий размер папки 26,4Гб Размер после сжатия на максимальных настроках с гигабайтным словарем- RAR 1,24Гб 7z  1,32Гб Rar управился за 40минут, 7z паковал час и восемь минут. Rar во время архивации кушал около 7гб памяти, 7z чуть больше двадцати гигабайт памяти. Так что рар все таки получше будет, но с другой стороны 7z полностью бесплатен, и не намного хуже результат.
#24 by Лефмихалыч
перед добавлением вычисляй MD5, сравнивай и в случае совпадений делай промто ссылку на существующий элемент. Только надо задуматься, что делать, если меняется картинка, на которую несколько ссылок. Может и ни чего, а может и что-то - тебе виднее
#25 by Лефмихалыч
хранение в томах, конечно, позволяет решить средствами файловой системы, но там будет заморочка, если при изменении или удалении картинки с несколькими ссылками надо что-то делать с этими ссылками. Не катастрофа, но добавление двух реквизитов "Хэш" и "ИсточникИзображения" (или как там назвать тот эл-т справочника, где хранится оригинал дубля) значительно все упростит и позволит возложить все вопросы ссылочной целостности на платформу. А можно и реквизитов не добавлять, а решить вопрос отдльным регистром - там, как к задаче сподручнее
#26 by Bober
в варианте с сертификатом требуется другое решение. Лучше всего создать спр сертификаты, куда вписывать нужную информацию по сертификату. Далее делается по рекомендация БСП спр СертификатыПрисоединенныеФайлы. После этого создает реквизит в справочнике номенклатура или доп свойство-реквизит (кому как удобнее) и уже ссылка на сертификат добавляется в номенклатуре.
#27 by Jump
Не понял какие могут быть проблемы при удалении картинки с несколькими ссылками?
#28 by МимохожийОднако
+1
#29 by vlandev
При удалении никаких проблем быть не должно , сам файл не удалится просто количество хардлинков уменьшится. Файл как я понял удаляется окончательно с удалением последнего хардлинка , за этим хозяйством следит Виндоуз и там все автоматичски происходит. По поводу хэшей все оказалось значительно проще: менеджер , который к номенклатуре сертики цепляет , достает их из одной единственной папки , поэтому все файлы имеют одно и тоже имя. В каталог хранилища 1С их складывает с тем же самым именем а если есть совпадения по имени то 1С создает дополнительный подкаталог и кладет этот файл туда. В общем в моем случае  искать дубли достаточно только по названию файла + размер. В моем случае другого какого то сложного решения не требуется , вся эта ерунда только для того , что бы продавцы на точках в любой момент имели возможность распечатать копию сертификата товара.
#30 by Jump
Так и есть. Вообще любой файл это всего лишь запись в базе данных файловой системы, которая указывает в каком месте хранятся данные. В случае хардлинков записей указывающих на одни и те же данные несколько.
#31 by mdocs
умный в гору не пойдет, умный гору обойдет. (с) напрашивается использование отдельного справочника с уникальными файлами, и ссылками на него необходимое количество раз.
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С