directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Emmanuel L├ęcharny <>
Subject [Mavibot] Heads up
Date Fri, 25 Oct 2013 19:33:44 GMT
Hi !

I fnally found some time in the train those last two days (nothing beats
7 hours in a train when it comes to code isolated from life and its
contengencies ;-) to complete what I was working for. Here is a quick
status :
o we now have two BTree, in-memory and managed
o the keys and values are stored in Holders (KeyHolder and ValueHolder)
which store the raw representaion (ie, as byte[]). This save a hell lot
of time when we just load a page, read one value and discard the page
from the cache
o a cache is now used to store Nodes and Leaves
o when we have multiple values for a key, we store them as an array of
values if we have less than a given number (the threshold), then we
switch to a sub-btree
o currently, we switch to sub-btrees when we have more than 8 values

It works, I was able to use it in ApacheDS, and I was able to inject 100
000 entries in the server in around 30 mins (around 55 addition per

There is room for improvements though :
o when we switch to sub-btree, we inject all the array's values one by
one, and the sub-btree is written on disk as many times as we have
values. This is sub-optimal
o the findPos(K) method is called too many times (twice more than needed)
o the sub-btree are not cleaned when we don't need them anymore
o we need more tests, especially performance tests
o the code needs a bit of cleanup, so does the Javadoc

I will commit what I was working on in the last 3 weeks, and we may cut
a 0.2 just after.

Emmanuel L├ęcharny 

View raw message