ApacheDS partition implementation based on Relational Model
Web Server forum
Back To The Forum Home!Search!Private Messaging System

Web Server Talk Web Server Talk > Web Servers reviews > Apache Server configuration support > Apache Directory Project > ApacheDS partition implementation based on Relational Model




Pages (3): [1] 2 3 »   Last Thread   Next Thread Next
  Show Printable Version Email this Page Subscribe to this Thread      Post New Thread    Post A Reply      

    ApacheDS partition implementation based on Relational Model  
Ersin Er


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 12:11 PM

Hi all,

I need some advice on implementing a partition for ADS based on the
relational model and using SQL or Hibernate or JPA, or framework like
them..

First of all, is this realistic? Can we reach a usable result?

How can we map Attributes to SQL model? Should we hold Attribute
Values in blobs?

Can we leverage the power of SQL SELECT for LDAP search operations?

How much of the partition code in ADS can be used for this task?

And please share any more ideas you have.

Thanks in advance.

--
Ersin






[ Post a follow-up to this message ]



    Re: ApacheDS partition implementation based on Relational Model  
Alex Karasulu


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 06:11 PM

Ersin Er wrote:
> Hi all,
>
> I need some advice on implementing a partition for ADS based on the
> relational model and using SQL or Hibernate or JPA, or framework like
> them..
>
> First of all, is this realistic? Can we reach a usable result?

Ok first off you need to better define exactly what you are trying to
achieve.

In my mind you might be asking to do 2 separate things:

1). Build a generic backend that backs data within a relational database
using JDBC and has a fixed custom schema for storing and querying LDAP
data.

2). Build a flexible backend that can map any relational database schema
to an LDAP schema and namespace.  This is more like what is done with a
virtual directory.

I will presume below you are referring to #1 and answer your questions.

> How can we map Attributes to SQL model?

There are probably a few ways to do this but some will be much faster
however the faster it is the uglier it will be.

One way is to have one big table with the following columns:

1). ENTRY (BLOB)
2). NDN (VARCHAR)
3). UPDN (VARCHAR)
4). ID (INTEGER)

You can lookup entries that are blobs this way by normalized (NDN) and
user provided distinguished names (UPDN) as well as by ID.

If you want to index a specific attribute use some DDL to add a new
COLUMN to this table.  That column should be the name of the attribute
being (LDAP not DB) indexed.  Do a full table scan the first time and
populate this new "index" COLUMN with the values of the attribute.

Handling queries now is not that complex.  Basically you need to
determine which attributes you have indices on and which you don't.
Then do a query to select and narrow down the rows that you'll have to
resusitate the entry from the blob from.

You might need another table for an existance index too.  The EXISTANCE
table might have a ATTRIBUTE column, and ID column.  If a record exists
in this table for an attribute your blobed entry then has a value for
this attribute.

Should we hold Attribute
> Values in blobs?

You will need to hold the entry in a blob.

> Can we leverage the power of SQL SELECT for LDAP search operations?

Sure.  You just need to know how to build the WHERE clause of SQL using
this simple schema.

> How much of the partition code in ADS can be used for this task?

Not much.

Alex







[ Post a follow-up to this message ]



    Re: ApacheDS partition implementation based on Relational Model  
Ole Ersoy


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 06:11 PM

Hi Ersin,

Alex and I talked about doing this.

I need to finish the first version of the the design
document.

OpenLDAP supports relational backends.

They also have this command:

ldbmcat  - LDBM to LDIF database format conversion
utility

I think that performs relational to LDIF conversion.

Personally I need to be able to go between an LDAP
format, XML Schema format, and a relational format.

