Alex Karasulu wrote:
Some operations in the default partition based on JDBM would gain a performance advantage if we could stuff the (partition unique) Long id associated with the entry into the ServerEntry object.

Are you sure? From the top of my head, I don't see how having such a value within the ServerEntry object could help. Do you have an exemple ?

(I'm not saying that it's a bad idea, I just can't see where it can help. Btw, it would be a no brainer to add such a field)

Eventually some schemes we discussed in the past for making this Long id a server unique rather than partition unique identifier will come to pass. At that point we can rapidly compare entries based on this identifier. Besides the id we will probably eventually have the UUID which is globally unique for the entry across server instances. However the UUID costs more to compare than a long which can be compared in just a few JVM operations.
We need this UUID at some point. It's already used for replication, and can be set in any case, as an operational attribute, with a different handling : I suggest it's not set as an attribute internally, or at least that we have a direct access to this value without having to look into the EntryAttribute list. Something like :

class ServerEntry {
 ServerEntryAttribute attributes;
 UUID uuid; // May be duplicated with the opattr into attributes
 ...
}

Until we make it server unique this id parameter can only be leveraged inside a partition, it cannot be used externally until we devise some of these schemes discussed in [0] regarding 8 to 16-bit embedded partition identifiers inside this Long.
Even if we dedicate some few bits to the partition 'name', with a long, we can still deal with much more potential entries than we can possibly store on a disk, considering that an entry will be at least 100 bytes long !

For instance, if we split the ID in two 16 bits values, this still leave 4 billions entries that can be added, around 400 Gb of data...

A partition can be set on 8 bits - so we can handle as many as 255 partitions, considering that partition 0 is ou=system -, more than necessary, I think. This leave more than 18 peta entries which can be stored... I would dedicate 16 bits to describe the partition (65 555 possible partitions, 2^48 entries)

This has to be discussed...

Any thoughts on exposing this ID and associating it with a ServerEntry via an 'id' property on this class now rather than waiting for [0] to be implemented?

---------
[0] - http://cwiki.apache.org/confluence/display/DIRxSRVx11/Master+Table#MasterTable-partitionid




--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org


Reply via email to