Hello all,
After having a talk with Maarten, a few emails with Laurence, seen the GLUE 1.3 LDAP implementation on lcg-bdii.cern.ch and though about it thoroughly, I have come to the next idea for implementing Foreign Keys on LDAP:
Having an object ObjectA related to object ObjectB and being the relationship ObjectA 0..* - 0..* ObjectB,
- ObjectA will contain the attribute ObjectAObjectBFK pointing to ObjectB's DN
- ObjectB will contain the attribute ObjectBObjectAFK pointing to ObjectA's DN
- In case the multiplicity was 1..X, with X between 1 and *, ObjectYObjectZFK will be mandatory
- In case the multiplicity was 1 or 0..1, ObjectYObjectZFK will be SINGLE-VALUE
- In case the relationship was Object A 0..* - 1 Object B, ObjectA will be the only one holding the ForeignKey
Since LDAP is not relational, there are a few pitfalls with LDAP:
- ObjectYObjectZFK is not checked to be the correct
- The duality ObjectAObjectBFK and ObjectBObjectAFK is not checked to have the relation stated in both directions
- Moving between relations is done in the client and not the server, which is not optimal
These should be checked in an external client at appropriate invertals to ensure the integrity of the LDAP server plus all the specifcations done in GLUE 2.0 that can not be covered in LDAP (types, maximum range, etc.).
I would like to have an approval of 1 or 2 people before starting with it. So, do you like it this way? :)
Regards,
David
--
David Horat
Software Engineer specialized in Grid and Web technologies
IT Department – Grid Deployment Group
CERN – European Organization for Nuclear Research » Where the web was born
Phone +41 22 76 77996
http://davidhorat.com/
http://cern.ch/horat
http://www.linkedin.com/in/davidhorat