Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> - completely isolated read-only transactions and one read/write transaction concurrently with a single lock to guard the writer. Readers will never be blocked by the single read/write transaction and execute without any latches/locks.

> - variable sized pages

> - lightweight buffer management with a "kind of" pointer swizzling

> - dropping the need for a write ahead log due to atomic switching of an UberPage

LMDB made those same design choices and is extremely fast/robust.



In my particular case it was also a design decision made back in 2006 or 2007 already. It's designed for fast random reads from the ground up due to the versioning focus (reading page-fragments from different revisions, as it just stores fragments of record-pages). I'll change the algorithm slightly to fetch the fragments in parallel (should be fast on modern hardware, that is even SSDs and in the future for instance with byte-addressable non-volatile memory).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: