Items of interest with Edirectory 8.8 #Subtree Search Performance in eDirectory 8.8
The subtree search problem in eDirectory has been remedied in the 8.8 release, using techniques similar to the single-level search. In addition to the Parent ID being stored on each entry in the database, eDirectory now stores additional hierarchical information in the form of a new system attribute the Ancestor ID.
This attribute stores the entry IDs of all the ancestors of an entry - including the immediate parent and itself - up to the tree root. Just like Parent ID, the Ancestor ID attribute is also indexed. Being a system attribute, it is not synchronized to other replicas and is not accessible to LDAP or NDAP clients. It can however be viewed in iMonitor or other NDS tools.
With the additional hierarchical information available at the database layer, the agent now translates the scope and base criteria into the query to the database, in addition to the filter specification. This is done via a value assertion on the Ancestor ID attribute (value being the entry ID of the base) being "anded" with the rest of the filter criteria of the client. The assertion on Ancestor ID is evaluated by the database engine using the Ancestor ID index to build the search result set. Thus, no further trimming of the search result set need be done by the agent. The figure below illustrates the old and the altered behavior of subtree search inside the eDirectory server.
"A performance test conducted in a 200,000-object tree with 10 levels of containers (20,000 objects at each level) showed a 69% performance gain, when the lowest level container was used as the base of the search and the search filter was cn=*."
The other two operations affected by the Ancestor IDs change add and move showed very marginal performance degradation (~2%) in the tests conducted on eDirectory 8.8. This can be attributed to the fact that amount of time it takes to store the additional data (the Ancestor IDs) is very small in comparison to the rest of the operation."