|
Обмен без плана обмена | ☑ | ||
---|---|---|---|---|
0
wms
04.09.13
✎
13:12
|
есть куча баз с отлич.конфигурациями задача консолидировать некую инфу в общую базу.
Хочу обойтись без планов обмена (без правил и КД) без флага распределенная- есть причины не хочу тут это обсуждать. Создаю подписку в базах и в РС регистрирую изменения объектов. Структура независ.непериадического РС: Измерения: -ссылка -датавремяизменения Реквизиты: -Флаг загрузки -комментарий неогр. строка(тут имена файлов выгрузки и загрузки) 2 Обработки выгр. и загр. через хмл. Перед выгрузкой записываю флаг загрузки загруженных объектов по ссылка+датавремяизменения выгружаю невыгр. объекты сортируя по датавремяизменения Какие могут быть подв. камни в такой схеме? |
|||
1
hhhh
04.09.13
✎
13:15
|
(0) изменения регистрируй в плане обмена. РС выкинь за ненадобностью. Зачем изобретаь велосипед?
|
|||
2
v4442
04.09.13
✎
13:17
|
Будут проблемы с обработкой, не проще через TXT или что то подобное, dbf, com и тд
|
|||
3
wms
04.09.13
✎
13:17
|
(1)я же написал без плана обмена.
одна и не главная эта причина: "Из-за системных особенностей реализации планов обмена, не рекомендуется злоупотреблять выгрузкой изменений по планам обмена. Дело в том, что при чтении изменений блокируются все таблицы изменений. Т.е при выгрузке, план обмена не дает записать новые изменений – а следовательно блокирует и сами элементы - справочники, документы и т.д." более это не обсуждаю |
|||
4
wms
04.09.13
✎
13:18
|
(2)нет никаких проблем с хмл.
хмл рулит. делал уже подобное.там можно и файлами (обработки, графику) обмениваться |
|||
5
Wobland
04.09.13
✎
13:19
|
и какой только дятел изобрёл планы обмена для обмена?..
|
|||
6
v4442
04.09.13
✎
13:20
|
(4) txt рулит, скорость раз в 10 больше :)
|
|||
7
Холодильник
04.09.13
✎
13:21
|
подв камни - если много пользователей одновременно начнут запсиывать объекты. РС заблокируется
|
|||
8
wms
04.09.13
✎
13:23
|
(7)не заблокируется. sql
на уровне записей. в 1 сек. 1 и тот же объект записывать одновременно? не смогут. |
|||
9
Maxus43
04.09.13
✎
13:25
|
(8) эскалация блокировок есть ещё. скуль может сам решить блокирнуть всю таблицу
|
|||
10
fisher
04.09.13
✎
13:38
|
ИМХО, на практике проблема с блокировками в центральной базе из-за загрузок/выгрузок кучи перифериек решается тупо путем запрета работы в ней пользователей (превращая её в сервисную). А при разовом обмене в рабочей периферийной базе (клоне центральной) блокировки при выгрузке с её продолжительностью - это вообще ни о чем на фоне неизбежных блокировок при загрузке.
|
|||
11
fisher
04.09.13
✎
13:40
|
Создавать альтернативный механизм - ИМХО, бесперспективно.
|
|||
12
Maxus43
04.09.13
✎
13:43
|
(10) согласен полностью. велосипед, причем с квадратными колёсами это будет
|
|||
13
fisher
04.09.13
✎
13:53
|
И вообще я сильно сомневаюсь, что таблицы изменений блокируются на запись на все время выгрузки. Скорее всего только на момент чтения, что практически мгновенно. А возникающие коллизии - уже результат чтения данных объектов, а это свой велосипед не решает.
|
|||
14
Fragster
модератор
04.09.13
✎
13:55
|
(3) тебя это не коснется
|
|||
15
Fragster
модератор
04.09.13
✎
13:55
|
или там 100500 юзеров?
|
|||
16
Maxus43
04.09.13
✎
13:55
|
блокировка таблиц изменений отдельная тема вобще, (3) не повод совершенно
|
|||
17
rozer76
04.09.13
✎
14:06
|
+(16) именно блокировка которая накладывается когда объекту присваивается НОМЕРСООБЩЕНИЯ и делает планобмена более "устойчивым" к передаче изменений чем РС. Так например идет выгрузка по РС а этот объект в этот момент меняют и записывают. Я давно после 7.7 делал обмен по РС (конфа самописная) пока не получил таких глюков и не перешел на планы обмена.
|
|||
18
dmpl
04.09.13
✎
14:07
|
(3) Ну заблокируется на 2-3 секунды. Не критично.
|
|||
19
rozer76
04.09.13
✎
14:10
|
+(17) "Выгрузка данных сопровождается созданием объекта с типом ЗаписьСообщенияОбмена (переменная ЗаписьСообщения). Сразу после создания этот объект еще «не знает» своего номера, получателя и т. п. Вся подобная информация указывается при выполнении метода НачатьЗапись(). В качестве первого параметра передается объект ЗаписьXML, в качестве второго – ссылка на узел плана обмена (ссылка на получателя). При выполнении этого метода сообщению присваивается номер, определяемый как номер предыдущего отправленного сообщения, увеличенный на 1 (информация берется их узла-получателя). Производится запись в XML-документ заголовка сообщения, а также записывается начало элемента XML, соответствующего телу сообщения. Устанавливается блокировка на запись базы данных, соответствующая узлу плана обмена."
|
|||
20
Fragster
модератор
04.09.13
✎
14:12
|
(18) меньше, намного причем
|
|||
21
dmpl
04.09.13
✎
14:18
|
(20) Ну, может они там только и делают, что объекты пачками меняют...
|
|||
22
Maxus43
04.09.13
✎
14:20
|
>>Вся подобная информация указывается при выполнении метода НачатьЗапись()
Вобще то при методе ВыбратьИзменения() |
|||
23
Maxus43
04.09.13
✎
14:21
|
(22) + точней в обоих
|
|||
24
Maxus43
04.09.13
✎
14:22
|
да не суть короче.
(20)(21) я хз, у меня процесс обмена идёт иногда только выгрузка минут 30-40, загрузка часа 2-3. В этом случае блокировки таблиц изменений доставляют конечно неудобства |
|||
25
rozer76
04.09.13
✎
14:28
|
+(23) аха, НачатьЗапись() - сам номер сообщения а в ВыбратьИзменения() - этот номер уже проставляется в таблице регистраций
|
|||
26
dmpl
04.09.13
✎
14:34
|
(24) А сколько объектов при этом в сообщении?
|
|||
27
wms
04.09.13
✎
14:35
|
(18)частота обмена 5 мин. будет критично особо в расчетные периоды и так проблемы есть с произв-стью
|
|||
28
Maxus43
04.09.13
✎
14:36
|
(26) тысяч 400-500, из низ 300 независимый непериодический регистр великий и могучий ГрафикиРаботПоВидамВремени. Будь проклята концепция блока ЗУП и будь проклят автор регистра в частности
|
|||
29
dmpl
04.09.13
✎
14:43
|
(27) В таком случае проблема будет не от блокировки таблицы регистрации изменения... и изобретать велосипед, как бы, незачем.
(28) Это что, 2,5 тыс. сотрудников и обмен раз в месяц? |
|||
30
Maxus43
04.09.13
✎
14:45
|
(29) нет, это больше 2,5 тыщ сотрудников, обмены то каждый день, но зарплата считается примерно в одни и теже дни всеми филиалами, плюс-минус.
|
|||
31
Maxus43
04.09.13
✎
14:46
|
(27) 5-ти минутный обмен у нас тоже есть, из-за него не происходит неудобство для юзеров, т.к. порции данных маленькие
|
|||
32
dmpl
04.09.13
✎
14:49
|
(30) Кстати, не пробовали не передавать графики работы по видам времени, а только записи регистров расчета? Ведь, по идее, если потребуется перерассчитывать что-то, то делать это будут в филиале...
|
|||
33
Maxus43
04.09.13
✎
14:53
|
(32) да зарплату вобще можно сводно в центр выгружать, но у нас политика другая, работают не только в базе филиалов, но и в других, типа "центре", и всё везде должно быть одинаково... мутно но работает пока
|
|||
34
dmpl
04.09.13
✎
14:58
|
(33) Ну не знаю - если вводить табель учета Т-13, так он же медленно проводится с таким количеством записей в регистре...
|
|||
35
Maxus43
04.09.13
✎
14:59
|
(34) не быстро но терпимо. Я это всё к тому что и обмены бывают здоровы, и фиг чего с этим сделаешь, без перепроектирования системы или смены концепуии. А это уже делать не будут, пока совсем ен встанет колом всё
|
|||
36
Fragster
модератор
04.09.13
✎
15:05
|
(28) сделай его подчиненным. или основной отбор убери у даты, например (ну, там потестить надо, да, но должно полегче стать)
|
|||
37
Fragster
модератор
04.09.13
✎
15:06
|
вообще не понимаю, зачем лепить основной отбор у всех измерений
|
|||
38
mistеr
04.09.13
✎
15:12
|
(0) >Хочу обойтись без планов обмена (без правил и КД) без флага распределенная- есть причины не хочу тут это обсуждать.
Могу попробовать расшифровать: "лень учить эти механизмы" :) (3) >при чтении изменений блокируются все таблицы изменений. А ты в курсе, зачем блокируются? Расскажи, как будешь решать эту проблему (согласованности) в своем механизме. |
|||
39
Maxus43
04.09.13
✎
15:12
|
(36) один фиг независимый непериодический набором при обменах не выгружается и не записывается, только по каждой записи же
|
|||
40
Maxus43
04.09.13
✎
15:22
|
(37) или за счет чего думешь будет ускорение?
|
|||
41
rozer76
04.09.13
✎
15:23
|
(39) выгружается по флагу "основной отбор"
|
|||
42
wms
04.09.13
✎
15:26
|
(38)
1. ошибаешься, уже работал и нравилось но тут др. ситуация десятки переф. баз там еще полбеды, а в ЦБ они все будут каждые 5 мин. загружать и тут уже беда- клиент порвет. 2.какой согласованности? не вижу проблем все должно паралельно грузиться, тем более загрузка будет облегченной без всяких расчетов движений |
|||
43
wms
04.09.13
✎
15:29
|
+(42) паралельно т.е. одновременно из разных баз будут грузиться объекты одного вида, а с планом обмена таблицы блокируются.
|
|||
44
AaNnDdRrEeYy
04.09.13
✎
15:31
|
(3) вот сам и ответил на свой вопрос, без блокировки данных в момент обмена ничего путного не получится, ты просто будешь терять те изменения которые произошли в момент обмена.
доли секунды а вероятность катастрофическая. |
|||
45
wms
04.09.13
✎
15:35
|
(44)в РС ничего не будет теряеться
обект пусть хоть 100 раз меняется, он будет 100 раз регистрироваться в РС или чуть меньше, если в 1 сек паралельно несколько раз, выгружаться то он всегда актуальный будет |
|||
46
AaNnDdRrEeYy
04.09.13
✎
15:37
|
(3)+ блокируются не какие-то таблицы изменений, я вообще не понял что ты имел в виду, а блокируются те объекты которые изменены. если из 10 документов 5 изменены и подлежат выгрузке то блокируются только эти 5 документов.
почему? да потому что выгрузка длится какое-то время например минуту, вот выгрузился в xml первый документ и пока выгружаются все остальные кто то взял и изменил этот первый документ. в xml осталась старая версия а в базе уже другая, и признак измененности уже не стоит. |
|||
47
AaNnDdRrEeYy
04.09.13
✎
15:40
|
(45) потому что ты расматриваеш вариант
выгрузился потом изменился снова выгрузился. а представь: выгружается еще не выгрузился до конца и изменился, что произойдет? часть от старой версии часть от новой? блокировать в начале выгрузки обязательно. |
|||
48
wms
04.09.13
✎
15:40
|
(46)"в xml осталась старая версия а в базе уже другая, и признак измененности уже не стоит"
признак измененности в РС проставится и при следующей выгр. уйдет новая версия проблемы не вижу. вот при плане обмена изменить не даст- это проблема |
|||
49
AaNnDdRrEeYy
04.09.13
✎
15:42
|
(48) ну ладно, а то что я в (47) написал как обходить будешь?
|
|||
50
mistеr
04.09.13
✎
15:42
|
(42) 1. Расшифруй, что значит "клиент порвет"? Пока я понял, что проблемы на приемнике, то есть не в части записи изменений. В чем же?
2. Изменение, записываемое в таблицу изменений во время выгрузки, должно попасть либо в эту, либо в следующую выгрузку. Без блокировки могут быть ситуации, когда оно никуда не попадет. |
|||
51
rozer76
04.09.13
✎
15:45
|
>>Измерения:
>>-ссылка >>-датавремяизменения интересно а квитирование будет или рассматриваете "только гарантированная доставка" ? Интересно послушать как вы это в вашей схеме реализуете |
|||
52
wms
04.09.13
✎
15:46
|
(49)коллизию возможны, постараюсь их учесть, что то типа сразу получать объект, а не потом его из-ссылки когда он может измениться.
но блокировать же всю таблицу как с планом обмена - для моей ситуации очень плохо. |
|||
53
wms
04.09.13
✎
15:47
|
(51)получается "только гарантированная доставка" каждого объекта
|
|||
54
AaNnDdRrEeYy
04.09.13
✎
15:49
|
(52) план обмена не блокирует всю таблицу, а только то что выгружает сейчас в конкретный файл.
если у тебя обмен каждые 5 минут и в за эти 5 минут изменилось только 20 документов то будут заблокированы только эти 20 документов. |
|||
55
wms
04.09.13
✎
15:50
|
(54)откуда инфа? я в (3) не сам придумал
|
|||
56
slavik013
04.09.13
✎
15:51
|
у нас на подобном велосипеде работает обмен с подсотню магазинов, хочу переделать на планы обмена, но боязно ))
|
|||
57
Fragster
модератор
04.09.13
✎
15:51
|
(40) за счет того, что наборы станут больше
|
|||
58
Fragster
модератор
04.09.13
✎
15:52
|
(57)+ соответственно, наборов станет меньше
|
|||
59
Fragster
модератор
04.09.13
✎
15:52
|
но тут надо тестить
|
|||
60
Fragster
модератор
04.09.13
✎
15:52
|
(59) в первую очередь механизмы записи регистра
|
|||
61
rozer76
04.09.13
✎
15:53
|
(53) ноу комментс :) ТС все ж рекомендую почитать про штатные возможности платформы http://langslab.com/ebooks/prof-dev2/tome2/pr-dev-t2-ch19
|
|||
62
Шапокляк
04.09.13
✎
15:54
|
(55) для файловой базы (3), для скульной (54)
|
|||
63
AaNnDdRrEeYy
04.09.13
✎
15:54
|
(55) поэксперементируй в пустой базе, сделай регистрацию одного документа, поставь точку остановки после строки
ПланыОбмена.НачатьЗапись(); и попробуй изменить тот документ который не был изменен до ПланыОбмена.НачатьЗапись(); он нормально запишется. |
|||
64
wms
04.09.13
✎
16:07
|
(61)глянул тем более придется отказаться от плана обмена см.(28)ибо конфы большей частью типовые и куча регистров в которых основной отбор- нафик-нафик
|
|||
65
wms
04.09.13
✎
16:09
|
(62)это я читал, это общие декларируемые отличия файловой от серверной версии еще по моему в 8.0 писали
у плана обмена заточено под свои таблицы состава объектов |
|||
66
Maxus43
04.09.13
✎
16:17
|
(64) ты не равняйся на (28), это 2 ошибки у нас, которые не надо допускать.
1. Учет ведут неправильно (юзают табеля, это прошлый век). 2. НЕ надо этого всего добра поидее в центральной базе. |
|||
67
etc
04.09.13
✎
16:19
|
(17)(46) ну если к слову то проблема потери данных решается легко добавлением реквизита с уникальным идентификатором к записи регистра сведений. Просто перед удалением записи после выгрузки нужно проверить изменился идентификатор или нет.
|
|||
68
AaNnDdRrEeYy
04.09.13
✎
16:23
|
(64) если скорость обмена очень важна, и блокировка данных вообще не допустима, стоит посмотреть на онлайн передачу данных в центральную базу через веб сервис. нажал на кнопку записать прям в этой же транзакции записи и пульнул ее в центральную базу через веб сервис.
правдо время записи увеличится, но если криво не писать то не на много. |
|||
69
etc
04.09.13
✎
16:25
|
у планов обмена есть 1 минус - нельзя сделать поэлементное подтверждение о загрузке получателем. Если какой-то 1 элемент из набора данных не может загрузиться в получатель то при каждой итерации выгрузки размер пакета будет только увеличиваться.
Да и блоками например по 100 записей выгрузку не сделаешь. |
|||
70
Fragster
модератор
04.09.13
✎
16:29
|
(69) сделаешь, просто нужно выгружать руками и после - перерегистрировать
|
|||
71
dmpl
04.09.13
✎
16:30
|
(69) Можно, регистрацию изменений можно удалять поэлементно. Надо просто предусмотреть передачу информации о принятых объектах.
|
|||
72
etc
04.09.13
✎
16:35
|
(70) ты про поэлементное подтверждение или по выгрузку блоками?
(71) удалять можно, но вот что в ответе от получателя использовать в качестве идентификатора элемента? UUID? |
|||
73
etc
04.09.13
✎
16:37
|
(70) я так понял про выгрузку блоками. Ну кстати тоже вариант, правда лишние записи в таблицу регистрации.
|
|||
74
etc
04.09.13
✎
16:40
|
(0) у тебя кстати будет проблема с регистрацией изменений регистров сведений. "Ссылкой" тут уже не обойдешся.
|
|||
75
Fragster
модератор
04.09.13
✎
16:52
|
(72) про выгрузку блоками
|
|||
76
Fragster
модератор
04.09.13
✎
16:52
|
поэлементное подтверждение можно сделать при обмене через веб сервисы - по одному объекту запуливать - записался - снимаем с регистрации
|
|||
77
etc
04.09.13
✎
16:58
|
(76) нууу, веб-сервис то конечно в этом плане "рулит".
|
|||
78
etc
04.09.13
✎
17:02
|
(77)+ правда чтобы такая схемар работала придется web сервис с обеих концов обмена поднимать. Иначе я пока не могу представить как со стороны запрашивающей базы выбирать по одной записи из плана обмена который находится на стороне базы с web-сервисом.
|
|||
79
Fragster
модератор
04.09.13
✎
17:12
|
(78) Да. А в чем проблема?
|
|||
80
etc
04.09.13
✎
18:13
|
(79) ну например, есть веб-сервис торчащий из базы в которой в плане обмена некоторое количество записей.
Метод 1: запросить через веб-сервис данные первой записи из плана обмена. Обработаем её (что-то загрузим) и вызвав другую функцию веб-сервиса скажем ему удалить данную запись из плана обмена. Нужно получить следующую но как на стороне веб-сервиса запомнить что он отдал уже предыдущую запись? Метод 2: получить данные по всем записям плана обмена. И обрабатывая по одной вызывать функцию веб-сервиса передавая что-то в качестве идентификатора чтобы на стороне веб-сервиса удалилась запись из плана обмена. |
|||
81
etc
04.09.13
✎
18:16
|
Вобщем непонятки одни. Пока нет четкой картины. Как раз буду пробовать в ближайше время, может что придумается.
|
|||
82
Fragster
модератор
04.09.13
✎
19:27
|
(80) все не так :)
есть вебсервис, у него один метод - ЗаписатьОбъект. Обработкой обмена вызываем его, передавая зарегистрированный объект, если он выполнился - снимаем объект с регистрации. т.е. не запрашиваем данные, а пропихиваем |
|||
83
etc
04.09.13
✎
19:40
|
(82) либо ты меня не понял либо я тебя. Это ты описал передачу в объекта в сторону базы с веб-сервисом. А в обратную сторону?
|
|||
84
Fragster
модератор
04.09.13
✎
23:45
|
(83) в каждом узле по севису, в который остальные узлы пихают данные
|
|||
85
mistеr
05.09.13
✎
09:18
|
(83) (84) Народ, вы чего? Это распределенные транзакции, 1С их не умеет. Забудьте.
|
|||
86
Fragster
модератор
05.09.13
✎
11:35
|
(85) где в моем варианте "распределенная транзакция"?
|
|||
87
mistеr
06.09.13
✎
11:53
|
(86) "если он выполнился - снимаем объект с регистрации" - вот здесь. Без транзакции тут будет попа.
|
|||
88
Fragster
модератор
06.09.13
✎
11:56
|
(87) ну не получилось снять с регистрации, да и пофиг, еще раз отправим...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |