I would like to give a little testimonial here. I am in the software development field for over thirty years ant I atest that all the concepts that are in the computing software world were invented sometime before the end of the nineteen seventies. Don't misunderstand me, not all the technologies that we have today were available then. The concepts were developed and refined a lot since then. But the basic concepts themselves were already available.
I may give many examples and I chalenge all to show me something that was not known conceptually then. You want to take XML for example, as a way to persist structured data it is based on SGML and as a way to layout hierachical data, a quick look at the ancient IBM's IMS hierarchical database will convince anybody that the hierarchical model is very ancient indeed. The relational model and SQL; just see the date on Dr. Dodd's first articles on that subject. And the list is long.
Well, as it happens, not all concepts that could be thought about are positive. Some of them are either negative or sheer idiotic. And lo and behold most of the idiotic concepts were invented and persist with us since then as well. And here I come to my main point. Sometime in that era, somebody with crooked mind invented LISP, one of the the most unintuitive languages ever invented. There are other examples such as APL, but none of them looms big over the computing world as does LISP.
That would not be that bad if LISP would stay in the academic world and be used to develop some Artificial Inteligence systems. The people in that environment probably need to express themselves with such a monster. However, at some point these people gave us LDAP. Now LDAP is based conceptually on LISP and since LISP is basically hierarchical, LDAP is also hierarchical. There is nothing specifically wrong with the hierarchical model per se when one is dealing with primitive unidimensional and one purpose only systems, but LDAP is not supposed to be such a primitive system.
Let me explain the practical problems of the hierarchical model and the specific LISP oriented implementation of LDAP.
The first and formost problem is that the hierarchical model is unidirectional. Conceptually, you have to enter through the one root and navigate your way around. This drawback has been noticed almost from the start and many solutions have been devised. IMS does have indices that allow to bypass the root in searches. The network model that was implemented in IDMS allows multi-hierarchies and therefore several roots or entry points, but none of these eliminated the basic need to navigate over the hierarchy in order to get the information.
Since all these hierarchies could easily be translated into tables and relations, the relational model swept the world and practically burried the hierarchical model. The relational model eliminated the navigation problem and replaced the complex navigational programming with the simple, clean and elegant SQL.
It took me a while to understand the need for XML with its inherent hierarchical nature, but once I understood that XML is a way to persist data with its meta-data rather then structure it logically, I accepted the concept. XML does not replace the relational model with a back to the future thinking and does not intend to do so.
LDAP on the other hand is an hierarchical monster with all the drawbacks of that model and none of the benefits. There is nothing in LDAP that may not be implemeted in much easier and simpler manner using the relational model. Add to the basic flawed model the fact that the official query tool is the LDAP (V3 I believe) language which is a LISP derivative and therefore may not be understood by normal human beings and you may imagine how is that monster basically, access proof. There is no simple way to query the thing short of using complex navigational programming with complex API... Just a minute, isn't that exactly why we scrapped the hierarchicl model in the first place?
I am working with a software product that utilize LDAP as its means for handling user accounts. You may only imagine my frustration over the inability to search for anything short of coding a full fledge utility program. I view LDAP as an inhibitor rather then an enabler tool in my work and as with any inhibitor, the only way to deal with it is to bypass it. One practical solution may be to actually dump the information in the off hours, parse it with Perl and upload the relevant data to any relational database that might be available. The information might be stale in the end of the day, but its bulk may still be correct and usefull until a new copy may be taken.
Well, management and pundits may be buying into that stuff, but the show must go on and radical, at least partial solutions must be sought.