couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Scholl>
Subject couch_gen_btree: pluggable storage / tree engines
Date Sat, 31 Jan 2009 14:49:16 GMT
Hello all,

although I am still doing a CouchDB review to better understand its
design, I like to ask for comments for a tiny idea.
I would like to add another index structure to CouchDB (a Merkle-Tree)
and come up with asking myself what the best way of doing this would be.
I have a rough guess of how closely couch_btree is knit into CouchDB.
Therefore I would like to hear from you experienced developers comments
on some of my ideas:

My suggestion is a MySQL-ly approach (pluggable engines) for CouchDB,
that is to factor out several components into generic behaviours:
- a couch_gen_tree:
	abstracts access to couch_btree

Maybe even a
- couch_gen_storage
	e.g. file system, file storage access, etc.

- couch_gen_replicator
	an imperative approach to tree / storage replication.

As I said: I am new to CouchDB's code so I cannot really estimate how
the current layering approach looks like, and whether we can even split
out the 3 components.

Imho there would be several benefits in having this flexibility brough
by couch_gen_*:
- new use-cases for CouchDB:
	- R-trees: for adding another way of querrying
	  documents (e.g. nearest neighbour search)
	- genome databases
	- a special datastructure for indexing tags
	- ...
- with a flexible storage layer, CouchDB could ran on top of other
infrastructures and products: like S3, SimpleDB, AppEngine, etc.
- (the following is just a guess:) a cleaner CouchDB codebase with a
clear layering and separation of components
- possibly (again, just a guess): with the plugin approach, we can more
easily support advanced indexing and db management schemes, like
distributed storage access, distributed transactions, etc.


View raw message