Каков рекомендуемый подход для синхронизации данных между различными приложениями? - PullRequest
3 голосов
/ 13 мая 2011

У меня есть приложение, написанное на J2EE + Spring + Hibernate (назовите его app1), теперь мой начальник хочет, чтобы другое приложение (app2, полностью отличающееся и написанное с использованием различных технологий) могло регулярно и автоматически синхронизироваться с ним (по крайней мере, только один путь от app1 до app2). Я никогда не делал ничего подобного ... Я могу вспомнить проблему: app2 вызывает app1 (возможно, с помощью веб-службы), как узнать, какая часть данных была добавлена ​​и обновлена ​​с момента последней синхронизации? Я подумал о том, чтобы добавить столбец метки времени в каждую таблицу основного приложения 2, чтобы приложение app могло сказать «дай мне все, что изменилось или добавлено после метки времени xxxx. Это включает в себя изменение многих вещей. Какие другие функции я могу использовать для решения этой проблемы? без изменения структуры приложения? (предположим, базы данных разные, и я не хочу, чтобы порты базы данных были открыты для всех на моем сервере).

наконец, я забыл, как насчет удаления строки? Отметки времени не решат эту проблему ...

Ответы [ 4 ]

1 голос
/ 13 мая 2011

Вы можете вести журнал изменений в app2. Триггер для вставки / обновления / удаления может поддерживать эту таблицу журнала. Приложение 1 может читать таблицу, чтобы получать изменения и периодически удалять обработанные строки журнала.

0 голосов
/ 13 мая 2011

Возможно, вам придется взглянуть на какую-нибудь утилиту синхронизации базы данных. Думаю, так будет лучше.

0 голосов
/ 13 мая 2011

Синхронизируете ли вы, что вы имеете в виду, что данные, к которым обращается app2, должны совпадать с данными, к которым обращается app1 (значит, app2 должна видеть последние данные, обновленные / измененные app1)?

Если это так, то почему бы просто не указать app2 на ту же базу данных, которую использует app1?

0 голосов
/ 13 мая 2011

Взгляните на Terracotta (http://www.terracotta.org/),, это очень надежная среда для синхронизации объектов между машинами.

...