The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

pattern for offline p2p

Field engineers need a local copy of the database when at remote sites.

This local copy needs syncing when they return to the office.

My idea was to make a journal-based store, so that syncing was about playing the log of changes since last sync (both to and from the 'master').

To complicate matters, it would be a good marketting win if this could be p2p instead of client-server, as a dedicated server - whilst simplifying things technically and from a backup perspective - is an expense that our customers might not want to shoulder.

Any thoughts upon the technical choices and challenges I'm facing designing this?
i like i
Wednesday, February 09, 2005
 
 
>> Any thoughts upon the technical choices and challenges I'm facing designing this?

Yes. Groove have solved this problem already and for only $189 per user. You need to see their Rapid Solutions Exchange pages to see how far along the 80%/20% path you can get for your money.

http://www.groove.net/solutions/showmarket.cfm/id/1
theWeasel Send private email
Wednesday, February 09, 2005
 
 
Failing that, look at something like RemObjects, Genuine Channels or Asta (Astatech) which solve part of the story.
theWeasel Send private email
Wednesday, February 09, 2005
 
 
One thing that could help you A LOT is a "Last Updated" field
for each table.  Make that field of type TIMESTAMP (if your DBMS supports it).  If your DBMS does not support it, then write your data-accessing-software so that any update operation to a table updates the "Last Updated" field.

When the field engineers get home, write a program that compares the 'Last Updated' field for each record from database A with database B, and updates accordingly.  You might just update the home database, then re-copy that database back onto the field engineer's PC.  Whatever you do, make sure that you are making complete BACKUPS of database A and database B BEFORE you do any kind of synching operation (in case you did something wrong!).  Keep the backups handy for at least a few months; you never know if you might need them, or might need to refer back to some old data!!!  I.e., don't assume things are going to go perfectly right off the bat, there could be hidden gotchas, but keeping a stream of backups will save "your posterior" in the long run!!!

Good luck!

Pete
Peter Sherman Send private email
Monday, February 28, 2005
 
 
Woops, I said:

"write your data-accessing-software so that any update operation to a table updates the "Last Updated" field.

I meant 'record/row' instead of 'table'.  There's a HUGE difference!!!

:-)
Peter Sherman Send private email
Monday, February 28, 2005
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz