title: Approaches for Database Synchronization
body: <p>I am currently been assigned to develop a sync application for my company. We have SQL server on our database server which will be synced with the client database. Client databases are not known, they can be SQLite or MYSQL or whatever.</p>
  
  <p>What this sync app does is, detect changes that occur on server &amp; client databases. Save these changes and sync. If changes occur on server database it will be synced with the client database and vice versa.</p>
  
  <p>I did some research on it and came to know many solutions. One of them is to use a Microsoft Sync Framework. But I hardly found a good implementation example on it for syncing with remote databases.</p>
  
  <p>Then I came across Change Data Capture(CDC) on SQL Server 2008. CDC works by detecting the change on the source table through triggers and put these changes on a separate table called sync_table, this table is then used for syncing.</p>
  
  <p>Since, I cannot use the CDC feature because I don't have sufficient database rights on my machine, I have started to develop my own solution which works like how CDC does. I create separate sync_table for each source table, create triggers to detect data change and put this data in the sync_table.</p>
  
  <p>However, I am advised to do some more research on it for choosing the best implementation methodology.</p>
  
  <p>I need to keep the following things in mind,</p>
  
  <ul>
  <li>Databases may/may not be on the same network.</li>
  <li>On server side, the user must be able to select which tables will take part in the sync process.</li>
  <li>Devices that will sync with the server database need to be registered first. Meaning that all client devices will be registered by the user before they can start syncing.</li>
  </ul>
  
  <p>As usual any help will be appreciated :) </p>