I'm planning on going with need a 4th representation
of
those  3, which will be Eclipse EMF Ecore (A subset of
OMG's meta object facility).

That way ecore is the common denominator.

So the initial thinking is that ldap attributes will
be mapped to attributes on an Ecore based model object
(Just a pojo really supported by the Eclipse EMF API).

The same Ecore model is used to generate the Hibernate
mapping (Preferably using annotations).

Then it's done.  Hibernate takes care of the rest.

I still need to put this in complete context, adding
in Alex's thoughts on virtual directories, etc.

That's a little off though...after the rpm mojo gets
done.

Cheers,
- Ole



--- Ersin Er <ersin.er-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:

> Hi all,
>
> I need some advice on implementing a partition for
> ADS based on the
> relational model and using SQL or Hibernate or JPA,
> or framework like
> them..
>
> First of all, is this realistic? Can we reach a
> usable result?
>
> How can we map Attributes to SQL model? Should we
> hold Attribute
> Values in blobs?
>
> Can we leverage the power of SQL SELECT for LDAP
> search operations?
>
> How much of the partition code in ADS can be used
> for this task?
>
> And please share any more ideas you have.
>
> Thanks in advance.
>
> --
> Ersin
>




 ________________________________________
____________________________________
________
Low, Low, Low Rates! Check out Yahoo! Messenger's cheap PC-to-Phone call rat
es
(http://voice.yahoo.com)







[ Post a follow-up to this message ]



    Re: ApacheDS partition implementation based on Relational Model  
Emmanuel Lecharny


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 06:11 PM

On 11/2/06, Alex Karasulu <aok123-Bdlq13kUjeyLZ21kGMrzwg@public.gmane.org> wrote:
>
> Ersin Er wrote:
> <snip/>> How can we map Attributes to SQL model?
>
> There are probably a few ways to do this but some will be much faster
> however the faster it is the uglier it will be.
>
> One way is to have one big table with the following columns:
>
> 1). ENTRY (BLOB)
> 2). NDN (VARCHAR)
> 3). UPDN (VARCHAR)
> 4). ID (INTEGER)


Well, from a RDBMS point of view, I think that a correct structure will be
something like  :
A first table, ENTRY_T, with those columns :

DN : varchar (but may be an id, which will refer to another table)
ATTR : attribute name, varchar

and an ATTRIBUTES_T table :
DN : varchar
ATTR : varchar
VALUE : blob

The idea is that yoiu will set index on those table, so you don't need
anymore to declare NDN.
For instance, if you want to get all attribute values for an entry, then the
request will looks like :
select DN, ATTR, VALUES from ATTRIBUTES_T where DN = %dn%

(%dn% stand for the DN you are looking for)

Now, if you want all the entries which cn = ACME, the request will be :

select DN, ATTR, VALUES from ATTRIBUTES_T where DN in (select DN from
ATTRIBUTES_T where ATTR = 'cn' and VALUE = 'ACME')

Just set the correct index to have good performances !

(this is just a first approach, we need to improve it a _lot_)

I have put some thought related to backend organization here :
http://docs.safehaus.org/display/APACHEDS/Backend
but it needs to be further a lot !

You can lookup entries that are blobs this way by normalized (NDN) and
> user provided distinguished names (UPDN) as well as by ID.
>
> If you want to index a specific attribute use some DDL to add a new
> COLUMN to this table.  That column should be the name of the attribute
> being (LDAP not DB) indexed.  Do a full table scan the first time and
> populate this new "index" COLUMN with the values of the attribute.
>
> Handling queries now is not that complex.  Basically you need to
> determine which attributes you have indices on and which you don't.
> Then do a query to select and narrow down the rows that you'll have to
> resusitate the entry from the blob from.
>
> You might need another table for an existance index too.  The EXISTANCE
> table might have a ATTRIBUTE column, and ID column.  If a record exists
> in this table for an attribute your blobed entry then has a value for
> this attribute.
>
> Should we hold Attribute 
>
> You will need to hold the entry in a blob.


