| From | Sent On | Attachments |
|---|---|---|
| Jens Alfke | Aug 11, 2009 8:43 am |
| Subject: | Detailed info on the B-tree store? Native implementations thereof? | |
|---|---|---|
| From: | Jens Alfke (je...@mooseyard.com) | |
| Date: | Aug 11, 2009 8:43:04 am | |
| List: | org.apache.couchdb.dev | |
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





