Хранение файлов в NoSQL СУБД CouchDB

06.08.12

Интеграция - Внешние источники данных

В данной публикации приводится пример использования документо-ориентированной NoSQL СУБД CouchDB для хранения файлов и доступа к ним из базы 1С:Предприятия 8.2

Скачать исходный код

Наименование Файл Версия Размер
Архивная копия базы данных 1С
.dt 35,25Kb
74
.dt 35,25Kb 74 Скачать

Идея использования внешней базы данных появилась после того как столкнулся с необходимостью размещения большого количества файлов (Сканы документов, конструкторско-технологическая документация. Всего около 10 Гб.) в базе УПП с привязкой к справочникам и документам. И соответственно при их размещении стандартными средствами в Хранилище дополнительной информации начал увеличиваться размер самой базы и размеры архивных копий.

Решил использовать для хранения файлов NoSQL СУБД CouchDB т.к. для данной задачи нет необходимости в использовании реляционных СУБД. CouchDB является документо-ориентированной СУБД, не требующей описания данных. Все данные в базе данных хранятся в виде записей (документов). Любая запись (документ) в базе данных может содержать произвольное количество полей и вложений (файлов).

Доступ к данным осуществляется через REST интерфейс по протоколу HTTP. Все данные передаются в JSON формате.

Скачать CouchDB можно здесь, а прочитать хорошую статью для начального знакомства с СУБД можно здесь.

 

Установка и настройка СУБД.

Установка СУБД очень простая - со всеми пунктами соглашаемся и жмем "Далее".

После установки запускаем консоль администрирования СУБД (Futon)

Создаем новую базу данных

Присваиваем ей имя

Создаем пользователя с административными правами

Назначаем ему имя и пароль

Теперь нам требуется создать две функции, которые обеспечат возможность получать содержимое и версию документа.

Для этого выбираем вид "Temporary view"

Пишем код функции для получения содержимого документа СУБД (параметром будет идентификатор документа в СУБД, которым является GUID объекта из базы 1С).

Сохраняем функцию в СУБД

Теперь пишем код функции для получения версии документа СУБД

Тоже сохраняем функцию в СУБД

 

Работа с базой данных 1С.
Далее можно запускать демонстрационную базу 1С, которая может подключаться к созданной базе данных.

База данных состоит из справочников "Настройки для подключения к СУБД CouchDB" и "Справочник данных", а также общей формы "Просмотр файлов содержащихся во внешней СУБД" и общего модуля "NoSQL".

Для доступа к данным используются COM объекты "WinHttp.WinHttpRequest.5.1", "ADODB.Stream" и разработан парсер данных в формате JSON.

Справочник "Настройки для подключения к СУБД CouchDB"

Справочник "Справочник данных"

Элемент справочника "Справочник данных"

Форма "Просмотр файлов содержащихся во внешней СУБД"

Далее открываем форму и добавляем файлы. Файлы можно добавить, заменить, удалить или отрыть (открываются приложениями, которые установлены по умолчанию для расширений этих файлов).

 

Просмотр содержимого СУБД.

После довавления файлов, через консоль администрирования (Futon) можно просмотреть новые документы идентификаторы которых равны GUID элементам справочника "Справочник данных".

и можно просмотреть содержимое самих документов

Сохраненные функции тоже являются документом базы данных и их содержимое можно просмотреть или изменить

Важной особенностью СУБД CouchDB является то что она поддерживает версионирование документов. И поэтому любой файл даже после случайного удалению можно восстановить

Для удаления всех старых версий документов служит операция "Compact & CleanUp..." в базе данных.

 

Заключение.

Был показан пример настройки СУБД CouchDB, организован доступ к ней из базы 1С для возможности работы с файлам.

Разработан парсер данных в формате JSON (находится в общем модуле NoSQL).

См. также

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22602    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9303    9    8    

11

Экстрактор данных 1С в BI - выгрузка данных из 1С в BI-аналитику

Внешние источники данных Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