Well, you have two options : varchar for simple and limited entries (but
varchar can't be larger than, say, 256 chars, which may become a problem, or
blobs, for binary elements or big chars. That's a pitty because blobs sucks
when you want to set index on them.

> Can we leverage the power of SQL SELECT for LDAP search operations?
>
> Sure.  You just need to know how to build the WHERE clause of SQL using
> this simple schema.
> 
>
> Not much.


Yes, this will be really  one of our biggest problem.

Alex
>
>


-- 
Cordialement,
Emmanuel Lécharny






[ Post a follow-up to this message ]



    Re: ApacheDS partition implementation based on Relational Model  
Emmanuel Lecharny


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 06:11 PM

Hi Ole,

On 11/2/06, Ole Ersoy <ole_ersoy-/E1597aS9LQAvxtiuMwx3w@public.gmane.org> wrote:
>
> Hi Ersin,
>
> <snip/>
> Personally I need to be able to go between an LDAP
> format, XML Schema format, and a relational format.

This will be possible really soon, at least from ldap to XML. Pam is
writting a DSML codec, so you will be able to extract data from LDAP and put
them in XML format (using DSML V2). You will also be able to send data to a
ldap server using DSML.


I'm planning on going with need a 4th representation
> of
> those  3, which will be Eclipse EMF Ecore (A subset of
> OMG's meta object facility).
>
> That way ecore is the common denominator.


At this point, I really think that DSML might be the perfect pivot
description, because LDIF is only representing data while DSML can express
operations. For instance, if you want to write a LDAP proxy, you can do that
with DSML requests and response (and the LdapStudio ldap browser is working
this way, so, yes, this is possible . I don't think we need a 4th
description meta-stuff  KISS, bros !

So the initial thinking is that ldap attributes will
> be mapped to attributes on an Ecore based model object
> (Just a pojo really supported by the Eclipse EMF API).
>
> The same Ecore model is used to generate the Hibernate
> mapping (Preferably using annotations).
>
> Then it's done.  Hibernate takes care of the rest.


Well, this is a vision which is not  taking into account the performance
issues you will have if you do that. I may be wrong - and I hope to be,
because this seems to be _so_ simple that I really want it to work -, but as
an old programmer, I don't believe in god or in 'snap your finger and the
tool will do the rest' thingy ... Yeah, I'm an agnostic old fart ;) Make me
believe in it : I want a working sample !

I still need to put this in complete context, adding
> in Alex's thoughts on virtual directories, etc.
>
> That's a little off though...after the rpm mojo gets
> done.


Yeah, that's seems pragmatic  Thanks for the work done on RPM, man !

Cheers,
> - Ole


Emmanuel






[ Post a follow-up to this message ]



    Re: ApacheDS partition implementation based on Relational Model  
David Boreham


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 06:11 PM

Ersin Er wrote:

> I need some advice on implementing a partition for ADS based on the
> relational model and using SQL or Hibernate or JPA, or framework like
> them..

First the $64,000 question : WHY ?

> First of all, is this realistic? Can we reach a usable result?

Yes, but experience shows that it's typlically not worth the trouble.
There are two common reasons for wanting such a thing:

1. 'Datastore envy' : 'I want all my data in Oracle' (because Larry says
so).

2. Adapting existing data (hey, all our HR stuff is in an Oracle database
underneath Peoplesoft, let's expose that using LDAP).

The trouble with #1 is that once whoever it is that's asking
is told the cost and hassle involved vs just using a perfectly
working LDAP server that already exists, they tend to forget
their datastore envy.

The trouble with #2 is that it turns into an object relational mapping
science project. Very hard to say in advance what kinds of mapping
are needed without seeing the use cases. So it tends to deflate into
'well we can write some custom hack for each individual customer'
and 'hmm...syncing the data using a metadirectory solution is much
easier'.

> Can we leverage the power of SQL SELECT for LDAP search operations?

The simplest way to do it is to construct tables that look just like the
b-tree relations used in a custom LDAP data store. However this doesn't
goal achieve #2 above.

There have been some successful LDAP server products that
_only_ used the relational database store technique : IBM had one
and so did(does?) Oracle.








[ Post a follow-up to this message ]



    Re: ApacheDS partition implementation based on Relational Model  
Ersin Er


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 06:11 PM

Hi!

On 11/2/06, Alex Karasulu <aok123-Bdlq13kUjeyLZ21kGMrzwg@public.gmane.org> wrote:
> Ersin Er wrote: 
>
> Ok first off you need to better define exactly what you are trying to
> achieve.
>
> In my mind you might be asking to do 2 separate things:
>
> 1). Build a generic backend that backs data within a relational database
> using JDBC and has a fixed custom schema for storing and querying LDAP
> data.
>
> 2). Build a flexible backend that can map any relational database schema
> to an LDAP schema and namespace.  This is more like what is done with a
> virtual directory.
>
> I will presume below you are referring to #1 and answer your questions.

Yes the first one.
 
>
> There are probably a few ways to do this but some will be much faster
> however the faster it is the uglier it will be.
>
> One way is to have one big table with the following columns:
>
> 1). ENTRY (BLOB)
> 2). NDN (VARCHAR)
> 3). UPDN (VARCHAR)
> 4). ID (INTEGER)
>
> You can lookup entries that are blobs this way by normalized (NDN) and
> user provided distinguished names (UPDN) as well as by ID.
>
> If you want to index a specific attribute use some DDL to add a new
> COLUMN to this table.  That column should be the name of the attribute
> being (LDAP not DB) indexed.  Do a full table scan the first time and
> populate this new "index" COLUMN with the values of the attribute.
>
> Handling queries now is not that complex.  Basically you need to
> determine which attributes you have indices on and which you don't.
> Then do a query to select and narrow down the rows that you'll have to
> resusitate the entry from the blob from.

