|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Есть ИС1 и ИС2. В обеих системах существует сущность (таблица), допустим "Платежи", при этом в ИС1 платежи загружаются оператором, а в ИС2 они загружаются процедурой синхронизации из ИС1. Для исключения дублирования платежей в ИС2 фиксируются ID платежа, присвоенного ему в ИС1. При синхронизации платежей из ИС1 в ИС2 проверяется наличие ID платежа в ИС2 и, если есть платеж обновляется, если нет - добавляется. Теперь проблема. Регламент резервного копирования ИС1 и ИС2 разный, ИС1 в один прекрасный момент "падает" и админы начинают процедуру восстановления из резервной копии ИС1 за несколько дней назад. При этом ИС2 не откатывается на ту же дату. После этого пользователи ИС1 начинают загружать платежи но они регистрируются в ИС1 с НОВЫМИ идентификаторами, которые при последующей процедуре синхронизации попадают на ранее синхронизированные (после последнего бэкапа до падения ИС1) идентификаторы и ОБНОВЛЯЮТ ранее загр. платежи в ИС2, но т.к. порядок повторной загрузки платежей скорее всего не совпадет то за дни с даты падения ИС1 и даты восстановления из бэкапа получится мешанина. Хочу найти принципиальное решение как обеспечить поддержку целостности между двумя системами в случае сбоя и отката источника назад. Самый простой вариант - при сбое ИС1 откатывать назад ИС1 и ИС2 вместе, даже несмотря на то что ИС2 функционирует нормально. Минус этого решения очевиден - потеря работы пользователей не только ИС1 но и пользователей ИС2. Какие могут быть варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2010, 20:39 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000 Какие могут быть варианты? вариант очевиден - зеркальное отображение данных, производимых системой ИС1 в системе ИС2. p.s. ну и конечно избавить, по возможности, систему от "падений", а то об этом говорится как о стандартной ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2010, 20:47 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000, Для обмена данными нужно: 1. Синхронизация ID у записей, причем генерироваться они должны только в системе источнике. 2. Система - источник должна позволять выгружать данные за любой период времени. 3. У всех выгружаемых документов должен быть признак операции (создание, редактирование или удаление). Этот признак должен создаваться при выгрузке, а не "вычисляться" в приемной системе. Тогда в Вашем случае, Вы просто удаляете все импортированные в ИС2 данные до момента восстановления ИС1 из бэкапа или немного раньше. После того, как в ИС1 данные введут по новой, загрузите их в ИС2 с помощью процедуры синхронизации из ИС1. Тут есть неприятный момент: работа пользователей в ИС2 будет потеряна с момента восстановления данных из ИС1 в той части, в которой она зависит от загружаемых данных. (Например разнесение платежек к договорам и т.д.) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2010, 21:43 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
iscrafmRus000 Какие могут быть варианты? вариант очевиден - зеркальное отображение данных, производимых системой ИС1 в системе ИС2. p.s. ну и конечно избавить, по возможности, систему от "падений", а то об этом говорится как о стандартной ситуации. зеркалирование поможет, если в ИС2 не было ссылок (прямых) на сущность, залитую из ИС1. В противном случае, зеркалирование не спасет от ситуации, когда источник откатили на несколько дней, а в ИС2 уже к тем данным, что введены за последние несколько дней уже есть привязка. Мы с платежами делали через ввод нового генерируемого поля, определяющего уникальность записи (помимо первичного ключа) на основе семантики платежа... так чтобы в таких сиутациях синхроинизровать не по первичному ключу, а по смыслу платежной записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 04:33 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Mainframe_старыйзеркалирование поможет, если в ИС2 не было ссылок (прямых) на сущность, залитую из ИС1. В противном случае, зеркалирование не спасет от ситуации, когда источник откатили на несколько дней, а в ИС2 уже к тем данным, что введены за последние несколько дней уже есть привязка. если привязка есть, значит имел место факт платежа. Есть системы, которые синхронизируются при помощи механизмов зеркального отображения. Если одну, по какой-то причине откатили, то точно также можно и "накатить", естественно. Но опять же, повторюсь: рассматривается какой-то абстрактный пример, исключительная ситуация. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 11:43 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Может быть потенциальный конфликт, даже при "зеркальной" синхронизации, когда от загружаемых данных зависит другая выполненная работа. В этом случае ее нужно будет удалять, раз данные, на основе которых эта работа выполнена, будут загружены по новой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 14:12 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
РеалистМожет быть потенциальный конфликт, даже при "зеркальной" синхронизации, когда от загружаемых данных зависит другая выполненная работа. В этом случае ее нужно будет удалять, раз данные, на основе которых эта работа выполнена, будут загружены по новой. если "работа" выполняется на основании каких-то данных и этих данных нет в базе на определенный момент времени, то как бы и "работы" нет. Или речь о другом идет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 15:59 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000Регламент резервного копирования ИС1 и ИС2 разный, ИС1 в один прекрасный момент "падает" и админы начинают процедуру восстановления из резервной копии ИС1 за несколько дней назад. вообще говоря, что это за регламент резервного копирования такой, что при падении приходится восстанавливать систему с потерей нескольких дней? менять надо такой регламент скорее, и это не имхо, а первейшая необходимость. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 16:43 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000Хочу найти принципиальное решение как обеспечить поддержку целостности между двумя системами в случае сбоя и отката источника назад. ... Какие могут быть варианты?Принципиальное решение - создавать идентификатор платежа до регистриции в ИС1, по файту появления желания сделать платёж. Далее всё, что связано с этим платежём - регистрация в ИС1...ИСн, текстовые логи в терминалах, стикеры, наклееные на мониторах - должны идти с этим идентификатором. Вариант этого решения - предложение Mainframe_старый. Остальные варианты только приближают вас к идеалу, но не достигают его, т.к. всё равно в реальной большой системе за годы и десятилетия эксплуатации будут и потери данных, и ошибки программистов, и ошибки админов в управлении бакапами и т.п., т.е. такие ситуации будут всё равно возникать. Вам нужно такое решение, чтобы не закрывать фирму при таких сбоях, а восстанавливать данные и продолжать работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 19:18 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Mainframe_старыйiscrafmRus000 Какие могут быть варианты? вариант очевиден - зеркальное отображение данных, производимых системой ИС1 в системе ИС2. p.s. ну и конечно избавить, по возможности, систему от "падений", а то об этом говорится как о стандартной ситуации. зеркалирование поможет, если в ИС2 не было ссылок (прямых) на сущность, залитую из ИС1. В противном случае, зеркалирование не спасет от ситуации, когда источник откатили на несколько дней, а в ИС2 уже к тем данным, что введены за последние несколько дней уже есть привязка. ситуация именно такая - залитые из ИС1 платежи участвуют в других процессах ИС2 и это осложняет поиск решения без потери сделанной работы пользователями ИС2 Mainframe_старый Мы с платежами делали через ввод нового генерируемого поля, определяющего уникальность записи (помимо первичного ключа) на основе семантики платежа... так чтобы в таких сиутациях синхроинизровать не по первичному ключу, а по смыслу платежной записи. поясните мысль подробнее - у платежа стандарно есть несколько реквизитов, композицию которых можно конечно рассматривать как уникальный ID, но не будет ли это дорого стоить с точки зрения хранения и использования? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 19:27 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
iscrafmMainframe_старыйзеркалирование поможет, если в ИС2 не было ссылок (прямых) на сущность, залитую из ИС1. В противном случае, зеркалирование не спасет от ситуации, когда источник откатили на несколько дней, а в ИС2 уже к тем данным, что введены за последние несколько дней уже есть привязка. если привязка есть, значит имел место факт платежа. Есть системы, которые синхронизируются при помощи механизмов зеркального отображения. Если одну, по какой-то причине откатили, то точно также можно и "накатить", естественно. Но опять же, повторюсь: рассматривается какой-то абстрактный пример, исключительная ситуация. ИС1 и ИС2 не являются зеркалами друг к другу. Они реализованы на разных платформах и имеют разный функционал. Все что их объединяет - это платежи которые нужны для самостоятельного учета в каждой из систем. Платежи поступают по цепочке Казначейство->ИС1->ИС2 Сейчас думаю над вариантом разбиения цепи на две Казначейство->ИС1 Казначейство->ИС2 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 19:30 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
iscrafmНо опять же, повторюсь: рассматривается какой-то абстрактный пример, исключительная ситуация. К сожалению пример не абстрактный а из жизни. Следить за отказоустойчивостью более 80 пар ИС1-ИС2 затруднительно, а техника и новые сырые версии ИС1 могут ломать шаткое равновесие. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 19:33 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
РеалистМожет быть потенциальный конфликт, даже при "зеркальной" синхронизации, когда от загружаемых данных зависит другая выполненная работа. В этом случае ее нужно будет удалять, раз данные, на основе которых эта работа выполнена, будут загружены по новой. Соглашусь, даже в классической двунаправленной синхронизации есть геморрой под назнание разрешение конфликтов. В нашем случае ИС1 и ИС2 не зеркала априори. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 19:35 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
egorychRus000Регламент резервного копирования ИС1 и ИС2 разный, ИС1 в один прекрасный момент "падает" и админы начинают процедуру восстановления из резервной копии ИС1 за несколько дней назад. вообще говоря, что это за регламент резервного копирования такой, что при падении приходится восстанавливать систему с потерей нескольких дней? менять надо такой регламент скорее, и это не имхо, а первейшая необходимость. согласен, это одна из мер только из разряда организационных. Но все равно даже если резервное копирование ежедневное, откат ИС1 на день назад повлечет откат на день работы совершенно нормально работающей ИС2. Возможно это жертва которую придется принести за связывание одной сущности в двух ИС ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 19:38 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
alexeyvgRus000Хочу найти принципиальное решение как обеспечить поддержку целостности между двумя системами в случае сбоя и отката источника назад. ... Какие могут быть варианты?Принципиальное решение - создавать идентификатор платежа до регистриции в ИС1, по файту появления желания сделать платёж. Далее всё, что связано с этим платежём - регистрация в ИС1...ИСн, текстовые логи в терминалах, стикеры, наклееные на мониторах - должны идти с этим идентификатором. Вариант этого решения - предложение Mainframe_старый. Вы об этом? alexeyvg Остальные варианты только приближают вас к идеалу, но не достигают его, т.к. всё равно в реальной большой системе за годы и десятилетия эксплуатации будут и потери данных, и ошибки программистов, и ошибки админов в управлении бакапами и т.п., т.е. такие ситуации будут всё равно возникать. Вам нужно такое решение, чтобы не закрывать фирму при таких сбоях, а восстанавливать данные и продолжать работать. согласен и с первым со вторым, поэтому и ищу решение. Наиболее правильным видимо будет отказаться от синхронизации и задублировать входящий платежей на обе системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 19:42 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000 ИС1 и ИС2 не являются зеркалами друг к другу. Они реализованы на разных платформах и имеют разный функционал. Все что их объединяет - это платежи которые нужны для самостоятельного учета в каждой из систем. Платежи поступают по цепочке Казначейство->ИС1->ИС2 Сейчас думаю над вариантом разбиения цепи на две Казначейство->ИС1 Казначейство->ИС2 Этот вариант будет оптимальным, если у Вас получиться проверять идентичность введенных платежек, что бы не вручную искать расхождения при различных ошибках ввода в разных системах. Такую проверку нужно будет делать как Вы сами и написали: Rus000... у платежа стандарно есть несколько реквизитов, композицию которых можно конечно рассматривать как уникальный ID... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 20:03 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000Но все равно даже если резервное копирование ежедневное, откат ИС1 на день назад...современные промышленные СУБД давно уже умеют восстанавливать базу на момент сбоя, при правильно организованной схеме резервного копирования. Чтение документации и правильные вопросы на профильном форуме по вашей СУБД помогут вам в определении таковой. Имхо, вам надо направить свои усилия на повышение отказоустойчивости системы ИС1, вместо изобретения странных костылей. Принципы построения отказоустойчивых систем известны и давно опубликованы, и включают как программные, так и административные методы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 20:37 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
egorychRus000Но все равно даже если резервное копирование ежедневное, откат ИС1 на день назад...современные промышленные СУБД давно уже умеют восстанавливать базу на момент сбоя, при правильно организованной схеме резервного копирования. Чтение документации и правильные вопросы на профильном форуме по вашей СУБД помогут вам в определении таковой. Вы о чем, коллега? любому здесь понятно что СУБД умеют восстанавливать данные на момент сбоя, но как это относится к описанной ситуации? в данному случае непротиворечивая резервная копия есть совокупность резервных копий ИС1 и ИС2 при условии что регламентной синхронизации не произошло. В противном случае Вы не можете быть застрахованы от сбоя в любом звене, и все регламенты летят к черту. Или приведите здесь "правильно организованный регламент" для описанной ситуации. egorych Имхо, вам надо направить свои усилия на повышение отказоустойчивости системы ИС1, вместо изобретения странных костылей. Принципы построения отказоустойчивых систем известны и давно опубликованы, и включают как программные, так и административные методы. Хм .. Вы же понимаете, что повышение процента отказоустойчивости ИС1 никогда не достигнет 100%, причем каждый процент после 80-90 Вам будет стоить в как первые 90. Таким образом резервная копия ВСЕГДА будет одним из инструментов повышения отказоустойчивости, а раз так существует ситуации когда ИС1 сбойнет и потребуется восстановление данных. Хороший пример - кривая версия ПО, когда требуется экстренный откат обратно. Может изложите что-то по существу вопроса вместо общих всем известных сентенций ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 20:59 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000, речь идет о системах, над которыми Вы не имеете контроля? т.е. это закрытое ПО, чьего-то производства? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 21:18 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
iscrafmRus000, речь идет о системах, над которыми Вы не имеете контроля? т.е. это закрытое ПО, чьего-то производства? должный контроль только над ИС2, над ИС1 только косвенный ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 21:23 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000Наиболее правильным видимо будет отказаться от синхронизации и задублировать входящий платежей на обе системы. зеркалирование было предложено в самом начале, как самый надежный вариант, позволяющий восстановить данные и обратно в ИС1, в том числе. Не пойму, Вы с этим согласны или нет? Определитесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 21:23 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
iscrafmRus000, речь идет о системах, над которыми Вы не имеете контроля? т.е. это закрытое ПО, чьего-то производства? ИС1 разработана другим исполнителем и доступна только как источник данных, изменять код ИС1 не представляется возможным в краткосрочной перспективе ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 21:25 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
iscrafmRus000Наиболее правильным видимо будет отказаться от синхронизации и задублировать входящий платежей на обе системы. зеркалирование было предложено в самом начале, как самый надежный вариант, позволяющий восстановить данные и обратно в ИС1, в том числе. Не пойму, Вы с этим согласны или нет? Определитесь. Вариант может и надежный но для описанной ситуации на мой взгляд мало применимый 1) ИС1 и ИС2 имеют разных разработчиков 2) синхронизация платежей односторонняя и в обратном течении потока нет смысла 3) даже если бы мы начали думать над п.2) то придется брать ответственность за корректную вставку данных в чужое ПО (минуя интерфейс пользователя), а этого никому не хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 21:31 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000iscrafmRus000, речь идет о системах, над которыми Вы не имеете контроля? т.е. это закрытое ПО, чьего-то производства? ИС1 разработана другим исполнителем и доступна только как источник данных, изменять код ИС1 не представляется возможным в краткосрочной перспективе понятно. Тогда в ИС2 придется напрямую получать первичную информацию из казначейства. Если конечно есть такая возможность. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2010, 21:31 |
|
Синхронизация данных между двумя ИС
|
|||
---|---|---|---|
#18+
Rus000Может изложите что-то по существу вопроса вместо общих всем известных сентенцийпока не очень понятно существо вопроса, то у вас частые падения и потеря данных за несколько дней, то 80-90% отказоустойчивая система. хотя, конечно, ситуация начинает проясняться. Уже понятно, что контроля над кодом ИС1 у вас нет, однако: администрирование этой системы находится в ваших руках? есть ли возможность развернуть тестовую версию этой системы? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2010, 00:18 |
|
|
start [/forum/topic.php?fid=33&fpage=31&tid=1548251]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
98ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 502ms |
0 / 0 |