That is, the application layer is aware of a local and hence fast server that it should by default use, and a remote server that access to is not 100% guaranteed. Changes it has made to "the database" it keeps track of and periodically informs an application instance local to the master database of them and vice-versa. Synchronisation of updates would be policed by timestamps and I'm thinking of handling new entries using a partitioned number space to prevent collisions and having them self-update as they fill up.

Wade.