What if we do not have an index on an attribute? Pull all entries?

> You might need another table for an existance index too.  The EXISTANCE
> table might have a ATTRIBUTE column, and ID column.  If a record exists
> in this table for an attribute your blobed entry then has a value for
> this attribute.
>
> Should we hold Attribute 
>
> You will need to hold the entry in a blob.
> 
>
> Sure.  You just need to know how to build the WHERE clause of SQL using
> this simple schema.
> 
>
> Not much.
>
> Alex
>
>

Thanks. Let me move on to other messages on the thread also 

--
Ersin






[ Post a follow-up to this message ]



    Re: ApacheDS partition implementation based on Relational Model  
Ersin Er


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 06:11 PM

SGksCgpPbiAxMS8yLzA2LCBFbW1hbnVlbCBMZWNo
YXJueSA8ZWxlY2hhcm55QGdtYWlsLmNvbT4g
 d3JvdGU6Cj4KPiBPbiAxMS8yLzA2LCBBbGV4IEth
cmFzdWx1IDxhb2sxMjNAYmVsbHNvdXRoLm5l
 dD4gd3JvdGU6Cj4gPiBFcnNpbiBFciB3cm90ZToK
PiA+IDxzbmlwLz4+IEhvdyBjYW4gd2UgbWFw
 IEF0dHJpYnV0ZXMgdG8gU1FMIG1vZGVsPwo+ID4K
PiA+IFRoZXJlIGFyZSBwcm9iYWJseSBhIGZl
 dyB3YXlzIHRvIGRvIHRoaXMgYnV0IHNvbWUgd2ls
bCBiZSBtdWNoIGZhc3Rlcgo+ID4gaG93ZXZl
 ciB0aGUgZmFzdGVyIGl0IGlzIHRoZSB1Z2xpZXIg
aXQgd2lsbCBiZS4KPiA+Cj4gPiBPbmUgd2F5
 IGlzIHRvIGhhdmUgb25lIGJpZyB0YWJsZSB3aXRo
IHRoZSBmb2xsb3dpbmcgY29sdW1uczoKPiA+
 Cj4gPiAxKS4gRU5UUlkgKEJMT0IpCj4gPiAyKS4g
TkROIChWQVJDSEFSKQo+ID4gMykuIFVQRE4g
 KFZBUkNIQVIpCj4gPiA0KS4gSUQgKElOVEVHRVIp
Cj4KPiBXZWxsLCBmcm9tIGEgUkRCTVMgcG9p
 bnQgb2YgdmlldywgSSB0aGluayB0aGF0IGEgY29y
