Kami sedang mengembangkan dua sistem terkait. Salah satunya (A) akan dipasang di mesin pelanggan kami. Sisanya (B) akan digunakan oleh organisasi saya.
Setiap sistem memiliki database sendiri (relasional) dan skema mereka berbeda. Namun, kedua sistem harus disinkronkan. Selain itu, beberapa perubahan dalam B harus diekspor ke semua sistem kelas A dan yang lainnya hanya untuk yang spesifik.
Beberapa pelanggan tidak memiliki koneksi Internet sehingga sinkronisasi, dalam beberapa kasus, harus dilakukan melalui pertukaran file.
Jadi, kami berencana untuk menyelesaikan masalah ini sebagai berikut:
- Setiap sistem memelihara changelog dari databasenya. Kami berencana untuk mengimplementasikannya dengan MongoDB.
- Ketika suatu sistem menginisialisasi proses sinkronisasi, ia mengambil semua perubahan yang dibuat dari log. Jika sistem B, perubahan yang diambil tergantung pada tujuan. Kemudian, sistem membuat serial mereka dalam format XML dan, akhirnya, mengirimkannya (melalui file atau jaringan).
- Ketika titik akhir lainnya menerima perubahan itu, itu unserialize mereka. Kemudian, sistem membuat beberapa transformasi atas data, yang mungkin diperlukan, dan akhirnya, mencatat perubahan. Pada langkah ini, jika perlu, sistem harus menyelesaikan konflik yang mungkin ada.
- Terakhir, sistem penerima mengirimkan perubahannya (dan produk resolusi konflik lainnya).
Apakah pendekatan ini layak, terukur, dan elegan? Perubahan atau penambahan apa yang akan Anda lakukan?