https://bugs.openldap.org/show_bug.cgi?id=9099
--- Comment #3 from Howard Chu hyc@openldap.org --- (In reply to Markus from comment #2)
Right, rebalancing would become quite a pain.
Regarding re-balancing, maybe a pragmatic solution could be two phase range-delete:
- First, delete only those pages in the given range that will not trigger
re-balancing. 2) Second, delete the remaining nodes in the range as is (causing re-balancing).
Another simplification might be to limit the page deletions to leaf pages. I'd guess the speed-up would already be quite significant.
If you are interested, I could give it a shot. Just let me know. Without more efficient range-deletes, we may have to look into workarounds. Thus, I'd be happy to invest some time to solve that at the "core".
You're welcome to try whatever approach. As long as it doesn't increase the code size too much, and you can document a significant speedup, it'll be considered.
Going back to your original post, instead of using hierarchical keys you should be using separate named databases for each group. Then just use mdb_drop to delete a group.