cmVjdCBzdHJ1Y3R1cmUgd2lsbCBiZQo+IHNv
 bWV0aGluZyBsaWtlICA6Cj4gQSBmaXJzdCB0YWJs
ZSwgRU5UUllfVCwgd2l0aCB0aG9zZSBjb2x1
 bW5zIDoKPgo+IEROIDogdmFyY2hhciAoYnV0IG1h
eSBiZSBhbiBpZCwgd2hpY2ggd2lsbCByZWZl
 ciB0byBhbm90aGVyIHRhYmxlKQo+IEFUVFIgOiBh
dHRyaWJ1dGUgbmFtZSwgdmFyY2hhcgo+Cj4g
 YW5kIGFuIEFUVFJJQlVURVNfVCB0YWJsZSA6Cj4g
RE4gOiB2YXJjaGFyCj4gQVRUUiA6IHZhcmNo
 YXIKPiBWQUxVRSA6IGJsb2IKClRoaXMgd2FzIHRo
ZSBzY2hlbWEgSSB0aG91Z2h0LiBCdXQgSSBh
 bSByZWFsbHkgbm90IHN1cmUuIFRoaXMKZGlzY3Vz
c2lvbiBpcyBnb2luZyBpbnRlcmVzdGluZyBh
 bmQgdGhhdCdzIGdvb2QuCgo+IFRoZSBpZGVhIGlz
IHRoYXQgeW9pdSB3aWxsIHNldCBpbmRleCBv
 biB0aG9zZSB0YWJsZSwgc28geW91IGRvbid0IG5l
ZWQKPiBhbnltb3JlIHRvIGRlY2xhcmUgTkRO
 Lgo+IEZvciBpbnN0YW5jZSwgaWYgeW91IHdhbnQg
dG8gZ2V0IGFsbCBhdHRyaWJ1dGUgdmFsdWVz
 IGZvciBhbiBlbnRyeSwgdGhlbiB0aGUKPiByZXF1
ZXN0IHdpbGwgbG9va3MgbGlrZSA6Cj4gc2Vs
 ZWN0IEROLCBBVFRSLCBWQUxVRVMgZnJvbSBBVFRS
SUJVVEVTX1Qgd2hlcmUgRE4gPSAlZG4lCj4K
 PiAoJWRuJSBzdGFuZCBmb3IgdGhlIEROIHlvdSBh
cmUgbG9va2luZyBmb3IpCj4KPiBOb3csIGlm
 IHlvdSB3YW50IGFsbCB0aGUgZW50cmllcyB3aGlj
aCBjbiA9IEFDTUUsIHRoZSByZXF1ZXN0IHdp
 bGwgYmUgOgo+Cj4gc2VsZWN0IEROLCBBVFRSLCBW
QUxVRVMgZnJvbSBBVFRSSUJVVEVTX1Qgd2hl
 cmUgRE4gaW4gKHNlbGVjdCBETiBmcm9tCj4gQVRU
UklCVVRFU19UIHdoZXJlIEFUVFIgPSAnY24n
 IGFuZCBWQUxVRSA9ICdBQ01FJykKPgo+IEp1c3Qg
c2V0IHRoZSBjb3JyZWN0IGluZGV4IHRvIGhh
 dmUgZ29vZCBwZXJmb3JtYW5jZXMgIQo+Cj4gKHRo
aXMgaXMganVzdCBhIGZpcnN0IGFwcHJvYWNo
 LCB3ZSBuZWVkIHRvIGltcHJvdmUgaXQgYSBfbG90
XykKPgo+IEkgaGF2ZSBwdXQgc29tZSB0aG91
 Z2h0IHJlbGF0ZWQgdG8gYmFja2VuZCBvcmdhbml6
YXRpb24gaGVyZSA6Cj4gaHR0cDovL2RvY3Mu
 c2FmZWhhdXMub3JnL2Rpc3BsYXkvQVBBQ0hFRFMv
QmFja2VuZAo+IGJ1dCBpdCBuZWVkcyB0byBi
 ZSBmdXJ0aGVyIGEgbG90ICEKPgo+ID4gWW91IGNh
