From: Brian Candler Date: 2005-07-23T18:11:20+09:00 Subject: Re: [ANN] ruby-ldapserver 0.3 On Sat, Jul 23, 2005 at 05:39:44AM +0900, Nick Faiz wrote: > Hi Brian, > Does ruby-ldapserver have an in memory b-tree? ruby-ldapserver is a library which handles the protocol operations; how you implement the data model is up to you. There are three sample LDAP servers in the examples/ directory. Two of these use a hash of {dn=>{attr=>[vals], attr=>[vals]...}} as their data storage (with a YAML file as hard backing). This gives you a fast answer to a 'base' search, but a slow answer to a 'subtree' search with filter, since in that case it just filters the entire set of entries against your query. If you want to write code to index the attributes, you could do so. The other sample program constructs SQL queries to answer LDAP search requests. This will be as fast as your SQL database, but as it's just an example, it only handles one type of search: (mail=foo@example.com) If you *just* want an implementation of the standard LDAP data model then you're almost certainly better off running OpenLDAP (and with back-sql, it can also give you a fixed mapping between LDAP attributes and SQL columns). ruby-ldapserver is intended for when you want to build an 'intelligent' LDAP server. The reason I wrote it is because I needed a uniform query layer where one type of customer is in SQL database 1, and another type of customer is in SQL database 2 (with a completely different schema). I use ruby-ldapserver as a wrapper for the business logic which maps various queries to the appropriate databases. Regards, Brian.