[Dovecot] dsync redesign

Attila Nagy bra at fsn.hu
Sat Mar 24 09:19:48 EET 2012


On 03/23/12 22:25, Timo Sirainen wrote:
> In case anyone is interested in reading (and maybe helping!) with a dsync redesign that's intended to fix all of its current problems, here are some possibly incoherent ramblings about it:
>
> http://dovecot.org/tmp/dsync-redesign.txt
>
> and even if you don't understand that, here's another document disguising as an algorithm class problem :) If anyone has thoughts on how to solve it, would be great:
>
> http://dovecot.org/tmp/dsync-redesign-problem.txt
>
> It only deals with saving new messages, not expunges/flag changes/etc, but those should be much simpler.
>
Well, dsync is a very useful tool, but with continuous replication it 
tries to solve a problem which should be handled -at least partially- 
elsewhere. Storing stuff in plain file systems and duplicating them to 
another one just doesn't scale.

I personally think that Dovecot could gain much more if the amount of 
work going into fixing or improving dsync would go into making Dovecot 
to (be able of) use a high scale, distributed storage backend.
I know it's much harder, because there are several major differences 
compared to the "low latency" and consistency problem free local file 
systems, but its fruits are also sweeter for the long term. :)

It would bring Dovecot into the class of open source mail servers where 
there are currently no contenders.

BTW, for the previous question in this topic (are there any nosql dbs 
supporting application-level conflict resolution?), there are similar 
solutions (like CouchDB, but having some experiences with it, I wouldn't 
recommend it for massive mail storage -at least the plain CouchDB 
product), but I guess you would be better off with designing a schema 
which doesn't need it at the first time.
For example, messages are immutable, so you won't face this issue in 
this area.
And for metadata, maybe the solution is not to store "digested" 
snapshots of the current metadata (folders, flags, message links for 
folders etc), but to store the changes happening on the user's mailbox 
and occasionally aggregate them into a last known good and consistent state.
Also, there are other interesting ideas, maybe with real single instance 
store (splitting mime parts? Storing attachments in plain binary form? 
This always brings up the question of whether the mail server should 
modify the mails, can be pretty bad for encrypted/signed stuff).

And of course there is always the problem of designing a good, 
consistent method which is also efficient.




More information about the dovecot mailing list