15.11.2022    13607    12    SQV0    47    

28

Перенос данных из Парус 7.хх в ЗГУ ред.3

Внешние источники данных Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    48817    97    163    

86

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

Внешние источники данных Загрузка и выгрузка в Excel Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

24000 руб.

16.11.2018    30075    20    31    

21

Загрузка в БГУ из УРМ "Криста"

Внешние источники данных Банковские операции Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия государственного учреждения Россия Бухгалтерский учет Платные (руб)

Обработки для загрузки данных из УРМ "Криста" в бухгалтерию государственного учреждения редакция 2.0. Есть Демо доступ на вкладке Бесплатные файлы на 1 месяц со дня получения демонстрационного ключа регистрации. Поддерживает ПО "Web-исполнение" от НПО "Криста".

4800 руб.

19.06.2013    38468    136    90    

29
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
86. hrip 214 09.08.12 10:34 Сейчас в теме
(85) AlexO, А в чём неудобность то? Ну разве только как вы писали, что хочется версионирования из 1С. Это да можно будет попробовать сделать.
+
96. hrip 214 14.08.12 09:09 Сейчас в теме
"...а мы упрямы..."
несогласие с вашим мнением это есть упрямство?

Попробую подробно ответить на ваши вопросы.
Текущий размер используемой базы 8Гб, документов в СУБД 1700, Средний размер хранимого файла 1-10Мб. Сколько всего файлов в базе я не считал.
О том что проект невысоконагруженный я уже писал, т.е. частота обращений очень низкая и такими параметрами как частота обращений можно пренебречь (обычная база 1с - 100 пользователей, работа с файлами - это не основная работа).
Чем отличаются сканы от конструкторской и технологической документации? Ничем кроме расширений файлов! т.е. в УПП к элементам справочников "Номенклатура", "Спецификации номенклатуры", "Технологические карты производства" прикреплены описание тех. процессов , инструкции, паспорта, чертежи и т.д.

"скоро NoSQL захватит мир))"
это вообще чье то личное мнение в комментариях, которое никак не отражено ни в моей статье, ни в статье на которую я ссылаюсь.

В CouchDB действительно обновляется весь документ и это сказывается на размере базы и времени его обновления. Но в данном случае речь не идет о высокопроизводительном web сервере где совершаются тысячи или десятки тысяч транзакций в секунду.

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

"для данной задачи надо обойтись без СУБД"
это ваше мнение. Я вас не заставляю использовать мое решение!

"Не должно множить сущее без необходимости" (с) Оккам.

Ну насчет надежности хранения файлов в СУБД вы наверное спорить не будете. Версионирование тоже штука полезная.
В данной СУБД не требуется проектировать структуру базы (таблицы, хранимые процедуры, триггеры) и для данной задачи очень подходит.
Для того чтобы внедрить и использовать мое решении требуется максимум минут 30: это установить саму СУБД, написать пару простеньких функций, объединить конфигурацию демо базы со своей и вывести на формы нужных объектов кнопки для открытия списка файлов.
Причем тут без разницы какую вы СУБД используете (MS SQL, PostgreSQL, Oracle), или вообще у вас файловая база - работать будет везде. Затрачиваться на покупку ПО тоже не надо.
Это в дополнение к тому что я уже писал о плюсах использования данной СУБД.
+
98. gaglo 16.08.12 16:32 Сейчас в теме
(96) ...вы обиделись? Напрасно!
На нашей фирме есть похожая задача. Фирма торгует электротехнической продукцией. Поставщики предоставляют нам сертификаты на свою продукцию, мы по требованию покупателей снабжаем их копиями сертификатов. Для этого сканы сертификатов привязаны к номенклатуре. Каждый сертификат накрывает много номенклатурных позиций, всего сканов около 400. Новый сертификат - явление редкое, скажем, раз в полгода. Обращения на чтение - несколько раз в неделю. Сканы хранятся просто в файловой системе, а в 1С - полные имена файлов.
Внедрение решения заняло когда-то минут 20, насчет надежности - ни один сертификат не пропадал и не повреждался неведомым врагом, бэкап делается пофайлово, затрат на покупку чего-нибудь вроде ПО не несли, всё и так работает. Версионированием в данном случае и не пахнет, так оно и не требовалось.
Заметив статью, сначала подумал, что в своё время мы что-то прощёлкали... Прочитав, и поучаствовав в обсуждении - больше так не думаю.
Слово "упрямы" я отношу не к несогласию с моим мнением, но к неумению - или нежеланию - отстаивать своё.
Вот возьмем чисто (96).
документов в СУБД 1700.... Сколько всего файлов в базе я не считал.

