I don't believe there is, or can be, any asynchronous multi-master
replication system for any database that will work with all possible
general purpose constructs.
I believe it's possible in theory if you have system wide transaction
locking, i.e. synchronous. However, if you have to have system wide
transaction locking, what's the point? You have server X, that has to
wait for a transaction to finish on server Y, why don't you make them
the same server?
It would be nice to have some sort of paradigm for synchronizing
databases that go on and offline with each other and even have diverse
data structures. I know there's a whole science of transaction
processing which is simple in concept, but very often difficult to
implement in practice. It's a matter of matching transactions/records
up at an atomic level and replicating them across different servers.
The sort of "holy grail" for me, and I believe a lot of other people, is to:
1. have a server that can easily and transparently replicate itself
in different environments for speed, security, and fault tolerant purposes.
2. allow for people to go offline with their datasets, for instance
on a laptop on an airplane, and then go back online with relative ease.
3. Have a well defined and simple system for identifying and dealing
with conflicts that arise from multiple copies of the same dataset.
Just ideas that I have on this topic. I wonder if anybody's doing any
work on the subject.