biBsb29rdXAgZW50cmllcyB0aGF0IGFyZSBi
 bG9icyB0aGlzIHdheSBieSBub3JtYWxpemVkIChO
RE4pIGFuZAo+ID4gdXNlciBwcm92aWRlZCBk
 aXN0aW5ndWlzaGVkIG5hbWVzIChVUEROKSBhcyB3
ZWxsIGFzIGJ5IElELgo+ID4KPiA+IElmIHlv
 dSB3YW50IHRvIGluZGV4IGEgc3BlY2lmaWMgYXR0
cmlidXRlIHVzZSBzb21lIERETCB0byBhZGQg
 YSBuZXcKPiA+IENPTFVNTiB0byB0aGlzIHRhYmxl
LiAgVGhhdCBjb2x1bW4gc2hvdWxkIGJlIHRo
 ZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUKPiA+IGJl
aW5nIChMREFQIG5vdCBEQikgaW5kZXhlZC4g
 IERvIGEgZnVsbCB0YWJsZSBzY2FuIHRoZSBmaXJz
dCB0aW1lIGFuZAo+ID4gcG9wdWxhdGUgdGhp
 cyBuZXcgImluZGV4IiBDT0xVTU4gd2l0aCB0aGUg
dmFsdWVzIG9mIHRoZSBhdHRyaWJ1dGUuCj4g
 Pgo+ID4gSGFuZGxpbmcgcXVlcmllcyBub3cgaXMg
bm90IHRoYXQgY29tcGxleC4gIEJhc2ljYWxs
 eSB5b3UgbmVlZCB0bwo+ID4gZGV0ZXJtaW5lIHdo
aWNoIGF0dHJpYnV0ZXMgeW91IGhhdmUgaW5k
 aWNlcyBvbiBhbmQgd2hpY2ggeW91IGRvbid0Lgo+
ID4gVGhlbiBkbyBhIHF1ZXJ5IHRvIHNlbGVj
 dCBhbmQgbmFycm93IGRvd24gdGhlIHJvd3MgdGhh
dCB5b3UnbGwgaGF2ZSB0bwo+ID4gcmVzdXNp
 dGF0ZSB0aGUgZW50cnkgZnJvbSB0aGUgYmxvYiBm
cm9tLgo+ID4KPiA+IFlvdSBtaWdodCBuZWVk
 IGFub3RoZXIgdGFibGUgZm9yIGFuIGV4aXN0YW5j
ZSBpbmRleCB0b28uICBUaGUgRVhJU1RBTkNF
 Cj4gPiB0YWJsZSBtaWdodCBoYXZlIGEgQVRUUklC
VVRFIGNvbHVtbiwgYW5kIElEIGNvbHVtbi4g
 IElmIGEgcmVjb3JkIGV4aXN0cwo+ID4gaW4gdGhp
cyB0YWJsZSBmb3IgYW4gYXR0cmlidXRlIHlv
 dXIgYmxvYmVkIGVudHJ5IHRoZW4gaGFzIGEgdmFs
dWUgZm9yCj4gPiB0aGlzIGF0dHJpYnV0ZS4K
 PiA+Cj4gPiBTaG91bGQgd2UgaG9sZCBBdHRyaWJ1
dGUKPiA+ID4gVmFsdWVzIGluIGJsb2JzPwo+
 ID4KPiA+IFlvdSB3aWxsIG5lZWQgdG8gaG9sZCB0
aGUgZW50cnkgaW4gYSBibG9iLgo+Cj4gIFdl
 bGwsIHlvdSBoYXZlIHR3byBvcHRpb25zIDogdmFy
Y2hhciBmb3Igc2ltcGxlIGFuZCBsaW1pdGVk
 IGVudHJpZXMgKGJ1dAo+IHZhcmNoYXIgY2FuJ3Qg
YmUgbGFyZ2VyIHRoYW4sIHNheSwgMjU2IGNo
 YXJzLCB3aGljaCBtYXkgYmVjb21lIGEgcHJvYmxl