Простите, не понял. Как в этом случае документы соотносятся с файлами? Видимо, это не одно и то же, ибо одних 1700 - а других не счесть.
частота обращений очень низкая

Не выдавать военной тайны! Раз в месяц или раз в столетие... (Видно, что подробный ответ может быть неконкретным...)
Про какую то альтернативную авторизацию я и не писал. я писал о том что СУБД поддерживает авторизацию по логину и паролю

1С тоже поддерживает авторизацию "по логину и паролю". Я считаю её основной. Потому что 1С в данном случае - основная система. Если во внешней СУБД есть другой логин и другой пароль - это будет вторая авторизация. Альтернативная!
О том что СУБД быстрее файловой системы я вообще не писал! Где вы это взяли?

Смотрим в (21) "плюсы данного решения: ... 4. Скорость поиска данных в базе и их отдача у NoSQL СУБД очень высокая". Каюсь, домыслил. Потому что не представляю "плюсы решения вообще", а только плюсы "данного решения по сравнению с другими". А с какими другими? Наверное... Вы и сами знаете - я про костыль №1. Но иначе, извините, не понимаю.
Я вас не заставляю использовать мое решение!

Ну да. Но мог бы убедить. Но не смог. Или не захотел. Я вообще-то про себя думаю, что убедить меня можно. Но убедительными доводами. Хотя бы внешне убедительными.... Не сложилось.
В любом случае благодарю за потраченное на меня время.
+
100. hrip 214 17.08.12 13:31 Сейчас в теме
(98) gaglo, Так я и не пытался убедить вас использовать именно это решение. Я вам о нем рассказал и привел доводы в его пользу. Вас они не устроили - не используйте. Вам например больше нравится файлы хранить на диске в ФС, а я считаю это решение в принципе неправильным. А то что у вас до сих пор все файлы целые - так это же замечательно.

Как в этом случае документы соотносятся с файлами? Видимо, это не одно и то же, ибо одних 1700 - а других не счесть.

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

Не выдавать военной тайны! Раз в месяц или раз в столетие... (Видно, что подробный ответ может быть неконкретным...)

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

Скорость поиска данных в базе и их отдача у NoSQL СУБД очень высокая

Это взято из общей информации по NoSQL - конкретно не замерял и соответственно цифру не назову.

Я считаю что для хранения файлов удобно использовать мое решение, кто-то считает что надо использовать те СУБД на которых уже крутятся базы 1С, вы считает что надо хранить в ФС. Так что каждый выберет то что считает правильным. По крайней мере вы уже знаете что есть еще один способ хранить файлы.
+
99. klel 16.08.12 22:15 Сейчас в теме
Большое спасибо за описание как можно все это сделать =) теперь можно воспользоваться разработкой и что то свое придумать :)
+
103. zharovaa 18.03.13 15:53 Сейчас в теме
У меня какая-то проблема с кодировкой, не могу понять в чем дело ((
Прикрепленные файлы:
+
104. hrip 214 21.03.13 15:50 Сейчас в теме
(103) zharovaa, А какая/какие я у вас ОС где вертится 1С и СУБД?
Сейчас специально скачал демо базу и последний дистрибутив СУБД с сайта, установил на Win XP - проблем с кодировкой нет.
+
Оставьте свое сообщение