- From: Chris Anderson <jchris@apache.org>
- Date: Wed, 1 Jul 2009 11:55:19 +0200
- To: public-webapps WG <public-webapps@w3.org>
Hello,
Long time fan, first time writer. ;)
I've been following the Web Storage proposals with interest, and was
just independently drafting a mail suggesting the a B-Tree API would
be much simpler to standardize, and would be an adequate foundation
for building most anything more specific.
I'd like to express my support for a BDB style API. Firstly because it
would be much less prone to vendor differences, and secondly because I
can see how to implement a performant CouchDB on top of it. It could
be a bit harder to build a SQL-like interface on raw B-Trees, but
completely possible if someone is determined.
I don't think we need to worry about specific vendor implementations,
just a unified API with very small surface area. To build CouchDB all
we'd need is B-Trees that support in-order and reverse-order
traversal, and optionally user-defined collation functions.
Here's a first cut at imagining the API:
=== JS pseudocode ===
var btree = new WebStore("dbname", <optional collation function definition>);
btree["mydocid"] = {"some":"json"};
btree.forEach(function(key, value) {
// in order traversal
})
btree.forEach(function(key, value) {
// reverse order traversal
}, false)
btree.forEach("startkey", function(key, value) {
// in order traversal, starting from "startkey"
// we could use throw() to stop traversal
})
btree.forEach("endkey", function(key, value) {
// reverse order traversal, starting from "endkey"
// use throw() to stop traversal
}, false)
// delete a btree
WebStore.drop("dbname");
===
Thoughts?
Chris
--
Chris Anderson
http://jchrisa.net
http://couch.io
Received on Wednesday, 1 July 2009 12:04:38 UTC