bSwgb3IKPiBibG9icywgZm9yIGJpbmFyeSBl
 bGVtZW50cyBvciBiaWcgY2hhcnMuIFRoYXQncyBh
IHBpdHR5IGJlY2F1c2UgYmxvYnMgc3Vja3MK
 PiB3aGVuIHlvdSB3YW50IHRvIHNldCBpbmRleCBv
biB0aGVtLgo+Cj4gPiA+IENhbiB3ZSBsZXZl
 cmFnZSB0aGUgcG93ZXIgb2YgU1FMIFNFTEVDVCBm
b3IgTERBUCBzZWFyY2ggb3BlcmF0aW9ucz8K
 PiA+Cj4gPiBTdXJlLiAgWW91IGp1c3QgbmVlZCB0
byBrbm93IGhvdyB0byBidWlsZCB0aGUgV0hF
 UkUgY2xhdXNlIG9mIFNRTCB1c2luZwo+ID4gdGhp
cyBzaW1wbGUgc2NoZW1hLgo+ID4KPiA+ID4g
 SG93IG11Y2ggb2YgdGhlIHBhcnRpdGlvbiBjb2Rl
IGluIEFEUyBjYW4gYmUgdXNlZCBmb3IgdGhp
 cyB0YXNrPwo+ID4KPiA+IE5vdCBtdWNoLgo+Cj4g
WWVzLCB0aGlzIHdpbGwgYmUgcmVhbGx5ICBv
 bmUgb2Ygb3VyIGJpZ2dlc3QgcHJvYmxlbS4KPgo+
ID4gQWxleAo+ID4KPiA+Cj4KPgo+Cj4gLS0K
 PiBDb3JkaWFsZW1lbnQsCj4gIEVtbWFudWVsIEzD
qWNoYXJueQoKV2UgbmVlZCB0byBkb2N1bWVu
 dCBvdXIgaWRlYXMuIEkgdGhpbmsgd2Ugd2lsbCBy
ZWFjaCBhIGdvb2QgcG9pbnQKc29vbi4gT3Ig
 d2UnbGwgc2VlIGl0IGFmdGVyIGltcGxlbWVudGF0
aW9uLgoKVGhhbmtzIQoKLS0gCkVyc2luCg==






[ Post a follow-up to this message ]



    Re: ApacheDS partition implementation based on Relational Model  
Ersin Er


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 06:11 PM

Hi,

On 11/2/06, David Boreham <david_list-a7e5zrL3AIdAfugRpC6u6w@public.gmane.org> wrote:
> Ersin Er wrote:
> 
>
> First the $64,000 question : WHY ?

Well, this is just a test currently. It's a software engineering
project for two students to make them familiar with all these (ldap,
rdbms, ADS, pragmatic tools, etc.) stuff. It can also be thought as a
DB research project to learn what the best way of storing directory
data on RDBMS is.
 
