Ми розробляємо дві суміжні системи. Один з них (A) буде встановлений на машинах наших клієнтів. Решта (B) буде використана моєю організацією.
У кожної системи є своя база даних (реляційна), і їх схеми відрізняються. Однак обидві системи мають бути синхронізованими. Крім того, деякі зміни B мають бути експортовані до всіх систем класу A, а інші лише до конкретної.
Деякі клієнти не мають підключення до Інтернету, тому синхронізація, в деяких випадках, повинна здійснюватися за допомогою обміну файлами.
Отже, ми плануємо вирішити цю проблему наступним чином:
- Кожна система підтримує журнал змін своєї бази даних. Ми плануємо реалізувати це разом з MongoDB.
- Коли система ініціалізує процес синхронізації, вона отримує всі внесені зміни з журналу. Якщо система B, отримані зміни залежать від місця призначення. Потім система їх серіалізує у форматі XML і, нарешті, надсилає їх (через файл або мережу).
- Коли інша кінцева точка отримує набір змін, вона їх несеріалізує. Потім система здійснює певні перетворення над даними, які можуть бути необхідними, і, нарешті, записує зміни. На цьому кроці, якщо це необхідно, система повинна вирішити конфлікти, які можуть існувати.
- Нарешті, приймальна система надсилає свої зміни (та інші продукти вирішення конфлікту).
Чи підхід такий, здійсненний, масштабований та елегантний? Які зміни чи доповнення ви б внесли?