I know that I did this with messaging in the past - in particular JMS with ActiveMQ. I sent updates to NoSQL repository (Mongo) using the queue. Thus, messages can accumulate in the queue, and if the connection to the NoSQL repository was ever broken, it could take the place where it stopped.
It worked very well because ActiveMQ was really stable and easy to use.
I always saw how this was done with the differences, as you mentioned. You enter date fields all over, and then keep track of the latest synchronization. The best part about this approach is that it easily allows you to rename transactions by changing the last synchronization date.
One of the last tips ... write good tools around transferring data from point A to point B (in this case, SQL in NoSQL). I wrote several tools for bulk loading NoSQL storage from SQL at my last job, and it made life easy if something really didn't sync. I could always recover between scripts and bulk upload processes.
source share