[elephant-devel] Backend musings
Leslie P. Polzer
leslie.polzer at gmx.net
Fri Feb 29 18:53:32 UTC 2008
> It strikes me that Tokyo Cabinet's only major benefit is have a better
> licensing model. Getting it to the same state as BDB would be a
> significant project (and it doesn't support Windows, I believe).
I thought that TC might have a better deadlock handling (after
all there are other concurrency models that don't have that
problem), but I might have been mistaken.
> Mirroring Robert's sentiments, I think we'd be far better off spending
> limited developer cycles on a lisp-only solution running that solves
> both licensing, integration, performance, usability and other
> headaches experienced with our ffi or socket based solutions.
Guess I'm with you both here.
> - Support persistent slot writes
Isn't this trivial with the current serializer architecture?
> - Expose a persistent key-value store, indexed key-value store and
> iterator/cursor interfaces over them
Comes for free with every B(+)-tree, I guess.
> - Support a transaction model that guarantees the ACID properties
> - Work correctly in a threading model
> - Ideally would also work in a multi-process, shared-memory scenario
>
> I think the big design decisions for a lisp data store include:
> - Backing-store model (prevalence-style logging, binary paging,
> Rucksack style maps, etc)
>
> - Multi-threaded transaction support (page/object locking vs. per-txn
> replication)
OL seems more simple and therefore better to me.
I don't know what per-txn replication is, and neither anything
about the backing store methods you mentioned.
> - Multi-process support?
...should definitely be included. My model of having separate
processes for frontend and admin backend is not too uncommon.
> My latest thinking is that we can spend disk space to save time/
> complexity and assume that we have lots of main memory available.
> This can allow us to avoid messing with fixed-sized pages and locking.
Yup.
> - We serialize commit ops and cancel active transactions that have
> read or written data
What is meant by "serializing" here?
> We can make serialization of btree nodes easier by just serializing
> the lisp structure and having bins of differently sized disk regions
> to write them to rather than maintaining fixed sized pages. Later, we
> could choose to enhance the system by converting to a low-level read/
> write into the C byte stream that we fetch from files.
Err... "C byte stream"?
> PS - I don't see B+Trees in CL-CONTAINERS. Is it in there with
> another name?
It should be the QUAD-TREE for all I know.
> Also, we need a B+Tree that actually is mapped to a
> disk file rather than into memory as seems to be the case with most of
> cl-containers
Yes. I'm not sure how easily extensible the CL-CONTAINERS
tree is, but it might be a good base to start with.
Leslie
More information about the elephant-devel
mailing list