|
|
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Всем добрый день! Возникла такая задача: есть головной офис, есть филиал. Есть база 1С 8.2, развернутая на SQL 2008 R2. Мы хотим организовать систему двустороннего обмена данными, чтобы изменения офиса попадали в филиал, и также изменения филиала отражались в головной базе. Т.е., фактически нужно сделать 2 базы, синхронизирующиеся друг с другом. В 1С есть встроенный механизм обмена данными с помощью узлов обмена, однако, при получении сообщений система "задумывается" на обработку полученного результата... Вопрос: возможно ли организовать обмен средствами SQL в фоновом режиме по типу как Mirroring или Log Shipping? Недостатком этих методов является односторонний обмен, а нам нужен двусторонний чтобы изменения синхронно отображались сразу же в базе-партнере... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2012, 21:37 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Kot358, нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2012, 12:55 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Есть ли какие-либо еще способы прийти к такому варианту обмена, не используя штатный обмен РИБ 1С 8, а только используя возможности SQL? Или как-то избежать "задумывания" и блокировки записей... Задача такова, чтобы две базы могли "общаться между собой", т.е. изменения в одной попадали во вторую и также, изменения во второй попадали в первую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2012, 09:37 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Kot358Задача такова, чтобы две базы могли "общаться между собой", т.е. изменения в одной попадали во вторую и также, изменения во второй попадали в первую. Эта задача выглядит без дополнительных пояснений как равноправная репликация в распеределенной БД. Такая можеь поддерживаться на уровне СУБД. Например, в Оракле мультимастер репликация и поодерживается только в самых дорогих редакциях. Но и тогда потребуются усилия. Нужно изменять триггера, чтобы они не риагировали на выполнение тразакций пришедших с удаленных серверов. Нужно решать как разрешать конфликты: одни и теже данные редактируют а разных локальных БД. Если репликация синхронная, то зависания возможны: транзакция может быть выполнена только на всех серверах или нигде. Если асинхронная, то как надо приводить сервера в согласованное состояние, если часть транзакций "пропала", и данные на серверах слишком рознятся: новые транзакции выполнятся не могут. Т.е. в общем случае расчитывать на простое решение, не несущее хоть и редких, но тяжелых напрягов не следует, скорее всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2012, 11:06 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
vadiminfoне следует, скорее всего. ОК, понятно, а насколько такое решение выполнимо на других платформах и насколько оно выигрышно, по сравнению с механизмом РИБ в 1С? Т.е. РИБ - панацея и всего-то, что мы можем использовать в данной ситуации сравнительно с настройкой "тяжелой системы" на базе SQL или еще чего-то "посерьезнее" 1С?. А по сути, есть 1С и платформа для ее расположения ограничена, это, в основном, SQL. Значит, если мы не можем решить эту задачу методами SQL, самый лучший вариант - продолжить "топтаться" на РИБ, правильно я понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2012, 21:03 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь может ткнуть в ссылку, где такие или подобные задачи описаны и решены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2012, 21:06 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Kot358Значит, если мы не можем решить эту задачу методами SQL, самый лучший вариант - продолжить "топтаться" на РИБ, правильно я понял? Не уверен. Тем более, что термин методы SQL нуждаются в уточнении. По видимому Вы имели в виду на уровне СУБД. Я писал "про ручки подкрутить" у СУБД: настроить репликацию. Кто-то может быть взялся и сам разрабатывать что-то на уровне СУБД. Я лишь хотел сказать, что способы есть, возможно, они даже могут показаться относительно не сложными. Но на практике можно столкнуться с рисками при сопровождении, требующими более высокой квалификации, дополнительных затрат, чем казалось в начале. Большего админства системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2012, 22:27 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
если вкратце - это того не стоит, имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 13:51 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
я не специалист по 1С но на вашем месте я бы посмотрел, можно ли из-под 1С инициировать общую транзакцию для 1С-данных и SQL-соединения. Если это возможно (скорее всего да, т.к. 8 вроде крутая же), вы можете параллельно с 1С-транзакцией писать данные в свои таблицы, реплицировать их, и затем аналогично обрабатывать поступившие данные на противоположном конце. Реплицировать таблицы 1С не рекомендую, т.к. как уже сказали выше, есть вероятность некорректной работы 1С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 14:06 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Лагман, а что такое Лагманинициировать общую транзакцию для 1С-данных и SQL-соединения ? 1С может устанавливать соединение через COM коннекторы (для целей обмена по РИБ, например), или выгружать данные по правилам обмена во внешний файл. Можно узнать внутренние имена объектов, которые в данный момент выгружаются/загружаются в ИБ. При этом между данными может существовать определенная связь. Например, документ/справочник вызывает движения по регистрам накоплений/сведений. По правилам обмена, для уменьшения объема, можно выгружать только данные документа, а движения заново формировать в базе приемнике. Может получится, что из базы источника выедет документ, приедет в приемник и усилиями механизма репликации будет отмечен как проведенный. Но так как источник не выгрузил движения, то (при репликации сервером SQL), 1С не узнает, что этот документ требуется провести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 15:11 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Да я так, фантазирую. В мире джавы например в порядке вещей распределенные транзакции, т.е. транзакция может работать одновременно для нескольких соединений с БД и для ещё каких-то других ресурсов. А в виндоуз есть MSDTC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 15:40 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Лагманесть вероятность некорректной работы 1С. Вот именно, транзакция не должна выходить за рамки обработки в самой базе. Или 1С или SQL, а что-то создавать параллельными движениями - велик риск утонуть в проблемах такой системы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 18:56 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Лагманвы можете параллельно с 1С-транзакцией писать данные в свои таблицы Эммм.... смысл тогда всю ерунду затевать... задача такова, чтобы избавиться от зависонов при приеме сообщений и потерь каких-либо данных из регистров конфигурации 1С. А если писать параллельно изменения в SQL... смысл задачи теряется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 18:58 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
chatmа движения заново формировать в базе приемнике. Спасибо за мысль, но, к сожалению, не айс. К примеру, провелся документ "Расходная накладная" в первой базе, сгрузили его во вторую, а там остатков по номенклатуре нет. В итоге, он висит непроведенный и движений не даст. Дальше-больше... Руководство вскоре откажется от такой системы, а прог прослывет непрофессионалом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 19:01 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Лагманв виндоуз есть MSDTC. В 1С обмен реализован на кодах узлов. Т.е., поменялся документ, принадлежащий какому-то узлу - система понимает и выгружает изменения. Другой узел уже не сгрузится, он не участвовал. Идея 1С-ников неплоха, только звери ждут и напрягаются, пока заблокированная на запись изменений таблица не освободится. Элементарно, они без этого документы проводить не смогут. Прикол в том, что все движения происходят внутри базы, методами языка 1С. Вот я и думал, создавая этот топик, как можно такие методы организовать на SQL, чтобы избежать длительных блокировок. По типу синхронного Mirroring. Провел в главной базе - отдал изменения филиалам, провел в филиале - автоматом упало в главную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 19:05 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Last1Cmenесли вкратце - это того не стоит, имхо Вы 1С-ник? перед Вами уже стояли такие задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 19:07 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Правильно ли я понял, что суть лог шиппинга и мирроринга - тупое создание копии, не подразумевающее внесение изменений в нее в онлайн? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 19:10 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
chatmвыгружать данные по правилам обмена во внешний файл. Почти если НЕ одно и тоже, что и РИБ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 19:12 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Kot358Last1Cmenесли вкратце - это того не стоит, имхо Вы 1С-ник? перед Вами уже стояли такие задачи? да, извините сильно долго обьяснять почему подобная система окажется настолько нежизнеспособной что время затраченное на обмен штатными средствами покажется мелкими неудобствами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2012, 22:08 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
Kot358, покопайте в тему "отложенные движения", возможно в Вашем случае это не самый плохой вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2012, 10:04 |
|
||
|
1C + SQL система распределенных узлов и транзакций
|
|||
|---|---|---|---|
|
#18+
chatmKot358, покопайте в тему "отложенные движения", возможно в Вашем случае это не самый плохой вариант Ну это то, про что я писал, назвав асинхронной репликацией. Допустим часть этих "отложенных движений" может потеряться в сети по невыясненным обстоятельствам. В случае не "отложенных" то все не выполнилось везде. А теперь часть выполнилась, а часть нет. Данные на серверах имеют отличия, которые, скорей всего мешают, новым "отложенным движениям" : разница на серверах в данных увеличивается. Вообще обнаружили, к примеру, что данные на серверах не равны. Как узнать какие данные правильные, какие нет? Как теперь сделать как должно было бы быть, если бы все правильно работало? Даже если разработаны специальные журналы что и когда откладывалось, что передалось по сети, что не выполнилось и почему, все равно разобраться во всем этом админу буит не так тривиально. Ведь, к примеру, юзера могли ввести по новой часть того чего не оказалось. И теперь это надо отменить, но админ то про это не знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2012, 11:20 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38017646&tid=1541492]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 448ms |

| 0 / 0 |
