DaJet Exchange: обмен данными с 1С (часть 1)
Типовой механизм обмена данными 1С, основанный на планах обмена, имеет ряд существенных недостатков. Для преодоления этих недостатков предлагается рассмотреть теоретические основы использования альтернативных механизмов, а также предлагается обсудить реализацию практического решения, оптимального с точки зрения автора.
- Описание
- Подробнее
Описание
Наиболее нетерпеливые могут сразу перейти к разделу "Практика" =)
Вторая часть (продолжение): "DaJet Exchange: двусторонний обмен РИБ (часть 2)"
В своих публикациях "Планы обмена 1С" и "Анализ блокировок СУБД: таблица изменений плана обмена 1С" я подробно анализирую архитектуру планов обмена 1С. Этот типовой механизм обмена данными имеет ряд существенных недостатков, которые особенно ярко проявляются при интенсивных обменах в больших информационных системах. Для преодоления этих недостатков возникает вопрос об использовании альтернативных механизмов обмена данными.
На рынке существует достаточное количество известных и зарекомендовавших себя с хорошей стороны решений, в том числе от самой фирмы 1С. Кроме этого постоянно появляются всё новые и новые "самоделки". В данной публикации они обсуждаться не будут.
Отмечу лишь только то, что некоторые из этих решений используют в качестве альтернативы планам обмена регистрацию изменений объектов 1С в регистрах сведений, которые они используют в качестве таблиц-очередей. Для получения представления о технических подробностях реализации этой методики можно обратиться к моим публикациям: "Планы обмена 1С" (раздел "Альтернатива планам обмена") и "Использование таблиц SQL Server в качестве очередей сообщений".
Целью же данной публикации является желание разобраться каким образом можно реализовать оптимальное решение и предложить свой взгляд на решение проблемы.
Забегая вперёд, я хочу сказать, что методика использования регистров сведений в качестве таблиц регистрации изменений имеет свои недостатки и является, по моему мнению, не полным решением проблемы.
Первым делом необходимо сформулировать функциональные требования к такой системе обмена данными, которую я считаю оптимальной. При этом данная публикация будет ограничена рассмотрением только таких задач как регистрация изменений объектов 1С и их фиксация в исходящей очереди сообщений.
Информационная база (узел обмена) 1С выполняет только три функции:
— регистрация изменений объектов 1С;
— формирование сообщения об изменении в формате JSON;
— помещение сообщения в исходящую очередь в одной транзакции с изменением объекта 1С.
Наиболее важным требованием является то, что любые операции по обмену данными должны выполняться без ожиданий на блокировках СУБД!
Все остальные функции обмена данными, например, обработка сообщений, их маршрутизация и доставка адресатам выполняется внешней по отношению к узлу обмена 1С системой.
Кроме этого, хорошо было бы иметь возможность управлять регистрацией изменений, составом объектов 1С, участвующих в обмене данными, без изменения конфигурации узла обмена 1С.