couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Lehnardt <>
Subject Re: Couch as a mail store?
Date Thu, 12 Feb 2009 17:24:38 GMT

On 12 Feb 2009, at 17:19, Brian Candler wrote:

> Of course, SMTP clients don't mind a small delay before they get  
> their 250
> OK at the end of the message; you can therefore write a number of  
> batches
> and do an fsync() every second or so, as long as you remember not to  
> send
> the acknowledgement back to each client until *after* the fsync has
> completed.

CouchDB does the fsync()-a-second currently.

> (2) Couch won't let you write a document to disk in chunks; if it  
> doesn't
> get an up-front Content-Length: header then it will buffer the whole  
> thing
> in RAM.
> So if you receive very large E-mail messages, you may wish to buffer  
> them
> locally (e.g. in a tempfile on another disk) before sending them as  
> a single
> document to Couch.
> Note that you sometimes get an indication of the message size in a  
> transaction, but it's not guaranteed to be accurate; so you won't  
> know the
> true size until you've read it in.

A patch to allow for streaming unknown-length attachments into CouchDB
is in the works.

> (3) As you say, messages are stored and deleted frequently. You may  
> end up
> having to compact your message store frequently, which means basically
> reading the whole store from start to end and rewriting it to a new  
> file.
> This has to be done when write load isn't too high, to ensure that  
> it will
> complete.

CouchDB's roadmap includes an item about pausing writes to allow  
to catch up on high write loads.


View raw message