Currently where lots of computer systems, mobile products or web services work together or behave like modems, syncing will get more essential. As everyone knows solutions that sync aren’t probably the most comfortable ones and it is best to not sync whatsoever.

I’m still curious the way you would implement a syncing means to fix sync between multiple organizations. You will find already lot of different approaches, like evaluating a transformed date area or perhaps a hash and taking advantage of the newest data or letting the consumer chose what he really wants to use within a situation of the conflict. Another approach is to try and instantly merge conflicted data (which for me isn’t so clever, just because a machine can’t you know what the consumer meant).

Anyway, here are a handful of questions associated with sync that people should answer before beginning to implement syncing:

  • What's the newest data? How do you wish to represent it?
  • Exactly what do I actually do just in case of the conflict? Merge? Will I prompt and request the consumer how to proceed?
  • Exactly what do I actually do after i enter into an sporadic condition (e.g. a disconnect because of a flakey mobile network connection)?
  • What must i do after i shouldn't enter into an sporadic condition?
  • How do you resume a present sync that got interrupted?
  • How do you handle data storage (e.g. MySQL database on the web service, Core Data with an apple iphone and just how will i merge/sync the information without lots of glue code)?
  • How must i handle edits in the user which happen throughout the sync (which runs without anyone's knowledge, therefore the UI isn’t blocked)?
  • How as well as in how will i propagate changes (e.g. a person produces a „Foo“ entry on his computer and doesn’t sync then he’s on the run and produces another „Foo“ entry what goes on when he attempts to sync both products)? Will the consumer have two „Foo“ records with various unique IDs? Will the consumer only have one entry, but which?
  • How must i handle sync after i have hierarchical data? Top-lower? Bottom-up? Will I treat every entry atomically or will i only consider a supernode? How large may be the trade-off between oversimplifying things and trading a lot of time in to the implementation?

You will find lots of other questions and Hopefully I possibly could inspire you sufficient. Syncing is a reasonably general problem. When a good, versatile syncing approach is located, it ought to be simpler to use it to some concrete application, instead of start thinking on your own. I recognize that you will find already lots of programs that attempt to solve (or effectively solve) syncing, but they're already fairly specific a give enough solutions to syncing approaches generally.