I'm interested in the underpinnings of the CouchDB server — the crash-
proof concurrent B-tree store. There's a blog post linked to in the
wiki that describes the basic concepts (leaves and updated
intermediate nodes are appended to the file; the start of the file
stores two links to the root node) but is there any more detailed
description[1]? And is there any similar technology available that's
implemented in native code (C/C++)?[2]
Basically I'm interested in whether it's feasible to build a simple
storage system (for use in an HTML5 Web browser) that a CouchDB-
compatible client library could be built on top of. JChris has posted
about this topic recently[3], and pointed out that the hashtable-
oriented key-value store currently speced in HTML5 is a poor match for
CouchDB. Moreover, the SQLite database engine underneath it doesn't
guarantee data integrity after a hard system crash (as I know from
painful experience.) So: could we build a fault-tolerant B-tree based
API into the browser? (This isn't just academic curiosity: I recently
started work on the Chrome team at Google, and HTML5 local storage is
one of my group's responsibilities.)
Thanks!
—Jens
[1] Alas, I cannot Use The Source, Luke, as I do not have Erlang
skillz. :(
[2] I know of many, many B-tree libraries (Berkeley DB,
TokyoCabinet...) but none that are fault-tolerant.
[3] http://jchrisa.net/drl/_design/sofa/_show/post/Fixing-HTML-5-Storage