directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Karasulu <>
Subject Re: [ApacheDS][SP] Stored Procedure Languages
Date Tue, 13 Dec 2005 20:13:42 GMT
Ersin, Mark,

>Alex may have some ideas about using Stored Procedures for better use
>cases in the future.
Before discussing use cases for stored procedures which in my opinion 
can be infinite let me describe my view of stored procedures in LDAP as 
they relate to extended operations.

Extended operations (along with controls as well) have been designed to 
allow users to expand the LDAP protocol while still maintaining 
compatibility across v3 servers and clients.  Extended operations are 
similar to ioctls in device drivers.  When something did not fit into 
the motif of a character or block device driver then an ioctl was used 
to handle out of band operations.  For example when you need to eject a 
tape from a tape drive you use an ioctl because it does not map to the 
existing entry points for a character device.  So in the same light when 
we have operations to perform or expose which do not fit the LDAP access 
model we use controls or extended operations.

Stored procedures allow our users to do what they like within the 
server.  It's not so important to figure out what these use cases are 
(although I can list a few that I personally would like to use them 
for).  What's important is how we expose these procedures through the 
protocol while remaining compliant/compatible.  Extended operations are 
a natural way to expose such operations.

Extended operations are generally published and specified within RFCs so 
they will have specific extended operation handlers.  Others will be 
user defined (via stored procedures) and not necessarily published.  For 
this case a single extended operation for calling stored procedures will 
enabling users to effectively create any number of private operations. 

Now here's some of the use cases I am personally interested in:

 o House keeping operations (this list is huge but for example 
rebuilding indices)
 o Management operations (ok so is this one but again for example 
mounting a new partition on a namingContext)
 o Managing complex referential integrity in concert with triggers.  
What ever we cannot do using schema structures like dITContentRules, 
dITStructureRules and nameForms can be managed using these two 
constructs: triggers and SPs.
 o To implement complex operations on a large amount of data.  Sometimes 
its best to not pull entries from the DIT just to massage them and then 
push them back in.  These bulk operations are ideal for stored procedures.

Many things can be done with SPs.  The sky is the limit or your 
imagination.  We'll see all sorts of use cases emerge. 


View raw message