CouchDB verifies that the document contents match a checksum which does impose computation and codec overhead, yes.
Considering that CouchDB stores multiple sorted indices to the documents in a database which is itself a filesystem file, in a safe append-only format, how would you justify an expectation of static Nginx performance? Surely CouchDB must open the file (right there you have tied Nginx at best) and then seek through its metadata to fetch the doc. Note, my disagreement with you is not fundamental, just of degree. Surely it is fair to give CouchDB some elbow room to work, to pay for its benefits? Back to document comprehension, CouchDB does do that and this is a huge opportunity for improvement. I believe Filipe has indeed proposed something much like you describe: store the utf-8 JSON directly on the disk. I'm excited that this conversation can paint a more clear picture of what we expect from CouchDB, to find a speed at which we could say, "this is slower than Brand X, but it's worth it." On Fri, Mar 23, 2012 at 11:41 AM, Jonathan Williamson <[email protected]> wrote: > As I'm requesting the documents in the exact format I submitted them > (with no transformations or extra information) I'd expect something > not far off a static file request from Nginx. As far as I can tell the > .couch files aren't compressed (though that wouldn't cause such slow > performance on an i5 anyway) and appear to contain the original > documents almost "as is". > > The other side effect is that while fetching the documents the CPU > usages rises to 100% which suggests, I guess, that CouchDB is reading, > deserialising, serialising, and then streaming the document. But it > doesn't seem like that should be necessary really? > > On Fri, Mar 23, 2012 at 11:16 AM, Jason Smith <[email protected]> wrote: >> Hi, Jonathan. >> >> Can we start by identifying how fast you think **is** reasonable. What >> speeds were you expecting? And on what grounds do you base that >> expectation? >> >> (For example, perhaps connecting and fetching one row from MySQL?) -- Iris Couch
