[ 
https://issues.apache.org/jira/browse/DIRSERVER-1050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12529569
 ] 

Emmanuel Lecharny commented on DIRSERVER-1050:
----------------------------------------------

I would add that we should store this DN withing the entry itself. 

A quick comparison of the pros/cons of this solution can be find here :

pros :
 - no more LdapDN parsing/normalizing when searching : this simple operation 
costs around 13.5% of the global time)
 - no need to get the DN from a separate table, as we will have it in the 
entry. We may just store the String in the DN table
 - we may remove the UpDN table, which is useless, speeding up the add or 
modify operations

cons :
 - serialization/deserialization of an entry will cost more
 - if we store the DN in the entry, a modifyDN operation will cost more, as we 
will have to modify all the entries
 - we will have bigger entries on the disk, as we will store the internal 
structure of a DN.

> We need to store a LdapDN into the backend instead of a String
> --------------------------------------------------------------
>
>                 Key: DIRSERVER-1050
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1050
>             Project: Directory ApacheDS
>          Issue Type: Improvement
>          Components: ldap
>    Affects Versions: 1.5.1
>            Reporter: Emmanuel Lecharny
>             Fix For: 1.5.2
>
>
> When we have obtained an entry from the backend, we are building a 
> ServerSearchResult entry. As this object contains the DN of the returned 
> entry, we have a member which is a LdapDN. This is obviously costly and 
> useless to parse a String back to a DN just before reverting it to a String 
> in order to send it to the client.
> We can avoid such a String -> LdapDN -> String roundtrip by simply storing 
> the DN as a String in the ServerSearchResult object.
> Now, we have another problem : this info is needed as a LdapDN in order to 
> check that the entry can be read by the client (isSearchable() method in the 
> authz interceptor). We also need to inject collective attributes, and to 
> check that the entry is not a referral. Incidently, in the isSearchable() 
> method and collectiveAttributeService interceptor, we are normalizing the DN, 
> which is already normalized... Costly...
> So we need the LdapDN form _and_ the String form. What about simply storing 
> the LdapDN instead of the String into the backend ?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to