[Dovecot] Scalability plans: Abstract out filesystem and make it someone else's problem
Daniel L. Miller
dmiller at amfes.com
Thu Aug 13 00:54:59 EEST 2009
Steve wrote:
>
>> dbox-only is fine. I could care less about the storage method chosen -
>> filesystem, db, encrypted, whatever - but I believe the impact on
>> storage - and possibly indexes & searching - would be huge.
>>
>> On the personal greedy side, if you want to see a mass corporate
>> migration to Dovecot, with potential service contracts - that would be a
>> feature worth talking about. I can see IT manager's eyes light up at
>> hearing about such a item - and I've never heard of any other mail
>> server supporting such a thing.
>>
>>
> IBM Lotus Domino has that feature since ages (they call it shared mail). And they don't have that just for normal mails but for archives as well (called single instance store). This feature was first introduced in cc:Mail and then got integrated into Domino and is still there and even extended to work with various backends (like the new DB2 backend). Microsoft copied that concept from them (from my viewpoint the way how MS has done it in the past was horrible. I think newer versions work better but I am not sure).
>
> >From my experience in doing messaging since 2 decades I can tell you that it is not worth doing single instance store (or how ever you call it). Storage is ultra cheep these days and backup systems are so fast that all the benefits which where valid some years ago are gone today.
>
> It might rock your geek heart to implement something like that but doing the math on costs versus benefits will soon or later show you that today it's not worth doing it.
I have no experience with Domino, but I just did a Google for "lotus
domino shared mail" and read the brief on lotus.com. Based on what I
read, it has potential - only splits message headers from bodies and
stores the bodies as complete images, without separating attachments.
That helps reduce the load when somebody blasts out a flier to everyone
in the company in a single message - but I'm asking for something more
ambitious.
If every attachment in a given message is individually scanned to
generate some unique identifier, and that identifier then used to
determine whether or not it exists in the database - this could have
HUGE effects. This now addresses not just the simple broadcast - but
some really crazy possibilities.
User A receives a message with an attachment (like a product brochure),
likes it, and forwards it to Users B-Z.
User F recognizes that product, but has a counter-proposal, so he
attaches another brochure and replies to A-Z. Being an idiot, the
original attachment is still kept in the reply.
User H forwards this message to a buddy at another company for discussion.
[...time passes...]
Three weeks later, User 101 at the other company gets back from
vacation, has just received a message with the original brochure. He
forwards it to User A (who started this mess).
User A, being a total dimwit, doesn't recognize that he already spread
this junk throughout the company last month - so he broadcasts it again.
Under the structure I've proposed, net storage consumed by the
attachments should be one copy of attachment 1, and one copy of
attachment two, plus headers and any comments in the messages times the
number of recipients. Domino would store one copy of attachment 1, then
a copy of attachment 1 + attachment 2, then another copy of attachment 1.
This is a minor example - but I just wanted to show SOMETHING to justify
the effort.
As far as cheap storage - I agree costs are a fraction of what they once
were. But by reducing the amount stored, consider the tradeoffs of
reduced caching, smaller differential backups, and reduced archival
costs (off-site storage costs often calculated per GB), just to name a
few. To me the only down side (other than requiring Timo to invest more
blood, sweat, & tears in this project) is how much this costs in message
READ time. For me, typical user interaction is reading. As I believe
previously mentioned, if the server implements some type of delayed
delete function, then delete times are not a concern. And write times
are also (I think) a minor concern. But the primary issue is how fast
can we retrieve a message + attachments and stream it to the client. It
seems to be header lists won't be impacted, so simply pointing the mail
client at the server to see a list of mail shouldn't change at all. So
then the question is the potential latency from when a user selects a
message to when it appears on their screen. Will the time spent
searching the disk, and assembling the message, be significant when
compared with the network communication between server & client?
--
Daniel
More information about the dovecot
mailing list