On Wednesday 07 Jun 2006 12:44, Timo Sirainen wrote:
As for multi-master replication, what databases really support that? I think with Oracle it supports it only when the filesystem itself is already shared between the computers, and Dovecot already supports running in shared filesystems, so Oracle would be just extra overhead there.
Oracle supports (well version 7 and 8) support a multimaster replication strategy, the only requirement was reasonable network connection between instances. It uses a distributed transaction model, so the masters just queue up transactions which are then pushed by existing Oracle mechanisms to send remote updates to other servers.
For email, which has a relatively simple state model, and mostly small updates (excluding "new email"), delete message, mark read, mark replied, change folder attribute, it could be made to work well (at least till people are different sites file the same email in different folders at the same time ;-). It would be simple also to do a read mostly copy, so that say email attachments are mirrored readonly at farflung sites, removing the multimaster requirement, but still speeding up the "read the email with big attachment" (which for most wide area networks is the main pain -- Lotus Notes anyone?)
Not sure what the point would be of multimaster rep for email, as it is likely to push up the resource requirements. I don't see a scenario where it is likely to help, unless you have a lot of email boxes that are shared at two sites with poor connectivity between them, but which change slowly. Lotus Notes has to be better at something - possibly ;)
We used Oracle replication to push the active master closer to the end user, for a 'follow the sun' helpdesk, it was probably more trouble than it was worth even so. But I did get to do the Oracle Advanced Replication course, which was educational. Mostly I learnt that multimaster replication can be deployed with simple and robust tools, and that from an application design perspective trying to use it is almost always a mistake since it introduces various subtle constraints on the applications use of the database, and can cause you to have a lot of out of sync databases in various far flung corners of the world, and spend a lot of time and effort getting them all back in sync.