[TransWarp] Windows, LDAP, and transactions

Phillip J. Eby pje at telecommunity.com
Mon Dec 30 15:50:36 EST 2002

At 03:32 PM 12/30/02 +0200, Roché Compaan wrote:

>Multi-user server: yes
> From a Windows machine: not when I have a choice or can influence the
>decision. Use of Windows is still policy in some of our corporate
>clients and they don't budge easily.  We normally try to give a turnkey
>solution ie. server + linux + our product. We have one product in use by
>a couple of corporates but there is only one table in this product that
>gets hit really hard and it doesn't have to handle any simultaneous
>edits - it only has to insert batches really fast.

And you need something that will be the same database syntax, capabilities, 
etc., on both Linux and Windows, right?  Hm.  Offhand, in such a 
circumstance I might lean towards use of commercial database server(s), if 
the economics permitted.  Perhaps a cross-platform subset of the SQL 
supported by MS SQL and Sybase, since Sybase has rather affordable Linux 
options.  For example, Sybase 11 for Linux is available for free.  And MS 
SQL server should likely be quite acceptable for a Windows-only shop.

The other alternative I imagine I'd investigate is SAP DB, which runs on 
Windows NT and 2000.  SAP has some very nice features in its SQL, and is 
supposed to have very low administrative overhead.  And it does have a 
Python interface.  It lacks a true replication option, but if your clients' 
apps are unlikely to scale to that level, I imagine that's 
acceptable.  Anyway, it might be worth taking a look.  We ourselves haven't 
looked at it much because our work *does* need replication, and PostgreSQL 
is more lightweight to work with for prototyping.  Certainly there's a lot 
less involved in the build and install processes for PostgreSQL than SAP.

> > >What implementation of LDAP are you using? I ask because OpenLDAP does not
> > >currently support transactions?
> >
> > We don't perform transactional operations against LDAP; we use it as a
> > directory service only, so atomic operations suffice.  We do in fact use
> > OpenLDAP, although we have a Netscape server as a central repository for
> > pushing to OpenLDAP replicas on each machine that needs access to the
> > directory.
>But an EntityDM wants to join a transaction in __getitem__ so how will
>they work with a LDAPConnection?

They'll work just fine.  LDAPConnection objects just aren't going to be 
transactional.  I'll probably give them modification methods (e.g. add, 
change, delete) that require autocommit to be engaged.  Thus, you won't be 
able to use an LDAP connection for modification operations unless you give 
it a transaction of its own and engage its autocommit flag.  The result 
will be that you'll be forced to acknowledge the non-transactionality of 
LDAP in order to perform modifications with it.

Right now, however, LDAPConnection objects don't *have* any modification 
methods, so the only way you're going to be able to write data to them is 
by messing with their innards, which is thus undocumented and unsupported.  :)

More information about the PEAK mailing list