>
> Yes, but experience shows that it's typlically not worth the trouble.
> There are two common reasons for wanting such a thing:
>
> 1. 'Datastore envy' : 'I want all my data in Oracle' (because Larry says
> so).
>
> 2. Adapting existing data (hey, all our HR stuff is in an Oracle database
> underneath Peoplesoft, let's expose that using LDAP).
>
> The trouble with #1 is that once whoever it is that's asking
> is told the cost and hassle involved vs just using a perfectly
> working LDAP server that already exists, they tend to forget
> their datastore envy.
>
> The trouble with #2 is that it turns into an object relational mapping
> science project. Very hard to say in advance what kinds of mapping
> are needed without seeing the use cases. So it tends to deflate into
> 'well we can write some custom hack for each individual customer'
> and 'hmm...syncing the data using a metadirectory solution is much
> easier'.
> 
>
> The simplest way to do it is to construct tables that look just like the
> b-tree relations used in a custom LDAP data store. However this doesn't
> goal achieve #2 above.

Can you explain this more?

>
> There have been some successful LDAP server products that
> _only_ used the relational database store technique : IBM had one
> and so did(does?) Oracle.

Thanks.

--
Ersin






[ Post a follow-up to this message ]



    Re: ApacheDS partition implementation based on Relational Model  
Emmanuel Lecharny


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
11-02-06 06:11 PM

On 11/2/06, David Boreham <david_list-a7e5zrL3AIdAfugRpC6u6w@public.gmane.org> wrote:
>
> Ersin Er wrote:
> 
>
> First the $64,000 question : WHY ?


If it woth 64 000$, then it's a BECAUSE  Otherwise, there are many good
other reasons beside being greedy :
- SQL databases are reliable, when jdbm database is not
- SQL databases have a _lot_ of tools, when we don't have any - or close to
any
- SQL Database support transactions, and it's good to have, because we don't
support them...
- SQL Database can be replicated
- SQL Database can be stored on a SAN or a cluster easily
- There are a lot of addon like Hibernate to do the mapping on SQL database
- Some customer want trustable storage. Oraacle is trustable (well, this is
questionnable... A system is as string as its weakest element (man ?) 
- And, so far, database are quite fast. IBM IDS is using DB2, I have seen it
running with 70 000 000 entries, and it was fast enough for our needs...

> First of all, is this realistic? Can we reach a usable result?
>
> Yes, but experience shows that it's typlically not worth the trouble.
> There are two common reasons for wanting such a thing:
>
> 1. 'Datastore envy' : 'I want all my data in Oracle' (because Larry says
> so).
>
> 2. Adapting existing data (hey, all our HR stuff is in an Oracle database
> underneath Peoplesoft, let's expose that using LDAP).


I never so that in real life. Generally, what I saw is people using
meta-directory or tools to export data from HR base to ldif, and import. All
that done around 3am, with manual restoration and correction at 9am, in a
fury of urgence ;) (remember, the weakest element ...)

The trouble with #1 is that once whoever it is that's asking
> is told the cost and hassle involved vs just using a perfectly
> working LDAP server that already exists, they tend to forget
> their datastore envy.


yes, but here, we are much more in a political environment. The choice of a
backend will be driven but sells, and Oracle representatives are pretty
impressive when it's come to explain companies that "oracle can do it all".
So they might chose another ldap server (well, this is a weak demonstration,
I know . Ok, you are right, if it works smoothly with jdbm, people won't
care about having a RDBMS backend !

The trouble with #2 is that it turns into an object relational mapping
> science project. Very hard to say in advance what kinds of mapping
> are needed without seeing the use cases. So it tends to deflate into
> 'well we can write some custom hack for each individual customer'
> and 'hmm...syncing the data using a metadirectory solution is much
> easier'.


I don't really think that the RDBMS mapping will be that bad. We already
have to build a correct schema for a b-tree implementation, so it's just a
question of remapping it to relational schema. Not necesserally a big deal.

> Can we leverage the power of SQL SELECT for LDAP search operations?
>
> The simplest way to do it is to construct tables that look just like the
> b-tree relations used in a custom LDAP data store. However this doesn't
> goal achieve #2 above.


yukkk ! May be the worst solution ! The vast majority of b-trees used in
jdbm should simply be removed as they are exactly replaced by RDBMS index.
The main problem is to build the DN tree correctly, and that's it.

There have been some successful LDAP server products that
> _only_ used the relational database store technique : IBM had one
> and so did(does?) Oracle.


yes, and IBM is quite a good Ldap server, even if very heavy one 

However, thanks for the insight, David, I pretty agree with you on some of
your points. In my mind, RDBMS backend is just a question of using
mainstream, because people want to use mainstream techno...

Emmanuel


-- 
Cordialement,
Emmanuel Lécharny






[ Post a follow-up to this message ]



    Sponsored Links  




 





   All times are GMT. The time now is 11:58 PM.      Post New Thread    Post A Reply      
Pages (3): [1] 2 3 »   Last Thread   Next Thread Next


Most Popular forums 

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is OFF
 
Medical and Health forum | Computer Games Reviews | Graphics design forum

Back To The Top
Home | Usercp | Faq | Register