Mike Jackson wrote:
Jon Roberts wrote:
Mike Jackson wrote:
Recording full DNs as attribute values is a nasty practice to establish relationships

I can't endorse this statement. It's kind of like saying using foreign keys to establish relationships in an RDBMS is a nasty practice. DNs are an important part of how a directory works, and there is little faster than the retrieval of a directory entry by DN or an equality search on an indexed DN syntax attribute.

I disagree, because:

1) a directory, by design, is not a relational database.

What I wrote regarding an RDBMS was an analogy. How about this instead: it's kind of like saying using street addresses to record where people live is a nasty practice.

If you want relationships, implement the logic in the client (association), or just use an RDBMS to begin with.

... or use dn attributes appropriately in a directory. They work well for the right cases. I try to demonstrate you can get more mileage if you instead implement logic generally supporting DN syntax attributes into your clients and thereby use the directory for what it does best.

An example of implementing relationships by association is when you have multiple values for an attribute called e.g. "diskMount" in an entry, and all objects of type "diskMount" in some other branch of the directory. Code the logic into your client to either 1) explicitly know the relative location under the base where objects of type diskMount are located, or 2) just search for them.

I'm not saying this approach is never useful because I do the same thing sometimes, but the DN syntax can also be used to great advantage for suitable situations. Consider this directory data generated page:

http://www.mentata.com/ds/retrieve/congress/housevote/VC107H3

Votes are recorded as DN attributes, and each member record must be read to construct the associated link. The difference in performance between conducting 429 searches of base one/subtree on a string attribute vs. 429 base scope searches with explicit dn is significant; I tested it. Click on one of the members to see the reverse: an equality search on a given value within a dn attribute.

2) RDBMS tables are not generally requested to be renamed when an organization changes it's name; directory naming contexts are.

You're describing a particular design issue. I personally never reflect organizational structure explicitly with the DIT. This is precisely why. Based on what you say I can understand the design may not be within your control, yet not every implementation will suffer that constraint.

Using full DN pointers as attribute values, or embedding naming contexts into attribute values, is an all around bad idea, and it has nothing to do with "the protocol" or it's data model; it was very likely the brainchild of a lazy programmer who didn't have any practical experience with large directories and changing political / business landscapes.

Nope, I still disagree. I would guess the lazy, inexperienced programmers were more likely involved in the design of the directory (please understand that isn't meant as a personal attack since you say design was not in your purview). DN pointers as attribute values work for me, and I know for sure I'm not the only one.

Jon Roberts
www.mentata.com

---
You are currently subscribed to [email protected] as: [EMAIL PROTECTED]
To unsubscribe send email to [EMAIL PROTECTED] with the word UNSUBSCRIBE as the 
SUBJECT of the message.

Reply via email to