Key-value storage [was "add a new packed repository extension"]

Augie Fackler raf at durin42.com
Tue Jul 3 19:53:04 CDT 2012


On Jul 3, 2012, at 5:05 PM, Bryan O'Sullivan wrote:

> On Mon, Jul 2, 2012 at 4:48 PM, Bryan O'Sullivan <bos at serpentine.com> wrote:
> 
> 
>> The current index format and its parser are really a proof of concept: the
>> parser eagerly parses the entire index, and that becomes the new
>> bottleneck. I'm currently trying to figure out a good on-disk format for
>> very fast indexing.
>> 
> 
> I did a quick test yesterday, using bsddb to store the mappings from revlog
> file name to offset and size within the pack. That improved read
> performance from a severe bottleneck to negligible, but bsddb is not
> something I trust. It's unportable (not available on OS X), prone to bugs,
> and requires manual recovery after some kinds of crashes.
> 
> There aren't any very satisfactory alternatives. The pack index is not an
> immutable piece of data, so it has to support writes, which means that my
> previous enthusiasm for hand-rolling something has dissipated, as this puts
> me in the realm of "write a B-tree storage engine" or some similar
> silliness.
> 
> Ideas, anyone?

http://code.google.com/p/leveldb/ might be useful, but I've never looked at leveldb so it might be a poor choice.

> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list