New demo for sync lovers! This one is interesting though as it is an attempt to address a critical customer satisifaction issue. As you know, change tracking is the process of maintaing information about changes to data rows such that incremetal changes since the last sync run can be easily collected. Until now the tracking techqniue that I used in pervious demos was to add extra columns to the data table or in other words couples the data with the tracking metadata. Well, that’s one of those things that makes customers unhappy. This is understandable since a lot of investment were made to build the schema and normalize it for optimal functionality and performance. Now adding few columns to each table just to enable offline experience seems like a high price that many customers are not willing to pay. Another valid point is what if the offline scenario is no longer needed, will the system continue to have these columns or we need yet another schema change to take them off?! Clearly justifiable concerns here, don’t you agree?
The good news though is that the building a decoupled change tracking layer is not a big deal. In the decoupled model, the base table schema remains intact. As the demo shows, three triggers (insert, update, and delete) and separate tracking table are enough to build equivelant change tacking model. Although, the sync commands need to change since it needs to grab corresponding tracking infromation by joining the base table with the tracking table, the changes are simple and easy to understand.
With decoupled tracking layer, the schema remains the same and the tracking table and triggers can be taken out when the sync is no longer required. This felixibility is built in the sync framework due to its very open architecture.