Hi !

it has been a while since I committed something in this repo. I finally completed a big rewrite I started 2 years ago.


Basically, it was about supporting cross-B-tree transaction, something that was badly missing in the previous release. There are many other important changes :

- we don't support multi-values in a B-tree. If one want to stroe such things, then the way to go is to create a B-tree aside if the number of values is too big.

- The Btree of Btrees (aka BoB) that was used to store all the B-trees versions for all the pending transactions has been replaced by a List of B-trees. This is simpler to serialize on disk and simpler to manage

- The free pages management is currently disabled, but will soon be reestablished. That mean the database file will continuously growth atm.

- We use Caffeine as a internal page cache

- One of the biggest advantage of having a cross-Btree transaction is that we can now inject many elements before flushing the data on disk. This speeds up insert if we can gather many of those updates into a single commit (it can be one or two order of magnitude faster). For LDAP, this is interesting because a LDAP update operation generally involve the update of 10 or more B-trees, with some of them being updated more than one - typically, the RDN index -. But it can also be leveraged by the server itself as it now support the LDAP transaction extended operation (https://tools.ietf.org/html/rfc5805). It can also be used with great benefit for a bulk load, where we commit after 10 of thousands entries addition.


There is more to do, and the first step is to add the free page management. This is what I'm going to work on.


Thanks !


--
-----------------
Emmanuel Lécharny
CTO, Busit


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to