Hi guys,

I had time yesterday and today to think a bit more about the reverse table we use in index. I thought we were able to remove them and saving the time it costs to generate them.

However, one day and a half without coding make me realize that those reverse table are a critical part of an efficient evaluation engine. I initially thought that using some Sets computation could allow us to remove those table, and I was right, put to the point we don't have to manipulate big sets of IDs. For instance, with a huge database with millions of entries, a OneLevel or SubLevel index will potentially contains millions of IDs associated with one ID. In this case, doing an intersection operation on this huge set will simply be overkilling in term of memory (as we wlll have to keep the resulting set in memory).

OTOH, the reverse table on a OneLevel or SubLevel index will only contain a few IDs associated with one entry, unless the tree is extremely deep.

This is an issue not only for the OneLevel or SubLevel index, but also for the ObjectClass index.

As of now, I don't really think that continuing any further is worthily. The best is probably to keep going with trunk, and eventually re-inject the few fixes I have applied i my experimental branch.

In any case, this was an interesting exercise : it helped me to get deep into this part of the code I was not familiar with, and at the end, validate the initial approach.

--
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to