views:

34

answers:

1

I am working on an application that runs on multiple clients that talk to one main MySQL database. Additionally, we have a web application that uses the same MySQL database.

Due to latency issues, all clients will have to run their own local MySQL database which should be a copy of the main MySQL database. The web application remains to use the main MySQL database.

The clients only read from table A, and write to table B. The web application writes both to tables A and B.

How should I setup a replication scheme that ensures data consistency? It should be possible for clients to go offline for an extended period of time. Is this even possible using MySQL or am I better of having a look at something like CouchDB? CouchDB seems to support this explicitly according to the website:

it allows for users and servers to access and update the same shared data while disconnected and then bi-directionally replicate those changes later

(from: http://couchdb.apache.org/docs/overview.html)

+2  A: 

CouchDB has the semantics you need if it's feasible for you to move to away from MySQL.

You wouldn't even need to "two table" system. The document system has MVCC built in so you can update documents and resolve conflicts, etc. Replication is awesome and fully peer-to-peer and intended, by design, to support offline applications.

mikeal
The only problem I have with this solution is that I feel a relational database is a better fit for our data model.
Ton van den Heuvel
why do you feel that way?do you need to indexing on every key? is all of your data uniform in the column values (you never use null, ever)?
mikeal